The Nodesource Blog

#shoptalk Subscribe

Node.js v5.5.0 Release Brief

This week’s stable release is 👏 Evan Lucas’s 👏 first Node release as part of the Node.js release team. 🎉

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

  • 14 were documentation-only commits.
  • 11 only modify tests and 7 only affect internal tooling.
  • The LICENSE file has seen a significant update, and is now compiled from the licenses of Node’s dependencies via a script. The licensing itself remains the same.

5 commits were tagged as semver-minor, adding new functionality and justifying the jump to v5.5.0:

  • [a8330f73ab] - (SEMVER-MINOR) events: make sure console functions exist (Dave) #4479
  • [28793958af] - (SEMVER-MINOR) fs: add autoClose option to fs.createWriteStream (Saquib) #3679
  • [c1712947b2] - (SEMVER-MINOR) http: improves expect header handling (Daniel Sellers) #4501
  • [848b04bf78] - (SEMVER-MINOR) node: allow preload modules with -i (Evan Lucas) #4696
  • [4254508fb1] - (SEMVER-MINOR) v8,src: expose statistics about heap spaces (Ben Ripkens) #4463

The remaining significant commits are as follows:

  • [14061c6498] - buffer: remove unnecessary TODO comments (Peter Geiss) #4719
  • [f221a43f3e] - buffer: make byteLength work with Buffer correctly (Jackson Tian) #4738
  • [fe5b71028d] - build: add option to select VS version (julien.waechter) #4645
  • [cde06c6fec] - build: fix and refactor VTune config in vcbuild.bat (Rod Vagg) #4192
  • [b03cc991aa] - build: minor corrections in VTune configure text (Rod Vagg) #4192
  • [045dac7961] - cluster: fix race condition setting suicide prop (Santiago Gimeno) #4349
  • [8bf5b33019] - crypto: clear error stack in ECDH::Initialize (Fedor Indutny) #4689
  • [0d0a5ed816] - debugger: remove variable redeclarations (Rich Trott) #4633
  • [67d2e2b0a7] - dgram: prevent disabled optimization of bind() (Brian White) #4613
  • [b0b71d52c6] - gitignore: never ignore debug module (Michaël Zasso) #2286
  • [88fcc8bd25] - lib: fix style issues after eslint update (Michaël Zasso) nodejs/io.js#2286
  • [4e04063e75] - lib: use arrow functions instead of bind (Minwoo Jung) #3622
  • [f0ee088f3b] - lib,test: remove extra semicolons (Michaël Zasso) #2205
  • [eb2b8c637b] - module: cache stat() results more aggressively (Ben Noordhuis) #4575
  • [d8f5bd4fe1] - module: avoid ArgumentsAdaptorTrampoline frame (Ben Noordhuis) #4575
  • [c6ac464dbc] - querystring: improve parse() performance (Brian White) #4675
  • [d533364a24] - readline: Remove XXX and output debuglog (Kohei TAKATA) #4690
  • [8104d9d875] - repl: make sure historyPath is trimmed (Evan Lucas) #4539
  • [a2c257a3ef] - src: fix negative values in process.hrtime() (Ben Noordhuis) #4757
  • [3af206d6c1] - src: return UV_EAI_NODATA on empty lookup (cjihrig) #4715
  • [6988d2edb3] - src: don't check failure with ERR_peek_error() (Ben Noordhuis) #4731
  • [426ff820f5] - stream: prevent object map change in ReadableState (Evan Lucas) #4761

Notable Changes

  • events: Make sure console functions exist in the case of a circular dependency (Dave) #4479.
  • fs: Added an autoClose option to fs.createWriteStream (Saquib) #3679.
  • http: Improved expect header handling and added a new 'checkExpectation' event (Daniel Sellers) #4501.
  • node: Preloading modules (--require) now works with the repl (Evan Lucas) #4696.
  • v8: Added a new v8.getHeapSpaceStatistics() API (Ben Ripkens) #4463.
  • Three minor performance improvements:
    • lib: Use arrow functions instead of function.bind() where possible (Minwoo Jung) #3622.
    • (Mistakenly missing from v5.4.0)
    • module: Cache stat() results more aggressively (Ben Noordhuis) #4575.
    • querystring: Improved parse() performance (Brian White) #4675.

