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

http: add new functions to OutgoingMessage #10805

Merged
merged 1 commit into from Feb 20, 2017

Conversation

@mscdex
Contributor

mscdex commented Jan 14, 2017

This PR adds various functions to allow more (official/public) access to the current headers for an outgoing HTTP message. It allows users to avoid having to access the private ._headers property directly to get the same information.

/cc @nodejs/http

CI: https://ci.nodejs.org/job/node-test-pull-request/5975/

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)
  • http
Show outdated Hide outdated doc/api/http.md
Show outdated Hide outdated doc/api/http.md
Show outdated Hide outdated lib/_http_outgoing.js
@mcollina

Given that this is a new API, why do we want to support the same pattern? I think that the properties can just be arrays.

For backward compatibility, we might consider adding a _headers accessor that does the same we are doing here.

Show outdated Hide outdated lib/_http_outgoing.js
Show outdated Hide outdated lib/_http_outgoing.js
@mscdex

This comment has been minimized.

Show comment
Hide comment
@mscdex

mscdex Jan 16, 2017

Contributor

@mcollina I'm just trying to both have a public and documented API and also make it so that in case we want to further optimize how we store headers in the future (for example, if at some point we end up switching to a Map for storing outgoing headers), we can do that without breaking anyone (while speeding up core).

Contributor

mscdex commented Jan 16, 2017

@mcollina I'm just trying to both have a public and documented API and also make it so that in case we want to further optimize how we store headers in the future (for example, if at some point we end up switching to a Map for storing outgoing headers), we can do that without breaking anyone (while speeding up core).

@mcollina

This comment has been minimized.

Show comment
Hide comment
@mcollina

mcollina Jan 16, 2017

Member

@mscdex sorry, I might not have expressed myself correctly. I mean, why this new API should have the exact same output of the previous _headers. It seems the best way to store headers is to store them in an array. Then, let have getHeaders() return an object with arrays. It would be easier to process both in core and remove a lot of ifs on the application side.

If we need something that has the same API of _headers, we can just add the accessor and a deprecation warning.

Member

mcollina commented Jan 16, 2017

@mscdex sorry, I might not have expressed myself correctly. I mean, why this new API should have the exact same output of the previous _headers. It seems the best way to store headers is to store them in an array. Then, let have getHeaders() return an object with arrays. It would be easier to process both in core and remove a lot of ifs on the application side.

If we need something that has the same API of _headers, we can just add the accessor and a deprecation warning.

@mscdex

This comment has been minimized.

Show comment
Hide comment
@mscdex

mscdex Jan 16, 2017

Contributor

@mcollina Currently this getHeaders() returns the format used prior to #10558 for an easier (like "find and replace" easy) transition from a private to public API. Also, the naming more closely matches the other APIs we have (setHeader(), removeHeader(), and getHeader()).

I'm not sure what you mean with your other suggestions. If we added another private property (e.g. ._headersNew) that contains the new storage method used by #10558 and made _headers a getter that prints a deprecation message, then we still wouldn't have a public API and people would probably just migrate over to the new private property -- something I'm trying to avoid.

Contributor

mscdex commented Jan 16, 2017

@mcollina Currently this getHeaders() returns the format used prior to #10558 for an easier (like "find and replace" easy) transition from a private to public API. Also, the naming more closely matches the other APIs we have (setHeader(), removeHeader(), and getHeader()).

I'm not sure what you mean with your other suggestions. If we added another private property (e.g. ._headersNew) that contains the new storage method used by #10558 and made _headers a getter that prints a deprecation message, then we still wouldn't have a public API and people would probably just migrate over to the new private property -- something I'm trying to avoid.

@mcollina

This comment has been minimized.

Show comment
Hide comment
@mcollina

mcollina Jan 16, 2017

Member

@mcollina Currently this getHeaders() returns the format used prior to #10558 for an easier (like "find and replace" easy) transition from a private to public API. Also, the naming more closely matches the other APIs we have (setHeader(), removeHeader(), and getHeader()).

That find-and-replace will yield a suboptimal performance, because essentially we will have to generate the "old" data structure for every access to getHeaders(). Find-and-replace still requires manual work, which might be costly and require many library updates, excluding the fact that module authors would have to take into account multiple Node.js versions. Essentially, we are forced to have _headers anyway for the time being.

I'm not sure what you mean with your other suggestions. If we added another private property (e.g. ._headersNew) that contains the new storage method used by #10558 and made _headers a getter that prints a deprecation message, then we still wouldn't have a public API and people would probably just migrate over to the new private property -- something I'm trying to avoid.

