stream: add destroy and _destroy methods. #12925

Closed
wants to merge 1 commit into
from

Conversation

@mcollina
Member

mcollina commented May 9, 2017

Adds destroy() and _destroy() methods to Readable, Writable, Duplex
and Transform. It also standardize the behavior and the implementation
of destroy(), which has been incosistent in userland.
This PR also updates all subsystems of core to use the new destroy().

Fixes: nodejs/readable-stream#124

Checklist
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • tests and/or benchmarks are included
  • documentation is changed or added
  • commit message follows commit guidelines
Affected core subsystem(s)

stream, net, fs, process

@mcollina

This comment has been minimized.

Show comment
Hide comment
Member

mcollina commented May 9, 2017

@mcollina

This comment has been minimized.

Show comment
Hide comment
@mcollina

mcollina May 9, 2017

Member

This change might be semver-major, because now we are always emitting the error passed to destroy asynchronously, but stdio did so synchronously: https://github.com/nodejs/node/pull/12925/files#diff-5224cdaa6225b9d4e1e7bd73a2ea284f.
However, that might be also seen as a bug of the previous implementation, as all the other parts of core emitted those asynchronously.

I'm currently tagging this semver-minor, but feel free to bump to semver-major if you think it's the case.

Member

mcollina commented May 9, 2017

This change might be semver-major, because now we are always emitting the error passed to destroy asynchronously, but stdio did so synchronously: https://github.com/nodejs/node/pull/12925/files#diff-5224cdaa6225b9d4e1e7bd73a2ea284f.
However, that might be also seen as a bug of the previous implementation, as all the other parts of core emitted those asynchronously.

I'm currently tagging this semver-minor, but feel free to bump to semver-major if you think it's the case.

@cjihrig

This comment has been minimized.

Show comment
Hide comment
@cjihrig

cjihrig May 9, 2017

Contributor

This has a conflict in doc/api/stream.md. We'll definitely want a CITGM run on this too.

Contributor

cjihrig commented May 9, 2017

This has a conflict in doc/api/stream.md. We'll definitely want a CITGM run on this too.

@thefourtheye

This comment has been minimized.

Show comment
Hide comment
@thefourtheye

thefourtheye May 9, 2017

Contributor

This already has a merge conflict 😮

Contributor

thefourtheye commented May 9, 2017

This already has a merge conflict 😮

