The Nodesource Blog

#shoptalk Subscribe

Node.js v6.3.0 Release Brief

This v6 release is the result of an enormous amount of work done recently, combined with the recent security releases which caused a feature hold-up.

As with all releases within major version lines, minor and patch upgrades should be drop-in replacements for previous versions.

Overview

Of a total of 155 commits:

  • 32 were documentation-only commits.
  • 18 only modify tests and 9 only affect internal tooling.
  • 8 of the commits are related to dependencies as follows:
  • One commit was back-ported onto V8:

11 commits were tagged as semver-minor, adding new functionality and justifying the jump to v6.3.0:

  • [4014ecbfb4] - (SEMVER-MINOR) buffer: speed up swap16/32, add swap64 (Zach Bjornson) #7157
  • [c1bd3fe14c] - (SEMVER-MINOR) cluster: work with v8_inspector (cjihrig) #6792
  • [4891001d7e] - (SEMVER-MINOR) debugger: make listen address configurable (Ben Noordhuis) #3316
  • [6b1fc63dcb] - (SEMVER-MINOR) readline: allow passing prompt to constructor (Evan Lucas) #7125
  • [72d659a000] - (SEMVER-MINOR) readline: return old status from _setRawMode (Anna Henningsen) #6635
  • [da8e510ee0] - (SEMVER-MINOR) repl: break on sigint/ctrl+c (Anna Henningsen) #6635
  • [2a8bd35bac] - (SEMVER-MINOR) src: add node::FreeEnvironment public API (Cheng Zhao) #3098
  • [929b6c29d8] - (SEMVER-MINOR) src: refactor require('constants') (James M Snell) #6534
  • [7d4f038a78] - (SEMVER-MINOR) src,lib: v8-inspector support (Pavel Feldman) #6792
  • [3b8914d5ce] - (SEMVER-MINOR) util: add an option for configuring break length (cjihrig) #7499
  • [d049919e7d] - (SEMVER-MINOR) vm: add ability to break on sigint/ctrl+c (Anna Henningsen) #6635

