Node.js 4.8.1 Release Brief
This routine monthly patch release for the Node 4 LTS line comes with some performance improvements for a couple APIs, newly enabled large heap statistics, and a good amount of bug fixes.
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 147 commits:
- 41 were documentation-only commits.
- 55 only modify tests and 4 only affect internal tooling.
- 1 patch was backported from upstream V8:
- [
7c3748a
as3516f35b77
- (Cristian Cavalli) #10873
- [
The remaining significant commits are as follows:
- [
77f23ec5af
] - assert: unlock the assert API (Rich Trott) #11304 - [
090037a41a
] - assert: remove unneeded condition (Rich Trott) #11314 - [
75af859af7
] - assert: apply minor refactoring (Rich Trott) #11511 - [
994f562858
] - assert: update comments (Kai Cataldo) #10579 - [
14e57c1102
] - benchmark: add more thorough timers benchmarks (Jeremiah Senkpiel) #10925 - [
850f85d96e
] - benchmark: add benchmark for object properties (Michaël Zasso) #10949 - [
626875f2e4
] - benchmark: don't lint autogenerated modules (Brian White) #10756 - [
9da6ebd73f
] - benchmark: add dgram bind(+/- params) benchmark (Vse Mozhet Byt) #11313 - [
a597c11ba4
] - benchmark: improve readability of net benchmarks (Brian White) #10446 - [
22c25dee92
] - buffer: improvetoJSON()
performance (Brian White) #10895 - [
af3c21197d
] - build: move source files from headers section (Daniel Bevenius) #10850 - [
4bb61553f0
] - build: disableC4267
conversion compiler warning (Ben Noordhuis) #11205 - [
6a45ac0ea9
] - build: fix newlines in addon build output (Brian White) #11466 - [
bfc553d55d
] - build: fail on CI if leftover processes (Rich Trott) #11269 - [
094bfe66aa
] - build: fixnode_g
target (Daniel Bevenius) #10153 - [
87db4f7225
] - build: Don't regenerate node symlink (sxa555) #9827 - [
e0dc0ceb37
] - build: don't squash signal handlers with--shared
(Stewart X Addison) #10539 - [
4676eec382
] - child_process: remove empty if condition (cjihrig) #11427 - [
2b867d2ae5
] - child_process: refactorinternal/child_process.js
(Arseniy Maximov) #11366 - [
c9a92ff494
] - crypto: return the retval ofHMAC_Update
(Travis Meisenheimer) #10891 - [
9c53e402d7
] - crypto:freelist_max_len
is gone in OpenSSL 1.1.0 (Adam Langley) #10859 - [
c6f6b029a1
] - crypto: add cert check issued by StartCom/WoSign (Shigeki Ohtsu) #9469 - [
c56719f47a
] - crypto: Remove expired certs from CNNIC whitelist (Shigeki Ohtsu) #9469 - [
b48f6ffc63
] - crypto: useCHECK_NE
instead ofABORT
orabort
(Sam Roberts) #10413 - [
35a660ee70
] - crypto: fix handling ofroot_cert_store
. (Adam Langley) #9409 - [
f9e121ead8
] - dgram: fix possibly deoptimizing use of arguments (Vse Mozhet Byt) - [
48b5097ea8
] - http: makerequest.abort()
destroy the socket (Luigi Pinca) #10818 - [
15231aa6e5
] - http: reject control characters inhttp.request()
(Ben Noordhuis) #8923 - [
fc2cd63998
] - lib,src: support values > 4GB in heap statistics (Ben Noordhuis) #10186 - [
533d2bf0a9
] - meta: add explicit deprecation and semver-major policy (James M Snell) #7964 - [
923309adef
] - meta: remove Chris Dickinson from CTC (Chris Dickinson) #11267 - [
342c3e2bb4
] - meta: adding Italo A. Casas PGP Fingerprint (Italo A. Casas) #11202 - [
434b00be8a
] - meta: decharter the http working group (James M Snell) #10604 - [
a7df345921
] - net: prefer===
to==
(Arseniy Maximov) #11513 - [
396688f075
] - readline: refactor construct Interface (Jackson Tian) #4740 - [
a40f8429e6
] - readline: update 6 comparions to strict (Umair Ishaq) #11078 - [
90d8e118fb
] - src: add a missing space innode_os.cc
(Alexey Orlenko) #10931 - [
279cb09cc3
] - src: enable writev for pipe handles on Unix (Alexey Orlenko) #10677 - [
a557d6ce1d
] - src: unconsume stream fix in internal http impl (Roee Kasher) #11015 - [
c4e1af712e
] - src: remove unused typedef (Ben Noordhuis) #11322 - [
da2adb7133
] - src: update http-parser link (Daniel Bevenius) #11477 - [
2f48001574
] - src: useABORT()
macro instead ofabort()
(Evan Lucas) #9613 - [
a9eb093ce3
] - src: fix memory leak introduced in34febfbf4
(Ben Noordhuis) #9604 - [
53dd1a8539
] - tls: do not crash onSTARTTLS
whenOCSP
requested (Fedor Indutny) #10706 - [
ef63af6006
] - tty: avoid oob warning inTTYWrap::GetWindowSize()
(Dmitry Tsvettsikh) #11454 - [
2c84601062
] - util: don't init Debug if it's not needed yet (Bryan English) #8452
Notable Changes
- buffer: The performance of
.toJSON()
is now up to 2859% faster on average. (Brian White) #10895 - IPC: Batched writes have been enabled for process IPC on platforms that support Unix Domain Sockets. (Alexey Orlenko) #10677
- Performance gains may be up to 40% for some workloads.
- http: Control characters are now always rejected when using
http.request()
. (Ben Noordhuis) #8923 - node: Heap statistics now support values larger than 4GB. (Ben Noordhuis) #10186
Git Diffstats
(Showing the delta between v4.8.0 and v4.8.1, ignoring deps/npm
.)
Without deps, tools, docs, benchmarks, or tests:
.eslintignore | 1 +
.eslintrc | 116 -
.eslintrc.yaml | 116 +
Makefile | 33 +-
common.gypi | 4 +
configure | 20 +-
lib/.eslintrc | 4 -
lib/.eslintrc.yaml | 4 +
lib/_http_client.js | 8 +-
lib/_http_server.js | 4 +-
lib/_tls_common.js | 4 +-
lib/_tls_wrap.js | 7 +
lib/assert.js | 85 +-
lib/buffer.js | 12 +-
lib/child_process.js | 4 +-
lib/dgram.js | 6 +-
lib/internal/child_process.js | 46 +-
lib/net.js | 5 +-
lib/readline.js | 27 +-
lib/tty.js | 4 +-
lib/util.js | 2 +-
lib/v8.js | 4 +-
node.gyp | 4 +-
src/CNNICHashWhitelist.inc | 5216 +++++----------------------------------
src/StartComAndWoSignData.inc | 89 +
src/env-inl.h | 8 +-
src/env.h | 12 +-
src/node.cc | 4 +-
src/node_crypto.cc | 185 +-
src/node_crypto.h | 27 +-
src/node_http_parser.cc | 2 +-
src/node_os.cc | 2 +-
src/node_v8.cc | 12 +-
src/node_version.h | 2 +-
src/pipe_wrap.cc | 4 +
35 files changed, 1117 insertions(+), 4966 deletions(-)
Tools only:
tools/test.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Deps only:
deps/v8/include/v8-version.h | 2 +-
deps/v8/src/runtime/runtime-debug.cc | 3 +-
deps/v8/test/mjsunit/regress/regress-5071.js | 27 +++++
.../pylib/gyp/generator/compile_commands_json.py | 115 ++++++++++++++++++++
4 files changed, 145 insertions(+), 2 deletions(-)
Docs only:
AUTHORS | 2 +-
CHANGELOG.md | 165 ++++++++++++++++++++++++++++++
COLLABORATOR_GUIDE.md | 224 ++++++++++++++++++++++++++++++++++++++---
CONTRIBUTING.md | 41 ++++----
README.md | 71 +++++++------
WORKING_GROUPS.md | 16 ---
doc/STYLE_GUIDE.md | 63 ++++++++++++
doc/api/addons.md | 2 +-
doc/api/assert.md | 51 ++++++++--
doc/api/buffer.md | 4 +
doc/api/child_process.md | 6 +-
doc/api/dgram.md | 62 ++++++------
doc/api/dns.md | 26 ++++-
doc/api/documentation.md | 2 +-
doc/api/domain.md | 20 ++--
doc/api/errors.md | 62 ++++++++++--
doc/api/fs.md | 3 +-
doc/api/http.md | 22 ++--
doc/api/net.md | 9 +-
doc/api/process.md | 2 +-
doc/api/punycode.md | 2 +-
doc/api/string_decoder.md | 2 +-
doc/api/util.md | 2 +-
doc/api/vm.md | 2 +-
doc/api/zlib.md | 14 +--
doc/api_assets/dnt_helper.js | 49 +++++++++
doc/guides/maintaining-V8.md | 4 +-
doc/guides/writing-tests.md | 79 ++++++++++++++-
doc/onboarding-extras.md | 5 +-
doc/onboarding.md | 1 +
doc/template.html | 1 +
31 files changed, 838 insertions(+), 176 deletions(-)
Tests & Benchmarks only:
0.4% benchmark/buffers/
1.3% benchmark/dgram/
2.1% benchmark/misc/
0.5% benchmark/net/
3.5% benchmark/timers/
2.0% test/doctool/
3.5% test/fixtures/keys/fake-startcom-root-issued-certs/
23.5% test/fixtures/keys/
0.3% test/fixtures/
0.1% test/gc/
0.3% test/internet/
1.9% test/known_issues/
52.4% test/parallel/
0.5% test/pseudo-tty/
5.2% test/pummel/
0.7% test/sequential/
0.8% test/
100 files changed, 1772 insertions(+), 405 deletions(-)
Most active commit
Of the 147 commits, c6f6b02
was the most active:
(Excluding docs, npm, eslint, and tests.)
commit c6f6b029a1140d8183acee2bad33031b045db23a
Author: Shigeki Ohtsu <ohtsu@ohtsu.org>
Date: Fri Nov 4 18:19:20 2016 +0900
crypto: add cert check issued by StartCom/WoSign
When tls client connects to the server with certification issued by
either StartCom or WoSign listed in StartComAndWoSignData.inc, check
notBefore of the server certificate and CERT_REVOKED error returns if
it is after 00:00:00 on October 21, 2016.
See for details in
https://blog.mozilla.org/security/2016/10/24/distrusting-new-wosign-and-startcom-certificates/,
https://security.googleblog.com/2016/10/distrusting-wosign-and-startcom.html
and
https://support.apple.com/en-us/HT204132
Fixes: https://github.com/nodejs/node/issues/9434
PR-URL: https://github.com/nodejs/node/pull/9469
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Fedor Indutny <fedor.indutny@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
src/StartComAndWoSignData.inc | 89 ++++++++++++++++++++
src/node_crypto.cc | 44 +++++++++-
test/fixtures/keys/Makefile | 68 +++++++++++++++
test/fixtures/keys/agent8-cert.pem | 20 +++++
test/fixtures/keys/agent8-csr.pem | 17 ++++
test/fixtures/keys/agent8-key.pem | 27 ++++++
test/fixtures/keys/agent8.cnf | 17 ++++
test/fixtures/keys/agent9-cert.pem | 20 +++++
test/fixtures/keys/agent9-csr.pem | 17 ++++
test/fixtures/keys/agent9-key.pem | 27 ++++++
test/fixtures/keys/agent9.cnf | 17 ++++
test/fixtures/keys/fake-startcom-root-cert.pem | 22 +++++
test/fixtures/keys/fake-startcom-root-csr.pem | 18 ++++
.../fixtures/keys/fake-startcom-root-database.txt | 2 +
.../keys/fake-startcom-root-database.txt.attr | 1 +
.../keys/fake-startcom-root-database.txt.attr.old | 1 +
.../keys/fake-startcom-root-database.txt.old | 1 +
.../keys/fake-startcom-root-issued-certs/01.pem | 20 +++++
.../keys/fake-startcom-root-issued-certs/02.pem | 20 +++++
test/fixtures/keys/fake-startcom-root-key.pem | 27 ++++++
test/fixtures/keys/fake-startcom-root-serial | 1 +
test/fixtures/keys/fake-startcom-root-serial.old | 1 +
test/fixtures/keys/fake-startcom-root.cnf | 46 +++++++++++
.../test-tls-startcom-wosign-whitelist.js | 91 +++++++++++++++++++++
24 files changed, 611 insertions(+), 3 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.