The Nodesource Blog

#shoptalk Subscribe

Node.js v4.2.4 Release Brief

Node.js v4.2.4 Release Brief

This v4 LTS release is the result of a buildup of regular maintenance commits.
It also includes an updated npm license which once again better reflects npm’s Artistic 2.0 licensing.

As with all releases within major version lines, LTS patch upgrades should be drop-in replacements for previous versions.

Overview

Of a total of 152 commits:

The remaining significant commits are as follows:

  • [434305d4f0] - buffer: fix writeInt{B,L}E for some neg values (Peter A. Bigot) #3994
  • [edcb6c0603] - buffer: let WriteFloatGeneric silently drop values (P.S.V.R)
  • [71604e0bcc] - build: update signtool description, add url (Rod Vagg) #4011
  • [77306f82a1] - build: fix --with-intl=system-icu for x-compile (Steven R. Loomis) #3808
  • [3a90e0c33f] - build: fix configuring with prebuilt libraries (Markus Tzoe) #3135
  • [8d8e721dbd] - child_process: add safety checks on stdio access (cjihrig) #3799
  • [02ea6f4123] - child_process: don't fork bomb ourselves from -e (Ben Noordhuis) #3575
  • [d46d9f1dd4] - cluster: remove handles when disconnecting worker (Ben Noordhuis) #3677
  • [160702c1bc] - cluster: send suicide message on disconnect (cjihrig) #3720
  • [49b3c3b872] - configure: v8_use_snapshot should be true (Fedor Indutny) #3962
  • [cc40b75959] - configure: use __ARM_ARCH to determine arm version (João Reis) #4123
  • [a6a5c573e6] - configure: respect CC_host in host arch detection (João Reis) #4117
  • [c6ca1f3483] - crypto: DSA parameter validation in FIPS mode (Stefan Budeanu) #3756
  • [f7643eed00] - crypto: Improve error checking and reporting (Stefan Budeanu) #3753
  • [9c6a7c7bce] - deps: Updated node LICENSE file with new npm license (Kat Marchán) #4110
  • [e1cefda70f] - dns: prevent undefined values in results (Junliang Yan) #3696
  • [88e8d93e14] - domains: fix handling of uncaught exceptions (Julien Gilli) #3884
  • [667f9ab66b] - meta: remove use of profanity in source (Myles Borins) #4122
  • [9b713f142a] - module: cache regular expressions (Evan Lucas) #3869
  • [5086a9c919] - module: remove unnecessary JSON.stringify (Andres Suarez) #3578
  • [f0e37c2128] - net: add local address/port for better errors (Jan Schär) #3946
  • [8d03ec9b7c] - querystring: Parse multiple separator characters (Yosuke Furukawa) #3807
  • [b9b2f1a22f] - repl: don't crash if cannot open history file (Evan Lucas) #3630
  • [4d91c50bbd] - repl: To exit, press ^C again or type .exit. (Hemanth.HM) #3368
  • [29e043c919] - src: Add missing va_end before return (Ömer Fadıl Usta) #3565
  • [946fe6158b] - src: Revert "nix stdin _readableState.reading" (Roman Reiss) #3490
  • [6513a5ac59] - stream_wrap: error if stream has StringDecoder (Fedor Indutny) #4031
  • [b52c92783d] - tls: Use SHA1 for sessionIdContext in FIPS mode (Stefan Budeanu) #3755
  • [fe96c74f93] - tls: remove util and calls to util.format (Myles Borins) #3456
  • [301e166d20] - util: use regexp instead of str.replace().join() (qinjia) #3689
  • [0a8e8d976a] - zlib: only apply drain listener if given callback (Craig Cavalier) #3534
  • [ce7039a209] - zlib: pass kind to recursive calls to flush (Myles Borins) #3534

Notable Changes

  • Roughly 78% of the commits are documentation and test improvements
  • domains: Fix handling of uncaught exceptions (Julien Gilli) #3884
  • deps:
    • Upgrade to npm 2.14.12 (Kat Marchán) #4110
    • Backport 819b40a from V8 upstream (Michaël Zasso) #3938
    • Updated node LICENSE file with new npm license (Kat Marchán) #4110

