Node-ChakraCore Update: N-API, Node.js on iOS and more

Windows

Windows
Today, we are happy to announce a new
Please, Log in or Register to view URLs content!
of ChakraCore, based on Node.js 8, available for you to try on Windows, macOS, and Linux.

We started our Node-ChakraCore journey with a focus on
Please, Log in or Register to view URLs content!
to a new platform, Windows 10 IoT Core. From the beginning, it’s been clear that in addition to growing the reach of Node.js ecosystem, there’s a need to address real problems facing developers and the Node.js ecosystem though innovation, openness and community collaboration.

As we continue our journey to bring fresh new ideas and enable the community to imagine new scenarios, we want to take a moment to reflect on some key milestones we’ve achieved in the last year.

Full cross-platform support


While ChakraCore was born on Windows, we’ve always aspired to make it cross-platform. At NodeSummit 2016, we
Please, Log in or Register to view URLs content!
experimental support for the Node-ChakraCore interpreter and runtime on Linux and macOS.

In the year since that announcement, we’ve brought support for full JIT compilation and
Please, Log in or Register to view URLs content!
on x64 to both macOS and Ubuntu Linux 14.04 and higher. This has been a massive undertaking that brings Node-ChakraCore features to parity across all major desktop operating systems. We are actively working on cross-platform internationalization to complete this support.

Support for Node.js API (N-API)


This year, our team was part of the
Please, Log in or Register to view URLs content!
to design and develop the next-generation Node.js API (N-API) in Node.js 8 which is
Please, Log in or Register to view URLs content!
. N-API is a stable Node API layer for native modules, which provides ABI compatibility guarantees across different Node versions & flavors. This allows N-API-enabled native modules to just work across different versions and flavors of Node.js, without recompilations.

According to
Please, Log in or Register to view URLs content!
, 30% of the module ecosystem gets impacted every time there is a new Node.js release, due to lack of ABI stability. This
Please, Log in or Register to view URLs content!
in production deployments and adds cost to native module maintainers in having to maintain several supported versions for their module.


Node.js on iOS


We are always delighted to see the community build and extend Node-ChakraCore in novel and interesting ways. Janea Systems
Please, Log in or Register to view URLs content!
their experimental port of Node.js to run on iOS, powered by Node-ChakraCore. This takes Node.js to iOS for the first time, expanding the reach of the Node.js ecosystem to an entire new category of devices.


Node.js on iOS would not be possible without Node-ChakraCore. Because of the JITing restrictions on iOS, stock Node.js cannot run. However, Node-ChakraCore can be built to use the interpreter only, with the JIT completely turned off.

This is particularly useful for scenarios like
Please, Log in or Register to view URLs content!
mobile apps designed with the expectation of unreliability connectivity or limited bandwidth. These apps primarily rely on local cache on the device, and use store and forward techniques to opportunistically use data connectivity when available. These kinds of apps are common in scenarios like large factory floors, remote oil rigs, disaster zones, and more.

Time-Travel Debugging


This year also brought the debut of
Please, Log in or Register to view URLs content!
with Node-ChakraCore on all the supported platforms, as originally demoed using
Please, Log in or Register to view URLs content!
at NodeSummit 2016. This innovation directly helps with the
Please, Log in or Register to view URLs content!
developers have with Node.js – debugging! With this release, Time-Travel Debugging has improved in stability and functionality since its introduction, and is also available with Node-ChakraCore on Linux and macOS.

And much more …


These are just the start – our team has also made major investments in infrastructure automation, which have resulted in
Please, Log in or Register to view URLs content!
of Node-ChakraCore
Please, Log in or Register to view URLs content!
following the Node.js 8. Both
Please, Log in or Register to view URLs content!
and
Please, Log in or Register to view URLs content!
are now available from the Node.js foundation build system.

We recently started measuring module compatibility using CITGM modules, and have improved compatibility with a wide variety of modules. Popular node modules like,
Please, Log in or Register to view URLs content!
,
Please, Log in or Register to view URLs content!
and
Please, Log in or Register to view URLs content!
are considering using Node-ChakraCore in their CI system to ensure ongoing compatibility. Node-ChakraCore also has improved 15% in ACMEAir performance on Linux in the last 2 months, and we’ve identified areas to make further improvements in the near future.

With our initial priority of full cross-platform support behind us, we are moving our focus to new priorities, including performance and module compatibility. These are our primary focus for the immediate future, and we look forward to sharing progress with the community as it happens!

Get involved


As with any open source project, community participation is the key to the health of Node-ChakraCore. We could not have come this far in our journey without the help of everyone who is active on our
Please, Log in or Register to view URLs content!
, and in the broader Node community, for their reviews and guidance. We are humbled by your enthusiasm and wish to thank you for everything you do. We will be counting on your continued support as we make progress in our journey together.

For those who are looking to get involved outside of directly contributing code, there are several ways to get involved and advance the Node-ChakraCore project. If you are a …

  1. Node.js Developer – Try testing
    Please, Log in or Register to view URLs content!
    in your project, and use
    Please, Log in or Register to view URLs content!
    with VSCode and let us know how it goes.
  2. Node.js module maintainer – Try testing your module with
    Please, Log in or Register to view URLs content!
    . Use
    Please, Log in or Register to view URLs content!
    to add Node-ChakraCore in your own CI to ensure ongoing compatibility. If you run into issues, please let us know at
    Please, Log in or Register to view URLs content!
    or our
    Please, Log in or Register to view URLs content!
    channel.
  3. Native module maintainer – Consider porting your module to
    Please, Log in or Register to view URLs content!
    . This will help insulate your module from breakage due to new Node releases and will also work with Node-ChakraCore.

As always, we are eager to hear your feedback, so please keep them coming. Find us on twitter
Please, Log in or Register to view URLs content!
, our
Please, Log in or Register to view URLs content!
channel or you can open an issue on our
Please, Log in or Register to view URLs content!
to start a conversation.

Please, Log in or Register to view URLs content!
, Senior Program Manager, Chakra

Please, Log in or Register to view URLs content!
 

Users who are viewing this thread

Top