Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release proposal: v4.1.2 #3127

Closed
wants to merge 171 commits into from
Closed

Release proposal: v4.1.2 #3127

wants to merge 171 commits into from

Conversation

rvagg
Copy link
Member

@rvagg rvagg commented Sep 30, 2015

Aiming for Monday release. This is not the release where we shift to LTS, that'll probably be soon after.

Some important bugfixes still need to be finalised for this release yet.


  • [3de58b9531] - benchmark: update comment in common.js (Minwoo Jung) #2399
  • [9e9bfa4dc0] - build: iojs -> nodejs of release-urlbase (P.S.V.R) #3015
  • [8335ec7191] - build: fix some typos inside the configure script (P.S.V.R) #3016
  • [798dad24f4] - child_process: null channel handle on close (Fedor Indutny) #3041
  • [4c8d96bc30] - crypto: add more keylen sanity checks in pbkdf2 (Johann) #3029
  • [039f73fa83] - deps: remove and gitignore .bin directory (Ben Noordhuis) #3004
  • [5fbb24812d] - deps: backport c281c15 from V8's upstream (Julien Gilli) #3031
  • [55a1f94e44] - dns: remove nonexistant exports.ADNAME (Roman Reiss) #3051
  • [6ee5d0f69f] - dns: add missing exports.BADNAME (Roman Reiss) #3051
  • [75d5dcea76] - doc: jenkins-iojs.nodesource.com -> ci.nodejs.org (Michał Gołębiowski) #2886
  • [5c3f50b21d] - doc: rearrange execSync and execFileSync (Laurent Fortin) #2940
  • [4fc33ac11a] - doc: make execFileSync in line with execFile (Laurent Fortin) #2940
  • [a366e84b17] - doc: fix typos in cluster & errors (reggi) #3011
  • [52031e1bf1] - doc: switch LICENSE from closure-linter to eslint (P.S.V.R) #3018
  • [b28f6a53bc] - docs: Clarify assert.doesNotThrow behavior (Fabio Oliveira) #2807
  • [ac2bce0b0c] - path: improve posixSplitPath performance (Evan Lucas) #3034
  • [4fc89939f5] - smalloc: remove module (Brendan Ashworth) #3099
  • [5ec5d0aa8b] - src: internalize binding function property names (Ben Noordhuis) #3060
  • [c8175fc2af] - src: internalize per-isolate string properties (Ben Noordhuis) #3060
  • [9a593abc47] - src: include signal.h in util.h (Cheng Zhao) #3058
  • [fde0c6f321] - src: fix function and variable names in comments (Sakthipriyan Vairamani) #3039
  • [1e964bb8e9] - test: change calls to deprecated util.print() (Rich Trott) #3083
  • [b97358a772] - test: replace deprecated util.debug() calls (Rich Trott) #3082

rvagg and others added 30 commits August 31, 2015 21:05
PR-URL: nodejs#2591
Reviewed-By: Sakthipriyan Vairamani <[email protected]>
nodejs#2541 fixed flakiness
in test-process-argv-0.js. However, it was not removed
from the list of flaky tests. This removes it from the
list of flaky tests.

PR-URL: nodejs#2613
Reviewed-By: cjihrig - Colin Ihrig <[email protected]>
PR-URL: nodejs#2438
Reviewed-By: cjihrig - Colin Ihrig <[email protected]>
PR-URL: nodejs#2625
Reviewed-By: orangemocha - Alexis Campailla <[email protected]>
Reviewed-By: joaocgreis - João Reis <[email protected]>
now need to specify "nodejs" or "iojs", also remove .gpg file

PR-URL: nodejs#2623
Reviewed-By: jbergstroem - Johan Bergström <[email protected]>
to match nodejs.org directory name

PR-URL: nodejs#2623
Reviewed-By: jbergstroem - Johan Bergström <[email protected]>
new server has "nodejs" and "iojs" directories, upload to the
appropriate one

PR-URL: nodejs#2623
Reviewed-By: jbergstroem - Johan Bergström <[email protected]>
PR-URL: nodejs#2623
Reviewed-By: jbergstroem - Johan Bergström <[email protected]>
String concatenation in the assert messages has drastic impact on test
runtime. Removal of these messages is unlikely to affect debugging if
any breaking changes are made.

Previous time to run:

    $ time ./iojs test/parallel/test-stringbytes-external.js

    real    0m2.321s
    user    0m2.256s
    sys     0m0.092s

With fix:

    $ time ./iojs test/parallel/test-stringbytes-external.js

    real    0m0.518s
    user    0m0.508s
    sys     0m0.008s

