Understanding How Node Releases Work in 2018
A quick look at how Node releases work alongside the changes and updates that have taken place in Node j.s this year.
TL;DR: In this article, we would try to understand exactly how Node releases and versioning work.
Why is this Important?
Understanding how Node j.s releases and versioning work have been a consistent issue in the Node community. This has gotten to the point the official Node j.s new version release blog posts by the Node Foundation now even provide links to places like Node source to further explain and reduce ambiguity. So the aim here is to simplify some of these confusing concepts and see how things work in Node j.s
Getting Familiar With Terminologies
Let us quickly take a look at key terminologies used often in the Node j.s community.
- Semvar Mechanism: Semvar means semantic versioning. It is simply a 3 digit-and-two-decimal-point-like notation [example: 1.3.5 where “1” is the Major Version Number, “3” is the Minor Version Number and the “5” is the Patch Version Number.]. The Node j.s community like most developer-centric communities make use of this mechanism for versioning.
- Patch: A patch is any change that is made to a release without adding new behavior or changing old behavior, mostly bug fixes.
- Minor: A minor (change) is anytime there is a new behavior added to a release, the code base does not change performance wise, but the new stuff gets added for “checking out” this means you might not want to use these changes in your production environment.
- Major: A major (change) is any breaking change, anything that actually changes how the code works, affects performance and in production environment in a release line.
- Release Line: This is simply any major release, it is divided into Current and LTS.
- Current Release: The latest version of Node j.s at any point in time is called the Current Release.
- LTS Release: This simply means Long-Term-Support, it refers to the releases that would be supported by Node for a long period of time, say 2 years and some months.
- End of Life (EOL): End of Life is a stage where all forms of support have been pulled from a release.
Understanding Release Stream Numbers
Now let us look at the Node j.s release stream numbers, the even and the odd numbers and their significance.
In this chart above, we can see an even number major release pattern. So this is how the alternating version numbers work:
- Releases that are Odd-number versions do not receive long-term support.
- Odd-number releases are only supported for six months and after which they enter EOL.
- Releases that are Even-number versions are the only ones that receive long-term support.
- Long Term Support starts with an Active period of about 1 year and 6 months with proper commits of really tested features suitable for a production environment.
- Then enters Maintenance period of 1 year after the active period, here its all mostly security patches and bug fixes.
More on Node j.s Release Lifecycle: Dates
You may have noticed how the two months, April and October have a ring to them in the Node js community. This is because most of all releases happen in these two months.
- Every year in the month of October, an even-numbered release goes into active long-term support and also in some years we have an odd-numbered release out!
- But the month of April brings new releases sometimes and also flags off the start of maintenance long-term support on the even-numbered release that is an active long-term support.
In summary, the current phase of an even-numbered release line lasts for only 6 months, from April to October then it becomes an Active LTS for the next 18 months after which it goes into Maintenance LTS for 12 months. After the 12 months it becomes EOL and support is cut.
Node j.s Report for April 2018
In April, Dubnium the Node j.s version 10.0.0 was released as the current Node j.s version. Below is a list of the new changes that shipped with Dubnium.
- Dubnium added the ABI stable module APIs (N-API) as an officially supported API layer., this will reduce the maintenance cost for native modules and friction in upgrading Node.js versions in production environments.
- Dubnium added modernized cryptographic support, upgrading to OpenSSL 1.1.0 Node j.s can now take full advantage of the work done at OpenSSL.
- Dubnium also brought a significant improvement on error handling.
- All the improvements that shipped with v8 engine are directly available with Dubnium.
- Diagnostics tracing have also greatly improved, new trace events are emitted for performance API user timing events making timing and performance issues more visible now.
- Dubnium shipped with npm 5.6 but the team has promised an update to 6 is almost upon us.
Node j.s gets 1 billion + downloads pulled from both metric site and docker images.
Node j.s Report for October 2018
Last month being October, the newly released Node j.s 10.x a few months ago is now up for active long-term support and the new current version is Node j.s 11. This current version as you now know (if you followed this article) would have only a 6-month support before hitting the end of life stage where support would be totally discontinued. So, if you have a serious project in Node 10, it is advisable to stay with 10 and not update your production code to 11. This current version is for trying out new features locally.
These new features include:
- Rescheduling of interval timers even after an error has been thrown by the previous timer.
- Support for FreeBSD 10 has been cut too.
- ICU gets updated to 63.1 which added Sindhi, Maori, Turkmen, Javanese, Interlingua, Kurdish (ku), Xhosa, and many data improvements.
- Top-level for-await-of is now supported in the REPL which Ensures that visitors check for a for-of statement with
await: trueso that
state.containsAwaitis then properly handled.
Remember to use the Node Version Manager (NVM) to alternate between different versions of Node on your workstation.
How to Update my Node Version with NVM
It is very easy to update and use newer or multiple versions of node in various projects all thanks to the Node Version Manager.
- First, ensure you have NVM installed by running
You can get NVM from here. After installation, you can get a new version of node by running the nvm install command like thus:
To use the version, you just need to run the nvm use command like thus:
What Update Should I be Using?
Answer: It depends, but Node j.s 10 is highly recommended.
You can only use the current version locally to play around in the development server but NOT in production.
As the Node j.s 10 is now in long-term support, it is ready to be used in production environments and by applications that need to scale. With performance boosts, improvements in the way errors are handled, a more efficient diagnostics for errors, trace events and a dedication to focus on security, you can rest assured that your applications are not going to break or lack support. For developers still using Node .js 4.x or Node .js 6.x, it is highly recommended that you consider upgrading to Node .js 10.
In addition to the aforementioned features of Node j.s 10, here are some experimental features too:
- Workers API: Here, every worker has its own event loop, this automatically leads to detailed debugging of workers.
- fs Promises API: This allows for receiving of promises vs callbacks.
- Top-level await has been added in the REPL.
- NodeChakra has been released with Time Travel Debugging.
- Node.js Readable Streams gets AsyncIterators support.
Understanding how Node releases work helps you decide what version to use in any particular project and properly managing expectations. We have looked at the release life-cycle, the dates and even common terminologies, I hope this was insightful enough, many of these concepts I totally understood from nodesource blog. Please drop any more questions you would have in the comments.
Follow me here and hold down the clap button if you enjoyed reading this.