The Nodesource Blog

#shoptalk Subscribe

Node.js v6.3.1 Release Brief

Node.js

This week’s Current release comes with an assortment of fixes and other improvements to help ensure stability, as well as a V8 patch upgrade.

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 84 commits:

The remaining significant commits are as follows:

  • [3747d910ec] - benchmark: remove unused variables (Rich Trott) #7600
  • [41582722c8] - buffer: optimize hex_decode (Christopher Jeffrey) #7602
  • [4a3300e66b] - buffer: fix creating from zero-length ArrayBuffer (Ingvar Stepanyan) #7176
  • [71f84b5e6c] - build: add conflict marker check during CI lint (Brian White) #7625
  • [4480b14fda] - build: use BUILDTYPE when building V8 in Makefile (Michaël Zasso) #7482
  • [94a486a388] - build: add v8 requirement to test-v8* in Makefile (Michaël Zasso) #7482
  • [e5627278f1] - build: add --enable-d8 configure option (Ben Noordhuis) #7538
  • [933ff62fa5] - build: respect --shared-* flags for inspector deps (Сковорода Никита Андреевич) #7569
  • [9bb1024dc3] - child_process: Check stderr before accessing it (Robert Chiras) #6877
  • [f574bd4cec] - cluster: remove bind() and self (cjihrig) #7710
  • [164981af5f] - deps: bump V8 patchlevel for instanceof cherry-picks (Franziska Hinkelmann) #7638
  • [cf8a4889db] - deps: v8_inspector no longer depends on wtf (Ali Ijaz Sheikh) #7751
  • [939cf6ddb2] - deps: no /safeseh for ml64.exe (Fedor Indutny) #7759
  • [11d6f1af59] - fs: rename event to eventType in fs.watch() listener (Claudio Rodriguez) #7506
  • [989a2a1c92] - inspector: Unify event queues (Eugene Ostroukhov) #7271
  • [fc0ed2e8c7] - lib,benchmark,test: implement consistent braces (Rich Trott) #7630
  • [80ca0630a6] - net: export isIPv4(), isIPv6() directly from cares (Sakthipriyan Vairamani) #7481
  • [72fc4ebca2] - repl: Mitigate vm #548 function redefinition issue (Prince J Wesley) #7794
  • [f97aa4be39] - src: remove unnecessary HandleScopes (Ben Noordhuis) #7711
  • [78dcf0d641] - src: fix handle leak in UDPWrap::Instantiate() (Ben Noordhuis) #7711
  • [dc766e6a6f] - src: fix handle leak in BuildStatsObject() (Ben Noordhuis) #7711
  • [96882e14d1] - src: fix handle leak in Buffer::New() (Ben Noordhuis) #7711
  • [fbc9ef84b8] - src: disable stdio buffering (Ben Noordhuis) #7610
  • [49a6ea1b73] - timers: fix processing of nested timers (Jeremy Whitlock) #3063
  • [0858e620e9] - util: inspect boxed Symbols like other primitives (Anna Henningsen) #7641

Notable Changes

  • buffer:
    • Improved performance of Buffer#from(str, 'hex') and Buffer#write(str, 'hex') by up to 100%. (Christopher Jeffrey) #7602
    • Fixed creating new Buffers when passing an empty ArrayBuffer. (Ingvar Stepanyan) #7176
  • repl: Fixed a function redeclaration bug in the repl. (Prince J Wesley) #7794
  • util: Symbols now format like other primitives when inspected. (Anna Henningsen) #7641
  • V8:
    • Upgraded to V8 5.0.71.xx. (Ben Noordhuis) #7531
    • Backported a V8 instanceof bugfix (Franziska Hinkelmann) #7638

Git Diffstats

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

