abi-stable-node
abi-stable-node copied to clipboard
Repository used by the Node-API team to manage work related to Node-API and node-addon-api
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:
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 |
| Jim Schlight | jschlight |
| Kevin Eady | KevinEady |
| Michael Dawson | mhdawson |
| Nicola Del Gobbo | NickNaso |
Emeritus
| Name | GitHub Link |
|---|---|
| Anisha Rohra | anisha-rohra |
| Arunesh Chandra | aruneshchandra |
| Cory Mickelson | corymickelson |
| Hitesh Kanwathirtha | digitalinfinity |
| Ian Halliday | ianwjhalliday |
| Jason Ginchereau | jasongin |
| Kyle Farnung | kfarnung |
| Sampson Gao | sampsongao |
| Taylor Woll | boingoing |