The Nodesource Blog

#shoptalk Subscribe

Node.js v6.4.0 Release Brief

Node.js

This Current release comes with several functionality additions, a large amount of documentation improvements, many small bug fixes, and a restored JavaScript fs.realpath() implementation.

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:

In addition, 16 commits were tagged as semver-minor, adding new functionality:

  • [98f51ffeb6] - (SEMVER-MINOR) buffer: fix unintended unsigned overflow (Fedor Indutny) #7494
  • [28071a130e] - (SEMVER-MINOR) buffer: introduce latin1 encoding term (Trevor Norris) #7111
  • [c843e58914] - (SEMVER-MINOR) build: export zlib Symbols on Windows (Alex Hultman) #7983
  • [f0312e6560] - (SEMVER-MINOR) build: export more openssl Symbols on Windows (Alex Hultman) #7576
  • [e561895275] - (SEMVER-MINOR) child_process: control argv0 for spawned processes (Pat Pannuto) #7696
  • [da481c634f] - (SEMVER-MINOR) child_process: support stdio option in fork() (cjihrig) #7811
  • [a4f0b13e2b] - (SEMVER-MINOR) cluster: support stdio option for workers (cjihrig) #7838
  • [5f3ab3ffd1] - (SEMVER-MINOR) crypto: fix undefined behavior in ParseExtension (Fedor Indutny) #7494
  • [60d6e048f0] - (SEMVER-MINOR) deps: v8_inspector: console support (Aleksei Koziatinskii) #7988
  • [51a2041b90] - (SEMVER-MINOR) dgram: generalized send queue to handle close (Matteo Collina) #7066
  • [0bb9d21f0e] - (SEMVER-MINOR) fs: add bytesRead to ReadStream (Linus Unnebäck) #7942
  • [2f32191686] - (SEMVER-MINOR) process: save original argv[0] (Pat Pannuto) #7696
  • [4875aa2aa2] - (SEMVER-MINOR) repl: Add .editor mode support (Prince J Wesley) #7275
  • [fc3ba2ff4f] - (SEMVER-MINOR) repl: Use displayErrors for SyntaxError (Prince J Wesley) #7589
  • [b3164ae22e] - (SEMVER-MINOR) repl: add support for custom completions (Diosney Sarmiento) #7527
  • [cfec3ae5fd] - (SEMVER-MINOR) util: add inspect.defaultOptions (Roman Reiss) #8013

