The Nodesource Blog

#shoptalk Subscribe

Node.js v5.9.1 Release Brief

This week’s stable fixes a possible crash (a regression from v5.9.0), fixes a minor buffer API problem, and improves performance of Immediate processing.

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

  • 17 were documentation-only commits.
  • 9 only modify tests and 1 only affects internal tooling.

The remaining significant commits are as follows:

  • [341b3d01c8] - benchmark: fix linting errors (Rich Trott) #5840
  • [72fb796bed] - buffer: throw range error before truncating write (Matt Loring) #5605
  • [c5d83695e1] - contextify: tie lifetimes of context & sandbox (Ali Ijaz Sheikh) #5800
  • [ae24d05451] - deps: remove unused openssl files (Ben Noordhuis) #5619
  • [54abbe7e6f] - dns: use template literals (Benjamin Gruenbaum) #5809
  • [3fef69bf15] - dns: use isIp() consistently (Benjamin Gruenbaum) #5804
  • [3bff3111f4] - https: fix ssl socket leak when keepAlive is used (Alexander Penev) #5713
  • [7b21c09b73] - lib: simplify code with String.prototype.repeat() (Jackson Tian) #5359
  • [c75f97f43b] - lib: reduce usage of self = this (Jackson Tian) #5231
  • [1ccf9b4a56] - net: remove unused var self = this from old code (Benjamin Gruenbaum) #5224
  • [6e5835b8cd] - path: refactor path.format() repeated code (Rich Trott) #5673
  • [15c7b3a127] - src,tools: use template literals (Rich Trott) #5778
  • [46f0e02620] - timers: fix lint from 4fe02e2 (Jeremiah Senkpiel) #5825
  • [20a68e9eef] - timers: give Timeouts a constructor name (Jeremiah Senkpiel) #5793
  • [d3654d80f3] - timers: improve setImmediate() performance (Brian White) #4169

Notable Changes

  • buffer: Now properly throws RangeErrors on out-of-bounds writes (Matt Loring) #5605.
    • This affects write{Float|Double} when the noAssert option is not used.
  • timers:
    • Returned timeout objects now have a Timeout constructor name (Jeremiah Senkpiel) #5793.
    • Performance of Immediate processing is now ~20-40% faster (Brian White) #4169.
  • vm: Fixed a contextify regression introduced in v5.9.0 (Ali Ijaz Sheikh) #5800.

Git Diffstats

(Showing the delta between v5.9.0 and v5.9.1, ignoring deps/npm.)

Without deps, docs, benchmarks, or tests:

 lib/_debugger.js       |  6 +-----
 lib/_http_agent.js     |  3 +++
 lib/dgram.js           |  3 +--
 lib/dns.js             | 23 +++++++++++-----------
 lib/domain.js          |  2 +-
 lib/https.js           |  5 ++---
 lib/net.js             | 50 +++++++++++++++++++++---------------------------
 lib/path.js            | 40 ++++++++++++++++----------------------
 lib/repl.js            |  6 +++---
 lib/timers.js          | 46 ++++++++++++++++++++++++--------------------
 src/.eslintrc          |  4 ++++
 src/node.cc            |  4 +++-
 src/node.js            | 16 ++++++++--------
 src/node_buffer.cc     |  6 +++---
 src/node_contextify.cc | 10 ++++++++++
 src/node_version.h     |  2 +-
 tools/doc/html.js      |  2 +-
 tools/gyp_node.py      |  2 --
 tools/install.py       |  1 -
 19 files changed, 115 insertions(+), 116 deletions(-)

Deps only:

 deps/openssl/openssl/Makefile          | 680 -------------------------------
 deps/openssl/openssl/Makefile.bak      | 680 -------------------------------
 deps/openssl/openssl/apps/CA.pl        | 189 ---------
 deps/openssl/openssl/test/evptests.txt | 401 ------------------
 deps/openssl/openssl/tools/c_rehash    | 210 ----------
 5 files changed, 2160 deletions(-)

