IBM, Intel, Microsoft, Mozilla and NodeSource Join Forces on Node.js API; Node.js Build System will Start Producing Nightly node-chakracore Builds

Node.js
Node.js Collection
Published in
5 min readNov 29, 2016

Part of Node.js Foundation’s mission is growing Node.js everywhere. The Node.js platform is already available on a variety of VMs, like Samsung’s JerryScript, a lightweight JavaScript engine for the Internet of Things. While many steps are needed to allow Node.js to work in VM environments outside of V8, the work the Node.js API working group and ChakraCore are doing are important steps to offer greater choice.

Today, we are excited to announce several initial milestones in these efforts. The first is centered around Node.js API (ABI Stable Module API or NAPI for short), which is focused on defining a stable module API that is independent from changes in V8. Today, the first proof of concept in these efforts will be on display at Node.js Interactive North America. Arunesh Chandra, senior program manager for ChakraCore at Microsoft, is demoing the NAPI during his talk at 4:10 pm CT in Salon 6. All talks recorded at Node.js Interactive will be available after the event on our YouTube page.

The second milestone, outside of the Node.js API work, is with ChakraCore. The Node.js build system will start producing nightly node-chakracore builds, enabling Node.js to be used with the ChakraCore JavaScript engine. Arunesh Chandra will also discuss the progress of this work in his presentation.

These initial efforts are stepping stones to make Node.js VM-neutral, which would allow more opportunities for Node.js in IoT and mobile use cases as well as a variety of different systems.

NAPI: Creating a Stable API for the Module Ecosystem

The Node.js module community is massive with more than a billion weekly package downloads. The initial work from the Node.js API group is focused on making module maintainers’ lives easier by defining a stable module API that is independent from changes in V8 and allowing modules to run against newer version of Node.js without recompilation.

These initiatives will also drastically help the experience of those using Node.js as they will have more modules to choose from and more stability with modules without the need to continually upgrade. This will all result in more choice and a more vibrant ecosystem to drive future innovation.

“This work on the Node API is exciting for the community because it will lead to greater stability in the module ecosystem due to independence from Node.js version changes, giving the developer greater flexibility as new Node.js versions are introduced,” said Michael Dawson, runtime developer at IBM, “Furthermore, this enhancement is a concrete step toward the strategic end goal of VM neutrality. Together these provide significant value and expanded choice to the enterprise by allowing them to more easily leverage the broad range of capabilities available through the module ecosystem.”

“A large part of the Foundation’s work is focused on improving versatility and confidence in Node.js,” said Mikeal Rogers, community manager of the Node.js Foundation. “Node.js API efforts support our mission of spreading Node.js to as many different environments as possible. This is the beginning of a big community web project that will give VMs the same type of competition and innovation that you see within the browser space.”

A more detailed roadmap for the work on the Node.js API is available here. We encourage you to be a part of this project by experimenting with this new API, testing it with your environments and reporting back any fixes or improvements you need.

Node.js and ChakraCore

The Node.js build system will start producing nightly node-chakracore builds, enabling Node.js to be used with the ChakraCore JavaScript engine.

“Allowing Node.js to work on multiple engines enables Node.js to run on a variety of different systems in a highly optimized way — including the IoT systems,” said Arunesh Chandra, senior program manager for ChakraCore at Microsoft. “We are working closely with the open source community and contributors from many companies, and believe this collaboration allows for more innovation and creates more choice for Node.js developers, which will spur new use cases in the future.”

“Huge strides have been made in improving the technical state of how Node.js interacts and manages expectations with the underlying JavaScript VM,” said Dan Shaw, CTO and Co-Founder of NodeSource. “The fully open source nature of ChakraCore makes testing new features extremely easy. We look forward to continuing our efforts with both of these initiatives.”

Node-ChakraCore also is continuing to improve debugging in Node.js with Time-Travel debugging, which allows developers to easily capture traces for post mortem debugging and step back in time using a supported debugger. All of these technologies and topics will also be discussed during Arunesh’s presentation. More information can be found here on Microsoft’s blog.

What is VM Neutrality? What is the benefit of VM Neutrality?

VM neutrality describes a state of Node.js where Node Core is neutral to the JS Engine that is powering it via open standards and open APIs. The idea is to create a more formal interface between Node.js and its VM. In a VM-neutral world, the Node.js ecosystem, especially the native modules, continues to seamlessly work on different JS VMs on a variety of different devices and workloads.

With VM neutrality, Node.js will be able take advantage of new devices and workloads; give developers the ability to extend the reach of the Node.js ecosystem, so they can reuse code to target more devices and workloads; and standardize multi-VM efforts from already existing forks.

Boost to Node.js As The Platform for IoT

IoT is a high-growth market with the spend growing from $591.7 billion in 2014 to $1.3 trillion in 2019. The install base of IoT endpoints is expected to grow to more than 25.6 billion in 2019, hitting 30 billion in 2020, according to Verizon’s recent Internet of Things report. Node.js has increasingly become the platform of choice for IoT applications and embedded devices, and VM neutrality will encourage even more Node.js growth in this area, according to Rogers.

With many VM vendors optimized for different hardware profiles, Node.js will be able to extend to various VM platforms giving JavaScript and Node.js users alike the flexibility to use this language and platform anywhere and everywhere. Developers will also be able to use the smaller, focused runtime of Node.js without a full VM, which will drastically improve performance in this environment.

VM Neutrality To Benefit Mobile App Developers

Once Node.js is untethered from a specific VM, developers will be able to pair it with different VMs for the particular needs of mobile applications, extending the benefits of Node.js (ease of use, higher density coding, performance) to more mobile app developers.

How Can I Get Involved?

If you want to get more involved with the Node.js API efforts, please:

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

--

--

Node.js
Node.js Collection

Node.js is a collaborative open source project dedicated to building and supporting the Node.js platform. https://nodejs.org/en/