Without deps, docs, benchmarks, or tests:

 .eslintignore                     |   4 +-
 .eslintrc                         |  65 +++++------
 Makefile                          |  23 ++--
 configure                         |  15 ++-
 lib/_stream_readable.js           |   8 +-
 lib/buffer.js                     |   2 +-
 lib/child_process.js              |   4 +-
 lib/cluster.js                    |  34 +++---
 lib/fs.js                         |   4 +-
 lib/module.js                     |   3 +-
 lib/net.js                        |  11 +-
 lib/repl.js                       |  34 +++---
 lib/timers.js                     |   8 +-
 lib/util.js                       |   4 +
 node.gyp                          |  25 ++++-
 src/inspector_agent.cc            | 213 +++++++++++++++++++-----------------
 src/node_buffer.cc                |   6 +-
 src/node_crypto.cc                |   7 --
 src/node_file.cc                  |   4 +-
 src/node_main.cc                  |   5 +-
 src/node_version.h                |   2 +-
 src/string_bytes.cc               |  37 ++++---
 src/udp_wrap.cc                   |   2 +-
 tools/configure.d/nodedownload.py |   2 +-
 tools/icu/shrink-icu-src.py       |   6 +-
 tools/license2rtf.js              | 100 +++++++++--------
 tools/specialize_node_d.py        |   2 -
 tools/test.py                     |  39 -------
 vcbuild.bat                       |   4 +-
 29 files changed, 342 insertions(+), 331 deletions(-)

Deps only:

 deps/openssl/openssl.gyp                          |   8 +-
 deps/v8/include/v8-version.h                      |   2 +-
 deps/v8/src/arm/code-stubs-arm.cc                 |   6 +-
 deps/v8/src/arm64/code-stubs-arm64.cc             |   5 +-
 deps/v8/src/bootstrapper.cc                       |   4 +
 deps/v8/src/builtins.cc                           |  68 +++++
 deps/v8/src/builtins.h                            |   2 +
 deps/v8/src/compiler/access-info.cc               |   8 +-
 deps/v8/src/crankshaft/hydrogen.cc                |  63 ++--
 deps/v8/src/debug/mirrors.js                      |  10 +-
 deps/v8/src/ia32/code-stubs-ia32.cc               |   5 +
 deps/v8/src/ic/ic-compiler.cc                     |   7 +-
 deps/v8/src/ic/ic.cc                              |  11 +-
 deps/v8/src/js/string.js                          |  13 -
 deps/v8/src/mips/code-stubs-mips.cc               |   6 +-
 deps/v8/src/mips64/code-stubs-mips64.cc           |   6 +-
 deps/v8/src/objects-inl.h                         |  20 ++
 deps/v8/src/objects.cc                            | 154 ++++++----
 deps/v8/src/objects.h                             |  53 ++--
 deps/v8/src/ppc/code-stubs-ppc.cc                 |   6 +-
 deps/v8/src/runtime/runtime-literals.cc           |   9 +-
 deps/v8/src/runtime/runtime.h                     |   5 -
 deps/v8/src/x64/code-stubs-x64.cc                 |   5 +
 deps/v8/src/x87/code-stubs-x87.cc                 |   5 +
 deps/v8/test/cctest/test-field-type-tracking.cc   | 320 +++++++++++++++++++-
 deps/v8/test/cctest/test-strings.cc               |  22 ++
 deps/v8/test/mjsunit/debug-backtrace-text.js      |  80 +++--
 .../test/mjsunit/regress/regress-crbug-573858.js  |   2 +-
 .../test/mjsunit/regress/regress-crbug-617524.js  |  18 ++
 .../mjsunit/regress/regress-seqstrsetchar-ex2.js  |  34 ---
 deps/v8/test/mjsunit/regress/regress-v8-5009.js   |  61 ++++
 deps/v8/test/mjsunit/string-fromcharcode.js       |   5 -
 deps/v8_inspector/deps/wtf/README.md              |   1 -
 deps/v8_inspector/deps/wtf/wtf/Assertions.h       |  40 ---
 deps/v8_inspector/deps/wtf/wtf/Compiler.h         |  54 ----
 deps/v8_inspector/deps/wtf/wtf/PtrUtil.h          | 275 -----------------
 36 files changed, 782 insertions(+), 611 deletions(-)