doc/api/stream.md
@@ -499,6 +499,13 @@ write('hello', () => {
A Writable stream in object mode will always ignore the `encoding` argument.
+##### writable.destroy([error])
+
+destroy the stream, and emit the passed error. after this call, the

This comment has been minimized.

@thefourtheye

thefourtheye May 9, 2017

Contributor

Initcap please.

@thefourtheye

thefourtheye May 9, 2017

Contributor

Initcap please.

@cjihrig

Did a first pass of review.

doc/api/stream.md
@@ -499,6 +499,13 @@ write('hello', () => {
A Writable stream in object mode will always ignore the `encoding` argument.
+##### writable.destroy([error])
+
+destroy the stream, and emit the passed error. after this call, the

This comment has been minimized.

@cjihrig

cjihrig May 9, 2017

Contributor

destroy -> Destroy. after -> After

@cjihrig

cjihrig May 9, 2017

Contributor

destroy -> Destroy. after -> After

doc/api/stream.md
+
+destroy the stream, and emit the passed error. after this call, the
+writible stream has ended.
+implementors should not override this method, but implement to

This comment has been minimized.

@cjihrig

cjihrig May 9, 2017

Contributor

implementors -> Implementors

@cjihrig

cjihrig May 9, 2017

Contributor

implementors -> Implementors

This comment has been minimized.

@cjihrig

cjihrig May 9, 2017

Contributor

Maybe say "but instead implement writable._destroy"

@cjihrig

cjihrig May 9, 2017

Contributor

Maybe say "but instead implement writable._destroy"

doc/api/stream.md
@@ -1073,6 +1080,13 @@ myReader.on('readable', () => {
});
```
+##### readable.destroy([error])
+
+Destroy the stream, and emit the passed error. After this call, the

This comment has been minimized.

@cjihrig

cjihrig May 9, 2017

Contributor

Instead of "emit the passed error" maybe just say "emit error"

@cjihrig

cjihrig May 9, 2017

Contributor

Instead of "emit the passed error" maybe just say "emit error"

doc/api/stream.md
+##### readable.destroy([error])
+
+Destroy the stream, and emit the passed error. After this call, the
+readable stream would release any internal resources.

This comment has been minimized.

@cjihrig

cjihrig May 9, 2017

Contributor

would -> will

@cjihrig

cjihrig May 9, 2017

Contributor

would -> will

doc/api/stream.md
+
+Destroy the stream, and emit the passed error. After this call, the
+readable stream would release any internal resources.
+implementors should not override this method, but implement to

This comment has been minimized.

@cjihrig

cjihrig May 9, 2017

Contributor

Capitalize implementors.

@cjihrig

cjihrig May 9, 2017

Contributor

Capitalize implementors.

This comment has been minimized.

@jasnell

jasnell May 9, 2017

Member

s/implement to/implement

@jasnell

jasnell May 9, 2017

Member

s/implement to/implement

doc/api/stream.md
+#### writable.\_destroy(err, callback)
+
+* `err` {Error} An error.
+* `callback` {Function} A callback function (optionally with an error

This comment has been minimized.

@cjihrig

cjihrig May 9, 2017

Contributor

A callback function that takes an optional error argument which is invoked when the writable is destroyed.

@cjihrig

cjihrig May 9, 2017

Contributor

A callback function that takes an optional error argument which is invoked when the writable is destroyed.

lib/_stream_readable.js
@@ -132,9 +135,25 @@ function Readable(options) {
if (options && typeof options.read === 'function')
this._read = options.read;
+ if (options && typeof options.destroy === 'function')

This comment has been minimized.

@cjihrig

cjihrig May 9, 2017

Contributor

Can options be typeof options === 'object'. I believe by this point we know that it isn't null.

@cjihrig

cjihrig May 9, 2017

Contributor

Can options be typeof options === 'object'. I believe by this point we know that it isn't null.

This comment has been minimized.

@calvinmetcalf

calvinmetcalf May 10, 2017

Member

we do the same thing 3 lines earlier so so consistency wise it's probably fine.

@calvinmetcalf

calvinmetcalf May 10, 2017

Member

we do the same thing 3 lines earlier so so consistency wise it's probably fine.

test/parallel/test-process-external-stdio-close-spawn.js
+ process.disconnect();
+ }));
+} else {
+ // '--inspect', '--inspect-brk',

This comment has been minimized.

@cjihrig

cjihrig May 9, 2017

Contributor

This can be removed.

@cjihrig

cjihrig May 9, 2017

Contributor

This can be removed.

test/parallel/test-process-external-stdio-close-spawn.js
+ }));
+} else {
+ // '--inspect', '--inspect-brk',
+ const child = cp.spawn(process.execPath, [ __filename, 'child'], {

This comment has been minimized.

@cjihrig

cjihrig May 9, 2017

Contributor

Unnecessary space before __filename

@cjihrig

cjihrig May 9, 2017

Contributor

Unnecessary space before __filename

test/parallel/test-stream-duplex-destroy.js
+ read() {}
+ });
+
+ duplex._destroy = function(err, cb) {

This comment has been minimized.

@cjihrig

cjihrig May 9, 2017

Contributor

Might be worth wrapping the right hand side in common.mustCall() throughout if you know exactly how many times it will be called.

@cjihrig

cjihrig May 9, 2017

Contributor

Might be worth wrapping the right hand side in common.mustCall() throughout if you know exactly how many times it will be called.

@mcollina mcollina referenced this pull request in nodejs/readable-stream May 10, 2017

Open

destroy/pump #283

@@ -194,6 +194,14 @@ Transform.prototype._read = function(n) {
};
+Transform.prototype._destroy = function(err, cb) {
+ Duplex.prototype._destroy.call(this, err, (err2) => {

This comment has been minimized.

@calvinmetcalf

calvinmetcalf May 10, 2017

Member

can we just use super._destroy here ?

@calvinmetcalf

calvinmetcalf May 10, 2017

Member

can we just use super._destroy here ?

This comment has been minimized.

@mcollina

mcollina May 10, 2017

Member

we are not inheriting with class, so no super.

@mcollina

mcollina May 10, 2017

Member

we are not inheriting with class, so no super.

This comment has been minimized.

@calvinmetcalf

calvinmetcalf May 10, 2017

Member

I don't think that matters

edit: according to mdn it doesn't.

@calvinmetcalf

calvinmetcalf May 10, 2017

Member

I don't think that matters

edit: according to mdn it doesn't.

This comment has been minimized.

@mcollina

mcollina May 10, 2017

Member

@calvinmetcalf it doesn't work. super is defined only for object literals.

@mcollina

mcollina May 10, 2017

Member

@calvinmetcalf it doesn't work. super is defined only for object literals.

This comment has been minimized.

@calvinmetcalf

calvinmetcalf May 10, 2017

Member

right only for object shorthand syntax my bad.

@calvinmetcalf

calvinmetcalf May 10, 2017

Member

right only for object shorthand syntax my bad.

@mcollina

This comment has been minimized.

Show comment
Hide comment
@mcollina

mcollina May 10, 2017

Member

@cjihrig please have a look.

Member

mcollina commented May 10, 2017

@cjihrig please have a look.

@mcollina

This comment has been minimized.

Show comment
Hide comment
@mcollina

mcollina May 10, 2017

Member

@MylesBorins can you look at those citgm failures from master? There seems to be quite a bit of breakage even on the one on master, and I have trouble reading out if I broke something here.
Also, there were a bit of npm failures as well.

Member

mcollina commented May 10, 2017

@MylesBorins can you look at those citgm failures from master? There seems to be quite a bit of breakage even on the one on master, and I have trouble reading out if I broke something here.
Also, there were a bit of npm failures as well.

@gibfahn

This comment has been minimized.

Show comment
Hide comment
@gibfahn

gibfahn May 10, 2017

Member

For CitGM, winston and watchify failures are expected, see #12220 (comment)

Member

gibfahn commented May 10, 2017

For CitGM, winston and watchify failures are expected, see #12220 (comment)

@mcollina

This comment has been minimized.

Show comment
Hide comment
@mcollina

mcollina May 11, 2017

Member

So, we are breaking a bit the ecosystem for this, here are duplexify tests:

$ READABLE_STREAM=disable ../node/node test.js
TAP version 13
# passthrough
ok 1 should finish
ok 2 same in as out
# passthrough + double end
ok 3 should finish
ok 4 same in as out
# async passthrough + end
ok 5 should finish
ok 6 same in as out
# duplex
ok 7 onwrite should match
ok 8 onwrite should match
ok 9 onwrite should match
ok 10 should finish
ok 11 ondata should match
ok 12 ondata should match
ok 13 ondata should match
ok 14 should end
# async
ok 15 same in as out
# destroy
ok 16 write destroyed
ok 17 close emitted
ok 18 write destroyed
not ok 19 plan != count
  ---
    operator: fail
    expected: 2
    actual:   3
    at: Transform.write.destroy (/Users/matteo/Repositories/duplexify/test.js:126:7)
  ...
ok 20 close emitted
# destroy both
ok 21 read destroyed
ok 22 write destroyed
ok 23 close emitted
ok 24 read destroyed
not ok 25 plan != count
  ---
    operator: fail
    expected: 3
    actual:   4
    at: Transform.read.destroy (/Users/matteo/Repositories/duplexify/test.js:149:7)
  ...
ok 26 write destroyed
ok 27 close emitted
# bubble read errors
ok 28 received read error
ok 29 close emitted
not ok 30 received read error
  ---
    operator: deepEqual
    expected: 'read-error'
    actual:   'write-error'
    at: Duplexify.<anonymous> (/Users/matteo/Repositories/duplexify/test.js:168:7)
  ...
not ok 31 plan != count
  ---
    operator: fail
    expected: 2
    actual:   3
    at: Duplexify.<anonymous> (/Users/matteo/Repositories/duplexify/test.js:168:7)
  ...
ok 32 close emitted
# bubble write errors
ok 33 received write error
ok 34 close emitted
not ok 35 received write error
  ---
    operator: deepEqual
    expected: 'write-error'
    actual:   'read-error'
    at: Duplexify.<anonymous> (/Users/matteo/Repositories/duplexify/test.js:186:7)
  ...
not ok 36 plan != count
  ---
    operator: fail
    expected: 2
    actual:   3
    at: Duplexify.<anonymous> (/Users/matteo/Repositories/duplexify/test.js:186:7)
  ...
ok 37 close emitted
# reset writable / readable
ok 38 should be equivalent
ok 39 should be equivalent
ok 40 should be equivalent
# cork
ok 41 (unnamed assert)
# prefinish not twice
ok 42 only prefinish once
# close
ok 43 should forward close
ok 44 should forward close
not ok 45 .end() called twice
  ---
    operator: fail
    at: Duplexify.<anonymous> (/Users/matteo/Repositories/duplexify/test.js:268:7)
  ...
# works with node native streams (net)
ok 46 should be equivalent

1..46
# tests 46
# pass  39
# fail  7
Member

mcollina commented May 11, 2017

So, we are breaking a bit the ecosystem for this, here are duplexify tests:

$ READABLE_STREAM=disable ../node/node test.js
TAP version 13
# passthrough
ok 1 should finish
ok 2 same in as out
# passthrough + double end
ok 3 should finish
ok 4 same in as out
# async passthrough + end
ok 5 should finish
ok 6 same in as out
# duplex
ok 7 onwrite should match
ok 8 onwrite should match
ok 9 onwrite should match
ok 10 should finish
ok 11 ondata should match
ok 12 ondata should match
ok 13 ondata should match
ok 14 should end
# async
ok 15 same in as out
# destroy
ok 16 write destroyed
ok 17 close emitted
ok 18 write destroyed
not ok 19 plan != count
  ---
    operator: fail
    expected: 2
    actual:   3
    at: Transform.write.destroy (/Users/matteo/Repositories/duplexify/test.js:126:7)
  ...
ok 20 close emitted
# destroy both
ok 21 read destroyed
ok 22 write destroyed
ok 23 close emitted
ok 24 read destroyed
not ok 25 plan != count
  ---
    operator: fail
    expected: 3
    actual:   4
    at: Transform.read.destroy (/Users/matteo/Repositories/duplexify/test.js:149:7)
  ...
ok 26 write destroyed
ok 27 close emitted
# bubble read errors
ok 28 received read error
ok 29 close emitted
not ok 30 received read error
  ---
    operator: deepEqual
    expected: 'read-error'
    actual:   'write-error'
    at: Duplexify.<anonymous> (/Users/matteo/Repositories/duplexify/test.js:168:7)
  ...
not ok 31 plan != count
  ---
    operator: fail
    expected: 2
    actual:   3
    at: Duplexify.<anonymous> (/Users/matteo/Repositories/duplexify/test.js:168:7)
  ...
ok 32 close emitted
# bubble write errors
ok 33 received write error
ok 34 close emitted
not ok 35 received write error
  ---
    operator: deepEqual
    expected: 'write-error'
    actual:   'read-error'
    at: Duplexify.<anonymous> (/Users/matteo/Repositories/duplexify/test.js:186:7)
  ...
not ok 36 plan != count
  ---
    operator: fail
    expected: 2
    actual:   3
    at: Duplexify.<anonymous> (/Users/matteo/Repositories/duplexify/test.js:186:7)
  ...
ok 37 close emitted
# reset writable / readable
ok 38 should be equivalent
ok 39 should be equivalent
ok 40 should be equivalent
# cork
ok 41 (unnamed assert)
# prefinish not twice
ok 42 only prefinish once
# close
ok 43 should forward close
ok 44 should forward close
not ok 45 .end() called twice
  ---
    operator: fail
    at: Duplexify.<anonymous> (/Users/matteo/Repositories/duplexify/test.js:268:7)
  ...
# works with node native streams (net)
ok 46 should be equivalent

1..46
# tests 46
# pass  39
# fail  7
@calvinmetcalf

This comment has been minimized.

Show comment
Hide comment
@calvinmetcalf

calvinmetcalf May 11, 2017

Member

what exactly is the issue with destory? subtly different mechanics ?

Member

calvinmetcalf commented May 11, 2017

what exactly is the issue with destory? subtly different mechanics ?

@mcollina

This comment has been minimized.

Show comment
Hide comment
@mcollina

mcollina May 11, 2017

Member

what exactly is the issue with destory? subtly different mechanics ?

@calvinmetcalf me breaking things. destroyed  has no setter, and it's used in the ecosystem.
I should have fixed that, let's see.

CITGM (disabling readable-stream): https://ci.nodejs.org/view/Node.js-citgm/job/citgm-smoker/774/
CI: https://ci.nodejs.org/job/node-test-pull-request/8016/

Member

mcollina commented May 11, 2017

what exactly is the issue with destory? subtly different mechanics ?

@calvinmetcalf me breaking things. destroyed  has no setter, and it's used in the ecosystem.
I should have fixed that, let's see.

CITGM (disabling readable-stream): https://ci.nodejs.org/view/Node.js-citgm/job/citgm-smoker/774/
CI: https://ci.nodejs.org/job/node-test-pull-request/8016/

@mcollina mcollina referenced this pull request in nodejs/CTC May 13, 2017

Closed

Enforce citgm for major changes #126

@mcollina

This comment has been minimized.

Show comment
Hide comment
Member

mcollina commented May 15, 2017

doc/api/stream.md
@@ -499,6 +499,16 @@ write('hello', () => {
A Writable stream in object mode will always ignore the `encoding` argument.
+##### writable.destroy([error])
+<!-- YAML
+added: TBD

This comment has been minimized.

@jasnell

jasnell May 15, 2017

Member

s/TBD/REPLACEME

@jasnell

jasnell May 15, 2017

Member

s/TBD/REPLACEME

doc/api/stream.md
@@ -1073,6 +1083,16 @@ myReader.on('readable', () => {
});
```
+##### readable.destroy([error])
+<!-- YAML
+added: TBD

This comment has been minimized.

@jasnell

jasnell May 15, 2017

Member

s/TBD/REPLACEME

@jasnell

jasnell May 15, 2017

Member

s/TBD/REPLACEME

This comment has been minimized.

@jasnell

jasnell May 15, 2017

Member

(I'll stop pointing these out.. :-) ...)

@jasnell

jasnell May 15, 2017

Member

(I'll stop pointing these out.. :-) ...)

lib/_stream_duplex.js
@@ -76,3 +76,37 @@ function onend() {
function onEndNT(self) {
self.end();
}
+
+Object.defineProperty(Duplex.prototype, 'destroyed', {
+ get: function() {

This comment has been minimized.

@jasnell

jasnell May 15, 2017

Member

nit: simply to just get() { ... }

@jasnell

jasnell May 15, 2017

Member

nit: simply to just get() { ... }

lib/_stream_duplex.js
+
+ if (err) {
+ this.emit('error', err);
+ }

This comment has been minimized.

@jasnell

jasnell May 15, 2017

Member

should this return after emitting the error?

@jasnell

jasnell May 15, 2017

Member

should this return after emitting the error?

This comment has been minimized.

@mcollina

mcollina May 16, 2017

Member

In fact this piece is just wrong. We need to call the callback with the error here. The net effect is that 'err' will be emitted in the next tick.

@mcollina

mcollina May 16, 2017

Member

In fact this piece is just wrong. We need to call the callback with the error here. The net effect is that 'err' will be emitted in the next tick.

lib/_stream_readable.js
+});
+
+Readable.prototype.destroy = require('internal/streams/destroy').destroy;
+Readable.prototype._undestroy = require('internal/streams/destroy').undestroy;

This comment has been minimized.

@jasnell

jasnell May 15, 2017

Member

require once..?

@jasnell

jasnell May 15, 2017

Member

require once..?

lib/_stream_writable.js
+});
+
+Writable.prototype.destroy = require('internal/streams/destroy').destroy;
+Writable.prototype._undestroy = require('internal/streams/destroy').undestroy;

This comment has been minimized.

@jasnell

jasnell May 15, 2017

Member

require once?

@jasnell

jasnell May 15, 2017

Member

require once?

test/parallel/test-process-external-stdio-close-spawn.js
+if (process.argv[2] === 'child') {
+ process.on('message', common.mustCall((msg) => {
+ assert.strictEqual(msg, 'go');
+ console.log('logging should not cause a crash');

This comment has been minimized.

@jasnell

jasnell May 15, 2017

Member

nit: would prefer to eliminate the extraneous console.log output

@jasnell

jasnell May 15, 2017

Member

nit: would prefer to eliminate the extraneous console.log output

This comment has been minimized.

@mscdex

mscdex May 15, 2017

Contributor

I agree.

@mscdex

mscdex May 15, 2017

Contributor

I agree.

This comment has been minimized.

@mcollina

mcollina May 16, 2017

Member

the console.log message is what will cause the test to fail in case of a regression. It is the central part of the test. This is the approach in the test from which this was inspired test/parallel/test-process-external-stdio-close.js by @addaleax.

@mcollina

mcollina May 16, 2017

Member

the console.log message is what will cause the test to fail in case of a regression. It is the central part of the test. This is the approach in the test from which this was inspired test/parallel/test-process-external-stdio-close.js by @addaleax.

This comment has been minimized.

@cjihrig

cjihrig May 17, 2017

Contributor

Can you add a comment stating that the console.log() is part of the test.

@cjihrig

cjihrig May 17, 2017

Contributor

Can you add a comment stating that the console.log() is part of the test.

@jasnell

Few nits

@mscdex

This comment has been minimized.

Show comment
Hide comment
@mscdex

mscdex May 15, 2017

Contributor

There are some typos in the commit message FWIW.

Contributor

mscdex commented May 15, 2017

There are some typos in the commit message FWIW.

@mcollina

This comment has been minimized.

Show comment
Hide comment
@mcollina

mcollina May 16, 2017

Member

Can someone from @nodejs/citgm confirm those failures are all expected?

Member

mcollina commented May 16, 2017

Can someone from @nodejs/citgm confirm those failures are all expected?

@mscdex

This comment has been minimized.

Show comment
Hide comment
@mscdex

mscdex May 16, 2017

Contributor

s/incosistent/inconsistent/ in the commit message.

Contributor

mscdex commented May 16, 2017

s/incosistent/inconsistent/ in the commit message.

test/parallel/test-stream-duplex-destroy.js
+ duplex.on('end', common.mustCall());
+ duplex.on('finish', common.mustCall());
+ assert.strictEqual(duplex.destroyed, true);
+ assert.strictEqual(duplex.destroyed, true);

This comment has been minimized.

@toboid

toboid May 16, 2017

Contributor

These 2 assertions are identical

@toboid

toboid May 16, 2017

Contributor

These 2 assertions are identical

test/parallel/test-stream-duplex-destroy.js
+ duplex.on('end', common.mustNotCall('no end event'));
+ duplex.on('finish', common.mustNotCall('no finish event'));
+
+ // error is swalled by the custom _destroy

This comment has been minimized.

@toboid

toboid May 16, 2017

Contributor

Little typo here - swalled instead of swallowed

@toboid

toboid May 16, 2017

Contributor

Little typo here - swalled instead of swallowed

@mcollina

This comment has been minimized.

Show comment
Hide comment
@mcollina

mcollina May 17, 2017

Member

@toboid @mscdex @jasnell @cjihrig things should be ok now.

Member

mcollina commented May 17, 2017

@toboid @mscdex @jasnell @cjihrig things should be ok now.

test/parallel/test-stream-writable-destroy.js
+ write._destroy = common.mustCall(function(err, cb) {
+ assert.strictEqual(err, null);
+ cb(expected);
+ }, 1);

This comment has been minimized.

@cjihrig

cjihrig May 17, 2017

Contributor

The 1 isn't really necessary here and in other places. common.mustCall() defaults to 1.

@cjihrig

cjihrig May 17, 2017

Contributor

The 1 isn't really necessary here and in other places. common.mustCall() defaults to 1.

test/parallel/test-process-external-stdio-close-spawn.js
+if (process.argv[2] === 'child') {
+ process.on('message', common.mustCall((msg) => {
+ assert.strictEqual(msg, 'go');
+ console.log('logging should not cause a crash');

This comment has been minimized.

@cjihrig

cjihrig May 17, 2017

Contributor

Can you add a comment stating that the console.log() is part of the test.

@cjihrig

cjihrig May 17, 2017

Contributor

Can you add a comment stating that the console.log() is part of the test.

doc/api/stream.md
+
+Destroy the stream, and emit the passed error. After this call, the
+writible stream has ended.
+Implementors should not override this method, but instead implement

This comment has been minimized.

@cjihrig

cjihrig May 17, 2017

Contributor

The previous line seems short. Could some of this line be moved up?

@cjihrig

cjihrig May 17, 2017

Contributor

The previous line seems short. Could some of this line be moved up?

@jasnell

This comment has been minimized.

Show comment
Hide comment
@jasnell

jasnell May 19, 2017

Member

@mcollina ... I'm going to be refreshing the 8.x branch on Monday or Tuesday and will be doing another RC build on Tuesday. We're just over a week from the release. Even as a semver-major, I want to get this into 8.0.0 so let's definitely get it landed before I do the next RC.

Member

jasnell commented May 19, 2017

@mcollina ... I'm going to be refreshing the 8.x branch on Monday or Tuesday and will be doing another RC build on Tuesday. We're just over a week from the release. Even as a semver-major, I want to get this into 8.0.0 so let's definitely get it landed before I do the next RC.

@refack

This comment has been minimized.

Show comment
Hide comment
Member

refack commented May 20, 2017

@mcollina #13092 landed.

@mcollina

This comment has been minimized.

Show comment
Hide comment
@mcollina

mcollina May 20, 2017

Member

This can be landed as CITGM is good (same failures as on master). I'll land on Monday morning CEST.

Member

mcollina commented May 20, 2017

This can be landed as CITGM is good (same failures as on master). I'll land on Monday morning CEST.

stream: add destroy and _destroy methods.
Adds destroy() and _destroy() methods to Readable, Writable, Duplex
and Transform. It also standardizes the behavior and the implementation
of destroy(), which has been inconsistent in userland and core.
This PR also updates all the subsystems of core to use the new
destroy().
@mcollina

This comment has been minimized.

Show comment
Hide comment
@mcollina

mcollina May 22, 2017

Member

Landed as 330c8d7

Member

mcollina commented May 22, 2017

Landed as 330c8d7

@mcollina mcollina closed this May 22, 2017

@mcollina mcollina deleted the mcollina:destroy branch May 22, 2017

mcollina added a commit that referenced this pull request May 22, 2017

stream: add destroy and _destroy methods.
Adds destroy() and _destroy() methods to Readable, Writable, Duplex
and Transform. It also standardizes the behavior and the implementation
of destroy(), which has been inconsistent in userland and core.
This PR also updates all the subsystems of core to use the new
destroy().

PR-URL: #12925
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Calvin Metcalf <calvin.metcalf@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>

@refack refack referenced this pull request May 22, 2017

Closed

stream: add final method #12828

4 of 4 tasks complete
@refack

This comment has been minimized.

Show comment
Hide comment
@refack

refack May 22, 2017

Member

Sorry I mixed up this and #12828
Intended original comment:


Probably broke ws websockets/ws#1118
/cc @lpinca

Member

refack commented May 22, 2017

Sorry I mixed up this and #12828
Intended original comment:


Probably broke ws websockets/ws#1118
/cc @lpinca

@refack refack referenced this pull request in websockets/ws May 22, 2017

Closed

CITGM fail #1118

mcollina added a commit to mcollina/node that referenced this pull request May 22, 2017

stream: fix destroy(err, cb) regression
Fixed a regression that caused the callback passed to destroy()
to not be called if the stream was already destroyed.
This caused a regression on the ws module in CITGM introduced by
nodejs#12925.

Fixes: websockets/ws#1118
@MylesBorins

This comment has been minimized.

Show comment
Hide comment
@MylesBorins

MylesBorins May 22, 2017

Member

this technically landed after the semver major cutoff @nodejs/ctc does anyone have an issue with this landing in the 8.0.0 release?

The fact that it may be breaking ws has me slightly concerned

Member

MylesBorins commented May 22, 2017

this technically landed after the semver major cutoff @nodejs/ctc does anyone have an issue with this landing in the 8.0.0 release?

The fact that it may be breaking ws has me slightly concerned

@mcollina

This comment has been minimized.

Show comment
Hide comment
@mcollina

mcollina May 22, 2017

Member

#13156 needs to land as well to fix the ws regression.

Member

mcollina commented May 22, 2017

#13156 needs to land as well to fix the ws regression.

@jasnell

This comment has been minimized.

Show comment
Hide comment
@jasnell

jasnell May 23, 2017

Member

I'm definitely +1 on this landing in 8.0.0

Member

jasnell commented May 23, 2017

I'm definitely +1 on this landing in 8.0.0

mcollina added a commit that referenced this pull request May 24, 2017

stream: fix destroy(err, cb) regression
Fixed a regression that caused the callback passed to destroy()
to not be called if the stream was already destroyed.
This caused a regression on the ws module in CITGM introduced by
#12925.

PR-URL: #13156
Fixes: websockets/ws#1118
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Calvin Metcalf <calvin.metcalf@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>

jasnell added a commit that referenced this pull request May 24, 2017

stream: add destroy and _destroy methods.
Adds destroy() and _destroy() methods to Readable, Writable, Duplex
and Transform. It also standardizes the behavior and the implementation
of destroy(), which has been inconsistent in userland and core.
This PR also updates all the subsystems of core to use the new
destroy().

PR-URL: #12925
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Calvin Metcalf <calvin.metcalf@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>

jasnell added a commit that referenced this pull request May 24, 2017

stream: fix destroy(err, cb) regression
Fixed a regression that caused the callback passed to destroy()
to not be called if the stream was already destroyed.
This caused a regression on the ws module in CITGM introduced by
#12925.

PR-URL: #13156
Fixes: websockets/ws#1118
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Calvin Metcalf <calvin.metcalf@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>

jasnell added a commit that referenced this pull request May 28, 2017

stream: add destroy and _destroy methods.
Adds destroy() and _destroy() methods to Readable, Writable, Duplex
and Transform. It also standardizes the behavior and the implementation
of destroy(), which has been inconsistent in userland and core.
This PR also updates all the subsystems of core to use the new
destroy().

PR-URL: #12925
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Calvin Metcalf <calvin.metcalf@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>

jasnell added a commit that referenced this pull request May 28, 2017

stream: fix destroy(err, cb) regression
Fixed a regression that caused the callback passed to destroy()
to not be called if the stream was already destroyed.
This caused a regression on the ws module in CITGM introduced by
#12925.

PR-URL: #13156
Fixes: websockets/ws#1118
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Calvin Metcalf <calvin.metcalf@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>

@jasnell jasnell referenced this pull request May 28, 2017

Closed

8.0.0 Release Proposal #12220

jasnell added a commit to jasnell/node that referenced this pull request May 29, 2017

2017-05-30, Version 8.0.0 (Current)
* **Async Hooks**
  * The `async_hooks` module has landed in core
    [[`4a7233c178`](nodejs@4a7233c]
    [#12892](nodejs#12892).

* **Buffer**
  * Using the `--pending-deprecation` flag will cause Node.js to emit a
    deprecation warning when using `new Buffer(num)` or `Buffer(num)`.
    [[`d2d32ea5a2`](nodejs@d2d32ea]
    [#11968](nodejs#11968).
  * `new Buffer(num)` and `Buffer(num)` will zero-fill new `Buffer` instances
    [[`7eb1b4658e`](nodejs@7eb1b46]
    [#12141](nodejs#12141).
  * Many `Buffer` methods now accept `Uint8Array` as input
    [[`beca3244e2`](nodejs@beca324]
    [#10236](nodejs#10236).

* **Child Process**
  * Argument and kill signal validations have been improved
    [[`97a77288ce`](nodejs@97a7728]
    [#12348](nodejs#12348),
    [[`d75fdd96aa`](nodejs@d75fdd9]
    [#10423](nodejs#10423).
  * Child Process methods accept `Uint8Array` as input
    [[`627ecee9ed`](nodejs@627ecee]
    [#10653](nodejs#10653).

* **Console**
  * Error events emitted when using `console` methods are now supressed.
    [[`f18e08d820`](nodejs@f18e08d]
    [#9744](nodejs#9744).

* **Dependencies**
  * The npm client has been updated to 5.0.0
    [[`3c3b36af0f`](nodejs@3c3b36a]
    [#12936](nodejs#12936).
  * V8 has been updated to 5.8 with forward ABI stability to 6.0
    [[`60d1aac8d2`](nodejs@60d1aac]
    [#12784](nodejs#12784).

* **Domains**
  * Native `Promise` instances are now `Domain` aware
    [[`84dabe8373`](nodejs@84dabe8]
    [#12489](nodejs#12489).

* **Errors**
  * We have started assigning static error codes to errors generated by Node.js.
    This has been done through multiple commits and is still a work in
    progress.

* **File System**
  * The utility class `fs.SyncWriteStream` has been deprecated
    [[`7a55e34ef4`](nodejs@7a55e34]
    [#10467](nodejs#10467).
  * The deprecated `fs.read()` string interface has been removed
    [[`3c2a9361ff`](nodejs@3c2a936]
    [#9683](nodejs#9683).

* **HTTP**
  * Improved support for userland implemented Agents
    [[`90403dd1d0`](nodejs@90403dd]
    [#11567](nodejs#11567).
  * Outgoing Cookie headers are concatenated into a single string
    [[`d3480776c7`](nodejs@d348077]
    [#11259](nodejs#11259).
  * The `httpResponse.writeHeader()` method has been deprecated
    [[`fb71ba4921`](nodejs@fb71ba4]
    [#11355](nodejs#11355).
  * New methods for accessing HTTP headers have been added to `OutgoingMessage`
    [[`3e6f1032a4`](nodejs@3e6f103]
    [#10805](nodejs#10805).

* **Lib**
  * All deprecation messages have been assigned static identifiers
    [[`5de3cf099c`](nodejs@5de3cf0]
    [#10116](nodejs#10116).
  * The legacy `linkedlist` module has been removed
    [[`84a23391f6`](nodejs@84a2339]
    [#12113](nodejs#12113).

* **N-API**
  * Experimental support for the new N-API API has been added
    [[`56e881d0b0`](nodejs@56e881d]
    [#11975](nodejs#11975).

* **Process**
  * Process warning output can be redirected to a file using the
    `--redirect-warnings` command-line argument
    [[`03e89b3ff2`](nodejs@03e89b3]
    [#10116](nodejs#10116).
  * Process warnings may now include additional detail
    [[`dd20e68b0f`](nodejs@dd20e68]
    [#12725](nodejs#12725).

* **REPL**
  * REPL magic mode has been deprecated
    [[`3f27f02da0`](nodejs@3f27f02]
    [#11599](nodejs#11599).

* **Src**
  * `NODE_MODULE_VERSION` has been updated to 57
    (nodejs@ec7cbaf]
    [#12995](nodejs#12995).
  * Add `--pending-deprecation` command-line argument and
    `NODE_PENDING_DEPRECATION` environment variable
    [[`a16b570f8c`](nodejs@a16b570]
    [#11968](nodejs#11968).
  * The `--debug` command-line argument has been deprecated. Note that
    using `--debug` will enable the *new* Inspector-based debug protocol
    as the legacy Debugger protocol previously used by Node.js has been
    removed. [[`010f864426`](nodejs@010f864]
    [#12949](nodejs#12949).
  * Throw when the `-c` and `-e` command-line arguments are used at the same
    time [[`a5f91ab230`](nodejs@a5f91ab]
    [#11689](nodejs#11689).
  * Throw when the `--use-bundled-ca` and `--use-openssl-ca` command-line
    arguments are used at the same time.
    [[`8a7db9d4b5`](nodejs@8a7db9d]
    [#12087](nodejs#12087).

* **Stream**
  * `Stream` now supports `destroy()` and `_destroy()` APIs
    [[`b6e1d22fa6`](nodejs@b6e1d22]
    [#12925](nodejs#12925).
  * `Stream` now supports the `_final()` API
    [[`07c7f198db`](nodejs@07c7f19]
    [#12828](nodejs#12828).

* **TLS**
  * The `rejectUnauthorized` option now defaults to `true`
    [[`348cc80a3c`](nodejs@348cc80]
    [#5923](nodejs#5923).
  * The `tls.createSecurePair()` API now emits a runtime deprecation
    [[`a2ae08999b`](nodejs@a2ae089]
    [#11349](nodejs#11349).
  * A runtime deprecation will now be emitted when `dhparam` is less than
    2048 bits [[`d523eb9c40`](nodejs@d523eb9]
    [#11447](nodejs#11447).

* **URL**
  * The WHATWG URL implementation is now a fully-supported Node.js API
    [[`d080ead0f9`](nodejs@d080ead]
    [#12710](nodejs#12710).

* **Util**
  * `Symbol` keys are now displayed by default when using `util.inspect()`
    [[`5bfd13b81e`](nodejs@5bfd13b]
    [#9726](nodejs#9726).
  * `toJSON` errors will be thrown when formatting `%j`
    [[`455e6f1dd8`](nodejs@455e6f1]
    [#11708](nodejs#11708).
  * Convert `inspect.styles` and `inspect.colors` to prototype-less objects
    [[`aab0d202f8`](nodejs@aab0d20]
    [#11624](nodejs#11624).
  * The new `util.promisify()` API has been added
    [[`99da8e8e02`](nodejs@99da8e8]
    [#12442](nodejs#12442).

* **Zlib**
  * Support `Uint8Array` in Zlib convenience methods
    [[`91383e47fd`](nodejs@91383e4]
    [#12001](nodejs#12001).
  * Zlib errors now use `RangeError` and `TypeError` consistently
    [[`b514bd231e`](nodejs@b514bd2]
    [#11391](nodejs#11391).

jasnell added a commit that referenced this pull request May 30, 2017

2017-05-30, Version 8.0.0 (Current)
* **Async Hooks**
  * The `async_hooks` module has landed in core
    [[`4a7233c178`](4a7233c]
    [#12892](#12892).

* **Buffer**
  * Using the `--pending-deprecation` flag will cause Node.js to emit a
    deprecation warning when using `new Buffer(num)` or `Buffer(num)`.
    [[`d2d32ea5a2`](d2d32ea]
    [#11968](#11968).
  * `new Buffer(num)` and `Buffer(num)` will zero-fill new `Buffer` instances
    [[`7eb1b4658e`](7eb1b46]
    [#12141](#12141).
  * Many `Buffer` methods now accept `Uint8Array` as input
    [[`beca3244e2`](beca324]
    [#10236](#10236).

* **Child Process**
  * Argument and kill signal validations have been improved
    [[`97a77288ce`](97a7728]
    [#12348](#12348),
    [[`d75fdd96aa`](d75fdd9]
    [#10423](#10423).
  * Child Process methods accept `Uint8Array` as input
    [[`627ecee9ed`](627ecee]
    [#10653](#10653).

* **Console**
  * Error events emitted when using `console` methods are now supressed.
    [[`f18e08d820`](f18e08d]
    [#9744](#9744).

* **Dependencies**
  * The npm client has been updated to 5.0.0
    [[`3c3b36af0f`](3c3b36a]
    [#12936](#12936).
  * V8 has been updated to 5.8 with forward ABI stability to 6.0
    [[`60d1aac8d2`](60d1aac]
    [#12784](#12784).

* **Domains**
  * Native `Promise` instances are now `Domain` aware
    [[`84dabe8373`](84dabe8]
    [#12489](#12489).

* **Errors**
  * We have started assigning static error codes to errors generated by Node.js.
    This has been done through multiple commits and is still a work in
    progress.

* **File System**
  * The utility class `fs.SyncWriteStream` has been deprecated
    [[`7a55e34ef4`](7a55e34]
    [#10467](#10467).
  * The deprecated `fs.read()` string interface has been removed
    [[`3c2a9361ff`](3c2a936]
    [#9683](#9683).

* **HTTP**
  * Improved support for userland implemented Agents
    [[`90403dd1d0`](90403dd]
    [#11567](#11567).
  * Outgoing Cookie headers are concatenated into a single string
    [[`d3480776c7`](d348077]
    [#11259](#11259).
  * The `httpResponse.writeHeader()` method has been deprecated
    [[`fb71ba4921`](fb71ba4]
    [#11355](#11355).
  * New methods for accessing HTTP headers have been added to `OutgoingMessage`
    [[`3e6f1032a4`](3e6f103]
    [#10805](#10805).

* **Lib**
  * All deprecation messages have been assigned static identifiers
    [[`5de3cf099c`](5de3cf0]
    [#10116](#10116).
  * The legacy `linkedlist` module has been removed
    [[`84a23391f6`](84a2339]
    [#12113](#12113).

* **N-API**
  * Experimental support for the new N-API API has been added
    [[`56e881d0b0`](56e881d]
    [#11975](#11975).

* **Process**
  * Process warning output can be redirected to a file using the
    `--redirect-warnings` command-line argument
    [[`03e89b3ff2`](03e89b3]
    [#10116](#10116).
  * Process warnings may now include additional detail
    [[`dd20e68b0f`](dd20e68]
    [#12725](#12725).

* **REPL**
  * REPL magic mode has been deprecated
    [[`3f27f02da0`](3f27f02]
    [#11599](#11599).

* **Src**
  * `NODE_MODULE_VERSION` has been updated to 57
    (ec7cbaf]
    [#12995](#12995).
  * Add `--pending-deprecation` command-line argument and
    `NODE_PENDING_DEPRECATION` environment variable
    [[`a16b570f8c`](a16b570]
    [#11968](#11968).
  * The `--debug` command-line argument has been deprecated. Note that
    using `--debug` will enable the *new* Inspector-based debug protocol
    as the legacy Debugger protocol previously used by Node.js has been
    removed. [[`010f864426`](010f864]
    [#12949](#12949).
  * Throw when the `-c` and `-e` command-line arguments are used at the same
    time [[`a5f91ab230`](a5f91ab]
    [#11689](#11689).
  * Throw when the `--use-bundled-ca` and `--use-openssl-ca` command-line
    arguments are used at the same time.
    [[`8a7db9d4b5`](8a7db9d]
    [#12087](#12087).

* **Stream**
  * `Stream` now supports `destroy()` and `_destroy()` APIs
    [[`b6e1d22fa6`](b6e1d22]
    [#12925](#12925).
  * `Stream` now supports the `_final()` API
    [[`07c7f198db`](07c7f19]
    [#12828](#12828).

* **TLS**
  * The `rejectUnauthorized` option now defaults to `true`
    [[`348cc80a3c`](348cc80]
    [#5923](#5923).
  * The `tls.createSecurePair()` API now emits a runtime deprecation
    [[`a2ae08999b`](a2ae089]
    [#11349](#11349).
  * A runtime deprecation will now be emitted when `dhparam` is less than
    2048 bits [[`d523eb9c40`](d523eb9]
    [#11447](#11447).

* **URL**
  * The WHATWG URL implementation is now a fully-supported Node.js API
    [[`d080ead0f9`](d080ead]
    [#12710](#12710).

* **Util**
  * `Symbol` keys are now displayed by default when using `util.inspect()`
    [[`5bfd13b81e`](5bfd13b]
    [#9726](#9726).
  * `toJSON` errors will be thrown when formatting `%j`
    [[`455e6f1dd8`](455e6f1]
    [#11708](#11708).
  * Convert `inspect.styles` and `inspect.colors` to prototype-less objects
    [[`aab0d202f8`](aab0d20]
    [#11624](#11624).
  * The new `util.promisify()` API has been added
    [[`99da8e8e02`](99da8e8]
    [#12442](#12442).

* **Zlib**
  * Support `Uint8Array` in Zlib convenience methods
    [[`91383e47fd`](91383e4]
    [#12001](#12001).
  * Zlib errors now use `RangeError` and `TypeError` consistently
    [[`b514bd231e`](b514bd2]
    [#11391](#11391).

jasnell added a commit that referenced this pull request May 30, 2017

2017-05-30, Version 8.0.0 (Current)
* **Async Hooks**
  * The `async_hooks` module has landed in core
    [[`4a7233c178`](4a7233c)]
    [#12892](#12892).

* **Buffer**
  * Using the `--pending-deprecation` flag will cause Node.js to emit a
    deprecation warning when using `new Buffer(num)` or `Buffer(num)`.
    [[`d2d32ea5a2`](d2d32ea)]
    [#11968](#11968).
  * `new Buffer(num)` and `Buffer(num)` will zero-fill new `Buffer` instances
    [[`7eb1b4658e`](7eb1b46)]
    [#12141](#12141).
  * Many `Buffer` methods now accept `Uint8Array` as input
    [[`beca3244e2`](beca324)]
    [#10236](#10236).

* **Child Process**
  * Argument and kill signal validations have been improved
    [[`97a77288ce`](97a7728)]
    [#12348](#12348),
    [[`d75fdd96aa`](d75fdd9)]
    [#10423](#10423).
  * Child Process methods accept `Uint8Array` as input
    [[`627ecee9ed`](627ecee)]
    [#10653](#10653).

* **Console**
  * Error events emitted when using `console` methods are now supressed.
    [[`f18e08d820`](f18e08d)]
    [#9744](#9744).

* **Dependencies**
  * The npm client has been updated to 5.0.0
    [[`3c3b36af0f`](3c3b36a)]
    [#12936](#12936).
  * V8 has been updated to 5.8 with forward ABI stability to 6.0
    [[`60d1aac8d2`](60d1aac)]
    [#12784](#12784).

* **Domains**
  * Native `Promise` instances are now `Domain` aware
    [[`84dabe8373`](84dabe8)]
    [#12489](#12489).

* **Errors**
  * We have started assigning static error codes to errors generated by Node.js.
    This has been done through multiple commits and is still a work in
    progress.

* **File System**
  * The utility class `fs.SyncWriteStream` has been deprecated
    [[`7a55e34ef4`](7a55e34)]
    [#10467](#10467).
  * The deprecated `fs.read()` string interface has been removed
    [[`3c2a9361ff`](3c2a936)]
    [#9683](#9683).

* **HTTP**
  * Improved support for userland implemented Agents
    [[`90403dd1d0`](90403dd)]
    [#11567](#11567).
  * Outgoing Cookie headers are concatenated into a single string
    [[`d3480776c7`](d348077)]
    [#11259](#11259).
  * The `httpResponse.writeHeader()` method has been deprecated
    [[`fb71ba4921`](fb71ba4)]
    [#11355](#11355).
  * New methods for accessing HTTP headers have been added to `OutgoingMessage`
    [[`3e6f1032a4`](3e6f103)]
    [#10805](#10805).

* **Lib**
  * All deprecation messages have been assigned static identifiers
    [[`5de3cf099c`](5de3cf0)]
    [#10116](#10116).
  * The legacy `linkedlist` module has been removed
    [[`84a23391f6`](84a2339)]
    [#12113](#12113).

* **N-API**
  * Experimental support for the new N-API API has been added
    [[`56e881d0b0`](56e881d)]
    [#11975](#11975).

* **Process**
  * Process warning output can be redirected to a file using the
    `--redirect-warnings` command-line argument
    [[`03e89b3ff2`](03e89b3)]
    [#10116](#10116).
  * Process warnings may now include additional detail
    [[`dd20e68b0f`](dd20e68)]
    [#12725](#12725).

* **REPL**
  * REPL magic mode has been deprecated
    [[`3f27f02da0`](3f27f02)]
    [#11599](#11599).

* **Src**
  * `NODE_MODULE_VERSION` has been updated to 57
    (ec7cbaf)]
    [#12995](#12995).
  * Add `--pending-deprecation` command-line argument and
    `NODE_PENDING_DEPRECATION` environment variable
    [[`a16b570f8c`](a16b570)]
    [#11968](#11968).
  * The `--debug` command-line argument has been deprecated. Note that
    using `--debug` will enable the *new* Inspector-based debug protocol
    as the legacy Debugger protocol previously used by Node.js has been
    removed. [[`010f864426`](010f864)]
    [#12949](#12949).
  * Throw when the `-c` and `-e` command-line arguments are used at the same
    time [[`a5f91ab230`](a5f91ab)]
    [#11689](#11689).
  * Throw when the `--use-bundled-ca` and `--use-openssl-ca` command-line
    arguments are used at the same time.
    [[`8a7db9d4b5`](8a7db9d)]
    [#12087](#12087).

* **Stream**
  * `Stream` now supports `destroy()` and `_destroy()` APIs
    [[`b6e1d22fa6`](b6e1d22)]
    [#12925](#12925).
  * `Stream` now supports the `_final()` API
    [[`07c7f198db`](07c7f19)]
    [#12828](#12828).

* **TLS**
  * The `rejectUnauthorized` option now defaults to `true`
    [[`348cc80a3c`](348cc80)]
    [#5923](#5923).
  * The `tls.createSecurePair()` API now emits a runtime deprecation
    [[`a2ae08999b`](a2ae089)]
    [#11349](#11349).
  * A runtime deprecation will now be emitted when `dhparam` is less than
    2048 bits [[`d523eb9c40`](d523eb9)]
    [#11447](#11447).

* **URL**
  * The WHATWG URL implementation is now a fully-supported Node.js API
    [[`d080ead0f9`](d080ead)]
    [#12710](#12710).

* **Util**
  * `Symbol` keys are now displayed by default when using `util.inspect()`
    [[`5bfd13b81e`](5bfd13b)]
    [#9726](#9726).
  * `toJSON` errors will be thrown when formatting `%j`
    [[`455e6f1dd8`](455e6f1)]
    [#11708](#11708).
  * Convert `inspect.styles` and `inspect.colors` to prototype-less objects
    [[`aab0d202f8`](aab0d20)]
    [#11624](#11624).
  * The new `util.promisify()` API has been added
    [[`99da8e8e02`](99da8e8)]
    [#12442](#12442).

* **Zlib**
  * Support `Uint8Array` in Zlib convenience methods
    [[`91383e47fd`](91383e4)]
    [#12001](#12001).
  * Zlib errors now use `RangeError` and `TypeError` consistently
    [[`b514bd231e`](b514bd2)]
    [#11391](#11391).

@Rob--W Rob--W referenced this pull request Jun 21, 2017

Closed

doc: add missing zlib link to stream API docs #13838

2 of 2 tasks complete

@mcollina mcollina referenced this pull request Aug 16, 2017

Closed

zlib: check if the stream is destroyed before push #14330

3 of 3 tasks complete

@electrachong electrachong referenced this pull request in scality/Arsenal Nov 1, 2017

Merged

fix: undefined stream.destroy call #367

gabrielschulhof added a commit to gabrielschulhof/node that referenced this pull request Mar 12, 2018

2017-05-30, Version 8.0.0 (Current)
* **Async Hooks**
  * The `async_hooks` module has landed in core
    [[`4a7233c178`](nodejs@4a7233c)]
    [#12892](nodejs#12892).

* **Buffer**
  * Using the `--pending-deprecation` flag will cause Node.js to emit a
    deprecation warning when using `new Buffer(num)` or `Buffer(num)`.
    [[`d2d32ea5a2`](nodejs@d2d32ea)]
    [#11968](nodejs#11968).
  * `new Buffer(num)` and `Buffer(num)` will zero-fill new `Buffer` instances
    [[`7eb1b4658e`](nodejs@7eb1b46)]
    [#12141](nodejs#12141).
  * Many `Buffer` methods now accept `Uint8Array` as input
    [[`beca3244e2`](nodejs@beca324)]
    [#10236](nodejs#10236).

* **Child Process**
  * Argument and kill signal validations have been improved
    [[`97a77288ce`](nodejs@97a7728)]
    [#12348](nodejs#12348),
    [[`d75fdd96aa`](nodejs@d75fdd9)]
    [#10423](nodejs#10423).
  * Child Process methods accept `Uint8Array` as input
    [[`627ecee9ed`](nodejs@627ecee)]
    [#10653](nodejs#10653).

* **Console**
  * Error events emitted when using `console` methods are now supressed.
    [[`f18e08d820`](nodejs@f18e08d)]
    [#9744](nodejs#9744).

* **Dependencies**
  * The npm client has been updated to 5.0.0
    [[`3c3b36af0f`](nodejs@3c3b36a)]
    [#12936](nodejs#12936).
  * V8 has been updated to 5.8 with forward ABI stability to 6.0
    [[`60d1aac8d2`](nodejs@60d1aac)]
    [#12784](nodejs#12784).

* **Domains**
  * Native `Promise` instances are now `Domain` aware
    [[`84dabe8373`](nodejs@84dabe8)]
    [#12489](nodejs#12489).

* **Errors**
  * We have started assigning static error codes to errors generated by Node.js.
    This has been done through multiple commits and is still a work in
    progress.

* **File System**
  * The utility class `fs.SyncWriteStream` has been deprecated
    [[`7a55e34ef4`](nodejs@7a55e34)]
    [#10467](nodejs#10467).
  * The deprecated `fs.read()` string interface has been removed
    [[`3c2a9361ff`](nodejs@3c2a936)]
    [#9683](nodejs#9683).

* **HTTP**
  * Improved support for userland implemented Agents
    [[`90403dd1d0`](nodejs@90403dd)]
    [#11567](nodejs#11567).
  * Outgoing Cookie headers are concatenated into a single string
    [[`d3480776c7`](nodejs@d348077)]
    [#11259](nodejs#11259).
  * The `httpResponse.writeHeader()` method has been deprecated
    [[`fb71ba4921`](nodejs@fb71ba4)]
    [#11355](nodejs#11355).
  * New methods for accessing HTTP headers have been added to `OutgoingMessage`
    [[`3e6f1032a4`](nodejs@3e6f103)]
    [#10805](nodejs#10805).

* **Lib**
  * All deprecation messages have been assigned static identifiers
    [[`5de3cf099c`](nodejs@5de3cf0)]
    [#10116](nodejs#10116).
  * The legacy `linkedlist` module has been removed
    [[`84a23391f6`](nodejs@84a2339)]
    [#12113](nodejs#12113).

* **N-API**
  * Experimental support for the new N-API API has been added
    [[`56e881d0b0`](nodejs@56e881d)]
    [#11975](nodejs#11975).

* **Process**
  * Process warning output can be redirected to a file using the
    `--redirect-warnings` command-line argument
    [[`03e89b3ff2`](nodejs@03e89b3)]
    [#10116](nodejs#10116).
  * Process warnings may now include additional detail
    [[`dd20e68b0f`](nodejs@dd20e68)]
    [#12725](nodejs#12725).

* **REPL**
  * REPL magic mode has been deprecated
    [[`3f27f02da0`](nodejs@3f27f02)]
    [#11599](nodejs#11599).

* **Src**
  * `NODE_MODULE_VERSION` has been updated to 57
    (nodejs@ec7cbaf)]
    [#12995](nodejs#12995).
  * Add `--pending-deprecation` command-line argument and
    `NODE_PENDING_DEPRECATION` environment variable
    [[`a16b570f8c`](nodejs@a16b570)]
    [#11968](nodejs#11968).
  * The `--debug` command-line argument has been deprecated. Note that
    using `--debug` will enable the *new* Inspector-based debug protocol
    as the legacy Debugger protocol previously used by Node.js has been
    removed. [[`010f864426`](nodejs@010f864)]
    [#12949](nodejs#12949).
  * Throw when the `-c` and `-e` command-line arguments are used at the same
    time [[`a5f91ab230`](nodejs@a5f91ab)]
    [#11689](nodejs#11689).
  * Throw when the `--use-bundled-ca` and `--use-openssl-ca` command-line
    arguments are used at the same time.
    [[`8a7db9d4b5`](nodejs@8a7db9d)]
    [#12087](nodejs#12087).

* **Stream**
  * `Stream` now supports `destroy()` and `_destroy()` APIs
    [[`b6e1d22fa6`](nodejs@b6e1d22)]
    [#12925](nodejs#12925).
  * `Stream` now supports the `_final()` API
    [[`07c7f198db`](nodejs@07c7f19)]
    [#12828](nodejs#12828).

* **TLS**
  * The `rejectUnauthorized` option now defaults to `true`
    [[`348cc80a3c`](nodejs@348cc80)]
    [#5923](nodejs#5923).
  * The `tls.createSecurePair()` API now emits a runtime deprecation
    [[`a2ae08999b`](nodejs@a2ae089)]
    [#11349](nodejs#11349).
  * A runtime deprecation will now be emitted when `dhparam` is less than
    2048 bits [[`d523eb9c40`](nodejs@d523eb9)]
    [#11447](nodejs#11447).

* **URL**
  * The WHATWG URL implementation is now a fully-supported Node.js API
    [[`d080ead0f9`](nodejs@d080ead)]
    [#12710](nodejs#12710).

* **Util**
  * `Symbol` keys are now displayed by default when using `util.inspect()`
    [[`5bfd13b81e`](nodejs@5bfd13b)]
    [#9726](nodejs#9726).
  * `toJSON` errors will be thrown when formatting `%j`
    [[`455e6f1dd8`](nodejs@455e6f1)]
    [#11708](nodejs#11708).
  * Convert `inspect.styles` and `inspect.colors` to prototype-less objects
    [[`aab0d202f8`](nodejs@aab0d20)]
    [#11624](nodejs#11624).
  * The new `util.promisify()` API has been added
    [[`99da8e8e02`](nodejs@99da8e8)]
    [#12442](nodejs#12442).

* **Zlib**
  * Support `Uint8Array` in Zlib convenience methods
    [[`91383e47fd`](nodejs@91383e4)]
    [#12001](nodejs#12001).
  * Zlib errors now use `RangeError` and `TypeError` consistently
    [[`b514bd231e`](nodejs@b514bd2)]
    [#11391](nodejs#11391).

This applies parts of 43e4efd that are
relevant to N-API.

gabrielschulhof added a commit to gabrielschulhof/node that referenced this pull request Mar 15, 2018

2017-05-30, Version 8.0.0 (Current)
* **Async Hooks**
  * The `async_hooks` module has landed in core
    [[`4a7233c178`](nodejs@4a7233c]
    [#12892](nodejs#12892).

* **Buffer**
  * Using the `--pending-deprecation` flag will cause Node.js to emit a
    deprecation warning when using `new Buffer(num)` or `Buffer(num)`.
    [[`d2d32ea5a2`](nodejs@d2d32ea]
    [#11968](nodejs#11968).
  * `new Buffer(num)` and `Buffer(num)` will zero-fill new `Buffer` instances
    [[`7eb1b4658e`](nodejs@7eb1b46]
    [#12141](nodejs#12141).
  * Many `Buffer` methods now accept `Uint8Array` as input
    [[`beca3244e2`](nodejs@beca324]
    [#10236](nodejs#10236).

* **Child Process**
  * Argument and kill signal validations have been improved
    [[`97a77288ce`](nodejs@97a7728]
    [#12348](nodejs#12348),
    [[`d75fdd96aa`](nodejs@d75fdd9]
    [#10423](nodejs#10423).
  * Child Process methods accept `Uint8Array` as input
    [[`627ecee9ed`](nodejs@627ecee]
    [#10653](nodejs#10653).

* **Console**
  * Error events emitted when using `console` methods are now supressed.
    [[`f18e08d820`](nodejs@f18e08d]
    [#9744](nodejs#9744).

* **Dependencies**
  * The npm client has been updated to 5.0.0
    [[`3c3b36af0f`](nodejs@3c3b36a]
    [#12936](nodejs#12936).
  * V8 has been updated to 5.8 with forward ABI stability to 6.0
    [[`60d1aac8d2`](nodejs@60d1aac]
    [#12784](nodejs#12784).

* **Domains**
  * Native `Promise` instances are now `Domain` aware
    [[`84dabe8373`](nodejs@84dabe8]
    [#12489](nodejs#12489).

* **Errors**
  * We have started assigning static error codes to errors generated by Node.js.
    This has been done through multiple commits and is still a work in
    progress.

* **File System**
  * The utility class `fs.SyncWriteStream` has been deprecated
    [[`7a55e34ef4`](nodejs@7a55e34]
    [#10467](nodejs#10467).
  * The deprecated `fs.read()` string interface has been removed
    [[`3c2a9361ff`](nodejs@3c2a936]
    [#9683](nodejs#9683).

* **HTTP**
  * Improved support for userland implemented Agents
    [[`90403dd1d0`](nodejs@90403dd]
    [#11567](nodejs#11567).
  * Outgoing Cookie headers are concatenated into a single string
    [[`d3480776c7`](nodejs@d348077]
    [#11259](nodejs#11259).
  * The `httpResponse.writeHeader()` method has been deprecated
    [[`fb71ba4921`](nodejs@fb71ba4]
    [#11355](nodejs#11355).
  * New methods for accessing HTTP headers have been added to `OutgoingMessage`
    [[`3e6f1032a4`](nodejs@3e6f103]
    [#10805](nodejs#10805).

* **Lib**
  * All deprecation messages have been assigned static identifiers
    [[`5de3cf099c`](nodejs@5de3cf0]
    [#10116](nodejs#10116).
  * The legacy `linkedlist` module has been removed
    [[`84a23391f6`](nodejs@84a2339]
    [#12113](nodejs#12113).

* **N-API**
  * Experimental support for the new N-API API has been added
    [[`56e881d0b0`](nodejs@56e881d]
    [#11975](nodejs#11975).

* **Process**
  * Process warning output can be redirected to a file using the
    `--redirect-warnings` command-line argument
    [[`03e89b3ff2`](nodejs@03e89b3]
    [#10116](nodejs#10116).
  * Process warnings may now include additional detail
    [[`dd20e68b0f`](nodejs@dd20e68]
    [#12725](nodejs#12725).

* **REPL**
  * REPL magic mode has been deprecated
    [[`3f27f02da0`](nodejs@3f27f02]
    [#11599](nodejs#11599).

* **Src**
  * `NODE_MODULE_VERSION` has been updated to 57
    (nodejs@ec7cbaf]
    [#12995](nodejs#12995).
  * Add `--pending-deprecation` command-line argument and
    `NODE_PENDING_DEPRECATION` environment variable
    [[`a16b570f8c`](nodejs@a16b570]
    [#11968](nodejs#11968).
  * The `--debug` command-line argument has been deprecated. Note that
    using `--debug` will enable the *new* Inspector-based debug protocol
    as the legacy Debugger protocol previously used by Node.js has been
    removed. [[`010f864426`](nodejs@010f864]
    [#12949](nodejs#12949).
  * Throw when the `-c` and `-e` command-line arguments are used at the same
    time [[`a5f91ab230`](nodejs@a5f91ab]
    [#11689](nodejs#11689).
  * Throw when the `--use-bundled-ca` and `--use-openssl-ca` command-line
    arguments are used at the same time.
    [[`8a7db9d4b5`](nodejs@8a7db9d]
    [#12087](nodejs#12087).

* **Stream**
  * `Stream` now supports `destroy()` and `_destroy()` APIs
    [[`b6e1d22fa6`](nodejs@b6e1d22]
    [#12925](nodejs#12925).
  * `Stream` now supports the `_final()` API
    [[`07c7f198db`](nodejs@07c7f19]
    [#12828](nodejs#12828).

* **TLS**
  * The `rejectUnauthorized` option now defaults to `true`
    [[`348cc80a3c`](nodejs@348cc80]
    [#5923](nodejs#5923).
  * The `tls.createSecurePair()` API now emits a runtime deprecation
    [[`a2ae08999b`](nodejs@a2ae089]
    [#11349](nodejs#11349).
  * A runtime deprecation will now be emitted when `dhparam` is less than
    2048 bits [[`d523eb9c40`](nodejs@d523eb9]
    [#11447](nodejs#11447).

* **URL**
  * The WHATWG URL implementation is now a fully-supported Node.js API
    [[`d080ead0f9`](nodejs@d080ead]
    [#12710](nodejs#12710).

* **Util**
  * `Symbol` keys are now displayed by default when using `util.inspect()`
    [[`5bfd13b81e`](nodejs@5bfd13b]
    [#9726](nodejs#9726).
  * `toJSON` errors will be thrown when formatting `%j`
    [[`455e6f1dd8`](nodejs@455e6f1]
    [#11708](nodejs#11708).
  * Convert `inspect.styles` and `inspect.colors` to prototype-less objects
    [[`aab0d202f8`](nodejs@aab0d20]
    [#11624](nodejs#11624).
  * The new `util.promisify()` API has been added
    [[`99da8e8e02`](nodejs@99da8e8]
    [#12442](nodejs#12442).

* **Zlib**
  * Support `Uint8Array` in Zlib convenience methods
    [[`91383e47fd`](nodejs@91383e4]
    [#12001](nodejs#12001).
  * Zlib errors now use `RangeError` and `TypeError` consistently
    [[`b514bd231e`](nodejs@b514bd2]
    [#11391](nodejs#11391).

This applies parts of 43e4efd that are
relevant to N-API.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment