Node.js 8.0.0 has been delayed: Here’s why
© Shutterstock / Nuno Andre
Node.js 8.0.0 has been delayed. Users eager to take it for a spin will have to wait until the end of this month. Myles Borins, Developer Advocate for Node.js on Google Cloud Platform, explains why they chose to delay the release.
Node.js 8.0.0 will be shipped in late May. Did the team make the right decision? The users seem to agree that delaying the release is a better idea especially since if the project were to move forward on the old pipeline, the team would essentially be flying blind for three years.
Myles Borins, Developer Advocate for Node.js on Google Cloud Platform, announced the decision to delay Node.js 8.0.0 in a Medium post. He revealed that it all began with a conversation with Node.js TSC member James Snell. Myles revealed that, after various meetings with the V8 team, the project had decided to keep the new release on the Crankshaft and full-codegen pipeline. “We would land a version of V8 with the TurboFan + Ignition enable into Node.js 9.0.0,” he added.
To delay or not to delay Node.js 8.0.0?
This decision was taken in order to “give the V8 team time to improve performance and bugs in the pipeline and to offer a known and stable experience for an LTS release line. Since V8 5.9 was scheduled to be released in early June, it meant that Node.js 8.x would only have a limited amount of time in which support for the old pipeline would be offered by the V8 team. According to Myles, “the team has projected large amounts of churn in the pipeline between V8 5.9 and 6.0, which would make backporting to V8 5.7 or 5.8 fairly difficult.”
We would find ourselves in a position where we would be shipping an unsupported version of V8 for close to 3 years. This was the first problem.
As if things were not complicated enough, a nontrivial part of the Node.js code base had been tuned to be optimized by Crankshaft, he wrote. This code has been eloquently referred to as Crankscript. The problem is that if they waited until 9.0.0 to start refactoring their Crankscript, the result would have been a “fairly large delta between 8.x and 9.x very early in the life cycle of Carbon LTS.”
Problem number three was a security issue: Myles revealed that the Chrome team does constant security audits on V8 but if the project were to move forward on the old pipeline, the team would have been forced to fly blind for three years.
Decision time: Options
There were three options:
- Do nothing (ship with V8 5.7)
- Ship on time with a version of V8 5.8 that is ABI compatible to 5.9
- Delay the release to allow us to ship with a version of V8 5.8 that is ABI compatible to 6.0
They chose to delay the release. One Redditor claimed that they made the right decision because if they had decided against the delay, the team would have had to “make concessions for the whole 3-yearear support cycle.” Another Redditor agreed that “shipping an unsupported version for three years would be catastrophically bad.”
Myles revealed in the post published on May 1st that the Node.js team is “currently testing the performance of the new pipeline and the results are promising. The V8 team is preparing special versions of 5.8 that are ABI-compatible to 6.0. This will allow us to upgrade to the new pipeline as a non-breaking change, and maximize our ability to backport code to the LTS release.”