Skip to content

Conversation

@jasnell
Copy link
Member

Node.js 8.1.0 Proposal

/cc @nodejs/release

Notable Changes

  • Async Hooks
    • When one Promise leads to the creation of a new Promise, the parent
      Promise will be identified as the trigger
      [135f4e6643]
      #13367.
  • File system
    • The fs.exists() function now works correctly with util.promisify()
      [6e0eccd7a1]
      #13316.
  • Inspector
    • It is now possible to bind to a random port using --inspect=0
      [cc6ec2fb27]
      #5025.
  • Zlib
    • A regression in the Zlib module that made it impossible to properly
      subclasses zlib.Deflate and other Zlib classes has been fixed.
      [6aeb555cc4]
      #13374.

Commits

Details

danbevand others added 30 commits June 5, 2017 12:18
Currently this test will fail with the following error message when configured --without-ssl: Error: Node.js is not compiled with openssl crypto support This commit checks for crypto and skips this tests if such support is not available. PR-URL: #13253 Reviewed-By: Rich Trott <[email protected]> Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Benjamin Gruenbaum <[email protected]> Reviewed-By: Colin Ihrig <[email protected]>
When V8 is built from its master branch, it adds a " (candidate)" suffix to the version string. Add support for that in the tests so it does not fail with Node canary. PR-URL: #13282 Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Yuta Hiroto <[email protected]> Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Myles Borins <[email protected]> Reviewed-By: Gibson Fahnestock <[email protected]> Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Michael Dawson <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Daniel Bevenius <[email protected]>
Allow binding to a randomly assigned port number with `--inspect=0` or `--inspect-brk=0`. PR-URL: #5025 Refs: #4419 Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Refael Ackermann <[email protected]> Reviewed-By: Sam Roberts <[email protected]>
BUILDING.md + L122: Missing code-language flag + L170: Strong should use `*` as a marker doc/changelogs/CHANGELOG_V6.md + L1494: Don't pad `emphasis` with inner spaces doc/guides/maintaining-V8.md + L3: Don't use multiple top level headings + L16: Don't use multiple top level headings + L40: Don't use multiple top level headings + L124: Don't use multiple top level headings + L182: Missing code-language flag + L223: Don't use multiple top level headings + L288: Don't use multiple top level headings + L307: Don't use multiple top level headings doc/guides/writing-tests.md + L322: Missing code-language flag + L329: Missing code-language flag doc/releases.md + L299: Missing code-language flag PR-URL: #13270 Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Alexey Orlenko <[email protected]> Reviewed-By: Michael Dawson <[email protected]>
Add testing for all types of typed arrays. Add testing for napi_is_arraybuffer. PR-URL: #13244 Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Jason Ginchereau <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Kunal Pathak <[email protected]> Reviewed-By: Hitesh Kanwathirtha <[email protected]>
One of the N-API weak-reference test cases already had to be made asynchronous to handle different behavior in a newer V8 version: #12864 When porting N-API to Node-ChakraCore, we found more of the test cases needed similar treatment: nodejs/node-chakracore#246 So to make thes tests more robust (and avoid having differences in the test code for Node-ChakraCore), I am refactoring the tests in this file to insert a `setImmedate()` callback before every call to `gc()` and assertions about the effects of the GC. PR-URL: #13121 Reviewed-By: Michael Dawson <[email protected]>
Use `common.mustNotCall()` in test-stream2-objects.js to confirm that noop function is never invoked. PR-URL: #13249 Reviewed-By: Refael Ackermann <[email protected]> Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Benjamin Gruenbaum <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: James M Snell <[email protected]>
On macOS, a watcher created with fs.watch() does not necessarily start receiving events immediately. So it can miss a change by fs.writefile() if it comes very soon after the watcher is created. Fix test flakiness caused by this by using `setInterval()` to repeat the write action. PR-URL: #13252Fixes: #13248 Reviewed-By: Refael Ackermann <[email protected]> Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Benjamin Gruenbaum <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Michael Dawson <[email protected]> Reviewed-By: James M Snell <[email protected]>
PR-URL: #13323 Reviewed-By: Luigi Pinca <[email protected]>
Re-enable test-http-abort-stream-end and put it into parallel category. Use system random port when calling server.listen() and fix eslint errors. After calling request.abort(), in order to avoid the buffered data to trigger the 'data' event, explicitly remove 'data' event listeners. PR-URL: #13260 Reviewed-By: Brian White <[email protected]> Reviewed-By: Matteo Collina <[email protected]>
Functions that call `ECDH::BufferToPoint` were not clearing the error stack on failure, so an invalid key could leave leftover error state and cause subsequent (unrelated) signing operations to fail. PR-URL: #13275 Reviewed-By: Fedor Indutny <[email protected]> Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: Sam Roberts <[email protected]> Reviewed-By: James M Snell <[email protected]>
Use `common.mustCall()` to make sure noop function is called as expected. PR-URL: #13259 Reviewed-By: Refael Ackermann <[email protected]> Reviewed-By: Richard Lau <[email protected]> Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: James M Snell <[email protected]>
Added option to expose engine to convenience methods Refs: #8874 PR-URL: #13089 Reviewed-By: James M Snell <[email protected]> Reviewed-By: Anna Henningsen <[email protected]>
Added bytesRead property to Zlib engines Fixes: #8874 PR-URL: #13088 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Sam Roberts <[email protected]>
* Update outputs. * Refine spaces. * Restore missing part. PR-URL: #13288 Reviewed-By: Daijiro Wachi <[email protected]> Reviewed-By: Refael Ackermann <[email protected]> Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Michael Dawson <[email protected]>
* Use common.mustNotCall() and common.mustCall() as appropriate * Use block scoping * Move assertions out of `exit` handler and into callbacks * Order assert.strictEqual() args per docs * Remove console.log() calls * Move test from `parallel` to `sequential` so `common.PORT` can be used without conflicting with OS-provided ports in other `parallel` tests PR-URL: #13273 Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Luigi Pinca <[email protected]>
* Remove useless constructor. * Use template literals. * Update code example. Now all arrays with just holes are outputted the same way. In the fixed example, it was `[ <101 empty items> ]` twice. PR-URL: #13298 Reviewed-By: Michael Dawson <[email protected]> Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: James M Snell <[email protected]>
PR-URL: #13371 Reviewed-By: Refael Ackermann <[email protected]> Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Richard Lau <[email protected]> Reviewed-By: Vse Mozhet Byt <[email protected]>
Previously, napi_wrap() would only work with objects created from a constructor returned by napi_define_class(). While the N-API team was aware of this limitation, it was not clearly documented and is likely to cause confusion anyway. It's much simpler if addons are allowed to use any JS object. Also, the specific behavior of the limitation is difficult to reimplement on other VMs that work differently from V8. V8 requires object internal fields to be declared on the object prototype (which napi_define_class() used to do). Since it's too late to modify the object prototype by the time napi_wrap() is called, napi_wrap() now inserts a new object (with the internal field) into the supplied object's prototype chain. Then it can be retrieved from there later by napi_unwrap(). This change also includes improvements to the documentation for napi_create_external(), partly to explain how it is different from napi_wrap(). PR-URL: #13250 Reviewed-By: Michael Dawson <[email protected]>
Author: Thorsten Lorenz <[email protected]> Author: Andreas Madsen <[email protected]> PR-URL: #13287 Reviewed-By: Trevor Norris <[email protected]> Reviewed-By: Anna Henningsen <[email protected]>
Fixes#13356 PR-URL: #13360 Reviewed-By: Rich Trott <[email protected]> Reviewed-By: Timothy Gu <[email protected]> Reviewed-By: Daniel Bevenius <[email protected]> Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Vse Mozhet Byt <[email protected]> Reviewed-By: Gibson Fahnestock <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Michael Dawson <[email protected]> Reviewed-By: James M Snell <[email protected]>
It takes time to build each of the addons used to test n-api. Consolidate a few of the smaller ones to save build time. PR-URL: #13317 Reviewed-By: Jason Ginchereau <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Gibson Fahnestock <[email protected]> Reviewed-By: Colin Ihrig <[email protected]>
Noticed this while reading through writing-tests.md today. As per style guide avoid the use of you, your etc. Rational as per: http://www2.ivcc.edu/rambo/tip_formal_writing_voice.htm PR-URL: #13319 Reviewed-By: Vse Mozhet Byt <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Rich Trott <[email protected]> Reviewed-By: Luigi Pinca <[email protected]>
PR-URL: #13379 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: James M Snell <[email protected]>
PR-URL: #13316 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Refael Ackermann <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Vladimir Kurchatkin <[email protected]> Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Timothy Gu <[email protected]>
PR-URL: #13313 Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Vse Mozhet Byt <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Luigi Pinca <[email protected]>
The test is flaky under load. These changes greatly improve reliability. * Use a recurring interval to determine when the test should end rather than a timer. * Increase server timeout to 500ms to allow for events being delayed by system load Changing to an interval has the added benefit of reducing the test run time from over 2 seconds to under 1 second. Fixes: #13307 PR-URL: #13312 Reviewed-By: Refael Ackermann <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Alexey Orlenko <[email protected]>
Pure refactor, makes no functional changes but the renaming helped me see more clearly what the relationship was between methods and variables. * Renamed methods to reduce number of slightly different names for the same thing ("thread" vs "io thread", etc.). * Added comments where it was useful to me. PR-URL: #13321 Reviewed-By: Eugene Ostroukhov <[email protected]> Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: James M Snell <[email protected]>
gpg 2.1 no longer includes the key-id by default which breaks the release script. This makes sure we are explicit about it. PR-URL: #13309 Reviewed-By: Gibson Fahnestock <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Colin Ihrig <[email protected]>
refackand others added 12 commits June 7, 2017 13:36
PR-URL: #13411 Refs: #13385 Refs: #13248 Refs: #13377 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: James M Snell <[email protected]>
test: changed test2 of test-vm-timeout.js so that entire error message would be matched in assert.throw. Before test 2 of test-vm-timeout.js would match any RangeError, now it looks specifically for the error message "RangeError: timeout must be a positive number" test: changed test 3 of test-vm-timeout.js so that entire error message would be matched in assert.throw. Before test 3 of test-vm-timeout.js would match any RangeError, now it looks specifically for the error message "RangeError: timeout must be a positive number" PR-URL: #13453 Refs: #13454 Reviewed-By: Refael Ackermann <[email protected]> Reviewed-By: Vse Mozhet Byt <[email protected]> Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Yuta Hiroto <[email protected]>
The libuv 1.12.0 update bumped the minimum supported version of linux + glibc. This commit updates BUILDING.md to reflect the new values. PR-URL: #13306 Reviewed-By: Santiago Gimeno <[email protected]> Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Michael Dawson <[email protected]>
PR-URL: #13306 Reviewed-By: Santiago Gimeno <[email protected]> Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Michael Dawson <[email protected]>
Makes the same changes as 9946173 to update the test runner for npm5. PR-URL: #13441 Refs: #12936 Reviewed-By: Jan Krems <[email protected]> Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Sakthipriyan Vairamani <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Refael Ackermann <[email protected]>
Allows NODE_TEST_DIR to be set (necessary to avoid path length issues with common.PIPE). PR-URL: #13390 Refs: #12708 (comment) Reviewed-By: Joyee Cheung <[email protected]> Reviewed-By: Refael Ackermann <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Rich Trott <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Michael Dawson <[email protected]>
PR-URL: #2883 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Gibson Fahnestock <[email protected]> Reviewed-By: Sam Roberts <[email protected]> Reviewed-By: Franziska Hinkelmann <[email protected]>
Introduce two overridable `Agent` methods: * `keepSocketAlive(socket)` * `reuseSocket(socket, req)` These methods can be overridden by particular `Agent` class child to make keep-alive behavior customizable. Motivation: destroy persisted sockets after some configurable timeout. It is very non-trivial to do it with available primitives. Such program will most likely need to poke with undocumented events and methods of `Agent`. With introduced API such behavior is easy to implement. PR-URL: #13005 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: Refael Ackermann <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Brian White <[email protected]> Reviewed-By: Michael Dawson <[email protected]>
* Change common.noop to common.mustNotCall() to verify callback is not invoked. * Add destructuring assignment for clarity. Yeah, clarity. That's why. PR-URL: #13443 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Gibson Fahnestock <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Michael Dawson <[email protected]>
PR-URL: #13481 Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Refael Ackermann <[email protected]> Reviewed-By: Evan Lucas <[email protected]> Reviewed-By: Brian White <[email protected]>
PR-URL: #13173Fixes: #8276 Refs: #12607 Refs: #12818 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Brian White <[email protected]>
Fixes: #12853Fixes: #854 PR-URL: #13306 Reviewed-By: Santiago Gimeno <[email protected]> Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Michael Dawson <[email protected]>
@jasnell
Copy link
MemberAuthor

