The Nodesource Blog

#shoptalk Subscribe

Node.js 6.9.3 Release Brief

This routine maintenance release for the Node 6 LTS branch was scheduled two months ago in LTS#159 and contains largely docs fixes, test improvements, and minor bugfixes.

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

  • 62 were documentation-only commits.
  • 206 only modify tests and 10 only affect internal tooling.
  • One dependency was upgraded:
  • 3 patches were backported onto their respective dependencies:

The remaining significant commits are as follows:

  • [12fe071abf] - internal/util: move the case 'latin1' (Jackson Tian) #9646
  • [98b2eae328] - benchmark: split timers benchmark and refactor (Rich Trott) #9497
  • [c32c86b3c3] - benchmark: reformat code for clarity (Rich Trott) #9790
  • [a8909b833e] - benchmark,lib,test,tools: remove unneeded . escape (Rich Trott) #9449
  • [a9d528be5b] - buffer: fix range checks for slice() (Trevor Norris) #9174
  • [868e5e624c] - build: remove node.dsYM directory (MichaĆ«l Zasso) #10463
  • [66687c0906] - build: prioritise --shared-X-Y over pkg-config (Rod Vagg) #9368
  • [9703bf14ef] - build: add MAKEFLAGS="-j1" to node-gyp (Daniel Bevenius) #9450
  • [18b8e7bd8b] - build: Make configure file parseable on python3 (kalrover) #9657
  • [12993b298a] - build: default to ppc64 on AIX (Gibson Fahnestock) #9645
  • [5c0d82bae6] - build: Add option to compile for coverage reports (Wayne Andrews) #9463
  • [168241a98a] - build: add shared library support to AIX build (Stewart Addison) #9675
  • [9a526cb8fe] - child_process: remove unreachable code (cjihrig) #9307
  • [166eea7534] - constants: errors -> errno (Bryan English) #9349
  • [3c09579eee] - crypto: use SSL_get_servername. (Adam Langley) #9347
  • [106e6cdebd] - debugger: refactor _debugger.js (Rich Trott) #9860
  • [2ce6916ddc] - events: remove unnecessary checks (cjihrig) #9330
  • [fe821fbefa] - fs: clarify fs.link and fs.linkSync arguments (Kyle E. Mitchell) #9145
  • [a3ba4ff49f] - inspector: /json/version returns object, not array (Ben Noordhuis) #9762
  • [6632b3d1ab] - lib: use === in _http_server and _tls_wrap (Walter Beller-Morales) #9849
  • [f3861c200d] - lib,test: remove unneeded escaping of / (Rich Trott) #9485
  • [0be56cd1e9] - meta: whitelist dotfiles in .gitignore (Claudio Rodriguez) #8016
  • [3689813fdd] - module: check -e flag in debug break setup (Kelvin Jin) #8876
  • [db10e94083] - process: improve performance of nextTick (Evan Lucas) #8932
  • [fac61118f9] - repl: avoid parsing division operator as regex (Teddy Katz) #10103
  • [86efc93a41] - repl: preprocess only for defaultEval (Prince J Wesley) #9752
  • [eba4f9a3ff] - repl: fix generator function preprocessing (Teddy Katz) #9852
  • [70062f7cd7] - repl: refactor lib/repl.js (Rich Trott) #9374
  • [f9fd53d82d] - src: fix method name, output format (Josh Gavant) #9627
  • [8bb66cd920] - timers: use consistent checks for canceled timers (Jeremiah Senkpiel) #9685

Notable Changes

  • build: Shared library support is now working for AIX builds. (Stewart Addison) #9675
  • deps:
    • npm: Upgraded npm to 3.10.10. (Rebecca Turner) #9847
    • V8: Destructuring of arrow function arguments via computed property no longer throws. (MichaĆ«l Zasso) #10386
  • inspector: The /json/version inspector endpoint now returns object, not an object wrapped in an array. (Ben Noordhuis) #9762
  • module: Using --debug-brk and --eval together now works as expected. (Kelvin Jin) #8876
  • process: Improved the performance of nextTick by up to 20%. (Evan Lucas) #8932
  • repl:
    • The division operator will no longer be accidentally parsed as regex. (Teddy Katz) #10103
    • Improved support for generator functions. (Teddy Katz) #9852
  • timers: Re-canceling previously cancelled intervals will no longer throw. (Jeremiah Senkpiel) #9685

Git Diffstats

(Showing the delta between 6.9.2 and 6.9.3, ignoring deps/npm.)

Without deps, tools, docs, benchmarks, or tests:

 .editorconfig                     |   7 +-
 .eslintrc                         |   1 +
 .gitignore                        |  18 ++++-
 Makefile                          |  23 +++---
 configure                         | 106 ++++++++++++++++-----------
 lib/_debugger.js                  |  54 ++++++++------
 lib/_http_server.js               |   2 +-
 lib/_tls_wrap.js                  |   4 +-
 lib/child_process.js              |   2 +-
 lib/constants.js                  |   2 +-
 lib/events.js                     |   5 +-
 lib/fs.js                         |  28 ++++----
 lib/internal/process/next_tick.js |  12 ++--
 lib/internal/util.js              |   4 +-
 lib/module.js                     |   2 +-
 lib/repl.js                       |  78 +++++++++++---------
 lib/timers.js                     |  16 ++++-
 lib/url.js                        | 138 +++++++++++++++++++-----------------
 node.gyp                          |  23 +++++-
 src/inspector_agent.cc            |  29 +++++---
 src/node_buffer.cc                |   3 +-
 src/node_crypto.cc                |  19 ++---
 src/node_version.h                |   2 +-
 vcbuild.bat                       |   1 +
 24 files changed, 341 insertions(+), 238 deletions(-)

