The NodeSource Blog

Node.js v7.1.0 Release Brief

This first release to the v7.x release line comes with upgraded dependencies, a couple new APIs, and a plenty 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 117 commits:

  • 26 were documentation-only commits.
  • 35 only modify tests and 5 only affect internal tooling.
  • 3 dependencies were upgraded:
  • One patch was backported onto c-ares: [OpenBSD fix] - (Aaron Bieber) #9232

8 commits were tagged as semver-minor, adding new functionality and justifying the jump to v7.1.0:

  • [0939edd4ed] - (SEMVER-MINOR) buffer: add buffer.transcode (James M Snell) #9038
  • [7b0e93738b] - (SEMVER-MINOR) child_process: add public API for IPC channel (cjihrig) #9322
  • [3d1766f492] - (SEMVER-MINOR) deps: Intl: ICU 58 bump - small icu (BIG COMMIT) (Steven R. Loomis) #9234
  • [827000ee62] - (SEMVER-MINOR) deps: Intl: ICU 58 bump: configure/LICENSE/docs (Steven R. Loomis) #9234
  • [9940666c1b] - (SEMVER-MINOR) intl: Add more versions from ICU (Steven R. Loomis) #9266
  • [a5c62cb4f2] - (SEMVER-MINOR) readline: use icu based string width calculation (James M Snell) #9040
  • [b1ef638de3] - (SEMVER-MINOR) src: default --icu_case_mapping on as a v8 option (Steven R. Loomis) #9454
  • [60a5b515b8] - (SEMVER-MINOR) src: add NODE_PRESERVE_SYMLINKS environment variable (Marc Udoff) #8749

The remaining significant commits are as follows:

  • [dafdb7b069] - benchmark: add trailing newline for consistency (Roman Reiss) #9410
  • [fab8eb660f] - benchmark: add microbenchmarks for ES Map (Rod Vagg) #7581
  • [44792f83bf] - benchmark,lib,test,tools: remove unneeded . escape (Rich Trott) #9449
  • [c70c96a3e2] - buffer: coerce offset using Math.trunc() (cjihrig) #9341
  • [212da12f45] - buffer: use correct name for custom inspect symbol (Charmander) #9289
  • [ceec520aef] - build: add MAKEFLAGS="-j1" to node-gyp (Daniel Bevenius) #9450
  • [1109d0b244] - build: reduce noise from doc target (Daniel Bevenius) #9457
  • [90aac7ca28] - build: start comments at beginning of line (Sakthipriyan Vairamani (thefourtheye)) #9375
  • [b51db7120e] - build: make node-gyp output silent (Sakthipriyan Vairamani (thefourtheye)) #8990
  • [d8eaa14c2d] - build: prioritise --shared-X-Y over pkg-config (Rod Vagg) #9368
  • [f7d8481ee2] - build: use wxneeded on openbsd (Aaron Bieber) #9232
  • [4e3731c7e7] - child_process: remove unreachable code (cjihrig) #9307
  • [d573acf96f] - child_process: remove unreachable execSync() code (cjihrig) #9209
  • [355041960d] - events: remove unnecessary checks (cjihrig) #9330
  • [0ce0abf6cb] - events,test: fix TypeError in EventEmitter warning (jseagull) #9021
  • [6f35e4421a] - http: add debug message for invalid header value (Evan Lucas) #9195
  • [173b088e1a] - inspector: do not prompt to use localhost (Eugene Ostroukhov) #9451
  • [939d1023c2] - inspector: switch to new inspector APIs (Eugene Ostroukhov) #9028
  • [2e7b078e7b] - inspector: fix request path nullptr dereference (Ben Noordhuis) #9184
  • [5bfefa6063] - lib: change == to === in linkedlist (jedireza) #9362
  • [d24bd20d2b] - lib: make String(global) === '\[object global\]' (Anna Henningsen) #9279
  • [9372aee4a3] - lib: fix beforeExit not working with -e (Ben Noordhuis) #8821
  • [c231130e06] - module: skip directories known not to exist (Ben Noordhuis) #9196
  • [d09eb9c6b2] - net: name anonymous functions (Pedro Victor) #9357
  • [60461d2d90] - repl: refactor lib/repl.js (Rich Trott) #9374
  • [071836aa42] - repl: name anonymous functions (Pedro Victor) #9356
  • [0b9d80a037] - repl: don’t write to input stream in editor mode (Anna Henningsen) #9207
  • [1c59cefc44] - repl: make key of repl.write() optional always (Anna Henningsen) #9207
  • [0c236d1d36] - src: replace SetNamedPropertyHandler() (AnnaMag) #9062
  • [5ab172ee8f] - src: fix use of uninitialized variable (James M Snell) #9281
  • [57c0a9b5dc] - src: remove unused function (Brian White) #9243
  • [08e12c7809] - src: remove superfluous env_string string (Ben Noordhuis) #9213
  • [c342bda49e] - src: make cross-context MakeCallback() calls work (Ben Noordhuis) #9221
  • [f2a3b24611] - src: clean up program/isolate/env init logic (Ben Noordhuis) #9224
  • [9e753ba782] - src: simplify code, remove NodeInstanceData (Ben Noordhuis) #9224
  • [8b53f3c41c] - src: speed up module loading, don't resize buffer (Ben Noordhuis) #9132
  • [362c307f38] - src: speed up module loading, skip EOF read (Ben Noordhuis) #9132
  • [85a9295813] - src,tools: speed up startup by 2.5% (Ben Noordhuis) #5458
  • [4f0596fb03] - util: use template strings (Alejandro Oviedo Garcia) #9120
  • [b083086ff2] - vm: name anonymous functions (solebox) #9388

