The NodeSource Blog

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.

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

Start for Free