The Nodesource Blog

Node.js 7.7.0 and 7.7.1 Release Brief

The release of Node.js 7.7.1 was expedited due to a bug in 7.7.0 that prevented all native modules from building. This issue should now be resolved in Node 7.7.1.

These releases come with a variety of new features, including new http header-accessing APIs, changelogs for individual APIs in the API docs, and more.

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

  • 52 were documentation-only commits.
  • 39 only modify tests and 5 only affect internal tooling.
  • 1 patch was backported from upstream V8:

6 commits were tagged as semver-minor, adding new functionality and justifying the jump to v7.7.x:

The remaining significant commits are as follows:

  • [6bcc841786] - assert: apply minor refactoring (Rich Trott) #11511
  • [6a2f330dbd] - assert: remove unneeded condition (Rich Trott) #11314
  • [0762482339] - assert: unlock the assert API (Rich Trott) #11304
  • [842ac583f6] - benchmark: add url.domainTo*() (Timothy Gu) #11464
  • [3951bd9ac1] - benchmark: strip BOM in dgram/bind-params (Anna Henningsen) #11479
  • [e1573b9fb7] - benchmark: add dgram bind(+/- params) benchmark (Vse Mozhet Byt) #11313
  • [48f6660d78] - benchmark: fix timer display in progress output (Brian White) #11235
  • [5a81031fd8] - benchmark: clean up legacy url benchmarks (Joyee Cheung)
  • [7e37628c51] - benchmark: add url/url-searchparams-sort.js (Timothy Gu)
  • [678ea11955] - benchmark: refactor whatwg-url-properties (Joyee Cheung) #11264
  • [7a3553f792] - benchmark: move url data to fixtures (Joyee Cheung) #11264
  • [4ffad094ba] - buffer: refactor slowToString (James M Snell) #11358
  • [d08a8e68e8] - buffer: avoid use of arguments (James M Snell) #11358
  • [c8e34b61f6] - build: add missing src/tracing header files (Daniel Bevenius) #10851
  • [4408437796] - build: add rule to clean addon tests build (Joyee Cheung) #11519
  • [8d323bb91a] - build: fail on CI if leftover processes (Rich Trott) #11269
  • [d4a8631bd1] - build: fix newlines in addon build output (Brian White) #11466
  • [bc9c381027] - build: add code coverage to make (Wayne Andrews) #10856
  • [9c45758cdf] - build: fix building with ninja on linux (Kenan Yildirim) #11348
  • [86a647899f] - build: don't rebuild test/gc add-on unnecessarily (Ben Noordhuis) #11311
  • [c942e2037c] - child_process: refactor internal/child_process.js (Arseniy Maximov) #11366
  • [0240eb99a2] - child_process: remove empty if condition (cjihrig) #11427
  • [60fc567952] - child_process: move anonymous class to top level (Jackson Tian) #11147
  • [58e2517fc0] - child_process: exit spawnSync with null on signal (cjihrig) #11288
  • [4b4bc13758] - cluster: properly handle --inspect-{brk,port} (Ali Ijaz Sheikh) #11386
  • [aef67cfe39] - dgram: fix possibly deoptimizing use of arguments (Vse Mozhet Byt) #11242
  • [662b0c31ce] - dns: avoid use of arguments (James M Snell) #11359
  • [4f6a3d38c3] - domain,events: support non-object 'error' argument (Ben Noordhuis) #11438
  • [758126301e] - fs: improve performance for sync stat() functions (Brian White) #11522
  • [3e8d43d165] - http: add new functions to OutgoingMessage (Brian White) #11562
  • [a710167c79] - lib: rename kMaxCallbacksUntilQueueIsShortened (JungMinu) #11473
  • [61e1af2155] - lib: remove unnecessary assignments with _extend (Sakthipriyan Vairamani (thefourtheye)) #11364
  • [d1549bf8d9] - lib: add constant kMaxCallbacksUntilQueueIsShortened (Daniel Bevenius) #11199
  • [3afe90dc9b] - net: prefer === to == (Arseniy Maximov) #11513
  • [db06c7311b] - os: improve loadavg() performance (Brian White) #11516
  • [fe7a722468] - process: fix typo in comments (levsthings) #11503
  • [54e1f0c219] - process: improve memoryUsage() performance (Brian White) #11497
  • [96f55f9e59] - src: move trace_event.h include to internal header (Ben Noordhuis) #10959
  • [30c80cbe6f] - src: fix TracingController cleanup (Jason Ginchereau) #10623
  • [b89b2a7d36] - src: always initialize tracing controller in agent (Matt Loring) #10507
  • [bd4ccc892c] - src: add tracing controller (misterpoe) #11106
  • [fb85f5049e] - src: clean up MaybeStackBuffer (Timothy Gu) #11464
  • [beda32675f] - src: don't assume v8::Local is using-declared (Timothy Gu) #11464
  • [64a92565e0] - src: update http-parser link (Daniel Bevenius) #11477
  • [539e83a820] - src: remove usage of deprecated debug API (Yang Guo) #11437
  • [a8613f8ce4] - src: fix --icu-data-dir= regression (Ben Noordhuis) #11255
  • [73e316e908] - src: make --icu-data-dir= switch testable (Ben Noordhuis) #11255
  • [96a6d64250] - src: make copies of startup environment variables (Ben Noordhuis) #11051
  • [7d47f27049] - src: remove unused variable in node_crypto (cjihrig) #11361
  • [8a5c0fb0ff] - src: remove unused typedef (Ben Noordhuis) #11322
  • [39b00349b8] - src, i18n: cleanup usage of MaybeStackBuffer (Timothy Gu) #11464
  • [7aaa960f4c] - test, url: synchronize WPT url tests (Joyee Cheung)
  • [506a1cb03f] - timer,domain: maintain order of timer callbacks (John Barboza) #10522
  • [f37ab7968e] - tls: do not crash on STARTTLS when OCSP requested (Fedor Indutny) #10706
  • [5f94ff6231] - tls: avoid potentially deoptimizing use of arguments (James M Snell) #11357
  • [3dc4a5f1f4] - tracing: fix -Wunused-private-field warning (Santiago Gimeno) #10416
  • [8a918bf411] - tracing: fix -Wreorder warning (Santiago Gimeno) #10416
  • [4ee9220565] - tty: avoid oob warning in TTYWrap::GetWindowSize() (Dmitry Tsvettsikh) #11454
  • [5f10827248] - url: fix handling of ? in URLSearchParams creation (Timothy Gu) #11372
  • [72da362d6e] - url: fix file state clarification in binding (Daijiro Wachi) #11123
  • [4366ab539f] - url: implement URL.prototype.toJSON (Michaël Zasso) #11236
  • [8dbd562590] - url: fix surrogate handling in encodeAuth() (Timothy Gu)
  • [c25c16cc1b] - url: add urlSearchParams.sort() (Timothy Gu)
  • [d8cb65aa6e] - url, test: synchronize WPT url tests for file URL (Daijiro Wachi) #11123
  • [237db9c497] - util: cleanup internalUtil.deprecate (James M Snell) #11450
  • [95bee8f202] - util: eliminate unnecessary exports (James M Snell) #11451
  • [3bdac54e67] - util: use ES2015+ Object.is to check negative zero (Shinnosuke Watanabe) #11332
  • [3d133ebd3d] - util, debugger: remove internalUtil.error (James M Snell) #11448
  • [f55c628b2a] - vm: refactor vm module (James M Snell) #11392