Notable Changes

  • buffer: Added buffer.transcode() for transcoding a buffer's content from one encoding to another. (James M Snell) #9038
    • Primarily uses ICU under the hood to ensure correctness.
  • child_process: Added a public API for accessing the IPC channel if it exists. (cjihrig) #9322
  • icu: Added cldr, tz, and unicode properties to process.versions. (Steven R. Loomis) #9266
  • lib: Made String(global) once again return '\[object global\]'. (Anna Henningsen) #9279
  • readline: String width calculation now uses ICU under the hood. (James M Snell) #9040
  • src:
    • Added detection for a NODE_PRESERVE_SYMLINKS environment variable that has the same effect as the --preserve-symlinks flag (Marc Udoff) #8749
    • Fixed String#toLocaleUpperCase() and String#toLocaleLowerCase(). (Steven R. Loomis)

Git Diffstats

(Showing the delta between v7.0.0 and v7.1.0, ignoring deps/npm.)

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

 .editorconfig                  |   4 +
 .eslintrc                      |   1 +
 Makefile                       |  23 +-
 common.gypi                    |   3 +
 configure                      |  30 +--
 lib/_http_outgoing.js          |   3 +
 lib/_stream_writable.js        |   1 +
 lib/_tls_wrap.js               |   2 +-
 lib/buffer.js                  |  14 +-
 lib/child_process.js           |   4 +-
 lib/events.js                  |  10 +-
 lib/internal/bootstrap_node.js |  40 +++-
 lib/internal/buffer.js         |  30 +++
 lib/internal/child_process.js  |  32 +--
 lib/internal/linkedlist.js     |   4 +-
 lib/internal/process/stdio.js  |   4 +-
 lib/internal/readline.js       | 160 +++++++-------
 lib/module.js                  |   6 +-
 lib/net.js                     |  10 +-
 lib/readline.js                |   8 +
 lib/repl.js                    |  37 ++--
 lib/util.js                    |  56 ++---
 lib/vm.js                      |  10 +-
 lib/zlib.js                    |   3 +-
 node.gyp                       |  14 +-
 src/env.cc                     |   2 -
 src/env.h                      |   1 -
 src/inspector_agent.cc         | 176 ++++++++++------
 src/node.cc                    | 295 +++++++++++++-------------
 src/node_buffer.cc             |  55 ++---
 src/node_file.cc               |  20 +-
 src/node_i18n.cc               | 438 +++++++++++++++++++++++++++++++++++++++
 src/node_internals.h           |  81 --------
 src/node_javascript.cc         |  49 +++--
 src/node_version.h             |   2 +-
 src/util.h                     |  27 +++
 36 files changed, 1098 insertions(+), 557 deletions(-)

Tools only:

 tools/icu/README.md                           |   15 +-
 tools/icu/icu-generic.gyp                     |    4 +-
 tools/icu/patches/58/source/i18n/digitlst.cpp | 1095 +++++++++++++++++++++++
 tools/icu/shrink-icu-src.py                   |   17 +-
 tools/js2c.py                                 |  164 +---
 tools/release.sh                              |    2 +-
 tools/test.py                                 |    5 +-
 7 files changed, 1154 insertions(+), 148 deletions(-)