New CI: https://ci.nodejs.org/job/node-test-pull-request/8544/
New CITGM: https://ci.nodejs.org/view/Node.js-citgm/job/citgm-smoker/862/

Note: this includes both the npm and libuv updates

jasnell added a commit that referenced this pull request Jun 7, 2017
@rvagg
Copy link
Member

rvagg commented Jun 7, 2017

Appologies if this was planned for today, were having an infra outage atm that will make it difficult nodejs/build#749, will update here when were through.

@jasnell
Copy link
MemberAuthor

Ugh. Ok, thank you for the heads up. I'll do the iojs+release build tomorrow! It'll be quite a bit later in the day, however, since I will be chaperoning a field trip for my kids school.

The release proposal should be just about ready to go in the 8.1.0-proposal branch if anyone would like to take it over tomorrow to get the release out earlier. The only remaining todo before actually cutting the release, tagging and promoting is to update the changelog one more time.

@jasnell
Copy link
MemberAuthor

(note, if anyone does want to pick this up tomorrow, then keep in mind that this PR is currently pointing at my personal fork... I just pushed the 8.1.0-proposal branch to the nodejs/node repo)

@rvagg
Copy link
Member

rvagg commented Jun 7, 2017

I could do it when everything gets back online so we stick with the schedule you'd prepped people with.