Docs only:

 CHANGELOG.md                                     |   3 +-
 CONTRIBUTING.md                                  |   3 +
 GOVERNANCE.md                                    |  45 +++---
 README.md                                        |   2 +
 doc/api/assert.md                                |   4 +-
 doc/api/buffer.md                                |  10 +-
 doc/api/child_process.md                         |   2 +-
 doc/api/crypto.md                                |   2 +-
 doc/api/dgram.md                                 |   9 +-
 doc/api/dns.md                                   |   5 +-
 doc/api/events.md                                |  56 +++----
 doc/api/fs.md                                    |  28 ++--
 doc/api/http.md                                  |  24 +--
 doc/api/https.md                                 |   4 +-
 doc/api/path.md                                  |   2 +-
 doc/api/process.md                               |  29 ++--
 doc/api/readline.md                              |   6 +-
 doc/api/repl.md                                  |   2 +-
 doc/api/stream.md                                | 103 +++++++++++-
 doc/api/tls.md                                   |   4 +-
 doc/api/util.md                                  |  15 +-
 doc/api/zlib.md                                  |   7 -
 doc/changelogs/CHANGELOG_V6.md                   | 105 ++++++++++++-
 doc/onboarding-extras.md                         |   3 +-
 doc/releases.md                                  |  16 +-
 doc/topics/the-event-loop-timers-and-nexttick.md | 172 +++++++++++----------
 26 files changed, 440 insertions(+), 221 deletions(-)

Tests & Benchmarks only:

   0.2% benchmark/buffers/
   0.0% benchmark/child_process/
   0.0% benchmark/dgram/
   0.0% benchmark/http/
   0.0% benchmark/
   0.2% test/addons/async-hello-world/
   0.2% test/doctool/
   0.0% test/fixtures/
   0.2% test/gc/
   1.1% test/internet/
   1.1% test/known_issues/
   0.0% test/message/
  92.0% test/parallel/
   0.3% test/pseudo-tty/
   2.3% test/pummel/
   1.2% test/sequential/
   0.0% test/testpy/
   0.0% test/timers/
   0.2% test/
 326 files changed, 2275 insertions(+), 3889 deletions(-)

Most active commit

Of the 84 commits, 49a6ea1 was the most active:
(Excluding docs, deps, and tests.)

commit 49a6ea1b7321ab3d98e2f77a0bc50317bfe4ab59
Author: Jeremy Whitlock <jwhitlock@apache.org>
Date:   Thu Jul 23 18:09:21 2015 -0600

    timers: fix processing of nested timers

    Whenever a timer is scheduled within another timer, there are a few
    known issues that we are fixing:

    * Whenever the timer being scheduled has the same timeout value as the
    outer timer, the newly created timer can fire on the same tick of the
    event loop instead of during the next tick of the event loop
    * Whenever a timer is added in another timer's callback, its underlying
    timer handle will be started with a timeout that is actually incorrect

    This commit consists of
    https://github.com/nodejs/node-v0.x-archive/pull/17203 and
    https://github.com/nodejs/node-v0.x-archive/pull/25763.

    Fixes: https://github.com/nodejs/node-v0.x-archive/issues/9333
    Fixes: https://github.com/nodejs/node-v0.x-archive/issues/15447
    Fixes: https://github.com/nodejs/node-v0.x-archive/issues/25607
    Fixes: https://github.com/nodejs/node/issues/5426
    PR-URL: https://github.com/nodejs/node/pull/3063

 lib/timers.js                                  |  8 ++-
 test/common.js                                 |  7 ++
 test/parallel/test-timers-blocking-callback.js | 81 ++++++++++++++++++++++++
 test/parallel/test-timers-nested.js            | 39 ++++++++++++
 4 files changed, 133 insertions(+), 2 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.