nodejs/abi-stable-node

Name: abi-stable-node

Owner: Node.js Foundation

Description: NAPI ? Node with PoC ABI stable API for native modules.

Created: 2016-09-06 20:23:47.0

Updated: 2018-05-17 20:04:16.0

Pushed: 2018-05-10 17:34:25.0

Homepage:

Size: 236026

Language: JavaScript

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

Node.js API (N-API)

This repository is the home for ABI Stable Node API project (N-API). The goal of this project is to provide a stable Node API for native module developers. N-API aims to provide ABI compatibility guarantees across different Node versions and also across different Node VMs - allowing N-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.

N-API is now part of core as an experimental feature. Documentation is available here: https://nodejs.org/docs/latest/api/n-api.html.

As of Node.js version 8.6.0 N-API is enabled by default. If you use an N-API enabled module you will be warned that it is experimental as follows:

e:16761) Warning: N-API is an experimental feature and could change at any time.

Branches

Currently this repo is being used only for meta issue management and future planning by the N-API team. All branches can be considered stale as they are no longer being maintained. Updates and changes to N-API are being done in the core repo.

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.

N-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 have also

How to get involved

Hangout link for weekly standup https://zoom.us/j/363665824 (PRIMARY) https://plus.google.com/u/0/events/c0eevtrlajniu7h8cjrdk0f56c8?authkey=COH04YCalJS8Ug (backup)

Project Participants


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.