NEWS: Node.js 8 Moves into Long-Term Support and Node.js 9 Becomes the New Current Release Line
We are super excited to announce that later today Node.js 8 will be ready for production as it transfers into the de facto Long-Term Support release line opening it up to a larger user base that demands stability and security (Node.js 8.9.0 is the first official Node.js 8 release to hit LTS status). Node.js 8 is one of the biggest release lines from the Node.js community to date with features and add-ons like Async / Await and V8 JavaScript Engine 6.1. It is up to 20 percent faster than its predecessor Node.js 6 (source nearForm) in typical web applications. An early tester found that Node.js 8 cut its web response by 70 percent:
“Node.js 8 cut our web response by 70 percent across the board and unlocks ES7 features to let us write simpler, more maintainable code,” said Connor Peet, Senior Software Engineer at Mixer, a live streaming website.
If you’re ever wondering what ES7 features are compatible in Node.js version, check out this really handy and awesome guide.
Let’s take a look at some of the awesome features that you can find in Node.js 8.9.0 (including experimental) and why performance has drastically improved.
Performance Enhancements Across Web and Enterprise Applications
Node.js 8.9.0 is equipped with V8 JavaScript Engine 6.1. The new V8 engine comes with Turbofan and the Ignition pipeline, which leads to lower memory consumption and faster startup time across Node.js applications. If you want to learn more about updates to V8 check out this blog post.
HTTP/2 is no longer behind flags, but still in experimental mode in this release. We anticipate additional changes with this, but once it is out of experimental mode, it will allow developers to use the new protocol to speed application development. HTTP/2 allows JavaScript developers to undo many of HTTP/1.1 workarounds to make applications faster, simpler and more powerful. More context to the benefits of HTTP/2 can be found in this blog post from RisingStack.
More Collaborations Outside and Inside the Node.js Community Adds Stability
The V8 team, a group in charge of Google’s open source high-performance JavaScript engine, now prioritizes Node.js alongside Chromium ensuring V8 cannot be upgraded if it crashes Node.js, which means less strain on the Node.js maintainer community, added stability and earlier adaption of ESNext features. Together with Node’s Long Term support (LTS) releases, this stability is crucial for many businesses when adopting Node.js in an enterprise setting.
More on this work can be viewed during Franzi Hinkelmann’s keynote at Node.js Interactive. Franzi works at Google on Chrome V8, she is a member of the Node.js Core Technical Committee.
Node.js API (N-API), a stable module API that is independent from changes in V8, is available as an experimental feature in Node.js 8.9.0. This technology was created in collaboration with Google, IBM, Intel, Microsoft, nearForm, NodeSource, and individual contributors. It allows native modules to run against newer version of Node.js without recompilation. This frees package maintainers from having to update these dependency, creates more stability and opens up choice for those consuming modules. It also sets the foundation for VM neutrality and opening Node.js up to new environments in IoT, mobile and a variety of different systems.
This group saw increased community participation after Node.js Interactive 2017 and are focused on getting N-API out of experimental status, improving documentation and responding to bugs reported by people who are trying to adopt N-API. Learn how you can help with its progress here.
Async / Await Bring Elegant Coding and More
Async / Await is fully supported in Node.js 8.9.0, which allows developers to write more linear code as opposed to call backs, which appeals to JavaScript newcomers and those moving from languages like C# to Node.js. It also appeals to those maintaining large code bases. YES!
Experimental ES Modules
ES Modules first came to Node.js in a flag in version 8.7.0. It is the culmination of years of work from a variety of collaborators. First standardized in 2015, ES Modules are a standard way of writing modular JavaScript code that can run on both the Web and in Node.js. Node.js has traditionally use the CommonJS pattern for module loading, which will continue to be the default behavior of Node.js during the 8.x LTS.
Our experimental ES Module implementation will allow developers to begin experimenting with the standardized module pattern in Node.js today while the team works on first class support. The implementation would not be possible without the hard and tireless work of Brad Farias who has been working on modules at a standards level at TC39 and at an implementation level in Node.js.
For even more goodies in Node.js 8 LTS, check out NodeSource’s overview blog.
So, what’s the deal with Node.js 9?
The Node.js Project also released Node.js 9.0.0 for developers who are interested in testing and experimentation. This release focuses on adding and testing new bleeding-edge features and is frequently updated. Therefore it is not recommended for those using Node.js in production.
The bulk of changes in this new release involve the deprecation or removal of legacy APIs. In addition, Node.js core codebase is slowly migrating to a new error system. The goal of this migration is to associate a unique code with all errors thrown by Node.js. This will allow error messages to be changed without being considered breaking. It will also make user code more robust by not relying on error messages. For more information on upgrading, check out Joyent’s overview.
MAJOR THANK YOU
There were so many people that worked on these releases. If you were a part of this, thank you a million times over. The release manager for Node.js 8.9.0 is Gibson Fahnestock and for Node.js 9.0.0, it is James Snell.
If you are interested in downloading these releases, please head here — they should be posted later today (look for Node.js 8.9.0 and Node.js 9.0.0). If you are on Node.js 4.x or Node.js 6.x, we recommend starting the migration process onto Node.js 8.x LTS.
Want to learn more about the overall Node.js release strategy and cadence? Head here.