PR-URL: nodejs#2544
Reviewed-By: trevnorris - Trevor Norris <[email protected]>
Reviewed-By: thefourtheye - Sakthipriyan Vairamani <[email protected]>
Both pointer arguments to memcmp are defined as non-null
and compiler optimizes upon that.

PR-URL: nodejs#2544
Reviewed-By: trevnorris - Trevor Norris <[email protected]>
Reviewed-By: thefourtheye - Sakthipriyan Vairamani <[email protected]>
PR-URL: nodejs#2310
Reviewed-By: bnoordhuis - Ben Noordhuis <[email protected]>
Reviewed-By: cjihrig - Colin Ihrig <[email protected]>
PR-URL: nodejs#2645
Reviewed-By: thefourtheye - Sakthipriyan Vairamani <[email protected]>
ParseArgs sets the first element of v8_args to argv[0], so v8_argc will
always be at least 1. This change only calls
V8::SetFlagsFromCommandLine if v8_argc > 1, leading to an additional
startup improvement of ~5%.

PR-URL: nodejs#2646
Reviewed-By: trevnorris - Trevor Norris <[email protected]>
Before this change, _unrefActive would keep the unrefList sorted when
adding a new timer.

Because _unrefActive is called extremely frequently, this linear scan
(O(n) at worse) would make _unrefActive show high in the list of
contributors when profiling CPU usage.

This commit changes _unrefActive so that it doesn't try to keep the
unrefList sorted. The insertion thus happens in constant time.

However, when a timer expires, unrefTimeout has to go through the whole
unrefList because it's not ordered anymore.

It is usually not large enough to have a significant impact on
performance because:
- Most of the time, the timers will be removed before unrefTimeout is
  called because their users (sockets mainly) cancel them when an I/O
  operation takes place.
- If they're not, it means that some I/O took a long time to happen, and
  the initiator of subsequents I/O operations that would add more timers
  has to wait for them to complete.

With this change, _unrefActive does not show as a significant
contributor in CPU profiling reports anymore.

Fixes: nodejs/node-v0.x-archive#8160

Signed-off-by: Timothy J Fontaine <[email protected]>

Conflicts:
	lib/timers.js

Fixes: nodejs/node-convergence-archive#23
Ref: nodejs#268
PR-URL: nodejs#2540
Reviewed-By: bnoordhuis - Ben Noordhuis <[email protected]>
Commit 934bfe2 had introduced a
regression where node would crash trying to access a null unref timer if
a given unref timer's callback would remove other unref timers set to
fire in the future.

More generally, it makes the unrefTimeout function more solid by not
mutating the unrefList while traversing it.

Fixes: nodejs/node-v0.x-archive#8897

Conflicts:
	lib/timers.js

Fixes: nodejs/node-convergence-archive#23
Ref: nodejs#268
PR-URL: nodejs#2540
Reviewed-By: bnoordhuis - Ben Noordhuis <[email protected]>
This commit addresses most of the review comments in
nodejs#2540, which are kept in this
separate commit so as to better preserve the prior two patches as they
landed in 0.12.

This commit:
- Fixes a bug with unrefActive timers and disposed domains.
- Fixes a bug with unrolling an unrefActive timer from another.
- Adds a test for both above bugs.
- Improves check logic, making it stricter, simpler, or both.
- Optimizes nicer with a smaller, separate function for the try/catch.

Fixes: nodejs/node-convergence-archive#23
Ref: nodejs#268
PR-URL: nodejs#2540
Reviewed-By: bnoordhuis - Ben Noordhuis <[email protected]>
Notable changes:

* build: Add a --link-module option to configure that can be used to
  bundle additional JavaScript modules into a built binary
  (Bradley Meck) nodejs#2497
* docs: Merge outstanding doc updates from joyent/node
  (James M Snell) nodejs#2378
* http_parser: Significant performance improvement by having
  http.Server consume all initial data from its net.Socket and parsing
  directly without having to enter JavaScript. Any 'data' listeners on
  the net.Socket will result in the data being "unconsumed" into
  JavaScript, thereby undoing any performance gains.
  (Fedor Indutny) nodejs#2355
* libuv: Upgrade to 1.7.3 (from 1.6.1), see
  https://github.com/libuv/libuv/blob/v1.x/ChangeLog for details
  (Saúl Ibarra Corretgé) nodejs#2310
* V8: Upgrade to 4.4.63.30 (from 4.4.63.26) (Michaël Zasso) nodejs#2482

cherry-picked from v3.x @ 1a6e52d

PR-URL: nodejs#2653
Reviewed-By: cjihrig - Colin Ihrig <[email protected]>
Note: chunk in test-heap.cc:1989 discarded as related code missing
from current version in node.

