Node.js v6.8.0 Release Brief - NodeSource

The NodeSource Blog

You have reached the beginning of time!

Node.js v6.8.0 Release Brief

This is the last Current release before v6 transitions into LTS mode.

It comes with better streams inheritance, an undeprecated fs.existsSync(), and some minor perf improvements.

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

  • 47 were documentation-only commits.
  • 77 only modify tests and 7 only affect internal tooling.
  • One dependency was upgraded & one floating patch applied:

6 commits were tagged as semver-minor, adding new functionality and justifying the jump to v6.8.0:

  • [688abac7b2] - (SEMVER-MINOR) fs: make SyncWriteStream inherit from Writable (Anna Henningsen) #8830
  • [14e2d67776] - (SEMVER-MINOR) fs,doc: undeprecate existsSync (Dan Fabulich) #8364
  • [980c1edf63] - (SEMVER-MINOR) fs,module: add module-loader-only realpath cache (Anna Henningsen) #8100
  • [ee7af01b93] - (SEMVER-MINOR) http: socket connection timeout for http request (Rene Weber) #8101
  • [4e7c67cf55] - (SEMVER-MINOR) stream: proper instanceof for Writables (Anna Henningsen) #8834
  • [fc68b12bc3] - (SEMVER-MINOR) util: Add format for SharedArrayBuffer (Yosuke Furukawa) #8587

