You have reached the beginning of time!

Node.js 7.3.0 Release Brief

This week’s pre-holiday release Current release contains a couple new features, and the regular bunch of fixes.

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

  • 23 were documentation-only commits.
  • 73 only modify tests and 3 only affect internal tooling.
  • One patch was backported from upstream V8:

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

  • [663c44eaaa] - cluster: return worker reference from disconnect() (Sean Villars) #10019
  • [6963e8aa9d] - crypto: allow adding extra certs to well-known CAs (Sam Roberts) #9139
  • [d4e160c946] - src: add wrapper for process.emitWarning() (Sam Roberts) #9139
  • [2096638fe0] - tls: allow obvious key/passphrase combinations (Sam Roberts) #10294
  • [24482d08ce] - url: add inspect function to TupleOrigin (Safia Abdalla) #10039

The remaining significant commits are as follows:

  • [b99a372e91] - buffer: fix single-character string filling (Anna Henningsen) #9837
  • [d8b6723096] - buffer: handle UCS2 .fill() properly on BE (Anna Henningsen) #9837
  • [e61331ee9b] - build: fix node_g target (Daniel Bevenius) #10153
  • [9d04152e15] - build: Don't regenerate node symlink (sxa555) #9827
  • [2e0386c396] - fs: remove needless assignment of null (Francis Gulotta) #10260
  • [2673be676a] - fs: remove unused argument from copyObject() (Ethan Arrowood) #10041
  • [dded482bb8] - http: remove stale timeout listeners (Karl Böhlmark) #9440
  • [b41db3396b] - inspector: check if connected before waiting (Eugene Ostroukhov) #10094
  • [b6a8bc6ac3] - lib,test: use consistent operator linebreak style (Michaël Zasso) #10178
  • [ef2fa56314] - src: fix string format mistake for 32 bit node (Alex Newman) #10082
  • [ec2f13fe66] - src: don't overwrite non-writable vm globals (Ben Noordhuis) #10227
  • [28ffd593e2] - stream, test: test _readableState.emittedReadable (Joyee Cheung) #10249
  • [5bc0ae8f7d] - stream_base: homogenize req_wrap_obj use (Fedor Indutny) #10184
  • [f66461382c] - timers: fix handling of cleared immediates (hveldstra) #9759
  • [8e4b9fa487] - tls: fix/annotate connect arg comments (Sam Roberts) #9800
  • [980acb4b95] - tls: document and test option-less createServer (Sam Roberts) #9800
  • [41e1e6eb35] - tls: do not refer to secureOptions as flags (Sam Roberts) #9800
  • [f08d8a6c6f] - url: improve URLSearchParams spec compliance (Timothy Gu) #9484
  • [19d7197177] - url: add a got host pattern in url.js (Axel Monroy) #9653
  • [2da71f24de] - url, test: fix typo in inspect output, add test (Jay Brownlee) #10231
  • [80cccce218] - url, test: including base argument in originFor (joyeecheung) #10021
  • [fc40ae3b44] - win,msi: add required UIRef for localized strings (Bill Ticehurst) #8884

Notable Changes

  • buffer: buffer.fill() now works properly for the UCS2 encoding on Big-Endian machines. (Anna Henningsen) #9837
  • cluster: worker.disconnect() now returns a reference to the disconnected worker. (Sean Villars) #10019
  • crypto: The built-in list of Well-Known CAs (Certificate Authorities) can now be extended via a NODE_EXTRA_CA_CERTS environment variable. (Sam Roberts) #9139
  • http: Fixed a memory leak where stale timeout listeners were not removed on KeepAlive connections. (Karl Böhlmark) #9440
  • tls: createSecureContext() now accepts obvious key/passphrase combinations. (Sam Roberts) #10294
  • url:
    • URL.originFor() now accepts an additional base argument, as per the spec. (joyeecheung) #10021
    • Improved URLSearchParams to meet spec compliance. (Timothy Gu) #9484

Git Diffstats

(Showing the delta between 7.2.1 and 7.3.0, ignoring deps/npm.)

