The Nodesource Blog

Node.js v7.2.1 Release Brief

This routine patch release un-deprecates calling Buffer without the new keyword, and also includes more useful stacktraces for promise warnings when --trace-warnings is enabled.

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

  • 23 were documentation-only commits.
  • 139 only modify tests and 4 only affect internal tooling.
  • 3 of the commits consist of 3 dependency updates + floating patches:
  • One dependency was updated:
  • Two commits were floated onto their respective dependencies :

The remaining significant commits are as follows:

  • [5379b9da11] - async_wrap: call destroy() callback in uv_idle_t (Trevor Norris) #9753
  • [5157a5cee9] - async_wrap: make Initialize a static class member (Trevor Norris) #9753
  • [3e5be7fc8b] - async_wrap: mode constructor/destructor to .cc (Trevor Norris) #9753
  • [88464ac6ac] - benchmark: reformat code for clarity (Rich Trott) #9790
  • [573f9db6c9] - buffer: fix transcode for single-byte enc to ucs2 (Anna Henningsen) #9838
  • [0c745e3a3a] - buffer: convert offset & length to int properly (Sakthipriyan Vairamani (thefourtheye)) #9815
  • [e0e62d1113] - Revert "buffer: runtime deprecation of calling Buffer without new" (Anna Henningsen) #9529
  • [371090d817] - build: Make configure file parseable on python3 (kalrover) #9657
  • [16af467146] - build: add shared library support to AIX build (Stewart Addison) #9675
  • [fa38032148] - child_process: name anonymous functions (brad-decker) #9880
  • [5c9aa18484] - constants: errors -> errno (Bryan English) #9349
  • [dfa35d66f5] - debugger: call this.resume() after this.run() (Lance Ball) #10099
  • [ac8d212428] - debugger: refactor _debugger.js (Rich Trott) #9860
  • [9554a974d1] - https: name anonymous functions in https (Pedro Lima) #9217
  • [80a3934cd7] - inspector: /json/version returns object, not array (Ben Noordhuis) #9762
  • [65cda7f265] - lib: use === in _http_server and _tls_wrap (Walter Beller-Morales) #9849
  • [a673d44d68] - lib,tools: remove unneeded escaping of / (Prince J Wesley) #9591
  • [3253954e62] - meta: whitelist dotfiles in .gitignore (Claudio Rodriguez) #8016
  • [cef3a04f62] - promise: better stack traces for --trace-warnings (Anna Henningsen) #9525
  • [a0f6cc718a] - repl: avoid parsing division operator as regex (Teddy Katz) #10103
  • [6087e361e5] - repl: preprocess only for defaultEval (Prince J Wesley) #9752
  • [9099664959] - repl: fix generator function preprocessing (Teddy Katz) #9852
  • [5ae549c3aa] - url: fix -Warray-bounds warning (Santiago Gimeno) #9751
  • [f55a63c86f] - uti: move the case latin1 (Jackson Tian) #9646

Git Diffstats

(Showing the delta between v7.2.0 and v7.2.1, ignoring deps/npm.)

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

 .eslintrc                        |   2 +
 .gitignore                       |  18 ++++-
 Makefile                         |   2 +
 configure                        |  76 +++++++++++---------
 lib/_debugger.js                 |  56 ++++++++-------
 lib/_http_server.js              |   2 +-
 lib/_tls_wrap.js                 |   2 +-
 lib/buffer.js                    |  14 +---
 lib/child_process.js             |  24 ++++---
 lib/constants.js                 |   2 +-
 lib/https.js                     |  10 +--
 lib/internal/process/promises.js |  17 ++++-
 lib/internal/util.js             |  22 +++++-
 lib/repl.js                      |  58 +++++++++-------
 lib/url.js                       | 138 +++++++++++++++++++------------------
 node.gyp                         |  10 ++-
 src/async-wrap-inl.h             |  71 -------------------
 src/async-wrap.cc                | 105 ++++++++++++++++++++++++++--
 src/async-wrap.h                 |  17 +++--
 src/env-inl.h                    |  15 ++++
 src/env.cc                       |   3 +
 src/env.h                        |   8 +++
 src/inspector_agent.cc           |  21 ++++--
 src/node_i18n.cc                 |   2 +-
 src/node_url.cc                  |   4 +-
 src/node_version.h               |   2 +-
 26 files changed, 427 insertions(+), 274 deletions(-)

Tools only:

 tools/license2rtf.js |  4 ++--
 tools/test.py        | 11 +++++++++--
 2 files changed, 11 insertions(+), 4 deletions(-)