I propose to have _headers return the "old" strings-and-array object with an accessor, and have getHeaders() return the new object with just arrays. That will solve all our problems, providing a fast access to the new data structure, and a "slow" access to the legacy one.

Member

mcollina commented Jan 16, 2017

@mcollina Currently this getHeaders() returns the format used prior to #10558 for an easier (like "find and replace" easy) transition from a private to public API. Also, the naming more closely matches the other APIs we have (setHeader(), removeHeader(), and getHeader()).

That find-and-replace will yield a suboptimal performance, because essentially we will have to generate the "old" data structure for every access to getHeaders(). Find-and-replace still requires manual work, which might be costly and require many library updates, excluding the fact that module authors would have to take into account multiple Node.js versions. Essentially, we are forced to have _headers anyway for the time being.

I'm not sure what you mean with your other suggestions. If we added another private property (e.g. ._headersNew) that contains the new storage method used by #10558 and made _headers a getter that prints a deprecation message, then we still wouldn't have a public API and people would probably just migrate over to the new private property -- something I'm trying to avoid.

I propose to have _headers return the "old" strings-and-array object with an accessor, and have getHeaders() return the new object with just arrays. That will solve all our problems, providing a fast access to the new data structure, and a "slow" access to the legacy one.

@mscdex

This comment has been minimized.

Show comment
Hide comment
@mscdex

mscdex Jan 16, 2017

Contributor

@mcollina What do you mean by "strings-and-array object?" When you say "old" are you referring to before or after #10558? Also, could you perhaps share some code that demonstrates what you're proposing? I think that might clear up my confusion...

Contributor

mscdex commented Jan 16, 2017

@mcollina What do you mean by "strings-and-array object?" When you say "old" are you referring to before or after #10558? Also, could you perhaps share some code that demonstrates what you're proposing? I think that might clear up my confusion...

@mcollina

This comment has been minimized.

Show comment
Hide comment
@mcollina

mcollina Jan 16, 2017

Member

@mscdex I mean, pre-10558 vs post-10558. There is no need for this block of code in the new API:

https://github.com/nodejs/node/pull/10805/files#diff-286202fdbdd74ede6f5f5334b6176b5cR441

Ideally, we should avoid that loop in all the cases if someone uses the latest APIs. Because it is a new API, there is no need for be backward-compatible and we can design it in the best way.

I think the new API should just be a 1-1 map of what we have internally, and have the old _headers pre-10558 returns the "old" data format with an accessor.

Another alternative I might see performing better is to have getHeaders(), just return the array of the keys, so it can be iterated easily and we can use getHeader() to fetch the value. getHeader() has been there since v0.4.
In this way we push the for loop on the user code, avoiding things like:

// getHeaders does a full iteration
var headers = res.getHeaders()
var keys = Object.keys(headers)
// we do a second full iteration here
for (var i = 0; i < keys.length; i++) {
  // do something with the header
} 

to something like

var headers = res.getHeaders()
// we just iterate once
for (var i  = 0; i < headers.length; i++) {
  // do something with the header
}

Yes, it requires more work for things like the fresh module, but it would lead to an implementation that is overall more performant than the previous one.

Member

mcollina commented Jan 16, 2017

@mscdex I mean, pre-10558 vs post-10558. There is no need for this block of code in the new API:

https://github.com/nodejs/node/pull/10805/files#diff-286202fdbdd74ede6f5f5334b6176b5cR441

Ideally, we should avoid that loop in all the cases if someone uses the latest APIs. Because it is a new API, there is no need for be backward-compatible and we can design it in the best way.

I think the new API should just be a 1-1 map of what we have internally, and have the old _headers pre-10558 returns the "old" data format with an accessor.

Another alternative I might see performing better is to have getHeaders(), just return the array of the keys, so it can be iterated easily and we can use getHeader() to fetch the value. getHeader() has been there since v0.4.
In this way we push the for loop on the user code, avoiding things like:

// getHeaders does a full iteration
var headers = res.getHeaders()
var keys = Object.keys(headers)
// we do a second full iteration here
for (var i = 0; i < keys.length; i++) {
  // do something with the header
} 

to something like

var headers = res.getHeaders()
// we just iterate once
for (var i  = 0; i < headers.length; i++) {
  // do something with the header
}

Yes, it requires more work for things like the fresh module, but it would lead to an implementation that is overall more performant than the previous one.

@mscdex

This comment has been minimized.

Show comment
Hide comment
@mscdex

mscdex Jan 16, 2017

Contributor

@mcollina Well, for the latter suggestion, that's already possible with this PR as-is: you just call getHeaders(true) (or perhaps getHeaderNames(), which has been suggested).

