The Nodesource Blog

#shoptalk Subscribe

Node.js v4.2.6 Release Brief

This LTS release is the result of a buildup of regular maintenance commits.
Of note, it comes with a minor libuv upgrade and an incredible amount of documentation improvements.

NOTICE: v4.2.6 has been released to fix a critical regression in v4.2.5. It is highly suggested you use v4.2.6 instead of v4.2.5. This blog post covers both releases.

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

The remaining significant commits are as follows:

  • [87181cd74c] - assert: accommodate ES6 classes that extend Error (Rich Trott) #4166
  • [901172a783] - assert: typed array deepequal performance fix (Claudio Rodriguez) #4330
  • [55336810ee] - async_wrap: call callback in destructor (Trevor Norris) #3461
  • [a8b45e9e96] - async_wrap: new instances get uid (Trevor Norris) #3461
  • [49f16d77c4] - async_wrap: allow some hooks to be optional (Trevor Norris) #3461
  • [44ee33f945] - buffer: refactor create buffer (Jackson Tian) #4340
  • [138d004ac0] - buffer: faster case for create Buffer from new Buffer(0) (Jackson Tian) #4326
  • [c6dc2a1609] - buffer: Prevent Buffer constructor deopt (Bryce Baril) #4158
  • [a320045e68] - buffer: default to UTF8 in byteLength() (Tom Gallacher) #4010
  • [c5f71ac771] - build: add "--partly-static" build options (Super Zheng) #4152
  • [e6c25335ea] - build: omit -gline-tables-only for --enable-asan (Ben Noordhuis) #3680
  • [80b4ba286c] - build: Updates for AIX npm support - part 1 (Michael Dawson) #3114
  • [35e32985ca] - child_process: guard against race condition (Rich Trott) #4418
  • [48564204f0] - child_process: flush consuming streams (Dave) #4071
  • [481d59a74c] - configure: fix arm vfpv2 (Jörg Krause) #4203
  • [d19da6638d] - crypto: load PFX chain the same way as regular one (Fedor Indutny) #4165
  • [b8e75de1f3] - crypto: fix native module compilation with FIPS (Stefan Budeanu) #4023
  • [b7c3fb7f75] - crypto: disable crypto.createCipher in FIPS mode (Stefan Budeanu) #3754
  • [31b4091a1e] - debugger: also exit when the repl emits 'exit' (Felix Böhm) #2369
  • [253fe3e7c8] - dns: remove nonexistant exports.ADNAME (Roman Reiss) #3051
  • [830caeb1bd] - doc, test: symbols as event names (Bryan English) #4151
  • [5bf56882e1] - fs,doc: use target instead of destination (yorkie) #3912
  • [41fcda840c] - http: use self.keepAlive instead of self.options.keepAlive (Damian Schenkelman) #4407
  • [3ff237333d] - http: Remove an unnecessary assignment (Bo Borgerson) #4323
  • [39dc054572] - http: remove excess calls to removeSocket (Dave) #4172
  • [751fbd84dd] - https: use servername in agent key (Fedor Indutny) #4389
  • [7a1a0a0055] - lib: remove unused modules (Rich Trott) #4683
  • [3d81ea99bb] - lib,test: update let to const where applicable (Sakthipriyan Vairamani) #3152
  • [8a9869eeab] - module: fix column offsets in errors (Tristian Flanagan) #2867
  • [0ae90ecd3d] - module,repl: remove repl require() hack (Ben Noordhuis) #4026
  • [1408f7abb1] - module,src: do not wrap modules with -1 lineOffset (cjihrig) #4298
  • [a7367fdc1e] - net: small code cleanup (Jan Schär) #3943
  • [03e9495cc2] - node: remove unused variables in AppendExceptionLine (Yazhong Liu) #4264
  • [06113b8711] - node: s/doNTCallbackX/nextTickCallbackWithXArgs/ (Rod Vagg) #4167
  • [8ce6843fe4] - os: fix crash in GetInterfaceAddresses (Martin Bark) #4272
  • [53dcbb6aa4] - repl: remove unused function (Rich Trott)
  • [db0e906fc1] - repl: Fixed node repl history edge case. (Mudit Ameta) #4108
  • [9855fab05f] - repl: use String#repeat instead of Array#join (Evan Lucas) #3900
  • [41882e4077] - repl: fix require('3rdparty') regression (Ben Noordhuis) #4215
  • [93afc39d4a] - repl: attach location info to syntax errors (cjihrig) #4013
  • [d4806675a6] - repl: display error message when loading directory (Prince J Wesley) #4170
  • [3080bdc7d7] - src: define Is* util functions with macros (cjihrig) #4118
  • [2b8a32a13b] - src: refactor vcbuild configure args creation (Rod Vagg) #3399
  • [d47f6ba768] - src: fix deprecation message for ErrnoException (Martin von Gagern) #4269
  • [5ba08fbf76] - src: fix line numbers on core errors (cjihrig) #4254
  • [70974e9362] - src: use GetCurrentProcessId() for process.pid (Ben Noordhuis) #4163
  • [c96eca164f] - src: don't print garbage errors (cjihrig) #4112
  • [86b47e8dc0] - timers: optimize callback call: bind -> arrow (Andrei Sedoi) #4038
  • [4d37472ea7] - tls_wrap: clear errors on return (Fedor Indutny) #4709
  • [5b695d0343] - tls_wrap: inherit from the AsyncWrap first (Fedor Indutny) #4268
  • [0efc35e6d8] - tls_wrap: slice buffer properly in ClearOut (Fedor Indutny) #4184
  • [dd0c925896] - udp: remove a needless instanceof Buffer check (ronkorving) #4301
  • [f4414102ed] - util: faster arrayToHash (Jackson Tian)
  • [b421119984] - util: determine object types in C++ (cjihrig) #4100
  • [6a7c9d9293] - util: move .decorateErrorStack to internal/util (Ben Noordhuis) #4026
  • [422a865d46] - util: add decorateErrorStack() (cjihrig) #4013
  • [2d5380ea25] - util: fix constructor/instanceof checks (Brian White) #3385
  • [1bf84b9d41] - util,src: allow lookup of hidden values (cjihrig) #3988

