The Nodesource Blog

#shoptalk Subscribe

Node.js v4.4.5 Release Brief

This LTS release is the result of a buildup of regular maintenance commits.
Notably, some erroneous behavior of Buffer#lastIndexOf() was fixed, and a vm-related memory leak has been resolved.

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

The remaining significant commits are as follows:

  • [59a977dd22] - assert: respect assert.doesNotThrow() message. (Ilya Shaisultanov) #2407
  • [8b077faa82] - buffer: fix UCS2 indexOf() for odd buffer length (Anna Henningsen) #6511
  • [12a9699fcf] - buffer: fix needle length misestimation for UCS2 (Anna Henningsen) #6511
  • [292b1b733e] - build: fix make tar-headers for Linux (Gibson Fahnestock) #5978
  • [918d33ad4b] - build: add script to create Android .mk files (Robert Chiras) #5544
  • [4ad71847bc] - build: add support for x86 architecture (Robert Chiras) #5544
  • [6ad85914b1] - child_process: add nullptr checks after allocs (Anna Henningsen) #6256
  • [823f726f66] - contextify: tie lifetimes of context & sandbox (Ali Ijaz Sheikh) #5800
  • [9ddb44ba61] - contextify: cache sandbox and context in locals (Ali Ijaz Sheikh) #5392
  • [8ebdcd65b0] - contextify: replace deprecated SetWeak usage (Ali Ijaz Sheikh) #5392
  • [9e6d8170f7] - contextify: cleanup weak ref for sandbox (Ali Ijaz Sheikh) #5392
  • [b6fc15347d] - contextify: cleanup weak ref for global proxy (Ali Ijaz Sheikh) #5392
  • [620a261240] - http: disallow sending obviously invalid status codes (Brian White) #6291
  • [9a8b53124d] - http: unref socket timer on parser execute (Fedor Indutny) #6286
  • [b28e44deb2] - http: Corrects IPv6 address in Host header (Mihai Potra) #5314
  • [2fac15ba94] - src: fix FindFirstCharacter argument alignment (Anna Henningsen) #6511
  • [2942cff069] - src: add missing inline keywords (Ben Noordhuis) #6056
  • [e0eebf412e] - src,tools: remove null sentinel from source array (Ben Noordhuis) #5418
  • [8f18414cd5] - src,tools: drop null byte from built-in source code (Ben Noordhuis) #5418
  • [d7a3ea457b] - src,tools: allow utf-8 in built-in js source code (Ben Noordhuis) #5418
  • [51c0808b55] - stream: Fix readableState.awaitDrain mechanism (Anna Henningsen) #6023
  • [48684af55f] - zlib: fix use after null when calling .close() (James Lal) #5982

Notable Changes

  • buffer: lastIndexOf() no longer errors if called with a search term longer than the buffer. (Anna Henningsen) #6511
  • contextify: Context objects are now properly garbage collected. (Ali Ijaz Sheikh) #6871
    • This solves a problem some individuals were experiencing with extreme memory growth.
  • http: Invalid status codes can no longer be sent. (Brian White) #6291
    • Now limited to 3 digit numbers between, and including, 100 - 999.

Git Diffstats

(Showing the delta between v4.4.4 and v4.4.5, ignoring deps/npm.)

Without deps, docs, benchmarks, or tests:

 .eslintignore                     |   1 -
 .eslintrc                         |   1 +
 Makefile                          |   7 ++-
 android-configure                 |  47 +++++++++++---
 common.gypi                       |   8 +++
 lib/_http_client.js               |  11 ++++
 lib/_http_server.js               |   5 ++
 lib/_stream_readable.js           |   6 +-
 lib/assert.js                     |   9 ++-
 lib/internal/v8_prof_processor.js |   1 +
 lib/zlib.js                       |   4 +-
 src/base-object.h                 |   4 +-
 src/node_buffer.cc                |   8 ++-
 src/node_contextify.cc            | 122 +++++++++++++++---------------------
 src/node_javascript.cc            |  24 ++++---
 src/node_version.h                |   2 +-
 src/process_wrap.cc               |   2 +
 src/string_search.h               |   3 +-
 tools/create_android_makefiles    |  46 ++++++++++++++
 tools/install.py                  |   7 +--
 tools/js2c.py                     |  33 ++--------
 tools/test-npm.sh                 |   1 -
 tools/test.py                     |  10 ++-
 23 files changed, 216 insertions(+), 146 deletions(-)

Deps only:

 deps/v8/src/compiler/code-generator.cc           |  9 ++++++---
 deps/v8/src/compiler/instruction-selector-impl.h |  2 +-
 deps/v8/src/compiler/instruction-selector.cc     |  3 ++-
 deps/v8/src/compiler/instruction.cc              | 12 ++++++------
 deps/v8/src/compiler/instruction.h               |  7 ++++---
 deps/v8/src/debug-debugger.js                    |  2 +-
 deps/v8/src/heap/incremental-marking.cc          |  4 ++--
 deps/v8/src/heap/spaces-inl.h                    |  2 +-
 deps/v8/src/heap/spaces.cc                       |  2 +-
 deps/v8/src/heap/spaces.h                        |  4 ++--
 deps/v8/test/cctest/test-spaces.cc               |  6 +++---
 deps/v8/tools/tickprocessor.js                   |  5 ++++-
 12 files changed, 33 insertions(+), 25 deletions(-)

Docs only:

 BUILDING.md                    | 15 +++++++
 CHANGELOG.md                   | 96 +++++++++++++++++++++++++++++++++++++++-
 doc/api/child_process.markdown | 26 ++++++++++-
 doc/api/console.markdown       | 41 +++++++++++++++++
 doc/api/crypto.markdown        |  2 +-
 doc/api/errors.markdown        | 31 +++++--------
 doc/api/fs.markdown            | 11 +++++
 doc/api/globals.markdown       |  5 ++-
 doc/api/http.markdown          | 17 +++----
 doc/api/https.markdown         |  4 +-
 doc/api/path.markdown          | 47 +-------------------
 doc/api/stream.markdown        |  2 +-
 doc/api/tls.markdown           |  8 ++--
 doc/api/vm.markdown            |  4 +-
 doc/api/zlib.markdown          | 36 +++++++++++++++
 doc/api_assets/style.css       | 10 +----
 test/README.md                 |  4 +-
 17 files changed, 262 insertions(+), 97 deletions(-)

Tests & Benchmarks only:

   8.2% test/addons/stringbytes-external-exceed-max/
   0.0% test/message/
  53.2% test/parallel/
   0.4% test/pummel/
  37.7% test/sequential/
   0.1% test/
 133 files changed, 2198 insertions(+), 1898 deletions(-)

Most active commit

Of the 75 commits, 620a261 was the most active:
(Excluding docs, npm, eslint, and tests.)

commit 620a261240a20ec1ba00cfc1cfcd9a7ead84c0bf
Author: Brian White <mscdex@mscdex.net>
Date:   Tue Apr 19 20:49:45 2016 -0400

    http: disallow sending obviously invalid status codes

    PR-URL: https://github.com/nodejs/node/pull/6291
    Reviewed-By: James M Snell <jasnell@gmail.com>
    Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
    Reviewed-By: Сковорода Никита Андреевич <chalkerx@gmail.com>
    Reviewed-By: Fedor Indutny <fedor.indutny@gmail.com>
    Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
    Reviewed-By: Colin Ihrig <cjihrig@gmail.com>

 lib/_http_server.js                            |  4 ++
 test/parallel/test-http-response-statuscode.js | 91 ++++++++++++++++++++++++
 2 files changed, 95 insertions(+)

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.