Node.js v6.0.0 Release Brief - NodeSource

The NodeSource Blog

You have reached the beginning of time!

Node.js v6.0.0 Release Brief

In accordance with our release plan, Node.js v6.0.0 is now out. This major bump brings significant improvements for performance, reliability, usability and security. Progress on performance can be seen on the benchmarking page of the Node.js website, with gains visible across the board for v6. Additionally, due to v8 5.0, ES6 language feature support is now at 96%.

While v6 is necessary for the Node project, if your production complexity makes frequent upgrades painful, or if stability is a greater interest than quality-of-life features, we recommend you stay on Node v4 “Argon”, the LTS release line until v6 moves into LTS mode in October 2016.

Quick patch releases will be routine though v6’s “Current” lifecycle. Expect a patch or minor release as soon as next week. Expect this to slow down greatly in October 2016 when v6 becomes LTS.

We will be sure to let you know when a release contains a critical update and a recommendation to upgrade. Of course, we'd love you to upgrade and test, but this major upgrade is not in any way critical.

Overview

Of a total of 226 commits:

  • 27 were documentation-only commits.
  • 14 only modify tests and 2 only affect internal tooling.
  • 23 of the commits consist of 2 dependency upgrades, transitive updates, & floating patches.
    • As outlined in the Dependency Upgrades section below, these are mostly to V8.
  • 89 were tagged semver-major, signalling breaking changes.
  • 7 were tagged semver-minor signalling new features.
  • 67 additional commits were composed primarily of upgrades to new c++ v8 apis and routine bug fixes.

Breaking changes

In all, they consist of:

  • 64 breaking API changes we’ve ensured have minimal impact to the node ecosystem overall.
  • Native addons must be recompiled to an ABI change.
    • Non-deprecated APIs remain the same for native addons.
  • 5 larger general breaking changes to node as a whole:
    • Internal tooling no longer ships in node tarballs.
    • Process warnings are now consistent and prefixed with (node:pid).
    • All error messages have been updated for consistency.
    • Support for Windows Vista and XP has been dropped.
    • Support for OS X versions older than 10.7 has been dropped.

Given the sizable amount of these changes, we’ve summarized them in greater detail on a Node.js Wiki page.

Feature Additions

  • buffer: Added Buffer.prototype.lastIndexOf(). (dcposch@dcpos.ch) #4846
  • crypto: OpenSSL config is now read before initialization. (Stefan Budeanu) #6374
  • events:
    • Added prependListener() and prependOnceListener() to EventEmitter. (James M Snell) #6032
    • Added eventNames() to EventEmitter. (James M Snell) #5617
  • process: All Node.js warnings now first go through a process warning event. (James M Snell) #4782

Dependency Upgrades

Git Diffstats

(Showing the delta between v5.11.0 and v6.0.0.)