The remaining significant commits are as follows:

  • [40211e80f2] - assert: remove unneeded arguments special handling (Rich Trott) #7413
  • [44f0f940c8] - benchmark: add setImmediate() benchmarks (Andras) #6436
  • [35c70b5668] - benchmark: util._extend vs object.assign (surya panikkal) #7255
  • [ac8e1bf609] - buffer: improve creation performance. (Ingvar Stepanyan) #7349
  • [5e4113e58d] - build: Fix compile failure in backtrace_posix.cc (Michael Dawson) #7544
  • [15a32dd42b] - build: export openssl symbols on windows (Ben Noordhuis) #6274
  • [b829a4969f] - build: enable big toc for release builds in AIX (Gireesh Punathil) #7508
  • [9b5be44b01] - build: split CI rules in Makefile (João Reis) #7317
  • [1bd6a623a0] - build: drop unconditional openssl dep from cctest (Ben Noordhuis) #7486
  • [8a31b234ee] - build: remove unused files from CPPLINT_FILES (Ben Noordhuis) #7462
  • [91744aaf00] - build: configure --shared (Stefan Budeanu) #6994
  • [2aa06b9fa0] - child_process: preserve argument type (Rich Trott) #7391
  • [4a0fb6fcb8] - Revert "child_process: measure buffer length in bytes" (Rich Trott) #7391
  • [fa9e6f7463] - crypto: Allow GCM ciphers to have a longer IV length (Michael Wain) #6376
  • [ef41c8bd8e] - crypto: update root certificates (Ben Noordhuis) #7363
  • [2c7804ad9e] - crypto,tls: perf improvements for crypto and tls getCiphers (James M Snell) #7225
  • [a4880b5b10] - deps: MASM.UseSafeExceptionHandlers for OpenSSL (Fedor Indutny) #7427
  • [e7b84007be] - http: replace finish() callback with arrow function (Guy Fraser) #7378
  • [c4aaf47f4d] - inspector: Do cleanups before notifying callback (Eugene Ostroukhov) #7450
  • [fe580eb578] - inspector: print warning when used (Evan Lucas) #7383
  • [8dd48c9251] - inspector: fix inspector connection cleanup (Eugene Ostroukhov) #7268
  • [09ecd1fb58] - inspector: fix coverity scan errors (Eugene Ostroukhov) #7324
  • [88b2aa3ce6] - inspector: process.exit should wait for inspector (Eugene Ostroukhov) #7252
  • [7da8a413f6] - inspector: reduce implementation in header (Eugene Ostroukhov) #7228
  • [ec90a7a92e] - inspector: change default port (Ali Ijaz Sheikh) #7212
  • [d0e24923a6] - net: use icu's punycode implementation (James M Snell) #7355
  • [fb39025e31] - punycode: update to v2.0.0 (Mathias Bynens) #7267
  • [7a7b8f7e67] - repl: Default useGlobal to false in CLI REPL. (Lance Ball) #5703
  • [c39f6c0204] - repl: Enable tab completion for global properties (Lance Ball) #7369
  • [ca95a84bc4] - repl: fix tab completion for defined commands (Prince J Wesley) #7364
  • [3cba8acc15] - src: remove obsolete NOLINT comments (Ben Noordhuis) #7462
  • [57cc4e3071] - src: print backtrace on failed CHECK/ASSERT (Ben Noordhuis) #6734
  • [b8919b1d23] - src: move ABORT() logic into node::Abort() (Ben Noordhuis) #6734
  • [c96d701769] - src: print backtrace on abort/unreachable code (Ben Noordhuis) #6734
  • [6cec90a611] - src: print backtrace on fatal error (Ben Noordhuis) #6734
  • [8f7baffee4] - src: fix bad logic in uid/gid checks (Ben Noordhuis) #7374
  • [6fa560dce9] - src: fix memory leak in WriteBuffers() error path (Ben Noordhuis) #7374
  • [ce039c3240] - src: fix use-after-return in zlib bindings (Ben Noordhuis) #7374
  • [2816418c04] - src: remove deprecated HMAC_Init, use HMAC_Init_ex (Ben Noordhuis) #7374
  • [b7e661b12c] - src: remove duplicate HMAC_Init calls (Ben Noordhuis) #7374
  • [25bc7fee34] - src: remove unused md_ data members (Ben Noordhuis) #7374
  • [2228a656b0] - src: remove unused data member write_queue_size_ (Ben Noordhuis) #7374
  • [9945b4ecd6] - src: guard against starting fs watcher twice (Ben Noordhuis) #7374
  • [3b1c19f90a] - src: initialize encoding_ data member (Ben Noordhuis) #7374
  • [c795d1ed9b] - src: check uv_async_init() return value (Ben Noordhuis) #7374
  • [001aa06bc0] - src: lint v8abbr.h (Ben Noordhuis) #7462
  • [ca4fb084f6] - src: lint node_lttng_tp.h (Ben Noordhuis) #7462
  • [da0ebf62c7] - src: lint node_win32_perfctr_provider.cc (Ben Noordhuis) #7462
  • [3fa643b069] - src: fix whitespace/indent cpplint warnings (Ben Noordhuis) #7462
  • [f72259aa89] - src: fix whitespace/blank_line cpplint warnings (Ben Noordhuis) #7462
  • [1b3c1b08a8] - src: fix runtime/references cpplint warnings (Ben Noordhuis) #7462
  • [be0c575ab4] - src: fix runtime/int cpplint warnings (Ben Noordhuis) #7462
  • [88c5183147] - src: fix runtime/indentation_namespace warnings (Ben Noordhuis) #7462
  • [1fa6dba8f2] - src: fix readability/nolint cpplint warnings (Ben Noordhuis) #7462
  • [43e83576bd] - src: fix readability/namespace cpplint warnings (Ben Noordhuis) #7462
  • [5fd158568f] - src: fix readability/inheritance cpplint warnings (Ben Noordhuis) #7462
  • [b7e006b489] - src: fix readability/constructors cpplint warnings (Ben Noordhuis) #7462
  • [7fe758de85] - src: fix readability/braces cpplint warnings (Ben Noordhuis) #7462
  • [6280ccdaaa] - src: fix build/header_guard cpplint warnings (Ben Noordhuis) #7462
  • [5dfa234bae] - src: fix build/c++tr1 cpplint warnings (Ben Noordhuis) #7462
  • [84dd526f51] - src: renaming ares_task struct to node_ares_task (Daniel Bevenius) #7345
  • [059335180d] - src: use RAII for mutexes and condition variables (Ben Noordhuis) #7334
  • [3d69ad1cf3] - src: make Sec-WebSocket-Key check case-insensitive (Myles Borins) #7248
  • [38d36e3285] - src: fix --without-inspector build (Anna Henningsen) #7258
  • [2fd140b949] - src: fix json payload from inspector (Myles Borins) #7232
  • [643b33b497] - src: add linebreak to inspector message (Nicolas Romer) #7070
  • [ea2d661447] - src: fix --without-inspector build (Anna Henningsen) #7078
  • [cd38401724] - src: fix Windows segfault with --eval (Bryce Simonds) #6938
  • [6dc0dae830] - src: rename "node" script to "bootstrap_node" (Daniel Bevenius) #7277
  • [e1d6bd9e30] - stream: improve Readable.read() performance (Brian White) #7077
  • [962ac37e1f] - string_decoder: fix bad utf8 character handling (Brian White) #7310
  • [e30f32f003] - Revert "test: mark test-vm-timeout flaky on windows" (Anna Henningsen) #7373
  • [efb7a90fa9] - timers: optimize setImmediate() (Andras) #6436
  • [a5d894590d] - timers: optimize linkedlist (Andras) #6436
  • [77331a7c01] - tls: avoid calling Buffer.byteLength multiple times (James M Snell) #7236
  • [6151544751] - vm: don't print out arrow message for custom error (Anna Henningsen) #7398
  • [55b87c0238] - vm: test for abort condition of current invocation (Anna Henningsen) #7373