Tools only:

 tools/run-valgrind.py | 66 ++++++++++++++++++++++++++++++++++++++++++++++++-
 tools/test.py         |  4 ++-
 2 files changed, 68 insertions(+), 2 deletions(-)

Deps only:

 deps/v8/include/v8-version.h                      |  2 +-
 deps/v8/src/bailout-reason.h                      |  1 +
 .../compiler/js-global-object-specialization.cc   |  9 ++-
 deps/v8/src/crankshaft/hydrogen.cc                | 16 ++++--
 deps/v8/src/parsing/parser.h                      |  2 +
 deps/v8/src/parsing/pattern-rewriter.cc           | 64 ++++++++++++---------
 deps/v8/src/runtime/runtime-utils.h               |  8 ++-
 .../test/mjsunit/regress/regress-crbug-620119.js  |  8 +++
 .../mjsunit/regress/regress-crbug-659475-1.js     | 30 ++++++++++
 .../mjsunit/regress/regress-crbug-659475-2.js     | 31 ++++++++++
 tools/gyp/AUTHORS                                 |  7 ++-
 tools/gyp/PRESUBMIT.py                            | 26 +++++----
 tools/gyp/pylib/gyp/generator/make.py             | 10 +++-
 13 files changed, 161 insertions(+), 53 deletions(-)

Docs only:

   4.8% doc/api/
   0.0% doc/api_assets/
   8.3% doc/changelogs/
  44.1% doc/ctc-meetings/
   4.1% doc/guides/
   0.0% doc/topics/
  16.5% doc/tsc-meetings/io.js/
  18.2% doc/tsc-meetings/
   1.5% doc/
 114 files changed, 1655 insertions(+), 12919 deletions(-)

Tests & Benchmarks only:

   0.4% benchmark/arrays/
   0.9% benchmark/buffers/
   0.1% benchmark/es/
   0.0% benchmark/http/
   0.1% benchmark/misc/
   0.1% benchmark/querystring/
   0.5% benchmark/timers/
   0.5% benchmark/tls/
   0.0% benchmark/util/
   0.3% benchmark/
   0.0% test/addons/async-hello-world/
   0.0% test/addons/hello-world-function-export/
   0.0% test/addons/hello-world/
   0.0% test/addons/load-long-path/
   0.6% test/addons/make-callback-recurse/
   0.2% test/addons/stringbytes-external-exceed-max/
   0.7% test/cctest/
   0.5% test/debugger/
   0.0% test/fixtures/packages/invalid/
   0.1% test/inspector/
  90.4% test/parallel/
   0.1% test/pseudo-tty/
   0.9% test/sequential/
   1.6% test/tick-processor/
   0.7% test/
 244 files changed, 3246 insertions(+), 2571 deletions(-)

Most active commit

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

commit ee09828622a90b893bacc44876cd47e8cca194fb
Author: Cristian Cavalli <cristiancavall@google.com>
Date:   Wed Nov 16 13:14:46 2016 -0800

    deps: backport 2bd7464 from upstream V8

    Original commit message:
      For global object property cells, we did not check that the map on the
      previous object is still the same for which we actually optimized. So
      the optimized code was not in sync with the actual state of the property
      cell. When loading from such a global object property cell, Crankshaft
      optimizes away any map checks (based on the stable map assumption),
      leading to arbitrary memory access in the worst case.

      TurboFan has the same bug for stores, but is safe on loads because we
      do appropriate map checks there. However mixing TurboFan and Crankshaft
      still exposes the bug.

      R=yangguo@chromium.org
      BUG=chromium:659475

      Review-Url: https://codereview.chromium.org/2444233004
      Cr-Commit-Position: refs/heads/master@{#40592}

    PR-URL: https://github.com/nodejs/node/pull/10169
    Reviewed-By: bnoordhuis - Ben Noordhuis <info@bnoordhuis.nl>
    Reviewed-By: ofrobots - Ali Ijaz Sheikh <ofrobots@google.com>

 deps/v8/include/v8-version.h                      |  2 +-
 deps/v8/src/bailout-reason.h                      |  1 +
 .../compiler/js-global-object-specialization.cc   |  9 ++++--
 deps/v8/src/crankshaft/hydrogen.cc                | 16 ++++++++---
 deps/v8/src/runtime/runtime-utils.h               |  8 ++++--
 .../mjsunit/regress/regress-crbug-659475-1.js     | 30 ++++++++++++++++++++
 .../mjsunit/regress/regress-crbug-659475-2.js     | 31 +++++++++++++++++++++
 7 files changed, 87 insertions(+), 10 deletions(-)

This is a regular and routine release for a Node.js LTS 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.