Without deps, docs, benchmarks, tests, or tools:

 .editorconfig                     |   39 +
 .eslintignore                     |    4 +-
 .eslintrc                         |  129 +--
 .gitignore                        |    8 +-
 .mailmap                          |   20 +
 Makefile                          |  161 ++-
 Makefile.build                    |  499 ---------
 android-configure                 |   66 +-
 common.gypi                       |   23 +-
 configure                         |  161 ++-
 lib/.eslintrc                     |    4 +
 lib/_debug_agent.js               |    6 +-
 lib/_debugger.js                  |  220 ++--
 lib/_http_agent.js                |  117 ++-
 lib/_http_client.js               |   90 +-
 lib/_http_common.js               |  106 +-
 lib/_http_incoming.js             |    6 +-
 lib/_http_outgoing.js             |   38 +-
 lib/_http_server.js               |   56 +-
 lib/_stream_readable.js           |   93 +-
 lib/_stream_transform.js          |   10 +-
 lib/_stream_wrap.js               |   16 +-
 lib/_stream_writable.js           |   85 +-
 lib/_tls_common.js                |   11 +-
 lib/_tls_legacy.js                |   75 +-
 lib/_tls_wrap.js                  |   95 +-
 lib/assert.js                     |   61 +-
 lib/buffer.js                     |  577 +++++++----
 lib/child_process.js              |  155 +--
 lib/cluster.js                    |  166 +--
 lib/console.js                    |   42 +-
 lib/crypto.js                     |   57 +-
 lib/dgram.js                      |  207 ++--
 lib/dns.js                        |   84 +-
 lib/domain.js                     |   56 +-
 lib/events.js                     |  116 ++-
 lib/freelist.js                   |    6 -
 lib/fs.js                         |  740 +++++++-------
 lib/https.js                      |   46 +-
 lib/internal/bootstrap_node.js    |  445 ++++++++
 lib/internal/child_process.js     |  106 +-
 lib/internal/cluster.js           |    4 +
 lib/internal/freelist.js          |    2 +-
 lib/internal/module.js            |   83 +-
 lib/internal/net.js               |   18 +
 lib/internal/process.js           |  186 ++++
 lib/internal/process/next_tick.js |  157 +++
 lib/internal/process/promises.js  |   61 ++
 lib/internal/process/stdio.js     |  161 +++
 lib/internal/process/warning.js   |   49 +
 lib/internal/readline.js          |  391 +++++++
 lib/internal/repl.js              |   52 +-
 lib/internal/socket_list.js       |   28 +-
 lib/internal/util.js              |   74 +-
 lib/internal/v8_prof_polyfill.js  |  102 ++
 lib/internal/v8_prof_processor.js |   33 +
 lib/module.js                     |  367 ++++---
 lib/net.js                        |  271 ++---
 lib/os.js                         |   12 +-
 lib/path.js                       | 1925 ++++++++++++++++++++++++++---------
 lib/querystring.js                |  286 ++++--
 lib/readline.js                   |  433 +-------
 lib/repl.js                       |  377 ++++---
 lib/string_decoder.js             |    9 +-
 lib/timers.js                     |  550 +++++-----
 lib/tls.js                        |   87 +-
 lib/tty.js                        |   11 -
 lib/url.js                        |  642 ++++++++----
 lib/util.js                       |  292 +++---
 lib/v8.js                         |   33 +-
 lib/zlib.js                       |   75 +-
 node.gyp                          |  104 +-
 src/async-wrap-inl.h              |   45 +-
 src/async-wrap.cc                 |  124 ++-
 src/async-wrap.h                  |    6 +-
 src/atomic-polyfill.h             |   18 +
 src/base-object-inl.h             |    5 +-
 src/base-object.h                 |    6 +-
 src/cares_wrap.cc                 |   94 +-
 src/debug-agent.cc                |   21 +-
 src/debug-agent.h                 |    1 -
 src/env-inl.h                     |  111 +-
 src/env.cc                        |   45 +-
 src/env.h                         |  100 +-
 src/fs_event_wrap.cc              |   29 +-
 src/js_stream.cc                  |    4 +-
 src/node.cc                       |  665 ++++++++----
 src/node.h                        |   33 +-
 src/node.js                       |  962 -----------------
 src/node_buffer.cc                |  501 ++++++---
 src/node_buffer.h                 |    3 +
 src/node_config.cc                |   48 +
 src/node_constants.cc             |   13 +
 src/node_contextify.cc            |  394 ++++---
 src/node_counters.cc              |    4 +-
 src/node_crypto.cc                | 1088 +++++++++++++-------
 src/node_crypto.h                 |   69 +-
 src/node_crypto_bio.cc            |   16 +
 src/node_crypto_bio.h             |    4 +
 src/node_dtrace.cc                |    4 +-
 src/node_file.cc                  |  397 ++++++--
 src/node_http_parser.cc           |   74 +-
 src/node_i18n.cc                  |    4 +
 src/node_i18n.h                   |    3 +
 src/node_internals.h              |   62 +-
 src/node_javascript.cc            |   26 +-
 src/node_lttng.cc                 |    4 +-
 src/node_lttng_provider.h         |   60 +-
 src/node_main.cc                  |    9 +
 src/node_object_wrap.h            |    9 +-
 src/node_os.cc                    |   73 +-
 src/node_revert.cc                |   53 +
 src/node_revert.h                 |   44 +
 src/node_root_certs.h             |  367 +++----
 src/node_stat_watcher.cc          |    2 +-
 src/node_util.cc                  |   75 +-
 src/node_v8.cc                    |   88 +-
 src/node_version.h                |    6 +-
 src/node_watchdog.cc              |   12 +-
 src/node_watchdog.h               |    8 +-
 src/node_win32_etw_provider-inl.h |   16 +-
 src/node_win32_etw_provider.cc    |    2 +-
 src/node_zlib.cc                  |   77 +-
 src/pipe_wrap.cc                  |   11 +-
 src/process_wrap.cc               |    4 +-
 src/res/node_etw_provider.man     |   32 +
 src/stream_base-inl.h             |   17 +
 src/stream_base.cc                |   20 +-
 src/stream_base.h                 |   24 +-
 src/stream_wrap.cc                |    5 -
 src/string_bytes.cc               |   74 +-
 src/string_bytes.h                |   48 +-
 src/string_search.h               |  366 +++----
 src/tcp_wrap.cc                   |    9 +-
 src/tls_wrap.cc                   |   61 +-
 src/tls_wrap.h                    |    8 +-
 src/tty_wrap.cc                   |    1 -
 src/udp_wrap.cc                   |   71 +-
 src/util-inl.h                    |   19 +-
 src/util.cc                       |   70 +-
 src/util.h                        |   48 +
 src/uv.cc                         |    2 +-
 vcbuild.bat                       |   99 +-
 143 files changed, 11863 insertions(+), 6887 deletions(-)