The remaining significant commits are as follows:

  • [57043aad33] - assert: fix deepEqual/deepStrictEqual on equivalent TypedArrays (Feross Aboukhadijeh) #8002
  • [f6713bfabd] - benchmark: add bench for fs.realpath() fix (Trevor Norris) #7899
  • [0d4b04659f] - benchmark: favor === over == (Rich Trott) #8000
  • [b0a557eef7] - build: add correct shared library naming on OS X (Stewart Addison) #7687
  • [6ed4ea8fd6] - build: turn on thin static archives (Ben Noordhuis) #7957
  • [889c62fec1] - build: fix dependency on missing header file (Ben Noordhuis) #7945
  • [a4394b8745] - build: fix typo in non-essential source file name (Ben Noordhuis) #7945
  • [636cf2236a] - build: adding config.gypi dep to addons/.buildstamp (Daniel Bevenius) #7893
  • [ddf292fc32] - build: don't link against liblog on host system (Ben Noordhuis) #7762
  • [4d81362b99] - deps: v8_inspector: remove jinja2 tests (Ali Ijaz Sheikh) #7796
  • [57312fc0c5] - deps: remove jinja.el from deps/v8_inspector (Ali Ijaz Sheikh) #7796
  • [18a3064937] - fs: restore JS implementation of realpath() (Bartosz Sosnowski) #7899
  • [db3a7e83eb] - http: specify _implicitHeader in OutgoingMessage (yorkie) #7949
  • [b75ca50c90] - inspector: Do not crash if the port is n/a (Eugene Ostroukhov) #7874
  • [7dc66f82e3] - lib: remove double check of string type (Franziska Hinkelmann) #7985
  • [5cc4b0ed15] - meta: clarify process for breaking changes (Rich Trott) #7955
  • [79ecfb5183] - meta: include a minimal CTC removal policy (Rich Trott) #7720
  • [376d73b3b9] - meta: provide example activities (Rich Trott) #7744
  • [ccbb46378f] - module: fix node_modules search path in edge case (hefangshi) #6670
  • [d9c9e46780] - repl: disable Ctrl+C support on win32 for now (Anna Henningsen) #7977
  • [61e57e06a6] - repl: don't override all internal repl defaults (cjihrig) #7826
  • [980f4da8c4] - repl: prevent undefined ref in completion (Evan Lucas) #7718
  • [6e6cf36761] - repl: default useGlobal to true (cjihrig) #7795
  • [08e6eeee70] - repl,util: insert carriage returns in output (JungMinu) #8028
  • [fb8840cac2] - src: use RAII for mutexes in node_watchdog.cc (Anna Henningsen) #7933
  • [780395ffca] - src: fix use-after-free in inspector agent (Ben Noordhuis) #7907
  • [9d45569ed4] - src: avoid manual memory management in inspector (Ben Noordhuis) #7906
  • [a059aea9a2] - src: remove final trace of raw encoding (Trevor Norris) #7111
  • [a20336e708] - src: remove unused using decls (Haojian Wu) #7990
  • [317ae96c33] - src: make EnvDelete behave like the delete operator (Franziska Hinkelmann) #7975
  • [1ab796fa96] - src: do not copy on failing setProperty() (Franziska Hinkelmann) #7908
  • [cf65a7ce9e] - src: unifying PipeConnectWrap and TCPConnectWrap (Daniel Bevenius) #7501
  • [63c62cce35] - src: Only use TR1 type_traits on OSX<10.9 (Ehsan Akhgari) #7778
  • [d7143095cb] - src: fix build on CentOS (Rich Trott) #7873
  • [303f4102d3] - src: pull OnConnection from pipe_wrap and tcp_wrap (Daniel Bevenius) #7547
  • [c967af8c07] - src: suppress coverity message (cjihrig) #7587
  • [f3e5b39696] - src: guard against overflow in ParseArrayIndex() (Ben Noordhuis) #7497
  • [c730a5d026] - src: move ParseArrayIndex() to src/node_buffer.cc (Ben Noordhuis) #7497
  • [da9bd2fc48] - src: alias BINARY to LATIN1 (Ben Noordhuis) #7284
  • [7ba0f860a6] - src: fix erroneous fallthrough in ParseEncoding() (Ben Noordhuis) #7262
  • [4535149794] - timers: remove unused repeat param in timer_wrap (Jan Schär) #7994
  • [381aef8145] - timers: fix cleanup of nested same-timeout timers (Erin Spiceland) #7827
  • [2f20910e24] - tty: set the handle to blocking mode (Jeremiah Senkpiel) #6816
  • [295d1ea016] - util: support classes in util.deprecate() (vladimir) #7690
  • [0a07201ca1] - util: fix formatting of objects with SIMD enabled (Anna Henningsen) #7864
  • [f1c50a8c5e] - win,msi: fix inclusion of translations (João Reis) #7798
  • [dbbcb9dbd9] - win,msi: Added Italian translation (Matteo Collina) #4647
  • [909254c901] - zlib: remove unneeded property (Jan Schär) #7987

Notable Changes

  • build: zlib and additional OpenSSL Symbols are now exposed on Windows platforms. (Alex Hultman) #7983 and #7576
  • child_process, cluster: Forked child processes and cluster workers now support stdio configuration. (Colin Ihrig) #7811 and #7838
  • child_process: argv[0] can now be set to arbitrary values in spawned processes. (Pat Pannuto) #7696
  • fs: fs.ReadStream now exposes the number of bytes it has read so far. (Linus Unnebäck) #7942
  • repl: The REPL now includes a new .editor mode. (Prince J Wesley) #7275
  • util: inspect() can now be configured globally using util.inspect.defaultOptions. (Roman Reiss) #8013

