Node.js 12: Better diagnostics, security, features, and performance
Continued progress in the latest Node.js release
It’s an exciting time for Node.js. There is a lot going on, including the work related to our strategic initiatives (see the TSC’s strategic initiatives and the Community Committee’s strategic initiatives), new features, and the new collaboration opportunities we’re seeing because of our merger with the JS Foundation into the OpenJS Foundation.
On the other hand, the project has also reached a good routine. The LTS process is well established, and users can expect and plan for a new current release every April and October, with the latest even-numbered release being promoted to LTS in October. Our customers seem to like the predictable timetable for quality releases. The adoption curves reflect that usage is shifting towards the next LTS release over time, so we’re excited to see that people appreciate this routine.
Node.js 12 is here: What it means for you
The newest release — Node.js 12.x – is being released this week. This release demonstrates progress in terms of innovation and core features that we believe are important to Node.js users, including IBM’s customers.
As we’ve highlighted before, IBM’s strategy is to focus on aspects we believe are important to our customers, including:
- Stable and predictable releases
- Platform support
- Code quality and safety net
- Key features
The 12.x release delivers in a number of those areas. Some of the key highlights I’d like to call out include:
Diagnostic Report (Diagnostics)
Diagnostic report is a new, experimental feature that provides an easily consumable report with information that can be valuable in the initial diagnosis and triage of production issues. We have found this capability to be important for supporting our customers across languages, including Node.js, Java and Swift. With Diagnostic Report built into Node.js, there will be less friction associated with having to install the tool when a problem is discovered, so you can resolve your problem more quickly. To read more, check out this article, “Easily identify problems in your Node.js applications with Diagnostic Report” from Node.js collaborator and IBMer Gireesh Punathil.
Heap dumps (Diagnostics)
After initial triage with Diagnostic Report, you may need heap dumps in order to investigate memory leaks. I’ve been advocating for quite a while that this should be a built-in feature in Node.js, so I’m happy to report that Node.js 12.x incorporates this feature. Similar to Diagnostic Report, having this built-in feature means you don’t have to install it when a problem occurs, so you can resolve your problem faster.
TLS 1.3 (Security)
Node.js 12.x brings support for TLS 1.3, making it the default max protocol. This enables Node.js users to leverage the latest and most secure protocols and algorithms in their applications. For more information, check out these articles from Node.js collaborator and IBMer Sam Roberts: “OpenSSL 1.1.1 has landed in Node.js: Why it’s important for Node.js LTS releases” and “TLS 1.3 is coming soon to Node.js”.
Making native modules easier (Key features)
Node.js 12.x makes it easier to create, build, and support native modules (also known as addons). IBM is one of the ongoing contributors to N-API, and Node 12.x comes with N-API version 4, along with other improvements. For more information about N-API, check out the API docs.
Version 12.x offers better performance, with increased support for worker threads that will allow some workloads to more easily leverage additional threads and improvements that increase Node.js’ startup time. Node.js has always had fast startup compared to a number of other runtimes, but this work helps to solidify that lead. Changes to default heap sizes in 12.x can also help ensure your applications run better in containerized environments with limited memory.
It’s also worth mentioning that 12.x brings a new experimental ES6 modules support, a key milestone. I know a lot of hard work has gone into this feature, and I look forward to being able to use it in the near future.
Contributors make it happen
In closing, I’d like to thank the Node.js contributors and the release team including IBMer Bethany Griggs, who acted as the release lead for Node.js 12.x, for all of their hard work in getting this release out. I’m always amazed at all the contributions and work that go into a release — starting with individual contributions, keeping the build infrastructure running, and the release team delivering the release itself.
If you’d like to read more about this release, you can check out the blog post announcing the Node.js 12 release: Introducing Node.js 12.