Coder Social home page Coder Social 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 enhancemnet proposal: 005-ABI-Stable-Module-API.md.

This is project is in experimental stage at the moment. During the latest VM Summit, we discussed the progress of this project. The summit participants agreed to consider a PR for this feature as experimental in the upcoming Node.js version 8.0. You can checkout the Notes from Node.js VM Summit for more details.

Branches

This repository contains node sources from Node versions 0.10, 0.12, 6.2, 8.x and Node-ChakraCore version 7.x and 8.x with addition of ABI stable Node APIs. The branches are named according to the node versions that have been enabled with N-API support. Recently updated branches are the following:

Branches for older Node versions were to test the resiliency of N-APIs across different Node versions. The PR will be submitted using the api-prototype-8.x branch which is tracking the latest Node.js master.

API Design & Shape

The current shape of the API can be found in header file node_api.h

There is also a header-only C++ API, which simplifies development while still using the same ABI-stable Node API underneath. It will be distributed as a separate npm package.

N-API enabled modules

Module Converted By Location Conversion Status Performance Assesment
leveldown boingoing / ianwjhalliday / jasongin https://github.com/jasongin/leveldown/tree/napi Completed #55
nanomsg sampsongao https://github.com/sampsongao/node-nanomsg/tree/api-opaque-prototype Completed #57
canvas jasongin https://github.com/jasongin/node-canvas/tree/napi Completed #77
node-sass boingoing / jasongin 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 sampsongao / mhdawson https://github.com/mhdawson/node-sqlite3/tree/v3.1.4-abi Started

Testing

In addition to running the tests in the converted modules. We have also

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 can you can help accelerate this project.

Hangout link for weekly standup https://plus.google.com/u/0/events/c0eevtrlajniu7h8cjrdk0f56c8?authkey=COH04YCalJS8Ug

Project Participants

abi-stable-node's People

Contributors

aruneshchandra avatar digitalinfinity avatar jasongin avatar mhdawson avatar

Stargazers

 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.