Docs only:

 CHANGELOG.md                           |  56 ++
 doc/api/_toc.markdown                  |   1 +
 doc/api/buffer.markdown                |  20 +-
 doc/api/cli.markdown                   | 165 ++++++
 doc/api/crypto.markdown                |  43 +-
 doc/api/modules.markdown               |   8 +
 doc/api/path.markdown                  | 119 ++--
 doc/api/querystring.markdown           |  15 +-
 doc/api/stream.markdown                |   5 +-
 doc/api/timers.markdown                |  41 +-
 doc/api/tls.markdown                   | 388 ++++++-------
 doc/ctc-meetings/2016-02-03.md         | 223 ++++++++
 doc/ctc-meetings/2016-02-10.md         | 167 ++++++
 doc/node.1                             | 905 ++++---------------------------
 doc/topics/blocking-vs-non-blocking.md | 143 +++++
 15 files changed, 1205 insertions(+), 1094 deletions(-)

Tests & Benchmarks only:

 benchmark/http_simple.js                          |  14 +---
 benchmark/http_simple_auto.js                     |  12 +---
 benchmark/misc/set-immediate-breadth-args.js      |  28 ++++++++
 benchmark/misc/set-immediate-breadth.js           |  21 ++++++
 benchmark/misc/set-immediate-depth-args.js        |  47 ++++++++++++++
 benchmark/misc/set-immediate-depth.js             |  22 +++++++
 benchmark/static_http_server.js                   |   5 +-
 test/fixtures/person.jpg                          | Bin 57928 -> 45658 bytes
 test/fixtures/person.jpg.gz                       | Bin 50187 -> 45429 bytes
 test/fixtures/print-chars.js                      |   7 +-
 test/message/timeout_throw.out                    |   2 +-
 test/parallel/test-buffer.js                      |  15 +++--
 test/parallel/test-cluster-shared-leak.js         |   5 ++
 test/parallel/test-cluster-worker-kill.js         |  23 +------
 test/parallel/test-fs-realpath.js                 |   2 +-
 test/parallel/test-http-1.0.js                    |  13 +---
 test/parallel/test-http-full-response.js          |   5 +-
 test/parallel/test-http-get-pipeline-problem.js   |  10 +--
 test/parallel/test-http-pipeline-regr-2639.js     |   5 +-
 test/parallel/test-net-connect-options-ipv6.js    |  16 ++++-
 test/parallel/test-net-large-string.js            |   5 +-
 test/parallel/test-repl-eval-scope.js             |  23 +++++++
 test/parallel/test-repl-tab-complete.js           |  67 ++------------------
 .../parallel/test-vm-create-and-run-in-context.js |   9 +++
 test/parallel/test-zlib-params.js                 |   4 +-
 test/parallel/test-zlib.js                        |   9 ++-
 test/pummel/test-https-large-response.js          |   5 +-
 test/pummel/test-net-many-clients.js              |   5 +-
 test/pummel/test-net-throttle.js                  |   5 +-
 test/pummel/test-tls-throttle.js                  |   8 +--
 30 files changed, 222 insertions(+), 170 deletions(-)

Most active commit

Of the 42 commits, d3654d8 was the most active:
(Excluding docs, deps, and tests.)

commit d3654d80f39bd03e1a87036c00fc5b003351adce
Author: Brian White <mscdex@mscdex.net>
Date:   Sun Dec 6 01:35:52 2015 -0500

    timers: improve setImmediate() performance

    This commit improves setImmediate() performance by moving the
    try-finally block that wraps callback execution into a separate
    function because currently v8 never tries to optimize functions
    that contain try-finally blocks.

    With this change, there is a ~20-40% improvement in the included
    setImmediate() depth benchmarks. The breadth benchmarks show a slight
    improvement.

    PR-URL: https://github.com/nodejs/node/pull/4169
    Reviewed-By: Minwoo Jung <jmwsoft@gmail.com>
    Reviewed-By: James M Snell <jasnell@gmail.com>
    Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
    Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>

 benchmark/misc/set-immediate-breadth-args.js | 28 +++++++++++++++
 benchmark/misc/set-immediate-breadth.js      | 21 ++++++++++++
 benchmark/misc/set-immediate-depth-args.js   | 47 ++++++++++++++++++++++++++
 benchmark/misc/set-immediate-depth.js        | 22 ++++++++++++
 lib/timers.js                                | 42 ++++++++++++-----------
 5 files changed, 141 insertions(+), 19 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.