Git Diffstats

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

Without deps, docs, benchmarks, or tests:

 LICENSE                  | 76 ++++++++++++++++++++++++++++++--------
 configure                | 21 +++++------
 lib/_stream_wrap.js      | 16 ++++++--
 lib/_tls_wrap.js         | 19 ++++++++--
 lib/buffer.js            | 14 +++++--
 lib/child_process.js     | 91 +++++++++++++++++++++++++++++-----------------
 lib/cluster.js           | 71 ++++++++++++++++++------------------
 lib/dns.js               |  2 +-
 lib/domain.js            | 33 ++++++++++-------
 lib/internal/cluster.js  |  4 ++
 lib/internal/repl.js     | 11 +++++-
 lib/module.js            | 22 +++++------
 lib/net.js               | 10 +++--
 lib/querystring.js       |  3 +-
 lib/repl.js              |  2 +-
 lib/tls.js               | 18 +++------
 lib/util.js              |  8 +---
 lib/zlib.js              |  7 ++--
 node.gyp                 |  1 +
 src/cares_wrap.cc        |  9 +----
 src/env.h                |  1 +
 src/node.cc              | 52 +++++++++++++++++++++++---
 src/node.js              |  4 +-
 src/node_buffer.cc       |  8 ++--
 src/node_crypto.cc       | 65 +++++++++++++++++++++++++--------
 src/node_version.h       |  2 +-
 tools/icu/icu-system.gyp |  2 +
 tools/test.py            |  7 ++++
 vcbuild.bat              |  4 +-
 29 files changed, 387 insertions(+), 196 deletions(-)

Deps only:

 deps/v8/src/arm/full-codegen-arm.cc           |  2 +-
 deps/v8/src/arm64/full-codegen-arm64.cc       |  2 +-
 deps/v8/src/ast-numbering.cc                  |  2 +-
 deps/v8/src/compiler/ast-graph-builder.cc     |  3 +--
 deps/v8/src/compiler/linkage.cc               |  1 +
 deps/v8/src/ia32/full-codegen-ia32.cc         |  2 +-
 deps/v8/src/isolate.cc                        |  9 +++++++--
 deps/v8/src/mips/full-codegen-mips.cc         |  2 +-
 deps/v8/src/mips64/full-codegen-mips64.cc     |  2 +-
 deps/v8/src/ppc/full-codegen-ppc.cc           |  2 +-
 deps/v8/src/scopes.cc                         |  4 ++--
 deps/v8/src/scopes.h                          |  4 ++--
 deps/v8/src/x64/full-codegen-x64.cc           |  2 +-
 deps/v8/src/x87/full-codegen-x87.cc           |  2 +-
 deps/v8/test/message/regress/regress-4266.js  | 11 +++++++++++
 deps/v8/test/message/regress/regress-4266.out | 10 ++++++++++
 deps/v8/test/mjsunit/regress/regress-4266.js  | 17 +++++++++++++++++
 17 files changed, 60 insertions(+), 17 deletions(-)

