The NodeSource Blog

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.

The NodeSource platform offers a high-definition view of the performance, security and behavior of Node.js applications and functions.

Start for Free