The remaining significant commits are as follows:

  • [1a6e8983a6] - benchmark: add benchmarks for Buffer.from() (Anna Henningsen) #8738
  • [882f8b3d6c] - benchmark: use 'yes' instead of echo in a loop (Bartosz Sosnowski) #8721
  • [999f727bb5] - benchmark: add benchmark for destructuring object (Fangdun Cai (Fundon)) #8680
  • [5c10898e31] - buffer: fix check for .buffer property (Ojas Shirekar) #8739
  • [b9c2270502] - buffer: fix performance regression (Michaël Zasso) #8754
  • [3fcdf4e80a] - buffer: remove unnecessary argument check (Michaël Zasso) #8552
  • [ee319b739c] - buffer: add isSharedArrayBuffer checks (Ojas Shirekar) #8510
  • [38fdbcd7f7] - build: make addons build dep. on node_version.h (Anna Henningsen) #8861
  • [f057d193ec] - build: run cctests as part of test-ci target (Ben Noordhuis) #8034
  • [a202be6690] - build: don't build icu with -fno-rtti (Ben Noordhuis) #8886
  • [296254f141] - build: remove VS 2013 switch from vcbuild.bat (Ben Noordhuis) #8067
  • [a425c4da98] - build: run npm install for doc builds in tarball (Anna Henningsen) #8413
  • [3d3bce6ca1] - cluster: remove unused backlog argument (Brian White) #8877
  • [46af58898c] - deps: make gtest output tap (Ben Noordhuis) #8034
  • [9d41e8913f] - deps: bump V8 patch to 84 (Myles Borins) #8851
  • [23a851dfe6] - deps: avoid single-byte buffer overwrite in ares_create_query (Daniel Stenberg) #8849
  • [c4d9b54f75] - dgram: use Buffer.alloc(0) for zero-size buffers (Сковорода Никита Андреевич) #8751
  • [e1a774d314] - dns: remove internal variable from makeAsync (yorkie) #8800
  • [787558935c] - dns: tweak regex for IPv6 addresses (Luigi Pinca) #8665
  • [4e8c03707a] - dns: handle array holes in setServers() (cjihrig) #8567
  • [07d97f4f3e] - fs: fix handling of uv_stat_t fields (Anna Henningsen) #8515
  • [7a59449478] - https: fix memory leak with https.request() (Ilkka Myller) #8647
  • [573d8bcee4] - inspector: fix minor issues (Brian White) #8890
  • [f4f9cf779f] - inspector: build file cleanup (Eugene Ostroukhov) #8753
  • [e80ae1350c] - inspector: address race conditions (Eugene Ostroukhov) #8672
  • [f817875235] - inspector: wait for both sides closing (Eugene Ostroukhov) #8505
  • [4ed46b47a1] - inspector: report default context (Eugene Ostroukhov) #8502
  • [b05ce842ce] - inspector: zero out structure members (Eugene Ostroukhov) #8536
  • [0b90ff7a8d] - inspector: introduce a smoke test (Eugene Ostroukhov) #8429
  • [3222b66abe] - inspector: fix tests on Windows (Eugene Ostroukhov) #8528
  • [a1925a7955] - lib: minor improvements to bootstrap_node.js (Rémy MEJA) #8906
  • [313a45da24] - lib: changed var to const in linkedlist (Adri Van Houdt) #8609
  • [6cd5588a67] - lib: fix TypeError in v8-polyfill (Wyatt Preul) #8863
  • [ba361a2aa0] - lib: remove let from for loops (Myles Borins) #8873
  • [beb288b639] - lib: changed var to const in internal/v8_polyfill (Adri Van Houdt) #8615
  • [858a7bbacf] - lib: changed var to const in bootstrap_node.js (Adri Van Houdt) #8588
  • [31232adebb] - module: fix comment from "read-only" to "shallow" (Bryan English) #8887
  • [0eaf3ff53c] - path: fallback to process cwd when resolving drive cwd (Jason Ginchereau) #8541
  • [d72a7b3d0c] - path: fix path.relative UNC path result (Jason Ginchereau) #8523
  • [e0c10f63b0] - process: changed var to const in internal/process.js (Adri Van Houdt) #8614
  • [37ce6da59a] - process: changed var to const in internal/v8_prof_processor (Adri Van Houdt) #8619
  • [e8f1cf1bd8] - process: changed var to const in internal/process/promises (Adri Van Houdt) #8620
  • [4c194ee7bd] - readline: fix concievably typo in readline.js (Miguel Angel Asencio Hurtado) #8953
  • [8c91a9b848] - repl: improve .help message (Roman Reiss) #8519
  • [443bedeb68] - src: remove out-of-date TODO comment (Daniel Bevenius) #9000
  • [59aa103df2] - src: fix typo in #endif comment (Juan Andres Andrango) #8989
  • [8a2ba6fe83] - src: fix build for older clang (Zach Bjornson) #7645
  • [d8df78c573] - src: remove unused function declaration (Brian White) #8878
  • [a6b9ffbf5b] - src: refactor reading of options in contextify (Franziska Hinkelmann) #8850
  • [324c8b5f7e] - src: fixes misplaced comment (Madhav Gharmalkar) #8860
  • [86b9db601d] - src: add missing length argument to send comment (Daniel Bevenius) #8816
  • [aa11205f71] - src: rename CHECK_NOT_OOB() macro (Ben Noordhuis) #8784
  • [8be818eb07] - src: fix minor typo in comments (Daniel Bevenius) #8736
  • [41ad6e3965] - src: rename handle__ to handle_ in HandleWrap (Daniel Bevenius) #8712
  • [9205edc35c] - src: don't abort when c-ares initialization fails (Ben Noordhuis) #8710
  • [6ddfe89fdf] - src: remove VS 2013 compatibility hacks (Ben Noordhuis) #8067
  • [a9491f1604] - src: make ReqWrap req_ member private (Daniel Bevenius) #8532
  • [5ebce30468] - src: remove unneeded ABORT after CHECK (yorkie) #8593
  • [2dbef79ca7] - src: handle thrown errors in CopyProperties() (cjihrig) #8649
  • [52f0f64e79] - src: use MaybeStackBuffer on DoSend/Writev (Paul Kiddie) #8626
  • [a62999ac70] - src: add /json/protocol endpoint to inspector (Ben Noordhuis) #7491
  • [3a72a606cb] - timers: improve setImmediate() performance (Brian White) #8655
  • [06c411753e] - timers: improve setTimeout/Interval performance (Brian White) #8661
  • [02da155e4b] - timers: remove unreachable code (yorkie) #8487
  • [cf92be6939] - tls: TLSSocket emits 'error' on handshake failure (Mariusz 'koder' Chwalba) #8805
  • [bee1955f4e] - tls: handle error events with _tlsError (Fedor Indutny) #8889
  • [d2eaa12a23] - tls: improve createSecureContext in _tls_common (yorkie) #8781
  • [b0234e7968] - tls: add 'new' keyword for Array constructor call (Mike Ralphson) #8514
  • [8684cea9b7] - tools: make sure links are correctly passed to marked (Timothy Gu) #8494
  • [38be15549e] - util: don't init Debug if it's not needed yet (Bryan English) #8452
  • [7728f95967] - util: simplify SIMD setup (Dany Shaanan) #8579
  • [8282d6fc60] - vm: add error message if we abort (Franziska Hinkelmann) #8634
  • [b83f51a326] - win,msi: mark INSTALLDIR property as secure (João Reis) #8795
  • [623d3c6eb5] - win,tools: ignore linting for line breaks (João Reis) #8785
  • [7403aaa13f] - zlib: tighten up dictionary tests (Tarjei Husøy) #8512
  • [15474951a5] - zlib: fix raw inflate with custom dictionary (Tarjei Husøy) #8512

