What is expected to be the last line of the io.js platform made its debut this week, with the arrival of version 3.0.0.
Compatible with npm, io.js was spawned as a fork of Node.js late last year after disagreements arose over Node's direction. Everything was smoothed over this spring, and the two factions, which had many of the same participants, agreed to reunite. "The governance of io.js and Node.js have already converged, all that is left is the technical side, and io.js v3 is a significant step towards completing it," said Mikeal Rogers, who has served as a spokesman for io.js, in an email.
"Developers need to know about io.js v3 because it's a significant change to the native side of the platform they'll need to understand in order to prepare for Node.js v4," Rogers said. He also noted version 3.0.0's status as the likely last release line for the platform.
Notable changes in version 3.0 include re-implementing "Buffer" on top of V8's Uint8Array function. "Every effort has been made to minimize the performance impact, however Buffer instantiation is measurably slower," release notes on Github said. "Access operations may be faster in some circumstances but the exact performance profile and difference over previous versions will depend on how Buffer is used within applications."
The V8 upgrade has caused some pretty huge changes to Node itself, including a rewrite of Buffer, Rogers said. Buffer in Node.js provides a class for storing of raw data, similar to an array of integers but corresponding to a raw memory allocation outside the V8 heap.
Version 3.0.0 also features ECMAScript 6 compliance via V8, including capabilities like enabled compute property names and "Array" being able to be subclassed in strict mode. Also, the smalloc module has been removed because the API can no longer be provided due to V8 changes. Some issues remain with the upgrade, including problems with unreferenced timers running during "beforeExit."
"We expect v3 to be a pretty short-cycle and Node.js v4 is on its way," said Rogers. "Native modules -- those that rely on V8's C++ API -- will need to upgrade to "nan" v2, which has a new API so there's a larger amount of user intervention to update their modules than prior releases of io.js and node.js." This new version of nan is already compatible with a future version of V8 planned for use in Node v4. "In a way, io.js v3 is a beta release line of Node.js v4."