Who would have thought, back in 2009, that Node.js will the tool of choice for hundreds of thousands of developers around the world? Even the team behind Node.js wasn’t prepared for this tremendous surge in popularity. In 2014, Node.js was forked and io.js was born. Simplistically speaking, io.js was a fast paced version of Node. Common sense prevailed and, by June 2015, the Node.js Foundation was established coagulating the two communities back. In the same year the team behind Node.js announced that, along with a traditional release channel, they would concurrently implement an accelerated release cycle.
The LTS cycle, also known as the “even” channel is focused on stability and security (bug fixes, security updates, documentation updates etc) while the “odd” channel will focusing on refinement of existing APIs and active development of new features. While the “Current” channel will have a shorter lifespan, it will constantly update the code. To keep it simple, you should stay on the LTS plan if you are looking for stability (for example in an enterprise environment), or switch to the Current plant if you want to benefit from latest Node.js features.
“Given it is an odd-numbered release, it will only be available for eight months, with its end of life slated for June 2017. (…) Beyond v7, we’ll be focusing our efforts on language compatibility, adopting modern Web standards, growth internally for VM neutrality, and API development and support for growing Node.js use cases,” said Mikael Rogers @ hackernoon.com.
Currently, Node.js v6 Boron is the LTS version (until April 2018) and, as of Oct. 25, Node.js v7 is the “Current” version. This new major version includes Google’s V8 5.4 script which brings along an estimated 98 percent coverage of ES6 language features (56 percent in Node.js v5), improved reliability and performance, and the new experimental WHATWG based URL parser (ensure that parsing is the same in Node as it is in the browser). Node.js v7 will be supported until June 2017, when it will be replaced by Node.js 8.
Here are the other significant changes.
- Passing invalid input to Buffer.byteLength will now throw an error #8946.
- Calling Buffer without new is now deprecated and will emit a process warning #8169
- Passing a negative number to allocUnsafe will now throw an error #7079
- The fork and execFile methods now have stronger argument validation #7399
- The worker.suicide method is deprecated and will emit a process warning #3747
- V8 has been updated to 5.4.500.36 #8317, #8852, #9253
- NODE_MODULE_VERSION has been updated to 51 #8808
- A process warning is emitted if a callback is not passed to async file system methods #7897
- Intl.v8BreakIterator constructor has been deprecated and will emit a process warning #8908
- Unhandled Promise rejections have been deprecated and will emit a process warning #8217
- The punycode module has been deprecated #7941
Since the updated version of Node.js is shipping with a new version of V8, so you should recompile your native add-ons to avoid runtime errors when loading them.
Note: If you are still on Node.js v 0.12 (October 2016 is the EOL for v0.10), then you should know that December 2016 is the end of the line. After this date, no updates of any kind should be expected. Even if the Node.js team wanted to update this version, it’s not possible since no OpenSSL updates will be available for this version. In addition, the V8 engine included in this version will no longer be maintained. It’s time to let it go!