Submitting a Pull Request to Node.js with ChakraCore
Node.js continues to be a very successful and powerful cross platform technology for building apps that can run on anything from small IoT devices to large scale services that run in the cloud. We believe allowing more Node.js developers to target more platforms is key to its future growth. To do our part in growing the Node.js pie, last year we introduced support for Node.js with Chakra to extend the reach of Node.js and allow developers to target a brand new platform called Windows 10 IoT Core. So far Node.js with Chakra has been actively updated and iterated upon at our own repository, with the intention to merge it with the mainline after stabilizing the code.
The recent open-sourcing of ChakraCore gives us the opportunity to develop in the open and align better with Node.js release schedules, in addition to expanding our support for Node.js across the broader Windows ecosystem – starting with Windows 7 SP1 and beyond. Here are some important things to know about this pull request.
Support for ChakraCore JS Engine
State of module compatibility
We embraced this abstraction and ensured all NAN based modules are fully supported in Node.js with ChakraCore. We also intend to actively participate in the native module abstraction efforts by contributing our learnings, architectural ideas, prototypes etc. in the community working group. While the abstraction effort is long-term approach, on a shorter term we would love to hear from the community on our issues page if there are any key compatibility gaps still remaining. This will allow us to prioritize the modules that need to be made compatible.
When compared to the baseline of default Node.js performance, Node.js with ChakraCore is more performant than Node.js with Chakra just a few months ago. The following graph plots slower-than-baseline tests below the blue line and the tests that were better than baseline above the blue line. While there’s still work to do, we’re happy that the curve is moving in the right direction.
Our performance testing did identify some differences in the hosting surface that can boost ChakraCore’s performance with Node.js. Continuing to invest in understanding and improving real world performance is a priority for the team. Going forward, we also want to work with the benchmarking workgroup and the community to identify real world performance scenarios for Node.js.
The team is working on adding two key capabilities around diagnostics support. The first capability is focused on Modern Diagnostic APIs. While developers can use “console.log” style debugging when using Node.js with ChakraCore today, we are building a new set of Modern Diagnostic APIs, which break away from dependencies on COM and will help make the debugging experience of Node.js with ChakraCore interoperable with existing Node.js diagnostic tools. For the second, we are teaming up with Microsoft Research to advance the state of the art of Node.js debugging, with a feature we call Time Travel debugging.
You can participate or follow the work as it progresses on ChakraCore GitHub repository.
Try it out for yourself
You can try Node.js with ChakraCore with your existing scripts using this temporary installer, which installs Node.js with ChakraCore binaries without having to build it manually from the sources. We plan to work with the Node.js build working group to make these binaries available from an official Node.js channel. The current installer installs Node.js with ChakraCore side-by-side with an existing default Node.js installation without disturbing it, so that you can give it a try and share your feedback without disturbing your existing setup.
Our journey with Node.js has just started. We are committed to developing in the open, while working with the Node.js TSCs/CTC and the wider Node.js developer community. We truly see the power of Node.js, admire this community for what it has achieved so far, and we are excited to learn and contribute even more!
We welcome your feedback on our pull request to Node.js mainline. Try Node.js with ChakraCore and let us know your feedback. Finally, you can always reach us on Twitter at @ChakraCore or visit ChakraCore’s GitHub repository and leave us a note by opening an issue or via Gitter. We look forward to hearing from you!
– Arunesh Chandra, Sr. Program Manager, Chakra
– Gaurav Seth, Principal PM Manager, Chakra