The NodeSource Blog

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.

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

Start for Free