Original commit message:

  Use static_cast<> for NULL (clang 3.7)

  The following errors come up when compiling v8
   with clang 3.7 on FreeBSD/amd64:

  src/runtime/runtime-i18n.cc:629:37: error: reinterpret_cast from
  'nullptr_t' to 'v8::internal::Smi *' is not allowed
    local_object->SetInternalField(1, reinterpret_cast<Smi*>(NULL));
                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~

  test/cctest/test-heap.cc:131:20: error: reinterpret_cast from
        'nullptr_t' to 'v8::internal::Object *' is not allowed
    Handle<Object> n(reinterpret_cast<Object*>(NULL), isolate);
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  test/cctest/test-heap.cc:1989:18: error: reinterpret_cast from
        'nullptr_t' to 'Address' (aka 'unsigned char *') is not
        allowed
    Address base = reinterpret_cast<Address>(NULL);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  +add myself to the AUTHORS file.

  BUG=

  Review URL: https://codereview.chromium.org/1277353002

  Cr-Commit-Position: refs/heads/master@{nodejs#30103}

PR-URL: nodejs#2636
Reviewed-By: thefourtheye - Sakthipriyan Vairamani <[email protected]>
Reviewed-By: bnoordhuis - Ben Noordhuis <[email protected]>
This test is already being investigated, but until a solution is found
it should be marked flaky.

Ref: nodejs#2319
Ref: nodejs#2356

PR-URL: nodejs#2659
Reviewed-By: orangemocha - Alexis Campailla <[email protected]>
Ref: nodejs#2660

PR-URL: nodejs#2662
Reviewed-By: orangemocha - Alexis Campailla <[email protected]>
v8 will silently return an empty handle
which doesn't delete our data if string length is
above String::kMaxLength

Fixes: nodejs#1374
PR-URL: nodejs#2402
Reviewed-By: trevnorris - Trevor Norris <[email protected]>
Reviewed-By: indutny - Fedor Indutny <[email protected]>
Reviewed-By: bnoordhuis - Ben Noordhuis <[email protected]>

Amended by @rvagg to change author date from
  "1970-08-16 16:09:02 +0200"
to
  "2015-08-16 16:09:02 +0200"
as per discussion @ nodejs#2713
Add an optional callback parameter to `ChildProcess.prototype.send()`
that is invoked when the message has been sent.

Juggle the control channel's reference count so that in-flight messages
keep the event loop (and therefore the process) alive until they have
been sent.

`ChildProcess.prototype.send()` and `process.send()` used to operate
synchronously but became asynchronous in commit libuv/libuv@393c1c5
("unix: set non-block mode in uv_{pipe,tcp,udp}_open"), which landed
in io.js in commit 07bd05b ("deps: update libuv to 1.2.1").

Fixes: nodejs#760
PR-URL: nodejs#2620
Reviewed-By: trevnorris - Trevor Norris <[email protected]>
Reviewed-By: jasnell - James M Snell <[email protected]>
This test has failed recently during a PR test in Jenkins, for
reasons seemingly not related to the change in the PR.

PR-URL: nodejs#2648
Reviewed-By: evanlucas - Evan Lucas <[email protected]>
Fixes: nodejs#1972
PR-URL: nodejs#2322
Reviewed-By: orangemocha - Alexis Campailla <[email protected]>
Reviewed-By: thefourtheye - Sakthipriyan Vairamani <[email protected]>
Fixes: nodejs#2113
Ref: 17a379e
PR-URL: nodejs#2605
Reviewed-By: jasnell - James M Snell <[email protected]>
Reviewed-By: cjihrig - Colin Ihrig <[email protected]>
Reviewed-By: mscdex - Brian White <[email protected]>
This retains the key elements of test-child-process-fork-getconnections
(forks a child process, sends a bunch of sockets, uses getConnections()
to enumerate them) but contains some code to work around an apparent
intermittent bug that occurs on OS X where a socket seems to close
itself unexpectedly.

nodejs#2610 was opened for the bug that
was causing the problem in the first place.

PR-URL: nodejs#2609
Fixes: nodejs#1100
Reviewed-By: jbergstroem - Johan Bergström <[email protected]>
Reviewed-By: Brendan Ashworth <[email protected]>
Port of joyent/node commits:

 * nodejs/node-v0.x-archive@e17c5a7
 * nodejs/node-v0.x-archive@70dafa7

Pull over test-child-process-spawn-typeerror.js from v0.12, replacing
the existing test in master. The new test includes a broader set of
tests on the various arg choices and throws.

Reviewed-By: trevnorris - Trevor Norris <[email protected]>
Reviewed-By: cjihrig - Colin Ihrig <[email protected]>
Reviewed-By: thefourtheye - Sakthipriyan Vairamani
PR-URL: nodejs#2667
Fixes: nodejs#2515
PR-URL: nodejs#2376
Reviewed-By: Fedor Indutny <[email protected]>
Reviewed-By: Ben Noordhuis <[email protected]>
Now parts of our public and public-ish APIs fall back to old-style
listenerCount() if the emitter does not have a listenerCount function.

Fixes: nodejs#2655
Refs: 8f58fb9

PR-URL: nodejs#2661
Reviewed-By: Sakthipriyan Vairamani <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Upgrade to the latest branch-head for V8 4.5. For the full commit log see
https://github.com/v8/v8-git-mirror/commits/4.5.103.24

PR-URL: nodejs#2509
Reviewed-By: Ben Noordhuis <[email protected]>
thefourtheye and others added 27 commits September 23, 2015 08:39
The `events` module already exports `EventEmitter` constructor function
So, we don't have to use `events.EventEmitter` to access it.

Refer: nodejs#2896

PR-URL: nodejs#2921
Reviewed-By: Roman Reiss <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
Notable changes

* buffer: Fixed a bug introduced in v4.1.0 where allocating a new
  zero-length buffer can result in the next allocation of a TypedArray
  in JavaScript not being zero-filled. In certain circumstances this
  could result in data leakage via reuse of memory space in
  TypedArrays, breaking the normally safe assumption that TypedArrays
  should be always zero-filled. (Trevor Norris) nodejs#2931.
* http: Guard against response-splitting of HTTP trailing headers
  added via response.addTrailers() by removing new-line ([\r\n])
  characters from values. Note that standard header values are already
  stripped of new-line characters. The expected security impact is low
  because trailing headers are rarely used. (Ben Noordhuis) nodejs#2945.
* npm: Upgrade to npm 2.14.4 from 2.14.3, see release notes for full
  details (Kat Marchán) nodejs#2958
  - Upgrades graceful-fs on multiple dependencies to no longer rely on
    monkey-patching fs
  - Fix npm link for pre-release / RC builds of Node
* v8: Update post-mortem metadata to allow post-mortem debugging tools
  to find and inspect:
  - JavaScript objects that use dictionary properties
    (Julien Gilli) nodejs#2959
  - ScopeInfo and thus closures (Julien Gilli) nodejs#2974
Ref: nodejs#1539
PR-URL: nodejs#3018
Reviewed-By: Roman Reiss <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: Yosuke Furukawa <[email protected]>
PR-URL: nodejs#3011
Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: Roman Reiss <[email protected]>
PR-URL: nodejs#3016
Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: Roman Reiss <[email protected]>
PR-URL: nodejs#2940
Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: Roman Reiss <[email protected]>
Changed the ordering so it is in line with the async methods.

PR-URL: nodejs#2940
Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: Roman Reiss <[email protected]>
PR-URL: nodejs#3015
Reviewed-By: Rod Vagg <[email protected]>
Reviewed-By: Sakthipriyan Vairamani <[email protected]>
Reviewed-By: Roman Reiss <[email protected]>
The documentation for assert.doesNotThrow now reflects all the inputs
the function accepts, as well as the errors thrown for each combination
of parameter types.

PR-URL: nodejs#2807
Reviewed-By: Rich Trott <[email protected]>
The Jenkins URL has changed from https://jenkins-iojs.nodesource.com
to https://ci.nodejs.org. The former address now redirects to the
latter. Some jobs has also changed names.

PR-URL: nodejs#2886
Reviewed-By: Rod Vagg <[email protected]>
Reviewed-By: Evan Lucas <[email protected]>
Reviewed-By: Roman Reiss <[email protected]>
Backport c281c15d6dab8370a7805f0717502d260e0ad433 from V8's upstream to
allow post-mortem debugging tools to inspect Buffer instances' length.

Original commit message:

  Add JSTypedArray's length in post-mortem metadata.

  BUG=
  [email protected]

  Review URL: https://codereview.chromium.org/1363683002

  Cr-Commit-Position: refs/heads/master@{nodejs#30873}

PR: nodejs#3031
PR-URL: nodejs#3031
Reviewed-By: Trevor Norris <[email protected]>
The .bin/ directory in deps/npm/node_modules seens to have been an
accidental check-in in commit e79ccee ("npm: upgrade to v2.1.18").
It causes trouble for distro packagers so delete it and blacklist it.

Fixes: nodejs#2839
PR-URL: nodejs#3004
Reviewed-By: Kat Marchán <[email protected]>
Reviewed-By: Rod Vagg <[email protected]>
Reviewed-By: Sakthipriyan Vairamani <[email protected]>
`HandleWrap::OnClose` destroys the underlying C++ object and null's the
internal field pointer to it. Therefore there should be no references to
the wrapping JavaScript object.

`null` the process' `_channel` field right after closing it, to ensure
no crashes will happen.

Fix: nodejs#2847
PR-URL: nodejs#3041
Reviewed-By: Trevor Norris <[email protected]>
issue nodejs#2987 makes the point that crypto.pbkdf2 should not fail silently
and accept invalid but numeric values like NaN and Infinity. We already
check if the keylen is lower than 0, so extending that to NaN and
Infinity should make sense.

Fixes: nodejs#2987

PR-URL: nodejs#3029
Reviewed-By: Ben Noordhuis <[email protected]>
Reviewed-By: Brian White <[email protected]>
Reviewed-By: Fedor Indutny <[email protected]>
Reviewed-By: Sakthipriyan Vairamani <[email protected]>
The `src/node.js` file is actually loaded and executed by
`node::LoadEnvironment` function.

The variable which has the contents is, `native_node`.

PR-URL: nodejs#3039
Reviewed-By: Ben Noordhuis <[email protected]>
It is required for using the "SIGABRT" constant.

It doesn't cause compilation errors in Node because most files already
have "signal.h" included, but it causes errors for third party embedder.

PR-URL: nodejs#3058
Reviewed-By: Ben Noordhuis <[email protected]>
Reviewed-By: Fedor Indutny <[email protected]>
Reviewed-By: Rod Vagg <[email protected]>
Reviewed-By: Sakthipriyan Vairamani <[email protected]>
Reviewed-By: Trevor Norris <[email protected]>
Instead of slicing the first element off of the matches, shift and then
return. This improves performance of the following path functions:

- basename: 18-20%
- extname: 60-70%
- dirname: 18-20%
- parse: 20-25%

PR-URL: nodejs#3034
Reviewed-By: Brian White <[email protected]>
Reviewed-By: Sakthipriyan Vairamani <[email protected]>
Speeds up property lookups a little and it creates the string in the
old space straight away.  It's a little easier on the garbage collector
because it doesn't have to track eternalized strings in the new space.

PR-URL: nodejs#3060
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Trevor Norris <[email protected]>
Internalized strings are created in the old space and that is where they
eventually would end up anyway when created as normal strings.

PR-URL: nodejs#3060
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Trevor Norris <[email protected]>
Adds the documented but missing DNS error exports.BADNAME. This export
has been there before but got lost in a 2012 commit that added more
error codes. nodejs#3076 will remove the
wrong error code exports.ADNAME.

PR-URL: nodejs#3051
Fixes: nodejs#3050
Reviewed-By: Сковорода Никита Андреевич <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: Evan Lucas <[email protected]>
This error code export was mistakingly introduced in a 2012 commit which
added more error codes. The correct export.BADNAME was added in
nodejs#3051.

Semver: Major
PR-URL: nodejs#3051
Fixes: nodejs#3050
Reviewed-By: Сковорода Никита Андреевич <[email protected]>
Reviewed-By: Sakthipriyan Vairamani <[email protected]>
common.debug() is just util.debug() and emits a deprecation notice. Per
docs, use console.error() instead.

PR-URL: nodejs#3082
Reviewed-By: Michaël Zasso <[email protected]>
common.print() is just util.print() and as such prints a deprecation
warning. Per docs, update to console.log().

PR-URL: nodejs#3083
Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: Brendan Ashworth <[email protected]>
Bye bye, smalloc. I'm not sure why this was still here; it was removed
in 70d1f32 and hasn't worked since. It wasn't packaged in the
binary, either.

Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: Sakthipriyan Vairamani <[email protected]>
Reviewed-By: Сковорода Никита Андреевич <[email protected]>
Reviewed-By: Ben Noordhuis <[email protected]>
PR-URL: nodejs#3099
Very minor update in benchmark/common.js
Not exactly a critical change, just continued cleaning
out of old joyent/node PRs that never landed.

Ref: nodejs/node-v0.x-archive#8515
PR-URL: nodejs#2399
Reviewed-By: Sakthipriyan Vairamani <[email protected]>
Reviewed-By: Brendan Ashworth <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
@rvagg
Copy link
Member Author

rvagg commented Sep 30, 2015

gack! against master! let's try that again

@rvagg rvagg closed this Sep 30, 2015
@rvagg rvagg deleted the v4.1.2-proposal branch October 5, 2015 21:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.