Dependencies summary:

 3458 files changed, 515949 insertions, 432455 deletions

Docs summary:

 132 files changed, 30849 insertions, 17703 deletions

Tests & Benchmarks summary:

 1213 files changed, 23024 insertions, 10039 deletions

Most active commit

Of the 226 commits, ef4170e was the most active:

commit ef4170ea03a80b21b2d8a65ce432efaa370fe2fa
Author: Ali Ijaz Sheikh <ofrobots@google.com>
Date:   Wed Jan 20 09:45:45 2016 -0800

    deps: upgrade to V8 4.8.271.17

    Pick up V8 4.8 branch-head. This branch brings in @@isConcatSpreadable,
    @@toPrimitive and ToLength ES6 changes. For full details see:
    http://v8project.blogspot.de/2015/11/v8-release-48.html

    https://github.com/v8/v8/commit/fa163e2

    Ref: https://github.com/nodejs/node/pull/4399
    PR-URL: https://github.com/nodejs/node/pull/4785
    Reviewed-By: bnoordhuis - Ben Noordhuis <info@bnoordhuis.nl>

   3.0% deps/v8/src/arm/
   3.4% deps/v8/src/arm64/
   4.0% deps/v8/src/compiler/
   3.0% deps/v8/src/crankshaft/arm64/
  30.0% deps/v8/src/crankshaft/
   3.0% deps/v8/src/ia32/
   3.5% deps/v8/src/js/
   3.9% deps/v8/src/mips/
   3.2% deps/v8/src/mips64/
   3.1% deps/v8/src/ppc/
   3.3% deps/v8/src/x64/
   3.2% deps/v8/src/x87/
  21.7% deps/v8/src/
   5.4% deps/v8/test/cctest/
   3.6% deps/v8/test/mjsunit/
 1498 files changed, 227369 insertions(+), 195025 deletions(-)

The NodeSource platform offers a high-definition view of the performance, security and behavior of Node.js applications and functions.

Start for Free