The NodeSource Blog

Node.js v4.7.0 Release Brief

This LTS release is the result of a build-up of regular maintenance commits, as well as a select few additive features deemed important enough to bring into LTS.

There is a semver-minor version number increment (the y in x.y.z) due to the additions in this release. While these semver-minor increments are possible under the LTS plan, the project is attempting to keep them to a minimum, batching multiple changes where possible, such as in this release. Note that there will be no future v4.6.x releases, all future releases numbers will be above v4.7.0.

As with all releases, minor and patch version upgrades (the y and z in x.y.z) should be drop-in replacements for previous versions.

Overview

Of a total of 108 commits:

5 commits were tagged as semver-minor, adding new functionality and justifying the jump to v4.7.0:

  • [84849f186f] - (SEMVER-MINOR) build: export more openssl symbols on Windows (Alex Hultman) #7576
  • [748e424163] - (SEMVER-MINOR) debugger: make listen address configurable (Ben Noordhuis) #3316
  • [4571c84c67] - (SEMVER-MINOR) dgram: generalized send queue to handle close (Matteo Collina) #7066
  • [c94482b167] - (SEMVER-MINOR) http: 451 status code "Unavailable For Legal Reasons" (Max Barinov) #4377
  • [9049c1f6b6] - (SEMVER-MINOR) tls: introduce secureContext for tls.connect (Fedor Indutny) #4246

The remaining significant commits are as follows:

  • [ed31f9cc30] - benchmark: add microbenchmarks for ES Map (Rod Vagg) #7581
  • [c5181eda4b] - build: reduce noise from doc target (Daniel Bevenius) #9457
  • [59d821debe] - build: use wxneeded on openbsd (Aaron Bieber) #9232
  • [7c73105606] - build: run cctests as part of test-ci target (Ben Noordhuis) #8034
  • [3919edb47e] - build: don't build icu with -fno-rtti (Ben Noordhuis) #8886
  • [e97723b18c] - build: abstract out shared library suffix (Stewart Addison) #9385
  • [0138b4db7c] - build: windows sharedlib support (Stewart Addison) #9385
  • [f21c2b9d3b] - build: configure --shared (sxa555) #6994
  • [bb2fdf58f7] - build: cherry pick V8 change for windows DLL support (Stefan Budeanu) #8084
  • [3cefd65e90] - build: export openssl symbols on windows (Ben Noordhuis) #6274
  • [4de7a6e291] - build: fix config.gypi target (Daniel Bevenius) #9053
  • [9389572cbc] - crypto: fix faulty logic in iv size check (Ben Noordhuis) #9032
  • [f6f0b387ea] - events: pass the original listener added by once (DavidCai) #6394
  • [02e6c84de2] - gitignore: ignore all tap files (Johan Bergström) #9262
  • [50a4471aff] - http: fix connection upgrade checks (Brian White) #8238
  • [12da2581a8] - https: fix memory leak with https.request() (Ilkka Myller) #8647
  • [3b448a7f12] - lib: changed var to const in linkedlist (Adri Van Houdt) #8609
  • [a3a184d40a] - lib: fix TypeError in v8-polyfill (Wyatt Preul) #8863
  • [423846053b] - lib: remove let from for loops (Myles Borins) #8873
  • [9a192a9683] - net: fix ambiguity in EOF handling (Fedor Indutny) #9066
  • [62e83b363e] - src: Malloc/Calloc size 0 returns non-null pointer (Rich Trott) #8572
  • [51e09d00c4] - src: normalize malloc, realloc (Michael Dawson) #7564
  • [3b5cedebd1] - src: renaming ares_task struct to node_ares_task (Daniel Bevenius) #7345
  • [e5d2a95d68] - src: remove out-of-date TODO comment (Daniel Bevenius) #9000
  • [b4353e9017] - src: fix typo in #endif comment (Juan Andres Andrango) #8989
  • [f0192ec195] - src: don't abort when c-ares initialization fails (Ben Noordhuis) #8710
  • [f669a08b76] - src: fix typo rval to value (Miguel Angel Asencio Hurtado) #9023
  • [9b9762ccec] - streams: fix regression in unpipe() (Anna Henningsen) #9171
  • [54c38eb22e] - tickprocessor: apply c++filt manually on mac (Fedor Indutny) #8480
  • [bf25994308] - tls: fix leak of WriteWrap+TLSWrap combination (Fedor Indutny) #9586
  • [f18f3b61e3] - util: use template strings (Alejandro Oviedo Garcia) #9120
  • [bdb6cf92c7] - win,msi: mark INSTALLDIR property as secure (João Reis) #8795
  • [9a02414a29] - zlib: fix raw inflate with custom dictionary (Tarjei Husøy)

