Skip to content

Repository used by the Node-API team to manage work related to Node-API and node-addon-api

Notifications You must be signed in to change notification settings

nodejs/abi-stable-node

Repository files navigation

Node.js API (Node-API)

This repository is the home for ABI Stable Node API project Node-API which was previously known as N-API.

The goal of this project is to provide a stable Node API for native module developers. Node-API aims to provide ABI compatibility guarantees across different Node versions and also across different Node VMs - allowing Node-API enabled native modules to just work across different versions and flavors of Node.js without recompilations.

It is introduced by this Node enhancement proposal: 005-ABI-Stable-Module-API.md.

Node-API is part of Node.js core. Documentation is available here: https://nodejs.org/docs/latest/api/n-api.html.

Node.js versions 8.12.0 and above provide Node-API as a stable feature.

Branches

Currently this repo is being used only for meta issue management and future planning by the Node-API team.

API Design & Shape

The current shape of the API can be found in header file node_api.h. Full documentation is available as part of the standard Node.js API docs here: https://nodejs.org/docs/latest/api/n-api.html.

There is also a header-only C++ API, which simplifies development while still using the same ABI-stable Node API underneath. It is distributed as a separate npm package: https://www.npmjs.com/package/node-addon-api.

Node-API enabled modules

Module Converted By Location Conversion Status Performance Assessment
leveldown n-api team https://github.com/sampsongao/leveldown/tree/napi Completed #55
nanomsg n-api team https://github.com/sampsongao/node-nanomsg/tree/napi Completed #57
canvas n-api team https://github.com/jasongin/node-canvas/tree/napi Completed #77
node-sass n-api team https://github.com/boingoing/node-sass/tree/napi Completed #82
iotivity gabrielschulhof https://github.com/gabrielschulhof/iotivity-node/tree/abi-stable Completed N/A
node-sqlite3 n-api team https://github.com/mhdawson/node-sqlite3/tree/node-addon-api Completed

Testing

In addition to running the tests in the converted modules we also have a converted version of the NAN examples node-addon-examples

How to get involved

  • Convert a native module to use Node-API and report issues on conversion and performance;
  • Port ABI stable APIs to your fork of Node and let us know if there are gaps;
  • Review the roadmap and see how you can help accelerate this project.

Badges

The use of badges is recommended to indicate the minimum version of Node-API required for the module. This helps to determine which Node.js major versions are supported. Addon maintainers can consult the Node-API support matrix to determine which Node.js versions provide a given Node-API version. The following badges are available:

Node-API v1 Badge Node-API v2 Badge Node-API v3 Badge Node-API v4 Badge Node-API v5 Badge Node-API v6 Badge Node-API v7 Badge Node-API v8 Badge Node-API v9 Badge Node-API Experimental Version Badge

Meeting

The team meets once a week on zoom. See the Node.js Calendar for the current time/day of the week. The link to participate to the meeting is: https://zoom.us/j/363665824 .

Project Participants

Active

Name GitHub Link
Chengzhong Wu legendecas
Gabriel Schulhof gabrielschulhof
Jack Xia JckXia
Kevin Eady KevinEady
Michael Dawson mhdawson
Nicola Del Gobbo NickNaso
Vladimir Morozov vmoroz

Emeritus

Name GitHub Link
Anisha Rohra anisha-rohra
Arunesh Chandra aruneshchandra
Cory Mickelson corymickelson
Hitesh Kanwathirtha digitalinfinity
Ian Halliday ianwjhalliday
Jason Ginchereau jasongin
Jim Schlight jschlight
Kyle Farnung kfarnung
Sampson Gao sampsongao
Taylor Woll boingoing

About

Repository used by the Node-API team to manage work related to Node-API and node-addon-api

Topics

Resources

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published