Git Diffstats

(Showing the delta between v6.3.1 and v6.4.0, ignoring deps/npm.)

Without deps, docs, benchmarks, or tests:

 .eslintrc                              |   3 +-
 .gitignore                             |   1 +
 .remarkrc                              |  35 +++++
 Makefile                               |   7 +-
 common.gypi                            |  15 +-
 configure                              |   6 +-
 lib/_http_outgoing.js                  |  15 +-
 lib/_tls_wrap.js                       |   2 +-
 lib/assert.js                          |   8 +-
 lib/buffer.js                          |   9 +-
 lib/child_process.js                   |  18 ++-
 lib/cluster.js                         |   1 +
 lib/dgram.js                           |  32 ++--
 lib/fs.js                              | 230 +++++++++++++++++++++++++--
 lib/internal/bootstrap_node.js         |  44 +++++-
 lib/internal/repl.js                   |   9 +-
 lib/internal/streams/lazy_transform.js |   2 +-
 lib/internal/util.js                   |   9 ++
 lib/module.js                          |  21 ++-
 lib/net.js                             |   3 +-
 lib/repl.js                            | 198 +++++++++++++++++++----
 lib/string_decoder.js                  |   3 +-
 lib/timers.js                          |  16 +-
 lib/tty.js                             |   4 +-
 lib/util.js                            |  62 +++++---
 node.gyp                               |  29 +++-
 src/base-object-inl.h                  |  16 +-
 src/base-object.h                      |   2 +-
 src/cares_wrap.cc                      |   1 -
 src/connect_wrap.cc                    |  22 +++
 src/connect_wrap.h                     |  26 +++
 src/connection_wrap.cc                 |  93 +++++++++++
 src/connection_wrap.h                  |  37 +++++
 src/debug-agent.cc                     |   1 -
 src/env.cc                             |   1 -
 src/inspector_agent.cc                 | 261 ++++++++++++++++++++++---------
 src/inspector_agent.h                  |   2 +-
 src/inspector_socket.cc                | 209 +++++++++----------------
 src/inspector_socket.h                 |  28 +++-
 src/node.cc                            |  53 ++++---
 src/node.h                             |  20 +--
 src/node_buffer.cc                     |  49 ++++--
 src/node_contextify.cc                 |  16 +-
 src/node_crypto.cc                     |   1 -
 src/node_crypto_clienthello.cc         |   4 +-
 src/node_crypto_clienthello.h          |   2 +-
 src/node_dtrace.cc                     |   1 -
 src/node_file.cc                       |   1 -
 src/node_internals.h                   |  18 ---
 src/node_util.cc                       |   8 +
 src/node_v8.cc                         |   1 -
 src/node_version.h                     |   4 +-
 src/node_watchdog.cc                   |  69 ++++----
 src/node_watchdog.h                    |   6 +-
 src/node_zlib.cc                       |   6 -
 src/pipe_wrap.cc                       |  89 ++---------
 src/pipe_wrap.h                        |   9 +-
 src/process_wrap.cc                    |   1 -
 src/signal_wrap.cc                     |   1 -
 src/stream_base-inl.h                  |   4 +-
 src/stream_base.cc                     |   2 +-
 src/stream_wrap.cc                     |   1 -
 src/string_bytes.cc                    |  12 +-
 src/tcp_wrap.cc                        |  88 ++---------
 src/tcp_wrap.h                         |   9 +-
 src/timer_wrap.cc                      |   4 +-
 src/tls_wrap.cc                        |   1 -
 src/tty_wrap.cc                        |   2 -
 src/udp_wrap.cc                        |   2 -
 src/util.h                             |   9 +-
 src/uv.cc                              |   2 -
 tools/install.py                       |   9 +-
 tools/license-builder.sh               |  10 ++
 tools/license2rtf.js                   |   8 +-
 tools/mkssldef.py                      |   9 ++
 tools/msvs/msi/i18n/it-it.wxl          |  38 +++++
 tools/msvs/msi/nodemsi.wixproj         |  12 +-
 tools/test.py                          |  14 +-
 vcbuild.bat                            |   2 +-
 79 files changed, 1391 insertions(+), 687 deletions(-)

