Node.js 7.4.0 Release Brief
2017's first Node 7 release comes with several significant performance improvements, as well as a sizable upgrade to the bundled npm.
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 142 commits:
- 30 were documentation-only commits.
- 68 only modify tests and 3 only affect internal tooling.
- Two dependencies were upgraded:
- ICU @ 58.2 (
785975d
&bce0013
) - (Steven R. Loomis) #10206 - [npm @ 4.0.5] - (Kat Marchán) #10330
- ICU @ 58.2 (
2 commits were tagged as semver-minor
, adding new functionality and justifying the jump to 7.4.0:
- [
92eacdb5c6
] - deps: upgrade npm to 4.0.5 (Kat Marchán) #10330 - [
abde7644a5
] - fs: support Uint8Array input to methods (Anna Henningsen) #10382
The remaining significant commits are as follows:
- [
d1843ec3a7
] - async_wrap: cleardestroy_ids
vector (Trevor Norris) #10400 - [
022c743693
] - benchmark: allow benchmarks to specify flags (Joyee Cheung) #10448 - [
0b2bc5e27b
] - benchmark: add benchmark for WHATWG URL properties (Joyee Cheung) #10408 - [
10b3297e8f
] - benchmark: use commas in non-csv rate output (Brian White) #10360 - [
6d15e7b528
] - benchmark: refactor buffer benchmarks (Troy Connor) #10175 - [
797495a84a
] - buffer: improve allocation performance (Brian White) #10443 - [
ad5ae922ce
] - build: add/opt/freeware/…
to AIX library path (Stewart X Addison) #10128 - [
cff57be2b6
] - build: add (not) cross-compiled configure flags (Jesús Leganés-Combarro 'piranna) #10287 - [
80e798e324
] - crypto: useCHECK_NE
instead ofABORT
or abort (Sam Roberts) #10413 - [
f9a5c13ff3
] - dtrace: resolve conversion warnings fromSLURP_INT
(Christopher J. Brody) #10143 - [
66a9f013ac
] - events: optimize arrayClone by copying forward (Benedikt Meurer) #10571 - [
7ece950ffe
] - events: improveonce()
performance (Brian White) #10445 - [
6629f8f83f
] - fs: cache non-symlinks inrealpathSync
. (Jeremy Yallop) #10253 - [
32b6bcdd83
] - http: optimize headers iteration (Brian White) #6533 - [
a760d707ad
] - http: simplify boolean checks (Brian White) #6533 - [
c8ad127abc
] - http: extract validation functions (Brian White) #6533 - [
8a2a763f13
] - http: improve validation performance (Brian White) #6533 - [
df8b8b257d
] - http: refactor server connection handling (Brian White) #6533 - [
1f0fd7b35d
] - http: misc cleanup and minor optimizations (Brian White) #6533 - [
b094b49659
] - http: reuse existing headers array for raw values (Brian White) #6533 - [
4bed9475d1
] - inspector: fix Coverity defects (Eugene Ostroukhov) #10240 - [
023956187e
] - inspector: split HTTP/WS server from the inspector (Eugene Ostroukhov) #9630 - [
aed5e27451
] - lib: avoid recompilation of anonymous functions (Brian White) #6533 - [
064607be58
] - meta: modify pull request template for prepending (Rich Trott) #10484 - [
75efdeb635
] - os: fixos.release()
for aix and add test (jBarz) #10245 - [
6796bf4829
] - repl: allow autocompletion for scoped packages (Evan Lucas) #10296 - [
11ed8007df
] - src: describe whatNODE_MODULE_VERSION
is for (Sam Roberts) #10414 - [
5e5b1f8b89
] - src: return early ifnextTickQueue
is empty (Trevor Norris) #10274 - [
3195fb45ae
] - url: settoStringTag
for the URL class (James M Snell) #10562 - [
659d522d7c
] - url: fix accidental filemode change (James M Snell) #10549 - [
6977224059
] - url: fix URL query update if searchParams changes (Michaël Zasso) #10486 - [
78e867492a
] - url: improve spec compliance of WHATWG URL (Michaël Zasso) #10317 - [
2b98ea0dec
] - url: moveoriginFor
,domainToAscii
anddomainToUnicode
(James M Snell) #10512 - [
e210efad9e
] - url: performance improvement in URL implementation (James M Snell) #10469 - [
7fbd12f876
] - url: make WHATWG URL properties spec compliant (Joyee Cheung) #10408 - [
495213e545
] - url: mark ignored return value innode::url::Parse(...)
(Christopher J. Brody) #10141 - [
ba46374cb9
] - watchdog: add flag to mark handler as disabled (Bartosz Sosnowski) #10248
Notable Changes
- buffer:
- events: Improved performance of
EventEmitter.once()
by ~27%. (Brian White) #10445 - fs:
Uint8Array
s may now be passed tofs
methods where Buffers are supported. (Anna Henningsen) #10382 - http: Improved performance of http servers by ~7%. (Brian White) #6533
- npm: Upgraded to 4.0.5 (Kat Marchán) #10330
Git Diffstats
(Showing the delta between 7.3.0 and 7.4.0, ignoring deps/npm
.)
Without deps, tools, docs, benchmarks, or tests:
.eslintrc | 3 +-
configure | 19 +-
lib/_http_common.js | 101 +++--
lib/_http_incoming.js | 12 +-
lib/_http_outgoing.js | 75 ++--
lib/_http_server.js | 449 +++++++++++-----------
lib/_stream_readable.js | 6 +-
lib/_stream_writable.js | 35 +-
lib/buffer.js | 8 +-
lib/events.js | 29 +-
lib/fs.js | 14 +-
lib/internal/url.js | 803 +++++++++++++++++++++------------------
lib/repl.js | 11 +-
lib/url.js | 9 +-
node.gyp | 31 +-
src/async-wrap.cc | 6 +-
src/inspector_agent.cc | 424 +++++++--------------
src/inspector_agent.h | 3 +-
src/inspector_socket_server.cc | 473 +++++++++++++++++++++++
src/inspector_socket_server.h | 77 ++++
src/node.cc | 1 +
src/node_crypto.cc | 7 +-
src/node_dtrace.cc | 2 +-
src/node_os.cc | 7 +
src/node_url.cc | 84 ++--
src/node_util.cc | 3 +-
src/node_version.h | 5 +-
src/node_watchdog.cc | 13 +-
src/node_watchdog.h | 1 +
29 files changed, 1640 insertions(+), 1071 deletions(-)
Tools only:
Deps only:
deps/icu-small/source/common/locmap.c | 2 +-
deps/icu-small/source/common/ucasemap.cpp | 5 ++++-
deps/icu-small/source/common/unicode/uvernum.h | 6 +++---
deps/icu-small/source/common/ustrcase.cpp | 3 +++
deps/icu-small/source/data/in/icudt58l.dat | Bin 2680800 -> 2682224 bytes
deps/icu-small/source/i18n/digitlst.cpp | 4 ++--
deps/icu-small/source/i18n/scriptset.cpp | 2 +-
deps/icu-small/source/i18n/uspoof.cpp | 7 -------
8 files changed, 14 insertions(+), 15 deletions(-)
Docs only:
.github/PULL_REQUEST_TEMPLATE.md | 7 +-
BUILDING.md | 4 +-
CHANGELOG.md | 3 +-
COLLABORATOR_GUIDE.md | 2 +-
CONTRIBUTING.md | 96 +++++++++++++--
README.md | 6 +-
WORKING_GROUPS.md | 231 +++----------------------------------
benchmark/README.md | 67 +++++++++--
doc/api/child_process.md | 24 +++-
doc/api/cluster.md | 45 ++++----
doc/api/console.md | 29 +++--
doc/api/dgram.md | 18 +--
doc/api/domain.md | 6 +-
doc/api/fs.md | 12 +-
doc/api/globals.md | 51 +++++---
doc/api/modules.md | 10 +-
doc/api/process.md | 4 +-
doc/api/repl.md | 58 +++++-----
doc/api/stream.md | 20 ++--
doc/api/tls.md | 62 +++++-----
doc/api/vm.md | 20 +++-
doc/changelogs/CHANGELOG_V7.md | 160 +++++++++++++++++++++++++
doc/guides/maintaining-V8.md | 121 +++++++++++++------
doc/onboarding.md | 15 ++-
24 files changed, 638 insertions(+), 433 deletions(-)
Tests & Benchmarks only:
0.7% benchmark/buffers/
0.2% benchmark/events/
0.1% benchmark/misc/
1.2% benchmark/url/
1.5% benchmark/
10.9% test/cctest/
2.2% test/debugger/
0.0% test/fixtures/node_modules/@nodejsscope/
7.0% test/fixtures/
2.6% test/internet/
0.2% test/known_issues/
65.2% test/parallel/
0.6% test/pseudo-tty/
5.7% test/sequential/
1.2% test/
116 files changed, 2976 insertions(+), 1627 deletions(-)
Most active commit
Of the 142 commits, 0239561
was the most active:
(Excluding docs, npm, eslint, and tests.)
commit 023956187e124172707761a238201ea2dc8c6b9b
Author: Eugene Ostroukhov <eostroukhov@chromium.org>
Date: Wed Nov 9 14:19:35 2016 -0800
inspector: split HTTP/WS server from the inspector
Both our team experiments and some embedder request indicate a potential
in implementing alternative transport for inspector - e.g. IPC pipes or
custom embedder APIs. This change moves all HTTP specific code into a
separate class and is a first attempt at defining a boundary between the
inspector agent and transport. This API will be refined as new
transports are implemented.
Note that even without considering alternative transports, this change
enables better testing of the HTTP server (Valgrind made it possible to
identify and fix some existing memory leaks).
PR-URL: https://github.com/nodejs/node/pull/9630
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
node.gyp | 21 +-
src/inspector_agent.cc | 424 +++++++--------------
src/inspector_agent.h | 3 +-
src/inspector_socket_server.cc | 471 +++++++++++++++++++++++
src/inspector_socket_server.h | 77 ++++
test/cctest/test_inspector_socket_server.cc | 517 ++++++++++++++++++++++++++
6 files changed, 1212 insertions(+), 301 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.