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:
- [npm @ 3.10.10] - (Rebecca Turner) #9847
- 3 patches were backported onto their respective dependencies:
- [
f795a79
ase60cafdb3b
] from upstream V8 - (Michaël Zasso) #10386 - [
2bd7464
asee09828622
] from upstream V8 - (Cristian Cavalli) #10169 - [
10222128e9
] (GYP fix to fix AIX shared suffix) - (Stewart Addison) #9675
- [
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 forslice()
(Trevor Norris) #9174 - [
868e5e624c
] - build: removenode.dsYM
directory (Michaël Zasso) #10463 - [
66687c0906
] - build: prioritise--shared-X-Y
overpkg-config
(Rod Vagg) #9368 - [
9703bf14ef
] - build: addMAKEFLAGS="-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: useSSL_get_servername
. (Adam Langley) #9347 - [
106e6cdebd
] - debugger: refactor_debugger.js
(Rich Trott) #9860 - [
2ce6916ddc
] - events: remove unnecessary checks (cjihrig) #9330 - [
fe821fbefa
] - fs: clarifyfs.link
andfs.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:
- 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:
- 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.