Notable Changes

These releases contain a deprecation warning for node --debug. You can find more information in the
Diagnostics Working Group Update

Git Diffstats

(Showing the delta between v7.6.0 and v7.7.1, ignoring deps/npm.)

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

 .eslintrc.yaml                         |    2 +
 Makefile                               |  110 +-
 common.gypi                            |   13 +-
 configure                              |   11 +-
 lib/_debug_agent.js                    |    4 +
 lib/_debugger.js                       |   16 +-
 lib/_http_agent.js                     |    4 +-
 lib/_http_outgoing.js                  |   35 +
 lib/_tls_wrap.js                       |   23 +-
 lib/assert.js                          |   11 +-
 lib/buffer.js                          |   28 +-
 lib/child_process.js                   |    9 +-
 lib/dgram.js                           |    6 +-
 lib/dns.js                             |    9 +-
 lib/events.js                          |    8 +-
 lib/fs.js                              |   26 +-
 lib/internal/bootstrap_node.js         |    3 +
 lib/internal/child_process.js          |   83 +-
 lib/internal/cluster/master.js         |    8 +-
 lib/internal/errors.js                 |   88 ++
 lib/internal/process.js                |   23 +-
 lib/internal/process/next_tick.js      |   10 +-
 lib/internal/process/write-coverage.js |   46 +
 lib/internal/querystring.js            |   15 +
 lib/internal/url.js                    |  165 +--
 lib/internal/util.js                   |   32 +-
 lib/net.js                             |    5 +-
 lib/os.js                              |    8 +-
 lib/querystring.js                     |   15 +-
 lib/readline.js                        |    4 +-
 lib/repl.js                            |    4 +-
 lib/timers.js                          |   15 +
 lib/tty.js                             |    4 +-
 lib/url.js                             |   84 +-
 lib/util.js                            |   11 +-
 lib/vm.js                              |   63 +-
 node.gyp                               |   13 +-
 src/env.h                              |    4 -
 src/node.cc                            |  127 ++-
 src/node_config.cc                     |    7 +-
 src/node_contextify.cc                 |    3 +-
 src/node_crypto.cc                     |    5 +-
 src/node_file.cc                       |   72 +-
 src/node_http_parser.cc                |    2 +-
 src/node_i18n.cc                       |  123 ++-
 src/node_i18n.h                        |    5 +-
 src/node_internals.h                   |   36 +-
 src/node_os.cc                         |   14 +-
 src/node_url.cc                        |    8 +-
 src/node_version.h                     |    4 +-
 src/spawn_sync.cc                      |   13 +-
 src/tracing/agent.cc                   |   74 ++
 src/tracing/agent.h                    |   31 +
 src/tracing/node_trace_buffer.cc       |  177 ++++
 src/tracing/node_trace_buffer.h        |   87 ++
 src/tracing/node_trace_writer.cc       |  185 ++++
 src/tracing/node_trace_writer.h        |   74 ++
 src/tracing/trace_event.cc             |   17 +
 src/tracing/trace_event.h              | 1710 ++++++++++++++++++++++++++++++
 src/util.h                             |   65 +-
 60 files changed, 3391 insertions(+), 466 deletions(-)

