GithubHelp home page GithubHelp logo

abi-stable-node's Introduction

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. 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:

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

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

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

How to get involved

  • Convert a native module to use N-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.

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

Project Participants

abi-stable-node's People

Contributors

anisha-rohra avatar aruneshchandra avatar digitalinfinity avatar jasongin avatar kfarnung avatar mhdawson avatar scholtzm avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.