|
| 1 | +# Node.js API (NAPI) |
| 2 | +This repository is the home for ABI Stable Node API project (NAPI). The goal of this |
| 3 | +project is to provide a stable Node API for native module developers. NAPI aims |
| 4 | +to provide ABI compatibility guarantees across different Node versions and also |
| 5 | +across different Node VMs – allowing NAPI enabled native modules to just work |
| 6 | +across different versions and flavors of Node.js without recompilations. |
| 7 | + |
| 8 | +This project is in an early proof of concept stage. Check out our [roadmap](https://github.com/nodejs/abi-stable-node/issues/18) |
| 9 | +for details on the remaining work. |
| 10 | + |
| 11 | +Copies of the Node.js source with the changes for the ABI Stable Node API are |
| 12 | +in branches in this repo. Currently we have the following version: |
| 13 | + |
| 14 | +* api-prototype-0.10.40 |
| 15 | +* api-prototype-0.12.7 |
| 16 | +* api-prototype-6.2.0 |
| 17 | +* api-prototype-chakracore-7.x |
| 18 | + |
| 19 | +**API Design & Shape** |
| 20 | + |
| 21 | +For more details on design of the API, please check out the |
| 22 | +[node-eps](https://github.com/nodejs/node-eps/pull/20) covering this effort. |
| 23 | + |
| 24 | +The current shape of the API can be found in header file |
| 25 | +[node_jsvmapi.h](https://github.com/nodejs/abi-stable-node/blob/api-prototype-6.2.0/src/node_jsvmapi.h) |
| 26 | + |
| 27 | +**Branches** |
| 28 | + |
| 29 | +This repository contains node sources from Node versions 0.10, 0.12, 6.2 and |
| 30 | +Node-ChakraCore version 7.0, with addition of ABI stable Node APIs. The branches |
| 31 | +are named according to the node versions that have been enabled with NAPI support. |
| 32 | + |
| 33 | +**NAPI enabled modules** |
| 34 | +* [leveldown](https://github.com/boingoing/leveldown/) |
| 35 | +* [nanomsg](https://github.com/sampsongao/node-nanomsg) |
| 36 | +* [sqllite3](https://github.com/mhdawson/node-sqlite3) - in progress |
| 37 | +* [iotivity](https://github.com/gabrielschulhof/iotivity-node/tree/abi-stable) - in progress |
| 38 | + |
| 39 | +**Testing** |
| 40 | + |
| 41 | +In addition to running the tests in the converted modules. We have also |
| 42 | + |
| 43 | +* Converted version of the NAN examples that we always keep working |
| 44 | + [abi-stable-node-addon-examples](https://github.com/nodejs/abi-stable-node-addon-examples) |
| 45 | + |
| 46 | +* Converted version of the [core addons tests](https://github.com/nodejs/abi-stable-node/tree/api-prototype-6.2.0/test/addons-abi) which can be run with ```make test addons-abi``` |
| 47 | + |
| 48 | +**How to get involved** |
| 49 | +* Convert a native module to use [NAPI](https://github.com/nodejs/abi-stable-node/blob/api-prototype-6.2.0/src/node_jsvmapi.h) and report issues on conversion and performance; |
| 50 | +* Port ABI stable APIs to your fork of Node and let us know if there are gaps; |
| 51 | +* Review the [roadmap](https://github.com/nodejs/abi-stable-node/issues/18) and see how can you |
| 52 | +can help accelerate this project. |
| 53 | + |
| 54 | +Hangout link for weekly standup |
| 55 | +https://plus.google.com/u/0/events/c0eevtrlajniu7h8cjrdk0f56c8?authkey=COH04YCalJS8Ug |
| 56 | + |
| 57 | +# Project Participants |
| 58 | +* [aruneshchandra](https://github.com/aruneshchandra) - Arunesh Chandra |
| 59 | +* [boingoing](https://github.com/boingoing) - Taylor Woll |
| 60 | +* [digitalinfinity](https://github.com/digitalinfinity) - Hitesh Kanwathirtha |
| 61 | +* [gabrielschulhof](https://github.com/gabrielschulhof) - Gabriel Schulhof |
| 62 | +* [ianwjhalliday](https://github.com/ianwjhalliday) - Ian Halliday |
| 63 | +* [mhdawson](https://github.com/mhdawson) - Michael Dawson |
| 64 | +* [mykmelez](https://github.com/mykmelez) - Myk Melez |
| 65 | +* [sampsongao](https://github.com/sampsongao) - Sampson Gao |
0 commit comments