Notable Changes

  • buffer: Added buffer.swap64() to compliment swap16() & swap32(). (Zach Bjornson) #7157
  • build: New configure options have been added for building Node.js as a shared library. (Stefan Budeanu) #6994
    • The options are: --shared, --without-v8-platform & --without-bundled-v8.
  • crypto: Root certificates have been updated. (Ben Noordhuis) #7363
  • debugger: The server address is now configurable via --debug=<address>:<port>. (Ben Noordhuis) #3316
  • npm: Upgraded npm to v3.10.3 (Kat Marchán) #7515 & (Rebecca Turner) #7410
  • readline: Added the prompt option to the readline constructor. (Evan Lucas) #7125
  • repl / vm: sigint/ctrl+c will now break out of infinite loops without stopping the Node.js instance. (Anna Henningsen) #6635
  • src:
    • Added a node::FreeEnvironment public C++ API. (Cheng Zhao) #3098
    • Refactored require('constants'), constants are now available directly from their respective modules. (James M Snell) #6534
  • stream: Improved readable.read() performance by up to 70%. (Brian White) #7077
  • timers: setImmediate() is now up to 150% faster in some situations. (Andras) #6436
  • util: Added a breakLength option to util.inspect() to control how objects are formatted across lines. (cjihrig) #7499
  • v8-inspector: Experimental support has been added for debugging Node.js over the inspector protocol. (Ali Ijaz Sheikh) #6792
    • Note: This feature is _experimental_, and it could be altered or removed.
    • You can try this feature by running Node.js with the --inspect flag.

Git Diffstats

(Showing the delta between v6.2.2 and v6.3.0, ignoring deps/npm.)