Docs only:

 CHANGELOG.md                    |  193 ++++-
 CODE_OF_CONDUCT.md              |   38 +
 COLLABORATOR_GUIDE.md           |   91 +++
 CONTRIBUTING.md                 |   44 +-
 README.md                       |   78 +-
 WORKING_GROUPS.md               |  135 +++-
 doc/api/addons.markdown         |   33 +-
 doc/api/assert.markdown         |  110 +--
 doc/api/buffer.markdown         |  726 ++++++++++---------
 doc/api/child_process.markdown  |  614 ++++++++--------
 doc/api/cluster.markdown        |  750 ++++++++++----------
 doc/api/console.markdown        |  126 ++--
 doc/api/crypto.markdown         |  896 +++++++++++------------
 doc/api/debugger.markdown       |    7 +-
 doc/api/dgram.markdown          |  304 ++++----
 doc/api/dns.markdown            |   84 +--
 doc/api/documentation.markdown  |    2 +-
 doc/api/errors.markdown         |  470 ++++++------
 doc/api/events.markdown         |  191 ++---
 doc/api/fs.markdown             |  973 ++++++++++++-------------
 doc/api/globals.markdown        |  179 +++--
 doc/api/http.markdown           | 1417 ++++++++++++++++++-------------------
 doc/api/https.markdown          |   78 +-
 doc/api/modules.markdown        |  477 ++++++-------
 doc/api/net.markdown            |  709 ++++++++++---------
 doc/api/os.markdown             |  114 +--
 doc/api/path.markdown           |  310 ++++----
 doc/api/process.markdown        |  960 ++++++++++++-------------
 doc/api/punycode.markdown       |   32 +-
 doc/api/querystring.markdown    |   54 +-
 doc/api/readline.markdown       |  211 +++---
 doc/api/repl.markdown           |  299 ++++----
 doc/api/stream.markdown         | 1164 +++++++++++++++---------------
 doc/api/string_decoder.markdown |    8 +-
 doc/api/synopsis.markdown       |    4 +-
 doc/api/timers.markdown         |   72 +-
 doc/api/tls.markdown            |  982 +++++++++++++------------
 doc/api/tty.markdown            |   39 +-
 doc/api/url.markdown            |   28 +-
 doc/api/util.markdown           |  299 ++++----
 doc/api/v8.markdown             |    4 +-
 doc/api/vm.markdown             |  301 ++++----
 doc/api/zlib.markdown           |  335 ++++-----
 doc/api_assets/style.css        |    8 +-
 44 files changed, 7263 insertions(+), 6686 deletions(-)

Tests & Benchmarks only:

   0.0% benchmark/
   0.3% test/addons/repl-domain-abort/
   9.3% test/fixtures/keys/
  15.4% test/fixtures/
   0.0% test/internet/
  64.3% test/parallel/
   1.1% test/pummel/
   6.8% test/sequential/
   2.2% test/
 74 files changed, 1855 insertions(+), 723 deletions(-)

Most active commit

Of the 152 commits, 88e8d93 was the most active (not counting npm or doc updates):

commit 88e8d93e148003468075e242b9d3664187b4741d
Author: Julien Gilli <julien.gilli@joyent.com>
Date:   Mon Nov 2 17:56:24 2015 -0800

    domains: fix handling of uncaught exceptions

    Fix node exiting due to an exception being thrown rather than emitting
    an `'uncaughtException'` event on the process object when:
    1. no error handler is set on the domain within which an error is thrown
    2. an `'uncaughtException'` event listener is set on the process

    Also fix an issue where the process would not abort in the proper
    function call if an error is thrown within a domain with no error
    handler and `--abort-on-uncaught-exception` is used.

    Fixes #3607 and #3653.

    PR: #3884
    PR-URL: https://github.com/nodejs/node/pull/3884
    Reviewed-By: James M Snell <jasnell@gmail.com>

 lib/domain.js                                     |  33 ++-
 src/env.h                                         |   1 +
 src/node.cc                                       |  51 +++-
 test/common.js                                    |  34 +++
 test/parallel/test-domain-abort-on-uncaught.js    | 295 +++++++++++++++-----
 ...t-domain-no-error-handler-abort-on-uncaught.js | 190 +++++++++++++
 ...-then-throw-from-uncaught-exception-handler.js | 101 +++++++
 test/parallel/test-domain-uncaught-exception.js   | 205 ++++++++++++++
 ...est-domain-with-abort-on-uncaught-exception.js |  37 +--
 9 files changed, 818 insertions(+), 129 deletions(-)

These quick patch releases will become routine though v4’s stable lifecycle, and this will also continue into future stable release lines. There is a lot more effort being put into core than in the recent past and frequent releases mean that the work being done gets into your hands quicker.

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.