As far as using the format we now have, I don't think it's worth sending to the user because they're not typically going to be interested in the original casing of each header (they just want the name and value). Besides, we'd still want to clone the headers object (and any headers that have array values) in one way or another to avoid users mutating the values for headers outside of core, so we'd still need to loop over the object to be able to do that.

Contributor

mscdex commented Jan 16, 2017

@mcollina Well, for the latter suggestion, that's already possible with this PR as-is: you just call getHeaders(true) (or perhaps getHeaderNames(), which has been suggested).

As far as using the format we now have, I don't think it's worth sending to the user because they're not typically going to be interested in the original casing of each header (they just want the name and value). Besides, we'd still want to clone the headers object (and any headers that have array values) in one way or another to avoid users mutating the values for headers outside of core, so we'd still need to loop over the object to be able to do that.

@jasnell

Would prefer there to be two methods, one for the headers object, another for the names. Also, it needs to be clarified that the values in the object will be either String or Arrays of Strings.

Show outdated Hide outdated doc/api/http.md
Show outdated Hide outdated doc/api/http.md
@mscdex

This comment has been minimized.

Show comment
Hide comment
@mscdex

mscdex Jan 16, 2017

Contributor

@thefourtheye @jasnell Alright, I've split the function up into getHeaderNames() and getHeaders() now.

Contributor

mscdex commented Jan 16, 2017

@thefourtheye @jasnell Alright, I've split the function up into getHeaderNames() and getHeaders() now.

@thefourtheye

This comment has been minimized.

Show comment
Hide comment
@thefourtheye

thefourtheye Jan 16, 2017

Contributor

@mscdex Did you forget to push the commit? I don't see getHeaderNames changes yet.

Contributor

thefourtheye commented Jan 16, 2017

@mscdex Did you forget to push the commit? I don't see getHeaderNames changes yet.

@mscdex

This comment has been minimized.

Show comment
Hide comment
@mscdex

mscdex Jan 16, 2017

Contributor

@thefourtheye Force pushed again.

Contributor

mscdex commented Jan 16, 2017

@thefourtheye Force pushed again.

Show outdated Hide outdated doc/api/http.md
Show outdated Hide outdated doc/api/http.md
@jasnell

This looks good. Posted a few additional comments

