Breaking changes between v0.12 and next LTS release
- Breaking changes between v0.12 and next LTS release
- How is this list compiled?
- Breaking changes
- tls: RC4 disabled from the list of ciphers
- tls: SSLv2 and SSLv3 support removed
- url: url.resolve() with URLs with trailing '.' or '..'
- lang: Array.values() has been removed
- os: remove trailing slash from os.tmpdir()
- dgram: do not emit error for failed DNS lookups in send()
- buffer: Buffer.concat() changes
- http: Use 'finish' instead of 'prefinish' when ending a response
- assert: check object prototype in assert.deepEqual()
- V8 version upgraded to 4.5
- Potentially breaking changes from 3.28 to 3.29
- v8::Isolate::New() now returns an initialized Isolate: https://codereview.chromium.org/583153002
- 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 v8stdint.h: https://codereview.chromium.org/670673002
- 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
- Remove support for signatures with arguments: https://codereview.chromium.org/848173002
- Remove ForceDelete: https://codereview.chromium.org/854493004
- 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
- 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
- Breaking changes from 4.3 to 4.4
- Breaking changes from 4.4 to 4.5
Clone this wiki locally
This document lists breaking changes, or potentially breaking changes, when upgrading from Node.js 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:
Issues in the convergence repository (nodejs/node-convergence-archive) representing ports of changes from joyent/node to nodejs/node that were not merged: https://github.com/nodejs/node-convergence-archive/issues?utf8=✓&q=is%3Aissue+label%3Apull-from-joyent-node.
The document that describes breaking changes between io.js releases: https://github.com/nodejs/node/wiki/Breaking-Changes.
Issues and PRs in nodejs/node that were considered as needing a major version bump according to semver <https://github.com/nodejs/node/issues?utf8=✓&q=label%3Asemver- major+>.
The document that describes API changes in V8: https://docs.google.com/document/d/1g8JFi8T_oAE_7uAri7Njtig7fKaPDfotU6huOa1alds/edit.
RC4 is now considered insecure and has been removed from the list of default
ciphers for TLS servers. Use the
ciphers option when starting a new TLS server
to supply an alternative list or the
--tls-cipher-list command line switch to
supply an alternative default cipher list.
Both SSLv2 and SSLv3 are now considered too insecure for general use and have been disabled at compile-time.
Convergence discussion: nodejs/node#20
Pull request: nodejs/node#278
Array.values() came from an unofficial release of V8 and has since been
removed pending further work on conformance with the spec. Instead of continuing
to float a patch on top of V8, io.js and the converged repository are currently
without support for it.
Convergence discussion: nodejs/node-convergence-archive#52
Provides consistency across platforms, no call to
os.tmpdir() returns a
Pull request: nodejs/node#747
send() is supplied with a callback, it will no longer emit the
event when an error occurs and instead pass the error to the callback.
Previously the behavior was to do both.
Pull request: nodejs/node#1796
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.
Pull request: nodejs/node#1937
The switch to
'finish' is intended to prevent the socket being detached from
the response until after the data is actually sent to the other side.
Pull request: nodejs/node#1411
deepEqual() would not compare prototypes of the two objects,
although it would check the
prototype properties of the objects if it exists.
Object.getPrototypeOf() to fetch and compare
prototypes, failing the assertion if they are not the same (
Pull request: nodejs/node#621
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
Move functions in v8::V8 that should be on v8::Isolate: https://codereview.chromium.org/652193006
Remove v8stdint.h: https://codereview.chromium.org/670673002
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
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 ForceDelete: https://codereview.chromium.org/854493004
Remove undetectable strings: https://codereview.chromium.org/916753002
Remove v8::Isolate::ClearInterrupt: https://codereview.chromium.org/1032623007
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