Without deps, docs, benchmarks, or tests:

 Makefile                           |   38 +-
 common.gypi                        |    9 +
 configure                          |   35 +
 lib/_debug_agent.js                |    7 +-
 lib/_http_outgoing.js              |   15 +-
 lib/_stream_readable.js            |  305 +-
 lib/_tls_common.js                 |    6 +-
 lib/assert.js                      |    6 -
 lib/buffer.js                      |  192 +-
 lib/child_process.js               |   73 +-
 lib/cluster.js                     |    4 +-
 lib/constants.js                   |   10 +-
 lib/crypto.js                      |   44 +-
 lib/dgram.js                       |    4 +-
 lib/fs.js                          |    8 +-
 lib/internal/bootstrap_node.js     |    4 +
 lib/internal/child_process.js      |    2 +-
 lib/internal/linkedlist.js         |   18 +-
 lib/internal/process.js            |    6 +-
 lib/internal/repl.js               |    3 +-
 lib/internal/streams/BufferList.js |   72 +
 lib/internal/util.js               |   31 +
 lib/os.js                          |    6 +
 lib/punycode.js                    |  860 +++---
 lib/readline.js                    |   12 +-
 lib/repl.js                        |   96 +-
 lib/string_decoder.js              |   75 +-
 lib/timers.js                      |   85 +-
 lib/tls.js                         |   40 +-
 lib/url.js                         |   12 +-
 lib/util.js                        |    7 +-
 lib/vm.js                          |   47 +
 node.gyp                           |  181 +-
 src/async-wrap.cc                  |   10 +-
 src/backtrace_posix.cc             |   50 +
 src/backtrace_win32.cc             |    8 +
 src/cares_wrap.cc                  |   30 +-
 src/debug-agent.cc                 |   23 +-
 src/debug-agent.h                  |    7 +-
 src/env-inl.h                      |    5 +-
 src/env.h                          |   24 +-
 src/fs_event_wrap.cc               |   15 +-
 src/handle_wrap.h                  |    2 +-
 src/inspector_agent.cc             |  594 ++++
 src/inspector_agent.h              |   42 +
 src/inspector_socket.cc            |  690 +++++
 src/inspector_socket.h             |   57 +
 src/node.cc                        |  311 ++-
 src/node.h                         |   15 +-
 src/node_buffer.cc                 |  146 +-
 src/node_constants.cc              |   30 +-
 src/node_constants.h               |    2 +-
 src/node_contextify.cc             |   74 +-
 src/node_crypto.cc                 |  119 +-
 src/node_crypto.h                  |    7 -
 src/node_crypto_bio.cc             |    5 +-
 src/node_crypto_bio.h              |    3 +-
 src/node_file.cc                   |   30 +-
 src/node_http_parser.cc            |    4 +-
 src/node_i18n.cc                   |  132 +
 src/node_internals.h               |  165 +-
 src/node_lttng_tp.h                |   60 +-
 src/node_main.cc                   |    3 +-
 src/node_mutex.h                   |  187 ++
 src/node_root_certs.h              |  133 +-
 src/node_stat_watcher.h            |    2 +-
 src/node_util.cc                   |   18 +
 src/node_version.h                 |    6 +-
 src/node_watchdog.cc               |  226 ++
 src/node_watchdog.h                |   63 +-
 src/node_win32_etw_provider.cc     |    9 +-
 src/node_win32_perfctr_provider.cc |   30 +-
 src/node_zlib.cc                   |    4 +-
 src/process_wrap.cc                |   14 +-
 src/signal_wrap.cc                 |    9 +
 src/spawn_sync.cc                  |   38 +-
 src/spawn_sync.h                   |    4 +-
 src/stream_base.h                  |    2 +-
 src/string_bytes.cc                |  112 +-
 src/string_search.cc               |    5 +-
 src/string_search.h                |    6 +-
 src/tls_wrap.cc                    |    2 +-
 src/tls_wrap.h                     |    3 +-
 src/util-inl.h                     |   10 +
 src/util.h                         |  236 +-
 src/v8abbr.h                       |    3 +-
 tools/certdata.txt                 | 1793 +++---------
 tools/cpplint.py                   | 5059 +++++++++++++++++++++++++++-------
 tools/getmoduleversion.py          |   24 +
 tools/getnodeversion.py            |   14 +-
 tools/icu/icu-generic.gyp          |    9 +-
 tools/icu/icu_small.json           |    3 +-
 tools/icu/iculslocs.cc             |   52 +-
 tools/install.py                   |   18 +-
 tools/mk-ca-bundle.pl              |    2 +
 tools/mkssldef.py                  |   44 +
 96 files changed, 8957 insertions(+), 4159 deletions(-)

Deps only:

   4.5% deps/icu-small/source/data/in/
   0.8% deps/v8_inspector/deps/jinja2/artwork/
   7.8% deps/v8_inspector/deps/jinja2/docs/
   0.7% deps/v8_inspector/deps/jinja2/examples/rwbench/
   0.6% deps/v8_inspector/deps/jinja2/examples/
   1.2% deps/v8_inspector/deps/jinja2/ext/django2jinja/
   0.7% deps/v8_inspector/deps/jinja2/ext/
  36.6% deps/v8_inspector/deps/jinja2/jinja2/
   0.6% deps/v8_inspector/deps/jinja2/scripts/
   6.2% deps/v8_inspector/deps/jinja2/tests/
   1.0% deps/v8_inspector/deps/jinja2/
   1.4% deps/v8_inspector/deps/markupsafe/markupsafe/
   0.5% deps/v8_inspector/deps/markupsafe/
   0.5% deps/v8_inspector/deps/wtf/wtf/
   8.5% deps/v8_inspector/platform/inspector_protocol/
   0.5% deps/v8_inspector/platform/v8_inspector/build/
   0.9% deps/v8_inspector/platform/v8_inspector/public/
  25.9% deps/v8_inspector/platform/v8_inspector/
 252 files changed, 45242 insertions(+), 46 deletions(-)

