Skip to content

Breaking changes between v0.12 and next LTS release

Julien Gilli edited this page Jun 24, 2015 · 10 revisions

Breaking changes between v0.12 and next LTS release

How the list of breaking changes was compiled

This documents lists breaking changes, or potentially breaking changes, when upgrading from v0.12 to the next LTS release that will come from the converged repository between Node.js and io.js. It has been compiled from the following sources:

The actual list of breaking changes

RC4 disabled from the list of ciphers

See https://github.com/nodejs/io.js/pull/826. Potentially mitigated if https://github.com/nodejs/node/issues/39 is merged.

SSLv2/SSLv3 support removed

See https://github.com/nodejs/node/issues/20 for more details.

url.resolve with URLs with trailing '.' or '..'

See https://github.com/nodejs/io.js/commit/faa687b4be2cea71c545cc1bec631c164b608acd

Array.values

See https://github.com/nodejs/node/issues/52

os: remove trailing slash from os.tmpdir()

See https://github.com/nodejs/io.js/pull/747

dgram: do not emit error for failed DNS lookups in send()

https://github.com/nodejs/io.js/pull/1796

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.

See https://github.com/nodejs/io.js/pull/1937.

http: Use finish instead of prefinish in _http_server.js

See https://github.com/nodejs/io.js/pull/1411

url: significantly improve the performance of the url module

Not sure if it actually breaks anything. See github.com/nodejs/io.js/pull/1561.

assert: check object prototype in deepEqual

See https://github.com/nodejs/io.js/pull/621.

V8 version upgraded to 4.3, possibly 4.4

Potentially breaking changes from 3.28 to 3.29

v8::Isolate::New() now returns an initialized Isolate: https://codereview.chromium.org/583153002

Embedders that used methods that influence the Isolate setup, such as V8::SetResourceConstraints, SetFunctionEntryHook, SetJidCodeHandler, or modifying flags need to either pass those constraints to the Isolate::New factory method or modify flags before creating the isolate.

Embedders relying on SetResourceConstraints to modify the stack limit need to use Isolate::SetStackLimit.

Last but not least, if you invoke Isolate::New() on a different thread than you intend to use the Isolate, you need to use v8::Locker to bind it to the thread you will use it on.

Furthermore, V8::Initialize needs to be invoked before Isolate::New is invoked.

Add IsGeneratorFunction and IsGeneratorObject checks to v8::Value: https://codereview.chromium.org/608503002
Rename ascii to one-byte where applicable: https://codereview.chromium.org/559913002

Breaking changes from 3.29 to 3.30

Move functions in v8::V8 that should be on v8::Isolate: https://codereview.chromium.org/652193006
Remove deprecated Ascii-related identifiers from v8.h: https://codereview.chromium.org/665883002
Remove v8::Object::IsDirty(): https://codereview.chromium.org/670703002/
Remove PersistentBase::ClearAndLeak: https://codereview.chromium.org/635513002

Breaking changes from 3.30 to 4.1

Rename v8::Exception::GetMessage to CreateMessage: CL

Breaking changes from 4.1 to 4.2

Remove declarative accessors: https://codereview.chromium.org/834443004

The API was never finished, and we decided to stop working on it. Embedders should use the regular accessors API

Remove support for signatures with arguments: https://codereview.chromium.org/848173002

Embedders need to verify the types of the arguments themselves in the callback.

Remove undetectable strings: https://codereview.chromium.org/916753002

Breaking changes from 4.2 to 4.3

Remove v8::Isolate::ClearInterrupt: https://codereview.chromium.org/1032623007
Deprecate v8::Isolate::IdleNotification

Use v8::Isolate::IdleNotificationDeadline instead.

Rename UniquePersistent to Global and give it full move semantics: https://codereview.chromium.org/980173003 and https://codereview.chromium.org/978783002
Convert all APIs that can fail due to exceptions to return Maybe<> or MaybeLocal<> and take a Context argument: https://code.google.com/p/v8/issues/detail?id=3929
Clone this wiki locally