Deps only:

   4.2% deps/v8_inspector/deps/jinja2/docs/
   0.7% deps/v8_inspector/deps/jinja2/examples/
   0.6% deps/v8_inspector/deps/jinja2/ext/django2jinja/
  19.7% deps/v8_inspector/deps/jinja2/jinja2/
   3.3% deps/v8_inspector/deps/jinja2/tests/
   1.8% deps/v8_inspector/deps/jinja2/
   0.7% deps/v8_inspector/deps/markupsafe/markupsafe/
   4.6% deps/v8_inspector/platform/inspector_protocol/
  14.8% deps/v8_inspector/platform/v8_inspector/
   4.2% deps/v8_inspector/third_party/jinja2/docs/
   0.7% deps/v8_inspector/third_party/jinja2/examples/
   0.6% deps/v8_inspector/third_party/jinja2/ext/django2jinja/
  19.7% deps/v8_inspector/third_party/jinja2/jinja2/
   1.6% deps/v8_inspector/third_party/jinja2/
   0.7% deps/v8_inspector/third_party/markupsafe/markupsafe/
   4.5% deps/v8_inspector/third_party/v8_inspector/platform/inspector_protocol/
  15.9% deps/v8_inspector/third_party/v8_inspector/platform/v8_inspector/
   0.6% deps/v8_inspector/
 474 files changed, 42032 insertions(+), 44870 deletions(-)

Docs only:

 BUILDING.md                            |   54 +-
 CHANGELOG.md                           |    3 +-
 COLLABORATOR_GUIDE.md                  |   12 +-
 CONTRIBUTING.md                        |   22 +-
 GOVERNANCE.md                          |   48 +-
 LICENSE                                |  105 +-
 README.md                              |  336 ++--
 doc/api/addons.md                      |   14 +-
 doc/api/assert.md                      |    4 +-
 doc/api/buffer.md                      | 2085 +++++++++++++---------
 doc/api/child_process.md               |   16 +-
 doc/api/cli.md                         |   13 +-
 doc/api/cluster.md                     |  107 +-
 doc/api/console.md                     |    4 +-
 doc/api/crypto.md                      |   74 +-
 doc/api/debugger.md                    |    8 +-
 doc/api/dgram.md                       |    3 +-
 doc/api/dns.md                         |   10 +-
 doc/api/documentation.md               |   10 +-
 doc/api/domain.md                      |    6 +-
 doc/api/errors.md                      |    2 +-
 doc/api/events.md                      |   59 +-
 doc/api/fs.md                          |   34 +-
 doc/api/globals.md                     |    8 +-
 doc/api/http.md                        |   47 +-
 doc/api/https.md                       |   10 +-
 doc/api/modules.md                     |   18 +-
 doc/api/net.md                         |   25 +-
 doc/api/os.md                          |    2 +-
 doc/api/path.md                        |    6 +-
 doc/api/process.md                     |  101 +-
 doc/api/punycode.md                    |    7 +-
 doc/api/querystring.md                 |    2 +-
 doc/api/readline.md                    |    2 +-
 doc/api/repl.md                        |   32 +-
 doc/api/stream.md                      |   20 +-
 doc/api/string_decoder.md              |    2 +-
 doc/api/synopsis.md                    |    2 +-
 doc/api/timers.md                      |    4 +-
 doc/api/tls.md                         |   28 +-
 doc/api/tty.md                         |    6 +-
 doc/api/url.md                         |    6 +-
 doc/api/util.md                        |   69 +-
 doc/api/v8.md                          |    2 +-
 doc/api/vm.md                          |   15 +-
 doc/api/zlib.md                        |   28 +-
 doc/changelogs/CHANGELOG_ARCHIVE.md    |   38 +-
 doc/changelogs/CHANGELOG_IOJS.md       | 2810 +++++++++++++++---------------
 doc/changelogs/CHANGELOG_V010.md       |   18 +-
 doc/changelogs/CHANGELOG_V4.md         |  224 ++-
 doc/changelogs/CHANGELOG_V5.md         |    4 +-
 doc/changelogs/CHANGELOG_V6.md         |  181 +-
 doc/ctc-meetings/2016-02-03.md         |    2 +-
 doc/ctc-meetings/2016-06-15.md         |    5 +-
 doc/ctc-meetings/2016-06-22.md         |  151 ++
 doc/ctc-meetings/2016-06-29.md         |  187 ++
 doc/ctc-meetings/2016-07-06.md         |  150 ++
 doc/ctc-meetings/2016-07-13.md         |  236 +++
 doc/ctc-meetings/2016-07-20.md         |  202 +++
 doc/ctc-meetings/2016-07-27.md         |  237 +++
 doc/ctc-meetings/2016-08-03.md         |  336 ++++
 doc/guides/building-node-with-ninja.md |    2 +-
 doc/node.1                             |   70 +-
 doc/onboarding-extras.md               |    2 +-
 doc/onboarding.md                      |   33 +-
 doc/releases.md                        |   37 +-
 doc/template.html                      |    2 +-
 doc/topics/blocking-vs-non-blocking.md |    2 +-
 doc/topics/domain-postmortem.md        |    2 +-
 doc/tsc-meetings/io.js/2014-12-10.md   |    2 +-
 70 files changed, 5617 insertions(+), 2787 deletions(-)

