Help is on the way for developers building native modules for Node.js, as well for those who want to swap out the underlying JavaScript engine powering the platform.

Currently, modules must be recompiled to work with new versions of Node.js and the JavaScript engine, which traditionally has been Google’s V8 engine. But N-API is about to make things easier by providing an API for linking in native add-ons. Independent of the underlying JavaScript runtime, N-API will be stable for the application binary interface (ABI) across Node versions, to insulate add-ons from changes in the underlying JavaScript engine. Modules compiled for one version of Node.js would then run on later versions with no need to recompile.

The N-API effort also aims to ease support of multiple back-end JavaScript engines. Last year, Microsoft came up with a plan to swap out Google’s V8 engine with Microsoft’s ChakraCore engine. But Microsoft had to make ChakraCore look and act like V8 for it to work, and that required the development of a shim layer, said James Snell, a Node.js technical steering committee member and architect at software builder NearForm.

“What NAPI is allowing us to do is have an intermediary ABI that lives within Node that native module authors can write against,” said Myles Borins, a developer advocate at Google. To get the advantages of N-API, developers will have to migrate their NPMs to N-API. Once that's done, they should get its stability benefits.

Leave a Reply