The NodeSource Blog

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.