Notable Changes

The SEMVER-MINOR changes include:

  • build: OpenSSL symbols are now exported on Windows.(Alex Hultman) #7576
    • This makes it possible to build addons that link against the bundled version of OpenSSL.
  • debugger: The listen address is now configurable in the debugger server. (Ben Noordhuis) #3316
  • dgram: Fixed a potential throw when dgram socket is closed in the listening event handler. (Matteo Collina) #7066
  • http: Introduced the 451 status code "Unavailable For Legal Reasons". (Max Barinov) #4377
  • tls: Introduced secureContext for tls.connect which is useful for caching client certificates, keys, and CA certificates. (Fedor Indutny) #4246

Notable SEMVER-PATCH changes include:

  • build: Introduced a --shared configure option for embedders. (sxa555) #6994
  • src: Node no longer aborts when c-ares initialization fails. (Ben Noordhuis) #8710
  • tls: Fixed a memory leak when writing data to a TLSWrap instance during handshake. (Fedor Indutny) #9586

Git Diffstats

(Showing the delta between v4.6.2 and v4.7.0, ignoring deps/npm.)

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

 .gitignore                        |   2 +-
 Makefile                          |  13 ++--
 common.gypi                       |  41 ++++++++++++-
 configure                         |  36 ++++++++++-
 lib/.eslintrc                     |   1 +
 lib/_debug_agent.js               |   7 ++-
 lib/_http_agent.js                |   8 +++
 lib/_http_common.js               |  16 ++---
 lib/_http_outgoing.js             |  24 ++++++--
 lib/_http_server.js               |   1 +
 lib/_linklist.js                  |   2 +-
 lib/_stream_readable.js           |   8 +--
 lib/_stream_writable.js           |   1 +
 lib/_tls_common.js                |  10 ++--
 lib/_tls_wrap.js                  |  25 ++++++--
 lib/dgram.js                      |  52 ++++++++++++----
 lib/events.js                     |   7 ++-
 lib/internal/v8_prof_polyfill.js  |  38 ++++++++++--
 lib/internal/v8_prof_processor.js |   3 +-
 lib/net.js                        |   8 ++-
 lib/repl.js                       |   2 +-
 lib/tls.js                        |   2 +-
 lib/url.js                        |  12 ++--
 lib/util.js                       |  52 ++++++++--------
 node.gyp                          | 115 +++++++++++++++++++++++++++++++++---
 src/cares_wrap.cc                 | 102 +++++++++++++++++---------------
 src/debug-agent.cc                |   8 ++-
 src/debug-agent.h                 |   4 +-
 src/env-inl.h                     |   2 +-
 src/env.h                         |  12 ++--
 src/node.cc                       |  99 +++++++++++++++++++++++++------
 src/node.h                        |  14 +++--
 src/node_buffer.cc                |  12 ++--
 src/node_crypto.cc                |  40 ++++++-------
 src/node_internals.h              |   3 +-
 src/node_os.cc                    |   2 +-
 src/node_version.h                |   4 +-
 src/node_zlib.cc                  |  14 ++++-
 src/stream_wrap.cc                |   4 +-
 src/string_bytes.cc               |   8 +--
 src/tls_wrap.cc                   |   2 +-
 src/udp_wrap.cc                   |   5 +-
 src/util-inl.h                    |  28 +++++++++
 src/util.h                        |  13 +++-
 vcbuild.bat                       |  10 +++-
 45 files changed, 626 insertions(+), 246 deletions(-)

