Napa.js

A multi-threaded JavaScript runtime

README

Build Status for Linux/MacOS Build Status for Windows npm version Downloads

Napa.js

Napa.js is a multi-threaded JavaScript runtime built on V8, which was originally designed to develop highly iterative services with non-compromised performance in Bing. As it evolves, we find it useful to complement Node.js in CPU-bound tasks, with the capability of executing JavaScript in multiple V8 isolates and communicating between them. Napa.js is exposed as a Node.js module, while it can also be embedded in a host process without Node.js dependency.

Installation

Install the latest stable version:
  1. ```
  2. npm install napajs
  3. ```
Other options can be found in Build Napa.js.

Quick Start

  1. ``` js
  2. const napa = require('napajs');
  3. const zone1 = napa.zone.create('zone1', { workers: 4 });

  4. // Broadcast code to all 4 workers in 'zone1'.
  5. zone1.broadcast('console.log("hello world");');

  6. // Execute an anonymous function in any worker thread in 'zone1'.
  7. zone1.execute(
  8.     (text) => text,
  9.     ['hello napa'])
  10.     .then((result) => {
  11.         console.log(result.value);
  12.     });
  13. ```
More examples:

Features

- Multi-threaded JavaScript runtime.
- Node.js compatible module architecture with NPM support.
- API for object transportation, object sharing and synchronization across JavaScript threads.
- API for pluggable logging, metric and memory allocator.
- Distributed as a Node.js module, as well as supporting embed scenarios.

Documentation

- FAQ

Contribute

You can contribute to Napa.js in following ways:

Report issues and help us verify fixes as they are checked in.
Contribute to core module compatibility with Node.
Contribute bug fixes.

This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact opencode@microsoft.com with any additional questions or comments.

License

Copyright (c) Microsoft Corporation. All rights reserved.

Licensed under the MIT License.