@jasnell
Copy link
MemberAuthor

Sounds good. I'll be up fairly late tonight so feel free to ping if any issues or questions come up. Note that the Working On 8.1.1 commit is already in so take care when tagging.

@rvagg
Copy link
Member

rvagg commented Jun 8, 2017

I'm not happy with the look of the citgm failures on ftp and yeoman-generator across multiple platforms. There's also a segfault for ffi on debian8 and a weird assertion failure for thread-sleep on aix.

Running some more variations to understand whether these are real problems or not.

@rvagg
Copy link
Member

rvagg commented Jun 8, 2017

Confirmed that the failures are consistent with 8.0.0, does anyone know if these are being followed up? They're not happy-looking failures.

Moving ahead but now shaving yaks with the ARM cluster, odd filesystem errors so I've had to restart a bunch of things.

jasnell added 2 commits June 8, 2017 19:32
* **Async Hooks** * When one `Promise` leads to the creation of a new `Promise`, the parent `Promise` will be identified as the trigger [[`135f4e6643`](135f4e6643)] [#13367](#13367). * **Dependencies** * libuv has been updated to 1.12.0 [[`968596ec77`](968596ec77)] [#13306](#13306). * npm has been updated to 5.0.3 [[`ffa7debd7a`](ffa7debd7a)] [#13487](#13487). * **File system** * The `fs.exists()` function now works correctly with `util.promisify()` [[`6e0eccd7a1`](6e0eccd7a1)] [#13316](#13316). * fs.Stats times are now also available as numbers [[`c756efb25a`](c756efb25a)] [#13173](#13173). * **Inspector** * It is now possible to bind to a random port using `--inspect=0` [[`cc6ec2fb27`](cc6ec2fb27)] [#5025](#5025). * **Zlib** * A regression in the Zlib module that made it impossible to properly subclasses `zlib.Deflate` and other Zlib classes has been fixed. [[`6aeb555cc4`](6aeb555cc4)] [#13374](#13374).
@rvagg
Copy link
Member

rvagg commented Jun 8, 2017

Done, tested, yaks shaved, built and promoted. Needed some REPLACEME fixes but commits were all good aside from that.

Still missing are:

  • AIX builds - @mhdawson will have to sort those Jenkins nodes out
  • armv6 builds - I'm having a wild time trying to get these to connect back to jenkins, it seems that after an update (server or client, I'm not sure which yet!) they won't reconnect so I have no way of building these! still working on it

These binaries will have to be promoted later, probably not for at least another 12 hours from now unfortunately.

@rvagg
Copy link
Member

rvagg commented Jun 8, 2017

armv6 successfully in progress, I've had to disconnect the aix ppc machine from release jenkins as it was causing a weird error preventing any more builds at all. When we have the aix machines all back online (they are offline for test too, hence the queue there), I'll reattach it and rebuild.

@Fishrock123
Copy link
Contributor

Release commit in d7f6919, can this be closed?

@jasnell
Copy link
MemberAuthor

Yep!

@jasnelljasnell closed this Jun 8, 2017
@rvagg
Copy link
Member

rvagg commented Jun 9, 2017

aix and armv6 binaries released and release post updated, so we're all done!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

buildIssues and PRs related to build files or the CI.docIssues and PRs related to the documentations.opensslIssues and PRs related to the OpenSSL dependency.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

20 participants

@jasnell@gyandeeps@zkat@rvagg@Fishrock123@MylesBorins@khannavidur@gibfahn@nodejs-github-bot@danbev@targos@bnoordhuis@watilde@mhdawson@jasongin@Trott@disjukr@yhwang@rfk@AlexanderOMara