Breaking Changes Between io.js Versions
3.0.0 from 2.x
Buffer.concat
changes
Through 2.x, if Buffer.concat
is invoked with a single element array, then it will simply return the first element from it. But, starting from 3.0.0, irrespective of the number of elements in the array, a new Buffer
object will be created and returned.
dgram send() error changes
Through 2.x, the the dgram socket.send()
method emitted errors when a DNS lookup failed, even when a callback was provided. Starting from 3.0.0, if a callback is provided, no error event will be emitted.
Refs: #1796
http server timing change
When doing HTTP pipelining of requests, the server creates new request and response objects for each incoming HTTP request on the socket. Starting from 3.0.0, these objects are now created a couple of ticks later, when we are certainly done processing the previous request. This could change the observable timing with certain HTTP server coding patterns.
V8 upgrade
The upgrade from V8 4.2 to 4.4 will require a recompile of all native add-ons. The API surface area has not changed significantly, so most add-ons will "just work" after a recompile.
However, 4.3 introduces the new Maybe<>
and MaybeLocal<>
types, to fix systemic use-after-failure bugs where consumers could accidentally use empty handles. Many new APIs were introduced that return these types and take a Context argument. Add-on authors are encouraged to transition to these new maybe-style APIs as soon as possible, as V8 has deprecated the old ones and will eventually remove them.
HTTP status codes
HTTP status codes in core (http.STATUS_CODES
) were previously incorrect in mapping to the regulated codes. Updating the code mappings to conform to the IANA standard was a backwards incompatible change to consumers who depend on the text value of a header. The most significant of these changes was the text for 302
, which was previously Moved Temporarily
but is now Found
.
HTTP agent .getName()
HTTP agents used to return an extra colon at the end of return values for .getName()
. This has been fixed.
2.0.0 from 1.x
Consistent cross-platform os.tmpdir()
behavior
os.tmpdir()
has been changed to never return a trailing slash regardless of the host platform.
V8 upgrade
The upgrade from V8 4.1 to 4.2 will require a recompile of all native add-ons. (The API surface area has not changed significantly, so most add-ons will "just work" after a recompile.)