Branch: master
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
56 lines (35 sloc) 2.51 KB
id title sidebar_label

To see what's in progress, see our RFC's


What is N-NAPI?

It is independent from the underlying JavaScript runtime (ex V8) and is maintained as part of Node.js itself. This API will be Application Binary Interface (ABI) stable across versions of Node.js. It is intended to insulate Addons from changes in the underlying JavaScript engine and allow modules compiled for one major version to run on later major versions of Node.js without recompilation

See for more details

Currently Neon uses the v8 API for all JS interaction with the JS runtime. Migrating to N-API would give us the following:

  • ABI stability
  • Remove dependency on node-gyp

Cross Compilation Flags

Currently, Neon only supports building for the host target. We are looking to add support for compiling to multiple targets, similar to how Cargo lets you do this:

# Cargo
cargo build --target i686-pc-windows-msvc
# Neon
neon build --target i686-pc-windows-msvc

See the issue ticket

JS Standard Library Integration

This includes supporting more erganomic Neon APIs for JS APIs. One of these API's, for example, is the Date API. While it is possible to use the JS Date object in Neon, the methods for using it low level. We plan to add a higher level API for the Date object and other basic standard library objects in JS including the following: RegEx, TypedArray, Promise, and other objects.

Here's an example of how you could instantiate a JS Date object in Neon with the higher level API:

let date: Handle<JsDate> = JsDate::now(scope)?;
let time: SystemTime = date.as_time();

To learn more, see these RFC's:

Threadsafe Callbacks on Main Thread

The main motivation of this is to provide a way to schedule the execution of JavaScript from any (Rust) thread. While neon::Task allows to perform a background task and call a JavaScript callback after it's completion, there is currently no way to propagate the progress of a task to JavaScript.

See the RFC for more details