Docs only:

 .github/ISSUE_TEMPLATE.md                        |    8 +-
 .github/PULL_REQUEST_TEMPLATE.md                 |   13 +-
 BUILDING.md                                      |   10 +-
 CHANGELOG.md                                     |    3 +-
 README.md                                        |    2 +
 deps/v8_inspector/README.md                      |   10 +
 deps/v8_inspector/deps/wtf/README.md             |    1 +
 doc/api/addons.md                                |    2 +-
 doc/api/buffer.md                                |   32 +-
 doc/api/child_process.md                         |    8 +-
 doc/api/cluster.md                               |    9 +-
 doc/api/crypto.md                                |  383 ++++++-
 doc/api/debugger.md                              |   14 +
 doc/api/events.md                                |    2 +-
 doc/api/fs.md                                    |  290 ++++-
 doc/api/globals.md                               |    2 +-
 doc/api/http.md                                  |  262 ++++-
 doc/api/https.md                                 |   29 +-
 doc/api/net.md                                   |   10 +-
 doc/api/os.md                                    | 1110 ++++++++++++++++++--
 doc/api/process.md                               |   14 +-
 doc/api/readline.md                              |    8 +-
 doc/api/repl.md                                  |   29 +-
 doc/api/stream.md                                |   80 +-
 doc/api/timers.md                                |  192 +++-
 doc/api/tls.md                                   |  137 +++
 doc/api/util.md                                  |    3 +
 doc/api/vm.md                                    |   22 +-
 doc/changelogs/CHANGELOG_V6.md                   |  182 ++++
 doc/ctc-meetings/2016-06-15.md                   |  175 +++
 doc/guides/timers-in-node.md                     |  192 ++++
 doc/onboarding-extras.md                         |   25 +-
 doc/topics/the-event-loop-timers-and-nexttick.md |   44 +-
 33 files changed, 2947 insertions(+), 356 deletions(-)

Tests & Benchmarks only:

   2.1% benchmark/buffers/
   0.3% benchmark/crypto/
   0.9% benchmark/misc/
   1.5% benchmark/net/
   3.1% benchmark/streams/
   1.8% benchmark/timers/
   0.3% benchmark/tls/
   1.3% test/abort/
   0.2% test/addons/buffer-free-callback/
   0.3% test/addons/make-callback-recurse/
   0.4% test/addons/make-callback/
   0.3% test/addons/null-buffer-neuter/
   1.4% test/addons/openssl-binding/
  30.7% test/cctest/
   0.5% test/internet/
   2.2% test/message/
  50.3% test/parallel/
   1.7% test/sequential/
 97 files changed, 3008 insertions(+), 326 deletions(-)

Most active commit

Of the 155 commits, 6210528 was the most active:
(Excluding docs, npm, eslint, and tests.)

commit 62105288d34a1e2b00c8bb4eb608cbda6b7bf20c
Author: Ali Ijaz Sheikh <ofrobots@google.com>
Date:   Sat May 28 22:17:12 2016 -0700

    deps: import v8_inspector

    Pick up v8 inspector from [1]. This is the standalone version of the
    devtools debug protocol.

    [1] https://github.com/pavelfeldman/v8_inspector/commit/e1bb206

    PR-URL: https://github.com/nodejs/node/pull/6792
    Reviewed-By: jasnell - James M Snell <jasnell@gmail.com>
    Reviewed-By: addaleax - Anna Henningsen <anna@addaleax.net>
    Reviewed-By: bnoordhuis - Ben Noordhuis <info@bnoordhuis.nl>

   6.8% deps/v8_inspector/deps/jinja2/docs/
  32.1% deps/v8_inspector/deps/jinja2/jinja2/
   5.4% deps/v8_inspector/deps/jinja2/tests/
   5.3% deps/v8_inspector/deps/jinja2/
  21.9% deps/v8_inspector/devtools/
   7.3% deps/v8_inspector/platform/inspector_protocol/
  18.4% deps/v8_inspector/platform/v8_inspector/
 256 files changed, 51764 insertions(+)

This is a regular and routine release for a Node.js Current release line. 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, but this release is not critical unless you are experiencing one of the issues identified and fixed above.