-
Notifications
You must be signed in to change notification settings - Fork 570
Breaking changes between v0.12 and next LTS release
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.
Pull requests:
Both SSLv2 and SSLv3 are now considered too insecure for general use and have been disabled at compile-time.
Pull requests:
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
trailing slash.
Pull request: nodejs/node#747
When send()
is supplied with a callback, it will no longer emit the 'error'
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
Commit: nodejs/node/6020d2a2fb
Previously, deepEqual()
would not compare prototypes of the two objects,
although it would check the prototype
properties of the objects if it exists.
Now, deepEqual()
uses 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
TODO
TODO