Git Diffstats

(Showing the delta between v5.4.1 and v5.5.0, ignoring deps/npm.)

Without deps, docs, benchmarks, or tests:

 .eslintignore                          |    2 +-
 .eslintrc                              |   12 +-
 .gitignore                             |    4 +-
 LICENSE                                | 1330 ++++++++++++++++--------------
 Makefile                               |    8 +-
 configure                              |    8 +-
 lib/_debugger.js                       |  142 ++--
 lib/_http_server.js                    |   28 +-
 lib/_stream_readable.js                |    1 +
 lib/_tls_legacy.js                     |   27 +-
 lib/_tls_wrap.js                       |   30 +-
 lib/assert.js                          |   10 +-
 lib/buffer.js                          |    7 +-
 lib/cluster.js                         |   60 +-
 lib/dgram.js                           |    3 +-
 lib/events.js                          |   17 +-
 lib/fs.js                              |   39 +-
 lib/internal/child_process.js          |   14 +-
 lib/internal/module.js                 |   11 +-
 lib/internal/repl.js                   |   13 +-
 lib/module.js                          |   28 +-
 lib/net.js                             |   28 +-
 lib/path.js                            |   68 +-
 lib/querystring.js                     |   34 +-
 lib/readline.js                        |    7 +-
 lib/tls.js                             |   14 +-
 lib/url.js                             |   42 +-
 lib/v8.js                              |   33 +-
 src/cares_wrap.cc                      |    4 +
 src/env-inl.h                          |   12 +
 src/env.h                              |    4 +
 src/node.js                            |    8 +-
 src/node_crypto.cc                     |    5 +-
 src/node_v8.cc                         |   87 +-
 src/node_version.h                     |    4 +-
 tools/doc/addon-verify.js              |   34 +-
 tools/eslint-rules/required-modules.js |    6 +-
 tools/license-builder.sh               |   64 ++
 vcbuild.bat                            |   20 +-
 39 files changed, 1338 insertions(+), 930 deletions(-)

Docs only:

 CHANGELOG.md                   | 84 ++++++++++++++++++++++++++++++++++++++++
 README.md                      |  4 +-
 doc/api/addons.markdown        |  2 +-
 doc/api/child_process.markdown | 39 ++++++++++---------
 doc/api/fs.markdown            | 17 +++++++-
 doc/api/http.markdown          | 15 ++++++-
 doc/api/repl.markdown          |  2 +-
 doc/api/stream.markdown        | 29 +++++++-------
 doc/api/v8.markdown            | 49 +++++++++++++++++++++++
 doc/node.1                     |  2 +-
 doc/releases.md                |  8 +++-
 11 files changed, 210 insertions(+), 41 deletions(-)

Tests & Benchmarks only:

   0.2% benchmark/querystring/
   0.2% test/debugger/
   0.7% test/fixtures/module-require-depth/
   0.0% test/fixtures/
   2.3% test/gc/
   6.0% test/internet/
  72.2% test/parallel/
   2.2% test/pummel/
  15.8% test/sequential/
   0.0% test/
 160 files changed, 1716 insertions(+), 1424 deletions(-)

Most active commit

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

commit 4254508fb123e79df1f1c86b3c24cf710903b87e
Author: Ben Ripkens <bripkens.dev@gmail.com>
Date:   Tue Dec 29 11:54:35 2015 +0100

    v8,src: expose statistics about heap spaces

    Provide means to inspect information about the separate heap spaces
    via a callable API. This is helpful to analyze memory issues.

    Fixes: https://github.com/nodejs/node/issues/2079
    PR-URL: https://github.com/nodejs/node/pull/4463
    Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
    Reviewed-By: Trevor Norris <trev.norris@gmail.com>
    Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
    Reviewed-By: James M Snell <jasnell@gmail.com>

 doc/api/v8.markdown            | 49 ++++++++++++++++++++++
 lib/v8.js                      | 33 ++++++++++++++-
 src/env-inl.h                  | 12 ++++++
 src/env.h                      |  4 ++
 src/node_v8.cc                 | 87 +++++++++++++++++++++++++++++++++++++++-
 test/parallel/test-v8-stats.js | 19 +++++++++
 6 files changed, 202 insertions(+), 2 deletions(-)

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