Show outdated Hide outdated doc/api/http.md
var headers = response.getHeaders();
// headers === { foo: 'bar', 'set-cookie': ['foo=bar', 'bar=baz'] }
```

This comment has been minimized.

@jasnell

jasnell Jan 16, 2017

Member

Out of curiosity: did you investigate the possibility of having a variation on this that returns an iterator instead? Not sure if that would perform better or worse than a copy if we allowed it to do a live iteration. Obviously it depends entirely on how we expect users to make use of this.

Also, a response.hasHeader(name) that returns boolean might be worthwhile for the cases someone wishes to simply check that a header exists.

@jasnell

jasnell Jan 16, 2017

Member

Out of curiosity: did you investigate the possibility of having a variation on this that returns an iterator instead? Not sure if that would perform better or worse than a copy if we allowed it to do a live iteration. Obviously it depends entirely on how we expect users to make use of this.

Also, a response.hasHeader(name) that returns boolean might be worthwhile for the cases someone wishes to simply check that a header exists.

This comment has been minimized.

@mscdex

mscdex Jan 16, 2017

Contributor

I thought about the iterator, but I'm not sure if the performance is up to par with existing solutions.

@mscdex

mscdex Jan 16, 2017

Contributor

I thought about the iterator, but I'm not sure if the performance is up to par with existing solutions.

This comment has been minimized.

@jasnell

jasnell Jan 16, 2017

Member

I'll experiment with it a bit and see what I get

@jasnell

jasnell Jan 16, 2017

Member

I'll experiment with it a bit and see what I get

This comment has been minimized.

@mscdex

mscdex Jan 16, 2017

Contributor

Added hasHeader().

@mscdex

mscdex Jan 16, 2017

Contributor

Added hasHeader().

Show outdated Hide outdated lib/_http_outgoing.js
@jasnell

LGTM with green CI

['x-test-header', 'x-test-header2',
'set-cookie', 'x-test-array-header']);
assert.strictEqual(res.hasHeader('x-test-header2'), true);

This comment has been minimized.

@jasnell

jasnell Jan 16, 2017

Member

nit: being pedantic here but it would be good to expand the test to include mixed case header name (to ensure the toLowerCase) and passing non-string inputs to test the error checking.

@jasnell

jasnell Jan 16, 2017

Member

nit: being pedantic here but it would be good to expand the test to include mixed case header name (to ensure the toLowerCase) and passing non-string inputs to test the error checking.

This comment has been minimized.

@mscdex

mscdex Jan 16, 2017

Contributor

Added.

@mscdex

mscdex Jan 16, 2017

Contributor

Added.

* Returns: {Array}
Returns an array containing the unique names of the current outgoing headers.

This comment has been minimized.

@thefourtheye

thefourtheye Feb 12, 2017

Contributor

Do we really need unique here?

@thefourtheye

thefourtheye Feb 12, 2017

Contributor

Do we really need unique here?

This comment has been minimized.

@sam-github

sam-github Feb 12, 2017

Member

Yes, because header names can be repeated in the outoing headers, which could cause duplicate values in this Array, but it doesn't, the Array can be relied on to be unique.

@sam-github

sam-github Feb 12, 2017

Member

Yes, because header names can be repeated in the outoing headers, which could cause duplicate values in this Array, but it doesn't, the Array can be relied on to be unique.

This comment has been minimized.

@thefourtheye

thefourtheye Feb 14, 2017

Contributor

Thanks @sam-github :-)

@thefourtheye

thefourtheye Feb 14, 2017

Contributor

Thanks @sam-github :-)

@sam-github

Looks great, thanks @mscdex

@mscdex

This comment has been minimized.

Show comment
Hide comment
@mscdex
Contributor

mscdex commented Feb 20, 2017

http: add new functions to OutgoingMessage
PR-URL: #10805
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Roman Reiss <me@silverwind.io>
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
Reviewed-By: Sam Roberts <vieuxtech@gmail.com>

@mscdex mscdex merged commit 3e6f103 into nodejs:master Feb 20, 2017

@mscdex mscdex deleted the mscdex:http-server-res-getheaders branch Feb 20, 2017

@italoacasas

This comment has been minimized.

Show comment
Hide comment
@italoacasas

italoacasas Feb 25, 2017

Member

@mscdex not landing in v7.x-staging at the moment because a test is failing. Do you have time to backport?

Member

italoacasas commented Feb 25, 2017

@mscdex not landing in v7.x-staging at the moment because a test is failing. Do you have time to backport?

mscdex added a commit to mscdex/io.js that referenced this pull request Feb 26, 2017

http: add new functions to OutgoingMessage
PR-URL: nodejs#10805
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Roman Reiss <me@silverwind.io>
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
Reviewed-By: Sam Roberts <vieuxtech@gmail.com>

@mscdex mscdex referenced this pull request Feb 26, 2017

Closed

backport: 10805 #11562

4 of 4 tasks complete
@mscdex

This comment has been minimized.

Show comment
Hide comment
@mscdex
Contributor

mscdex commented Feb 26, 2017

@mscdex mscdex referenced this pull request Feb 26, 2017

Merged

7.7.0 Proposal #11553

italoacasas added a commit to italoacasas/node that referenced this pull request Feb 28, 2017

http: add new functions to OutgoingMessage
PR-URL: nodejs#11562
Backport-of: nodejs#10805
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Roman Reiss <me@silverwind.io>
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
Reviewed-By: Sam Roberts <vieuxtech@gmail.com>

@gibfahn gibfahn referenced this pull request Mar 17, 2017

Closed

Potential Semver Minor Backports #188

28 of 31 tasks complete

@jasnell jasnell referenced this pull request Apr 4, 2017

Closed

8.0.0 Release Proposal #12220

@MylesBorins

This comment has been minimized.

Show comment
Hide comment
@MylesBorins

MylesBorins May 16, 2017

Member

@mscdex would you be able to backport to v6.x? I know if it last minute, but you would need to do it early this week to get it in the next v6.x minor. We will definitely be doing another minor before v6.x goes into maintenance mode, so we can definitely get this in later if you are not rushed

Member

MylesBorins commented May 16, 2017

@mscdex would you be able to backport to v6.x? I know if it last minute, but you would need to do it early this week to get it in the next v6.x minor. We will definitely be doing another minor before v6.x goes into maintenance mode, so we can definitely get this in later if you are not rushed

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).

@Trott Trott referenced this pull request Jun 23, 2017

Closed

test: favor deepStrictEqual over deepEqual #12883

2 of 2 tasks complete
@MylesBorins

This comment has been minimized.

Show comment
Hide comment
@MylesBorins

MylesBorins Sep 19, 2017

Member

@mscdex would you be willing to backport?

Member

MylesBorins commented Sep 19, 2017

@mscdex would you be willing to backport?

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