Without deps, tools, docs, benchmarks, or tests:

 .eslintrc              |   1 +
 Makefile               |   9 +-
 lib/_http_client.js    |   8 +-
 lib/_tls_common.js     |  18 +--
 lib/_tls_wrap.js       |  24 ++--
 lib/buffer.js          |  26 +++--
 lib/cluster.js         |   2 +
 lib/fs.js              |   5 +-
 lib/internal/url.js    | 298 +++++++++++++++++++++++++++++++++++++++--------
 lib/timers.js          |   8 +-
 lib/url.js             |   3 +-
 src/inspector_agent.cc |  10 +-
 src/node.cc            |  29 +++++
 src/node_buffer.cc     |   3 +
 src/node_contextify.cc |  23 ++--
 src/node_crypto.cc     |  63 +++++++++-
 src/node_crypto.h      |   2 +
 src/node_internals.h   |   2 +
 src/node_version.h     |   4 +-
 src/stream_base.cc     |  17 +--
 20 files changed, 436 insertions(+), 119 deletions(-)

Tools only:

 tools/macosx-firewall.sh   | 48 ++++++++++++++++++++++++++++++++++++++++++++
 tools/msvs/msi/product.wxs |  1 +
 tools/test.py              |  4 +++-
 3 files changed, 52 insertions(+), 1 deletion(-)

Deps only:

 deps/v8/include/v8-version.h      | 2 +-
 deps/v8/src/base/platform/time.cc | 4 +++-
 2 files changed, 4 insertions(+), 2 deletions(-)

Docs only:

 .github/PULL_REQUEST_TEMPLATE.md       |   2 +-
 BUILDING.md                            |  19 +-
 CHANGELOG.md                           |   3 +-
 COLLABORATOR_GUIDE.md                  |   5 +-
 CONTRIBUTING.md                        |   4 +-
 README.md                              |   4 +-
 benchmark/README.md                    |  15 ++
 doc/api/buffer.md                      |  87 ++++----
 doc/api/cli.md                         |  11 +
 doc/api/cluster.md                     |   2 +
 doc/api/crypto.md                      |  33 +--
 doc/api/path.md                        |  40 ++--
 doc/api/tls.md                         | 370 +++++++++++++------------------
 doc/api/tty.md                         |   7 +
 doc/changelogs/CHANGELOG_V7.md         | 155 ++++++++++++-
 doc/guides/building-node-with-ninja.md |   2 +-
 doc/guides/writing-tests.md            |  19 +-
 doc/onboarding-extras.md               |   2 +-
 18 files changed, 453 insertions(+), 327 deletions(-)

Tests & Benchmarks only:

   0.2% test/cctest/
   3.3% test/debugger/
   0.4% test/fixtures/module-require-symlink/
   0.0% test/fixtures/packages/invalid/
   0.8% test/fixtures/
   0.3% test/inspector/
   3.8% test/internet/
   0.3% test/known_issues/
   0.1% test/message/
  89.4% test/parallel/
   0.1% test/pseudo-tty/
   0.9% test/sequential/
 108 files changed, 2446 insertions(+), 984 deletions(-)

Most active commit

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

commit f08d8a6c6f7fd681a27cb3be7a38e78bf1df238e
Author: Timothy Gu <timothygu99@gmail.com>
Date:   Sat Nov 5 17:37:24 2016 -0700

    url: improve URLSearchParams spec compliance
    
    - Make URLSearchParams constructor spec-compliant
    - Strip leading `?` in URL#search's setter
    - Spec-compliant iterable interface
    - More precise handling of update steps as mandated by the spec
    - Add class strings to URLSearchParams objects and their prototype
    - Make sure `this instanceof URLSearchParams` in methods
    
    Also included are relevant tests from W3C's Web Platform Tests
    (https://github.com/w3c/web-platform-tests/tree/master/url).
    
    Fixes: https://github.com/nodejs/node/issues/9302
    PR-URL: https://github.com/nodejs/node/pull/9484
    Reviewed-By: James M Snell <jasnell@gmail.com>

 lib/internal/url.js                               | 283 +++++++++++++++++---
 .../test-whatwg-url-searchparams-append.js        |  52 ++++
 .../test-whatwg-url-searchparams-constructor.js   | 134 +++++++++
 .../test-whatwg-url-searchparams-delete.js        |  44 +++
 .../test-whatwg-url-searchparams-foreach.js       |  43 +++
 test/parallel/test-whatwg-url-searchparams-get.js |  35 +++
 .../test-whatwg-url-searchparams-getall.js        |  43 +++
 test/parallel/test-whatwg-url-searchparams-has.js |  39 +++
 test/parallel/test-whatwg-url-searchparams-set.js |  38 +++
 .../test-whatwg-url-searchparams-stringifier.js   | 116 ++++++++
 test/parallel/test-whatwg-url-searchparams.js     |  13 +
 11 files changed, 797 insertions(+), 43 deletions(-)

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