Notable Changes

  • fs:
    • SyncWriteStream now inherits from Stream.Writable. (Anna Henningsen) #8830
    • Practically, this means that when stdio is piped to a file, stdout and stderr will still be ](https://github.com/nodejs/node/commit/5ebce30468 streams.
    • fs.existsSync() has been undeprecated. fs.exists() remains deprecated. (Dan Fabulich) #8364
  • http: http.request() now accepts a timeout option. (Rene Weber) #8101
  • module: The module loader now maintains its own realpath cache. (Anna Henningsen) #8100
  • npm: Upgraded to 3.10.8 (Kat Marchán) #8706
  • stream: Duplex streams now show proper instanceof Stream.Writable. (Anna Henningsen) #8834
  • timers: Improved setTimeout/Interval performance by up to 22%. (Brian White) #8661

Git Diffstats

(Showing the delta between v6.7.0 and v6.8.0, ignoring deps/npm.)

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

 .eslintrc                         |  13 +-
 .remarkrc                         |  46 ++++--
 Makefile                          |  25 ++-
 lib/_http_agent.js                |   8 +
 lib/_http_client.js               |   8 +-
 lib/_stream_readable.js           |   6 +-
 lib/_stream_transform.js          |   2 +-
 lib/_stream_writable.js           |  27 +++-
 lib/_tls_common.js                |  14 +-
 lib/_tls_wrap.js                  |  10 +-
 lib/buffer.js                     |  19 ++-
 lib/cluster.js                    |   5 +-
 lib/dgram.js                      |   2 +-
 lib/dns.js                        |  15 +-
 lib/fs.js                         | 120 +++++++-------
 lib/internal/bootstrap_node.js    |  42 ++---
 lib/internal/linkedlist.js        |   2 +-
 lib/internal/process.js           |  22 +--
 lib/internal/process/promises.js  |   2 +-
 lib/internal/readline.js          |   2 +-
 lib/internal/util.js              |   2 +-
 lib/internal/v8_prof_polyfill.js  |   8 +-
 lib/internal/v8_prof_processor.js |   2 +-
 lib/module.js                     |  20 ++-
 lib/net.js                        |   5 +
 lib/path.js                       |  14 +-
 lib/punycode.js                   |   8 +-
 lib/readline.js                   |   2 +-
 lib/repl.js                       |  25 +--
 lib/timers.js                     | 303 +++++++++++++++++++++---------------
 lib/tls.js                        |   4 +-
 lib/util.js                       |  58 +++----
 lib/v8.js                         |   2 +-
 node.gyp                          |  29 ++++
 src/cares_wrap.cc                 |  83 +++++-----
 src/fs_event_wrap.cc              |   1 -
 src/handle_wrap.cc                |   6 +-
 src/handle_wrap.h                 |   6 +-
 src/inspector_agent.cc            | 118 +++++++++-----
 src/inspector_socket.cc           |  90 ++++++-----
 src/inspector_socket.h            |  46 ++++--
 src/node_buffer.cc                | 122 +++------------
 src/node_contextify.cc            | 149 +++++++++---------
 src/node_crypto_bio.cc            |   1 -
 src/node_file.cc                  |  48 +++---
 src/node_internals.h              |  21 ---
 src/node_os.cc                    |   2 +-
 src/node_util.cc                  |   1 +
 src/node_version.h                |   2 +-
 src/node_watchdog.cc              |   5 +-
 src/node_zlib.cc                  |  14 +-
 src/pipe_wrap.cc                  |   2 +-
 src/req-wrap.h                    |  10 +-
 src/stream_base.cc                |  12 +-
 src/stream_base.h                 |   9 ++
 src/stream_wrap.cc                |  12 +-
 src/string_bytes.cc               |  34 ++--
 src/tcp_wrap.cc                   |   4 +-
 src/udp_wrap.cc                   |  19 +--
 src/udp_wrap.h                    |   1 -
 src/util-inl.h                    | 121 ++++++++++++--
 src/util.h                        |  22 +--
 vcbuild.bat                       |  48 ++----
 63 files changed, 1049 insertions(+), 832 deletions(-)

Tools only:

 tools/compress_json.py     | 25 +++++++++++++++++++++++++
 tools/icu/README.md        | 19 ++++++++-----------
 tools/icu/icu-generic.gyp  |  1 +
 tools/msvs/msi/product.wxs |  2 +-
 tools/test.py              |  1 +
 5 files changed, 36 insertions(+), 12 deletions(-)

Deps only:

 deps/cares/src/ares_create_query.c                |  84 ++++++-------
 deps/gtest/src/gtest.cc                           | 124 +++++++++++++++++++-
 deps/gtest/src/gtest_main.cc                      |   1 -
 deps/v8/include/v8-version.h                      |   2 +-
 .../platform/v8_inspector/v8_inspector.gyp        |   3 -
 deps/zlib/zlib.gyp                                |   4 +
 6 files changed, 167 insertions(+), 51 deletions(-)

Docs only:

 .github/PULL_REQUEST_TEMPLATE.md                 |   2 +-
 BUILDING.md                                      |  21 +-
 CHANGELOG.md                                     |   3 +-
 CODE_OF_CONDUCT.md                               |  10 +-
 CONTRIBUTING.md                                  |  10 +-
 README.md                                        |  18 +-
 ROADMAP.md                                       |  12 +-
 doc/api/addons.md                                |   2 +-
 doc/api/buffer.md                                |  12 +-
 doc/api/child_process.md                         |   6 +-
 doc/api/cluster.md                               |   2 +-
 doc/api/console.md                               |  18 +-
 doc/api/crypto.md                                |   3 +
 doc/api/debugger.md                              |  12 +-
 doc/api/dns.md                                   |   4 +-
 doc/api/domain.md                                |   7 +-
 doc/api/events.md                                |   2 +-
 doc/api/fs.md                                    |  46 +-
 doc/api/globals.md                               |  67 ++-
 doc/api/http.md                                  |   2 +
 doc/api/net.md                                   |  12 +-
 doc/api/path.md                                  |  10 +-
 doc/api/process.md                               |  21 +-
 doc/api/readline.md                              |   2 -
 doc/api/repl.md                                  |   4 +-
 doc/api/stream.md                                |   9 +-
 doc/api/timers.md                                |  22 +-
 doc/api/tls.md                                   |   2 +-
 doc/api/url.md                                   |  12 +-
 doc/api/util.md                                  |  22 +-
 doc/changelogs/CHANGELOG_ARCHIVE.md              |   9 +-
 doc/changelogs/CHANGELOG_V4.md                   |  10 +-
 doc/changelogs/CHANGELOG_V5.md                   |   2 +-
 doc/changelogs/CHANGELOG_V6.md                   | 234 ++++++++++
 doc/ctc-meetings/2016-06-15.md                   |   4 +-
 doc/ctc-meetings/2016-08-24.md                   | 328 ++++++++++++++
 doc/ctc-meetings/2016-09-07.md                   | 245 +++++++++++
 doc/ctc-meetings/2016-09-14.md                   | 153 +++++++
 doc/ctc-meetings/2016-09-21.md                   | 218 ++++++++++
 doc/guides/timers-in-node.md                     |   8 +-
 doc/guides/writing_tests.md                      |  17 +-
 doc/node.1                                       |  23 +-
 doc/onboarding-extras.md                         |   2 +
 doc/onboarding.md                                |  30 +-
 doc/releases.md                                  |  19 +-
 doc/topics/event-loop-timers-and-nexttick.md     | 482 +++++++++++++++++++++
 doc/topics/the-event-loop-timers-and-nexttick.md | 476 --------------------
 doc/tsc-meetings/2015-08-26.md                   |   4 +-
 doc/tsc-meetings/2015-10-14.md                   |   2 +-
 tools/icu/README.md                              |  19 +-
 50 files changed, 1989 insertions(+), 671 deletions(-)

Tests & Benchmarks only:

   0.9% benchmark/buffers/
   0.0% benchmark/child_process/
   0.5% benchmark/es/
   0.0% benchmark/http/
   0.0% benchmark/util/
   0.0% benchmark/
   0.0% test/addons/async-hello-world/
   0.0% test/addons/at-exit/
   0.0% test/addons/buffer-free-callback/
   0.0% test/addons/heap-profiler/
   0.0% test/addons/hello-world-function-export/
   0.0% test/addons/hello-world/
   0.1% test/addons/load-long-path/
   0.0% test/addons/make-callback-recurse/
   0.0% test/addons/make-callback/
   0.0% test/addons/null-buffer-neuter/
   0.0% test/addons/openssl-binding/
   0.1% test/addons/parse-encoding/
   0.4% test/addons/stringbytes-external-exceed-max/
   0.0% test/addons/symlinked-module/
   0.0% test/addons/zlib-binding/
   2.4% test/cctest/
   0.0% test/debugger/
   0.9% test/fixtures/
   0.1% test/gc/
   9.4% test/inspector/
   2.0% test/internet/
   0.0% test/known_issues/
   0.0% test/message/
  78.5% test/parallel/
   0.5% test/pummel/
   1.7% test/sequential/
   0.1% test/testpy/
   0.4% test/
 240 files changed, 3315 insertions(+), 1768 deletions(-)

Most active commit

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

commit 0b90ff7a8da9eabea3d21c4da33626fcd56b62d7
Author: Eugene Ostroukhov <eostroukhov@chromium.org>
Date:   Thu Sep 1 16:25:02 2016 -0700

    inspector: introduce a smoke test

    This test executes a simple debug session over the inspector protocol.

    PR-URL: https://github.com/nodejs/node/pull/8429
    Reviewed-By: ofrobots - Ali Ijaz Sheikh <ofrobots@google.com>

 Makefile                           |   7 +-
 src/inspector_agent.cc             |   3 +
 src/inspector_socket.cc            |   2 +-
 test/README.md                     |   9 +
 test/fixtures/loop.js              |  10 +
 test/inspector/inspector-helper.js | 424 +++++++++++++++++++++++++++++++++++
 test/inspector/test-inspector.js   | 167 ++++++++++++++
 test/inspector/testcfg.py          |   6 +
 tools/test.py                      |   1 +
 vcbuild.bat                        |   7 +-
 10 files changed, 630 insertions(+), 6 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