Skip to content
thefourtheye edited this page Aug 5, 2015 · 17 revisions

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.

Refs: #1891, #1937, f4f16bf

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.

Refs: #1411 6020d2

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.

Refs: #1470 235036e

HTTP agent .getName()

HTTP agents used to return an extra colon at the end of return values for .getName(). This has been fixed.

Refs: #1617 06cc919

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.

Refs: #747 / bb97b70

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.)

Clone this wiki locally