Tools only:

 tools/getmoduleversion.py  | 24 ++++++++++++++++++++
 tools/getnodeversion.py    | 14 +++++++-----
 tools/icu/icu-generic.gyp  |  1 +
 tools/install.py           | 18 +++++++++++++--
 tools/make-v8.sh           | 49 +++++++++++++++++++++++-----------------
 tools/mkssldef.py          | 44 ++++++++++++++++++++++++++++++++++++
 tools/msvs/msi/product.wxs |  2 +-
 tools/release.sh           | 11 ++-------
 tools/test.py              | 53 ++++++++++++++++++++++++++++++++++----------
 9 files changed, 167 insertions(+), 49 deletions(-)

Deps only:

 deps/cares/include/ares.h               |   2 +-
 deps/gtest/src/gtest.cc                 | 124 ++++++++++++++++++++++++++++++
 deps/gtest/src/gtest_main.cc            |   1 -
 deps/v8/build/toolchain.gypi            |   7 +-
 deps/v8/include/v8-version.h            |   2 +-
 deps/v8/src/compiler/instruction.h      |   2 +-
 deps/v8/src/compiler/js-type-feedback.h |   5 +-
 deps/v8/src/zone-containers.h           |   6 +-
 8 files changed, 137 insertions(+), 12 deletions(-)

Docs only:

 CHANGELOG.md                           | 139 +++++++++++++-
 COLLABORATOR_GUIDE.md                  |   4 +-
 CONTRIBUTING.md                        |  65 ++++++-
 GOVERNANCE.md                          |  73 +++++---
 README.md                              |   8 +-
 WORKING_GROUPS.md                      |  23 ++-
 doc/api/child_process.md               |   6 +-
 doc/api/crypto.md                      |  15 +-
 doc/api/debugger.md                    |   3 +-
 doc/api/errors.md                      |   8 +-
 doc/api/http.md                        |   2 +-
 doc/api/modules.md                     |   6 +-
 doc/api/process.md                     |   6 +-
 doc/api/tls.md                         |   4 +
 doc/api_assets/style.css               |  73 +++++---
 doc/ctc-meetings/2016-09-28.md         | 302 ++++++++++++++++++++++++++++++
 doc/ctc-meetings/2016-10-05.md         | 311 +++++++++++++++++++++++++++++++
 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/node.1                             |  23 ++-
 doc/onboarding.md                      |  15 +-
 23 files changed, 1495 insertions(+), 103 deletions(-)

Tests & Benchmarks only:

   4.5% benchmark/es/
   3.5% test/addons/openssl-binding/
   0.6% test/cctest/
  69.9% test/parallel/
   0.9% test/pummel/
  20.2% test/sequential/
 53 files changed, 1058 insertions(+), 354 deletions(-)

Most active commit

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

commit f21c2b9d3b4595d63e7f9ebd88b9d5fc964131fb
Author: sxa555 <contactsxa@gmail.com>
Date:   Mon Jul 4 12:03:14 2016 +0100


    build: configure --shared

    Add configure flag for building a shared library that can be
    embedded in other applications (like Electron). Add flags
    --without-bundled-v8 and --without-v8-platform to control V8
    dependencies used.

    PR-URL: https://github.com/nodejs/node/pull/6994
    Ref: https://github.com/nodejs/node/pull/7487
    Ref: https://github.com/nodejs/node/pull/9385
    Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
    Reviewed-By: Fedor Indutny <fedor@indutny.com>
    Reviewed-By: James M Snell <jasnell@gmail.com>
    Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>


 common.gypi             |  9 ++++++++
 configure               | 35 ++++++++++++++++++++++++++---
 node.gyp                | 56 ++++++++++++++++++++++++++++++++++++++++-------
 src/node.cc             | 37 ++++++++++++++++++++++++++-----
 src/node.h              | 14 ++++++++----
 tools/getnodeversion.py | 14 +++++++-----
 tools/install.py        | 17 ++++++++++++--
 7 files changed, 154 insertions(+), 28 deletions(-)

This is a regular and routine release for a Node.js lts 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.