Notable Changes

  • assert: Accommodate ES6 classes that extend Error in *throws() (Rich Trott) #4166.
  • build: Added a new --partly-static configure option (Super Zheng) #4152.
  • repl:
    • Now attaches location info to syntax errors (cjihrig) #4013.
    • Display an error message when attempting to load a directory (Prince J Wesley) #4170.

Git Diffstats

(Showing the delta between v4.2.4 and v4.2.6, ignoring deps/npm.)

Without deps, docs, benchmarks, or tests:

 .editorconfig                        |  39 +++++++
 .eslintrc                            |   9 ++
 .gitignore                           |   1 +
 .mailmap                             |  20 ++++
 AUTHORS                              |  72 +++++++++++--
 Makefile                             |   5 +-
 common.gypi                          |   1 -
 configure                            |  44 ++++++--
 lib/_debugger.js                     |  18 +++-
 lib/_http_agent.js                   |   4 +-
 lib/_http_client.js                  |   1 -
 lib/_http_outgoing.js                |   2 +-
 lib/assert.js                        |   9 ++
 lib/buffer.js                        |  29 +++---
 lib/cluster.js                       |   2 +-
 lib/dgram.js                         |   3 +-
 lib/dns.js                           |   1 -
 lib/fs.js                            |  12 +--
 lib/https.js                         |   4 +
 lib/internal/child_process.js        |   5 +-
 lib/internal/module.js               |  26 ++++-
 lib/internal/repl.js                 |  24 +++--
 lib/internal/util.js                 |  21 ++++
 lib/module.js                        |  69 ++++---------
 lib/net.js                           |   1 -
 lib/os.js                            |   1 -
 lib/repl.js                          |  20 +++-
 lib/timers.js                        |  18 ++--
 lib/url.js                           |   4 +-
 lib/util.js                          |  40 +++----
 node.gyp                             |  53 +++++++++-
 src/async-wrap-inl.h                 |  27 ++++-
 src/async-wrap.cc                    |  21 +++-
 src/async-wrap.h                     |   5 +-
 src/env-inl.h                        |   5 +
 src/env.h                            |   4 +
 src/node.cc                          |  11 +-
 src/node.h                           |   2 +-
 src/node.js                          |  37 ++++---
 src/node_contextify.cc               |  37 ++++++-
 src/node_crypto.cc                   | 183 ++++++++++++++++++++++-----------
 src/node_crypto.h                    |  15 +++
 src/node_file.cc                     |  10 +-
 src/node_os.cc                       |   2 +-
 src/node_util.cc                     |  56 +++++++---
 src/node_version.h                   |   2 +-
 src/tls_wrap.cc                      |  20 +++-
 src/tls_wrap.h                       |   6 +-
 tools/cpplint.py                     |  59 +++++++++--
 tools/create_expfile.sh              |  48 +++++++++
 tools/eslint-rules/new-with-error.js |  36 +++++++
 tools/gyp_node.py                    |   5 +
 tools/install.py                     |   4 +
 tools/test.py                        |  33 ++++--
 vcbuild.bat                          |  28 ++---
 55 files changed, 917 insertions(+), 297 deletions(-)

