napajs

Napa.js: a multi-threaded JavaScript runtime

Github stars Tracking Chart

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

const napa = require('napajs');
const 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.

Overview

Name With Ownermicrosoft/napajs
Primary LanguageC++
Program languageCMake (Language Count: 6)
Platform
License:Other
Release Count14
Last Release Name0.4.0-pre (Posted on )
First Release Name0.1.0 (Posted on 2018-01-19 14:49:13)
Created At2017-07-18 21:41:10
Pushed At2022-08-29 14:03:08
Last Commit At2018-10-30 02:13:13
Stargazers Count9.2k
Watchers Count210
Fork Count341
Commits Count271
Has Issues Enabled
Issues Count123
Issue Open Count60
Pull Requests Count134
Pull Requests Open Count7
Pull Requests Close Count22
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private
To the top