Skip to content
forked from microsoft/napajs

Napa.js: a multi-threaded JavaScript runtime

License

Notifications You must be signed in to change notification settings

ybrnathan/napajs

This branch is 14 commits behind microsoft/napajs:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

833b384 · May 19, 2018
Aug 3, 2017
Apr 3, 2018
Jan 5, 2018
Apr 25, 2018
Apr 19, 2018
Apr 4, 2018
Nov 8, 2017
May 9, 2018
May 19, 2018
Apr 4, 2018
Apr 4, 2018
Dec 23, 2017
Dec 14, 2017
May 2, 2018
May 2, 2018
Jul 19, 2017
Jan 5, 2018
May 2, 2018
Aug 29, 2017
Aug 29, 2017
May 2, 2018

Repository files navigation

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:

npm install napajs

Other options can be found in Build Napa.js.

Quick Start

var napa = require('napajs');
var zone1 = napa.zone.create('zone1', { workers: 4 });

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

// Execute an anonymous function in any worker thread in 'zone1'.
zone1.execute(
    (text) => text, 
    ['hello napa'])
    .then((result) => {
        console.log(result.value);
    });

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

Contribute

You can contribute to Napa.js in following ways:

  • Report issues and help us verify fixes as they are checked in.
  • Review the source code changes.
  • Contribute to core module compatibility with Node.
  • Contribute bug fixes.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct 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.

About

Napa.js: a multi-threaded JavaScript runtime

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 68.5%
  • TypeScript 21.5%
  • JavaScript 7.6%
  • CMake 1.8%
  • Other 0.6%