Deps only:

   0.0% deps/cares/include/
   0.7% deps/icu-small/source/common/unicode/
  13.6% deps/icu-small/source/common/
  57.1% deps/icu-small/source/data/in/
   1.0% deps/icu-small/source/i18n/unicode/
   5.4% deps/icu-small/source/i18n/
   0.0% deps/icu-small/source/io/unicode/
   0.0% deps/icu-small/source/io/
   0.0% deps/icu-small/source/stubdata/
   0.0% deps/icu-small/source/tools/genccode/
   0.0% deps/icu-small/source/tools/gencmn/
   0.0% deps/icu-small/source/tools/genrb/
   0.0% deps/icu-small/source/tools/icupkg/
   0.0% deps/icu-small/source/tools/pkgdata/
   0.1% deps/icu-small/source/tools/toolutil/
   0.0% deps/icu-small/
   0.0% deps/uv/docs/src/
   0.0% deps/uv/include/
   0.2% deps/uv/src/unix/
   0.2% deps/uv/src/win/
   0.0% deps/uv/src/
   0.4% deps/uv/test/
   0.2% deps/uv/
   0.1% deps/v8_inspector/include/
   0.3% deps/v8_inspector/src/inspector/build/
   8.0% deps/v8_inspector/src/inspector/
   0.7% deps/v8_inspector/third_party/WebKit/Source/platform/inspector_protocol/lib/
   0.3% deps/v8_inspector/third_party/WebKit/Source/platform/inspector_protocol/templates/
   0.5% deps/v8_inspector/third_party/WebKit/Source/platform/inspector_protocol/
   1.8% deps/v8_inspector/third_party/v8_inspector/platform/inspector_protocol/
   0.1% deps/v8_inspector/third_party/v8_inspector/platform/v8_inspector/build/
   0.1% deps/v8_inspector/third_party/v8_inspector/platform/v8_inspector/public/
   8.0% deps/v8_inspector/third_party/v8_inspector/platform/v8_inspector/
   0.0% deps/v8_inspector/third_party/v8_inspector/platform/
   0.0% deps/v8_inspector/third_party/v8_inspector/
   0.0% deps/v8_inspector/
 1215 files changed, 41150 insertions(+), 34993 deletions(-)

Docs only:

 BUILDING.md                            |   2 +-
 CHANGELOG.md                           |   3 +-
 CONTRIBUTING.md                        |  65 ++++++-
 GOVERNANCE.md                          |  17 +-
 LICENSE                                |  93 +++++----
 README.md                              |   4 +-
 WORKING_GROUPS.md                      |  23 ++-
 benchmark/README.md                    |   2 +-
 doc/api/buffer.md                      |  55 ++++--
 doc/api/child_process.md               |  11 ++
 doc/api/cli.md                         |   7 +
 doc/api/crypto.md                      |  12 +-
 doc/api/fs.md                          |  13 +-
 doc/api/globals.md                     |   9 +-
 doc/api/http.md                        |   2 +-
 doc/api/https.md                       |   4 +-
 doc/api/modules.md                     |   6 +-
 doc/api/process.md                     |  28 ++-
 doc/api/tls.md                         |  12 +-
 doc/api/util.md                        |  30 ++-
 doc/api/zlib.md                        |   6 +-
 doc/changelogs/CHANGELOG_V7.md         | 138 ++++++++++++++
 doc/ctc-meetings/2016-09-28.md         | 303 ++++++++++++++++++++++++++++++
 doc/ctc-meetings/2016-10-05.md         | 312 +++++++++++++++++++++++++++++++
 doc/ctc-meetings/2016-10-12.md         | 157 ++++++++++++++++
 doc/ctc-meetings/2016-10-19.md         | 202 ++++++++++++++++++++
 doc/ctc-meetings/2016-10-26.md         | 151 +++++++++++++++
 doc/guides/building-node-with-ninja.md |   2 +-
 doc/guides/writing_tests.md            |  53 ++++--
 tools/icu/README.md                    |  15 +-
 30 files changed, 1588 insertions(+), 149 deletions(-)

Tests & Benchmarks only:

   2.8% benchmark/es/
   0.1% benchmark/
   0.3% test/addons/make-callback/
   0.0% test/fixtures/packages/index/
   3.4% test/inspector/
   2.5% test/internet/
   3.9% test/message/
  50.6% test/parallel/
   6.5% test/pummel/
  29.3% test/sequential/
   0.1% test/
 75 files changed, 1398 insertions(+), 715 deletions(-)

Most active commit

Of the 117 commits, 939d102 was the most active:
(Excluding docs, npm, eslint, and tests.)

commit 939d1023c20272a502b02147aa231d596a45d4e9
Author: Eugene Ostroukhov <eostroukhov@chromium.org>
Date:   Wed Oct 5 15:11:48 2016 -0700


    inspector: switch to new inspector APIs

    This implementation switches to V8 inspector from the V8 repository. The
    new inspector integration is now using final APIs and exposes a stable
    wire protocol, removing the need for pointing the users to specific
    devtools version.

    PR-URL: https://github.com/nodejs/node/pull/9028
    Reviewed-By: James M Snell <jasnell@gmail.com>
    Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>


  40.9% deps/v8_inspector/src/inspector/
   3.7% deps/v8_inspector/third_party/WebKit/Source/platform/inspector_protocol/lib/
   4.5% deps/v8_inspector/third_party/WebKit/Source/platform/inspector_protocol/
   8.9% deps/v8_inspector/third_party/v8_inspector/platform/inspector_protocol/
  40.4% deps/v8_inspector/third_party/v8_inspector/platform/v8_inspector/
 217 files changed, 21662 insertions(+), 21671 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