Deps only:

 deps/v8/include/v8-version.h          |  2 +-
 deps/v8/src/bootstrapper.cc           |  1 +
 deps/v8/src/contexts.h                |  1 +
 deps/v8/src/crankshaft/hydrogen.cc    | 49 +++++++++++++++++++++------------
 tools/gyp/AUTHORS                     |  7 +++--
 tools/gyp/PRESUBMIT.py                | 26 +++++++++--------
 tools/gyp/pylib/gyp/generator/make.py | 10 +++++--
 7 files changed, 60 insertions(+), 36 deletions(-)

Docs only:

 CHANGELOG.md                                 |   3 +-
 COLLABORATOR_GUIDE.md                        |  74 +++++--
 CONTRIBUTING.md                              |   2 +-
 README.md                                    |   7 -
 doc/api/addons.md                            |  22 +-
 doc/api/buffer.md                            |   6 +-
 doc/api/child_process.md                     |   2 +-
 doc/api/crypto.md                            |  12 +-
 doc/api/debugger.md                          |   8 +-
 doc/api/fs.md                                |   4 +-
 doc/api/https.md                             |   2 +-
 doc/api/modules.md                           |  54 +++--
 doc/api/process.md                           |   6 +-
 doc/api/tls.md                               |   2 +-
 doc/api/url.md                               |   9 +-
 doc/api/util.md                              |   1 -
 doc/api_assets/style.css                     |   5 +
 doc/changelogs/CHANGELOG_V7.md               | 210 +++++++++++++++++++
 doc/guides/maintaining-V8.md                 | 279 +++++++++++++++++++++++++
 doc/guides/writing-tests.md                  | 204 ++++++++++++++++++
 doc/guides/writing_tests.md                  | 204 ------------------
 doc/onboarding-extras.md                     |   1 +
 doc/onboarding.md                            | 192 +++++------------
 doc/topics/event-loop-timers-and-nexttick.md |  10 +-
 24 files changed, 893 insertions(+), 426 deletions(-)

Tests & Benchmarks only:

   0.6% benchmark/arrays/
   1.2% benchmark/buffers/
   0.2% benchmark/es/
   0.6% benchmark/http/
   0.1% benchmark/misc/
   0.1% benchmark/querystring/
   0.8% benchmark/tls/
   0.1% benchmark/util/
   0.4% benchmark/
   0.0% test/addons/async-hello-world/
   0.0% test/addons/hello-world-function-export/
   0.0% test/addons/hello-world/
   0.0% test/addons/load-long-path/
   0.2% test/addons/stringbytes-external-exceed-max/
   0.7% test/cctest/
   0.5% test/debugger/
   0.1% test/inspector/
   0.6% test/message/
  91.4% test/parallel/
   0.1% test/pseudo-tty/
   0.3% test/sequential/
   0.8% test/
 168 files changed, 2332 insertions(+), 1766 deletions(-)

Most active commit

Of the 193 commits, 0c745e3 was the most active:
(Excluding docs, npm, eslint, and tests.)

commit 0c745e3a3ad5472b4827243d8fa4e1b926843cca
Author: Sakthipriyan Vairamani (thefourtheye) <thechargingvolcano@gmail.com>
Date:   Sun Nov 27 15:08:17 2016 +0530


    buffer: convert offset & length to int properly

    As per ecma-262 2015's #sec-%typedarray%-buffer-byteoffset-length,
    `offset` would be an integer, not a 32 bit unsigned integer. Also,
    `length` would be an integer with the maximum value of 2^53 - 1, not a
    32 bit unsigned integer.

    This would be a problem because, if we create a buffer from an
    arraybuffer, from an offset which is greater than 2^32, it would be
    actually pointing to a different location in arraybuffer. For example,
    if we use 2^40 as offset, then the actual value used will be 0,
    because `byteOffset >>>= 0` will convert `byteOffset` to a 32 bit
    unsigned int, which is based on 2^32 modulo.

    This is a redo, as the ca37fa527f174b547893817fe8c67a3befa02317 broke
    CI.

    Refer: https://github.com/nodejs/node/pull/9814
    Refer: https://github.com/nodejs/node/pull/9492

    PR-URL: https://github.com/nodejs/node/pull/9815

    Reviewed-By: Michaël Zasso <targos@protonmail.com>
    Reviewed-By: Trevor Norris <trev.norris@gmail.com>
    Reviewed-By: James M Snell <jasnell@gmail.com>
    Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
    Reviewed-By: Matteo Collina <matteo.collina@gmail.com>


 lib/buffer.js                                    |  4 +--
 lib/internal/util.js                             | 18 ++++++++++
 test/parallel/test-buffer-creation-regression.js | 41 ++++++++++++++++++++++
 test/parallel/test-internal-util-toInteger.js    | 32 +++++++++++++++++
 test/parallel/test-internal-util-toLength.js     | 35 ++++++++++++++++++
 5 files changed, 128 insertions(+), 2 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.