Tools only:


Deps only:

 deps/v8/include/v8-version.h                           | 2 +-
 deps/v8/src/compiler/ppc/instruction-selector-ppc.cc   | 2 +-
 deps/v8/src/compiler/s390/instruction-selector-s390.cc | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

Docs only:

 CHANGELOG.md                                 |   4 +-
 CONTRIBUTING.md                              |   3 +
 benchmark/README.md                          | 663 +++++++++----------------
 doc/STYLE_GUIDE.md                           |  63 +++
 doc/api/_toc.md                              |   1 +
 doc/api/all.md                               |   6 +-
 doc/api/assert.md                            |  72 ++-
 doc/api/buffer.md                            | 282 +++++++----
 doc/api/child_process.md                     |  43 +-
 doc/api/cli.md                               |  45 +-
 doc/api/cluster.md                           |  27 +
 doc/api/console.md                           |  30 +-
 doc/api/crypto.md                            |  91 +++-
 doc/api/debugger.md                          |   6 +-
 doc/api/deprecations.md                      |  40 ++
 doc/api/dgram.md                             |  41 +-
 doc/api/dns.md                               |  66 ++-
 doc/api/domain.md                            | 172 +++----
 doc/api/events.md                            |  10 +
 doc/api/fs.md                                | 312 +++++++++++-
 doc/api/http.md                              | 115 ++++-
 doc/api/net.md                               |  32 +-
 doc/api/os.md                                |  11 +
 doc/api/path.md                              |  17 +
 doc/api/process.md                           | 278 ++++++-----
 doc/api/punycode.md                          |   6 +
 doc/api/querystring.md                       |   7 +
 doc/api/readline.md                          |  15 +-
 doc/api/repl.md                              |   4 +
 doc/api/stream.md                            |  17 +
 doc/api/tls.md                               | 136 +++--
 doc/api/tracing.md                           |  19 +
 doc/api/url.md                               | 411 ++++++++++++---
 doc/api/util.md                              |  60 ++-
 doc/api/v8.md                                |  90 ++--
 doc/api/vm.md                                |   9 +
 doc/api/zlib.md                              |  26 +
 doc/api_assets/style.css                     |   6 +
 doc/changelogs/CHANGELOG_V7.md               | 198 ++++++++
 doc/guides/doc_img/compare-boxplot.png       | Bin 0 -> 266641 bytes
 doc/guides/doc_img/scatter-plot.png          | Bin 0 -> 182417 bytes
 doc/guides/using-internal-errors.md          | 141 ++++++
 doc/guides/writing-and-running-benchmarks.md | 427 ++++++++++++++++
 doc/guides/writing-tests.md                  |   8 +-
 doc/node.1                                   |  10 +
 45 files changed, 2979 insertions(+), 1041 deletions(-)