Deps only:

   2.5% deps/uv/docs/src/
   1.1% deps/uv/include/
  17.1% deps/uv/src/unix/
  16.8% deps/uv/src/win/
   3.6% deps/uv/src/
  47.3% deps/uv/test/
   7.3% deps/uv/
   3.5% deps/v8/src/
   0.4% deps/v8/test/mjsunit/regress/
 77 files changed, 1496 insertions(+), 355 deletions(-)

Docs only:

 CHANGELOG.md                    | 245 ++++++++++++
 CONTRIBUTING.md                 |  27 +-
 README.md                       |  33 +-
 WORKING_GROUPS.md               |  41 +-
 deps/uv/README.md               |   2 +-
 doc/api/addons.markdown         |  78 ++--
 doc/api/assert.markdown         | 304 +++++++++++++--
 doc/api/buffer.markdown         | 116 +++---
 doc/api/child_process.markdown  | 227 ++++++------
 doc/api/cluster.markdown        | 136 +++----
 doc/api/console.markdown        | 197 ++++++----
 doc/api/crypto.markdown         | 109 +++---
 doc/api/debugger.markdown       |  72 ++--
 doc/api/dgram.markdown          | 375 +++++++++++--------
 doc/api/dns.markdown            | 343 +++++++++--------
 doc/api/domain.markdown         | 108 +++---
 doc/api/errors.markdown         | 762 ++++++++++++++++++++------------------
 doc/api/events.markdown         | 361 +++++++++++++-----
 doc/api/fs.markdown             | 177 +++++----
 doc/api/globals.markdown        |  16 +-
 doc/api/http.markdown           | 288 +++++++-------
 doc/api/https.markdown          | 121 +++---
 doc/api/modules.markdown        |  38 +-
 doc/api/net.markdown            | 204 +++++-----
 doc/api/process.markdown        | 187 +++++-----
 doc/api/punycode.markdown       |   2 +-
 doc/api/readline.markdown       |  94 +++--
 doc/api/repl.markdown           |  42 +--
 doc/api/stream.markdown         | 269 +++++++-------
 doc/api/string_decoder.markdown |  10 +-
 doc/api/synopsis.markdown       |   6 +-
 doc/api/timers.markdown         |   7 +-
 doc/api/tls.markdown            | 119 +++---
 doc/api/tty.markdown            |   8 +-
 doc/api/url.markdown            |   4 +-
 doc/api/util.markdown           |  60 +--
 doc/api/v8.markdown             |   6 +-
 doc/api/vm.markdown             |  69 ++--
 doc/api/zlib.markdown           |  36 +-
 doc/api_assets/style.css        |  68 ++--
 doc/ctc-meetings/2015-10-28.md  | 276 ++++++++++++++
 doc/node.1                      |   4 +-
 doc/releases.md                 | 202 ++++++----
 doc/template.html               |   3 -
 doc/tsc-meetings/2015-09-30.md  | 161 ++++++++
 doc/tsc-meetings/2015-10-07.md  | 102 +++++
 doc/tsc-meetings/2015-10-14.md  | 121 ++++++
 doc/tsc-meetings/2015-10-21.md  | 214 +++++++++++
 48 files changed, 4184 insertions(+), 2266 deletions(-)

Tests & Benchmarks only:

   1.3% benchmark/assert/
   0.2% benchmark/buffers/
   0.2% benchmark/util/
   0.0% test/addons/at-exit/
   0.0% test/addons/buffer-free-callback/
   0.0% test/addons/make-callback/
   0.0% test/addons/repl-domain-abort/
   0.2% test/debugger/
   2.1% test/fixtures/keys/
   0.0% test/fixtures/node_modules/baz/
   0.0% test/fixtures/
   0.1% test/gc/
   7.9% test/internet/
   3.1% test/message/
  73.2% test/parallel/
   1.2% test/pummel/
   7.9% test/sequential/
   0.0% test/timers/
   1.5% test/
 552 files changed, 2239 insertions(+), 1658 deletions(-)

Most active commit

Of the 191 commits, 1ebb0c0 was the most active:
(Excluding docs, npm, eslint, and tests.)

commit 1ebb0c0fdf18ac098fe8c1dfc74439a484607071
Author: Saúl Ibarra Corretgé <saghul@gmail.com>
Date:   Sun Dec 13 12:07:04 2015 +0100

    deps: upgrade libuv to 1.8.0

    Fixes: https://github.com/nodejs/node/issues/3718
    PR-URL: https://github.com/nodejs/node/pull/4276
    Reviewed-By: James M Snell <jasnell@gmail.com>
    Reviewed-By: Colin Ihrig <cjihrig@gmail.com>

  17.9% deps/uv/src/unix/
  17.5% deps/uv/src/win/
   3.8% deps/uv/src/
  49.3% deps/uv/test/
  11.3% deps/uv/
 73 files changed, 1449 insertions(+), 345 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.