Tests & Benchmarks only:

   0.0% benchmark/buffers/
   0.0% benchmark/crypto/
   0.3% benchmark/dgram/
   1.8% benchmark/fs/
   0.4% benchmark/
   0.1% test/addons/openssl-binding/
   2.1% test/addons/parse-encoding/
   0.3% test/addons/stringbytes-external-exceed-max/
   7.7% test/cctest/
   0.1% test/debugger/
   0.1% test/disabled/
   0.8% test/fixtures/
   0.0% test/gc/
   0.0% test/internet/
  78.8% test/parallel/
   0.4% test/pummel/
   5.2% test/sequential/
   0.0% test/timers/
   1.0% test/
 160 files changed, 1978 insertions(+), 708 deletions(-)

Most active commit

Of the 155 commits, 18a3064 was the most active:
(Excluding docs, deps, and tests.)

commit 18a30649377923a6abb0e36d0f25879d0792a71a
Author: Bartosz Sosnowski <bartosz@janeasystems.com>
Date:   Wed Jul 27 00:18:35 2016 +0200

    fs: restore JS implementation of realpath

    This reverts parts of https://github.com/nodejs/node/commit/b488b19eaf2b2e7a3ca5eccd2445e245847a5f76
    restoring javascript implementation of realpath and realpathSync.

    Fixes: https://github.com/nodejs/node/issues/7175
    Fixes: https://github.com/nodejs/node/issues/6861
    Fixes: https://github.com/nodejs/node/issues/7294
    Fixes: https://github.com/nodejs/node/issues/7192
    Fixes: https://github.com/nodejs/node/issues/7044
    Fixes: https://github.com/nodejs/node/issues/6624
    Fixes: https://github.com/nodejs/node/issues/6978
    PR-URL: https://github.com/nodejs/node/pull/7899
    Reviewed-By: James M Snell <jasnell@gmail.com>
    Reviewed-By: Anna Henningsen <anna@addaleax.net>

 doc/api/fs.md                                     |   8 +-
 lib/fs.js                                         | 225 ++++++++++++++++++--
 test/parallel/test-fs-realpath-buffer-encoding.js |  88 ++++++++
 .../parallel/test-fs-realpath-on-substed-drive.js |  53 +++++
 4 files changed, 360 insertions(+), 14 deletions(-)

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.