Tests & Benchmarks only:

   0.1% benchmark/dgram/
  55.4% benchmark/doc_img/
   0.0% benchmark/domain/
   0.0% benchmark/es/
   0.1% benchmark/fixtures/
   0.0% benchmark/fs/
   0.0% benchmark/os/
   0.0% benchmark/process/
   0.0% benchmark/querystring/
   1.0% benchmark/url/
   0.0% benchmark/
   0.4% test/cctest/
   0.2% test/doctool/
  28.8% test/fixtures/
   0.0% test/internet/
   0.0% test/known_issues/
   0.2% test/message/
  12.6% test/parallel/
   0.1% test/pummel/
   0.0% test/sequential/
   0.2% test/
 116 files changed, 8244 insertions(+), 5920 deletions(-)

Most active commit

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

commit bd4ccc892c0413439c3d068485cbfb49ea78b842
Author: misterpoe <raymondksi@gmail.com>
Date:   Fri Aug 5 14:04:25 2016 -0700

    src: add tracing controller

    This commit adds support for trace-event tracing to Node.js. It provides
    a mechanism to centralize tracing information generated by V8, Node
    core, and userspace code. It includes:

     - A trace writer responsible for serializing traces and cycling the
       output files so that no individual file becomes to large.
     - A buffer for aggregating traces to allow for batched flushes.
     - An agent which initializes the tracing controller and ensures that
       trace serialization is done on a separate thread.
     - A set of macros for generating trace events.
     - Tests and documentation.

    Author: Raymond Kang <raymondksi@gmail.com>
    Author: Kelvin Jin <kelvinjin@google.com>
    Author: Matthew Loring <mattloring@google.com>
    Author: Jason Ginchereau <jasongin@microsoft.com>

    PR-URL: https://github.com/nodejs/node/pull/11106
    Reviewed-By: Josh Gavant <josh.gavant@outlook.com>

 doc/api/cli.md                    |   14 +
 doc/api/debugger.md               |    2 +-
 doc/api/tracing.md                |   19 +
 node.gyp                          |    5 +
 src/node.cc                       |   28 +
 src/node.h                        |    1 +
 src/tracing/agent.cc              |   72 ++
 src/tracing/agent.h               |   31 +
 src/tracing/node_trace_buffer.cc  |  177 ++++
 src/tracing/node_trace_buffer.h   |   89 ++
 src/tracing/node_trace_writer.cc  |  185 ++++
 src/tracing/node_trace_writer.h   |   74 ++
 src/tracing/trace_event.cc        |   17 +
 src/tracing/trace_event.h         | 1710 +++++++++++++++++++++++++++++++++++
 test/parallel/test-trace-event.js |   35 +
 15 files changed, 2458 insertions(+), 1 deletion(-)

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.