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

  • child_process: The exit code returned from spawnSync() is now null when the child is killed via signal. (cjihrig) #11288
  • crypto: The OPENSSL_CONF env variable is now supported once again. (Sam Roberts) #11006
  • doc: Added individual changelogs to many APIs in the API docs under a “history” dropdown. (Anna Henningsen) #11489
  • http: New functions have been added for accessing outgoing HTTP headers. (Brian White) #11562
  • lib: node --debug is now deprecated and will emit a warning at runtime. (Josh Gavant) #11275
  • src: Base support of Tracing Events has been added. (misterpoe) #11106
  • tls: tls.TLSSocket() uses its options to create new secure contexts, effectively allowing all tls.createSecureContext() options to be passed. (Sam Roberts) #11005
  • url: URL objects from url.URL now have a toJSON() function. (MichaĂ«l Zasso) #11236

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.

The NodeSource platform offers a high-definition view of the performance, security and behavior of Node.js applications and functions.

Start for Free