Skip to content

Conversation

@jasnell
Copy link
Member

@jasnelljasnell commented Mar 21, 2017

This PR was split out of #11808 by request of the @nodejs/ctc.

This adds a new --pending-deprecation command line flag and equivalent NODE_PENDING_DEPRECATION environment variable. These are used to cause
core to emit pendingDeprecationWarnings that are off by default.

A pending deprecation warning for use of Buffer() and new Buffer() is included. The pending deprecation warning is off by default and is only emitted when the new pending deprecation
flag is used.

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)

src, buffer

@jasnelljasnell added the semver-minor PRs that contain new features and should be released in the next minor version. label Mar 21, 2017
@nodejs-github-botnodejs-github-bot added buffer Issues and PRs related to the buffer subsystem. c++ Issues and PRs that require attention from people who are familiar with C++. labels Mar 21, 2017
lib/buffer.js Outdated
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why this change?

Copy link
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a workaround to ensure that Uint8Array inherited methods work correctly. See: #11808 (review)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can more people please review this specific change for us to be on the safe side?
/cc @nodejs/buffer

Copy link
Member

@addaleaxaddaleaxMar 22, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So… what this would break, afaik, is that Buffer.prototype.constructor === Buffer no longer holds true, which is a bit odd but something we might be able to just accept. Everything else, including instanceof and buf.constructor.name, should continue to work fine.

One alternative way that was brought up, and I think I might prefer that, we should be able to set FastBuffer[Symbol.species] to FastBuffer, that should keep the Uint8Array methods working, too. (Didn’t try that out, though).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added the explicit constructor to fix a performance regression in #8754
Can we keep it or check that current V8 version doesn't have the issue?

Copy link
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@addaleax ... setting the Symbol.species on the old version of FastBuffer has no impact, unfortunately. Still playing with it tho

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jasnell Do you have that code pushed somewhere? I mean, if it does have no effect, that would be a bug, right?

Copy link
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:-) ... I was hanging the Symbol.species off the wrong thing... attaching it to Buffer[Symbol.species] appears to work. Still testing tho

@ChALkeR
Copy link
Member

ChALkeR commented Mar 22, 2017

Perhaps a testcase for NODE_PENDING_DEPRECATION env variable could be added?

@silverwind
Copy link
Contributor

Both the flag and the env variable need to be documented in node.1, --help, and in cli.md.

@jasnelljasnellforce-pushed the pending-deprecations branch from 9d38d26 to 2ce30cfCompareMarch 22, 2017 20:21
@jasnell
Copy link
MemberAuthor

@ChALkeR@silverwind ... done! I added a new test for both --pending-deprecation and NODE_PENDING_DEPRECATION, and added the documentation for both.

doc/api/cli.md Outdated
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe add a sentence with the purpose of a pending deprecation?

Copy link
Member

@TrottTrottMar 23, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Optional: Maybe also specify that it's specifically the runtime deprecation that's pending, and that stuff is frequently deprecated in the docs but with no runtime deprecation message. Or something. We differentiate between "runtime deprecation" and "docs deprecation" pretty much everywhere, so it seems like there ought to be some clarity when people are using this flag.

That said, I'm fine with this landing without that information. I know it's crunch time on this stuff right now. It can always be added in a subsequent pull request if it turns out that it's important to include.

Copy link
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated to add an explanatory note.

@jasnelljasnellforce-pushed the pending-deprecations branch from 2ce30cf to 3ec15adCompareMarch 23, 2017 00:15
lib/buffer.js Outdated
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added the explicit constructor to fix a performance regression in #8754
Can we keep it or check that current V8 version doesn't have the issue?

@jasnelljasnellforce-pushed the pending-deprecations branch from 3ec15ad to 7ca48f8CompareMarch 23, 2017 18:45
@jasnell
Copy link
MemberAuthor

jasnell commented Mar 23, 2017

@targos ...

Benchmark results for buffer-from
PR to master improvement confidence p.value buffers/buffer-from.js n=1024 len=10 source="array" -16.42 % *** 7.792262e-11 buffers/buffer-from.js n=1024 len=10 source="arraybuffer-middle" -21.38 % *** 2.168308e-06 buffers/buffer-from.js n=1024 len=10 source="arraybuffer" -22.32 % *** 2.294274e-09 buffers/buffer-from.js n=1024 len=10 source="buffer" -17.65 % *** 1.350472e-05 buffers/buffer-from.js n=1024 len=10 source="object" -12.25 % *** 1.180961e-06 buffers/buffer-from.js n=1024 len=10 source="string-base64" -7.05 % *** 2.333473e-04 buffers/buffer-from.js n=1024 len=10 source="string" -12.77 % *** 6.414072e-04 buffers/buffer-from.js n=1024 len=10 source="uint8array" -15.14 % *** 1.109671e-06 buffers/buffer-from.js n=1024 len=2048 source="array" -1.83 % 3.509761e-01 buffers/buffer-from.js n=1024 len=2048 source="arraybuffer-middle" -24.98 % *** 3.233412e-11 buffers/buffer-from.js n=1024 len=2048 source="arraybuffer" -18.99 % *** 1.380310e-07 buffers/buffer-from.js n=1024 len=2048 source="buffer" -8.26 % * 1.192811e-02 buffers/buffer-from.js n=1024 len=2048 source="object" -13.14 % *** 1.258989e-07 buffers/buffer-from.js n=1024 len=2048 source="string-base64" -2.15 % * 3.041810e-02 buffers/buffer-from.js n=1024 len=2048 source="string" -1.00 % 7.109994e-01 buffers/buffer-from.js n=1024 len=2048 source="uint8array" -6.50 % * 1.043962e-02 PR to v7-latest improvement confidence p.value buffers/buffer-from.js n=1024 len=10 source="array" 14.66 % * 4.128284e-02 buffers/buffer-from.js n=1024 len=10 source="arraybuffer-middle" -31.02 % *** 1.252807e-07 buffers/buffer-from.js n=1024 len=10 source="arraybuffer" -33.07 % *** 2.434402e-08 buffers/buffer-from.js n=1024 len=10 source="buffer" 11.13 % 7.116099e-02 buffers/buffer-from.js n=1024 len=10 source="object" 27.77 % *** 4.621124e-04 buffers/buffer-from.js n=1024 len=10 source="string-base64" -18.06 % ** 2.839069e-03 buffers/buffer-from.js n=1024 len=10 source="string" -22.87 % *** 3.704564e-05 buffers/buffer-from.js n=1024 len=10 source="uint8array" -10.61 % * 2.388147e-02 buffers/buffer-from.js n=1024 len=2048 source="array" -2.76 % 6.038384e-01 buffers/buffer-from.js n=1024 len=2048 source="arraybuffer-middle" -32.39 % *** 2.247906e-08 buffers/buffer-from.js n=1024 len=2048 source="arraybuffer" -33.12 % *** 6.387633e-09 buffers/buffer-from.js n=1024 len=2048 source="buffer" 8.03 % 1.359963e-01 buffers/buffer-from.js n=1024 len=2048 source="object" 30.79 % *** 2.044209e-04 buffers/buffer-from.js n=1024 len=2048 source="string-base64" -2.57 % 6.409698e-01 buffers/buffer-from.js n=1024 len=2048 source="string" -8.51 % 8.553839e-02 buffers/buffer-from.js n=1024 len=2048 source="uint8array" 293.43 % *** 1.781736e-22 master to v7-latest improvement confidence p.value buffers/buffer-from.js n=1024 len=10 source="array" 37.57 % *** 1.781021e-12 buffers/buffer-from.js n=1024 len=10 source="arraybuffer-middle" -13.65 % *** 4.060694e-07 buffers/buffer-from.js n=1024 len=10 source="arraybuffer" -12.98 % *** 2.349020e-05 buffers/buffer-from.js n=1024 len=10 source="buffer" 26.04 % *** 4.158553e-10 buffers/buffer-from.js n=1024 len=10 source="object" 44.97 % *** 6.654504e-18 buffers/buffer-from.js n=1024 len=10 source="string-base64" -10.05 % *** 9.244411e-05 buffers/buffer-from.js n=1024 len=10 source="string" -18.68 % *** 6.452878e-13 buffers/buffer-from.js n=1024 len=10 source="uint8array" 0.37 % 8.982949e-01 buffers/buffer-from.js n=1024 len=2048 source="array" 3.59 % * 3.594595e-02 buffers/buffer-from.js n=1024 len=2048 source="arraybuffer-middle" -14.08 % *** 2.082821e-04 buffers/buffer-from.js n=1024 len=2048 source="arraybuffer" -13.67 % *** 7.702316e-07 buffers/buffer-from.js n=1024 len=2048 source="buffer" 11.01 % ** 4.616398e-03 buffers/buffer-from.js n=1024 len=2048 source="object" 42.88 % *** 2.021887e-16 buffers/buffer-from.js n=1024 len=2048 source="string-base64" 1.39 % 5.063980e-01 buffers/buffer-from.js n=1024 len=2048 source="string" -5.65 % *** 4.850306e-04 buffers/buffer-from.js n=1024 len=2048 source="uint8array" 321.70 % *** 2.335348e-28 

I'm running the buffer-creation benchmarks now

Benchmark results for buffer-creation
PR vs v7-latest improvement confidence p.value buffers/buffer-creation.js n=1024 len=10 type="buffer()" -37.70 % *** 8.170936e-07 buffers/buffer-creation.js n=1024 len=10 type="fast-alloc-fill" -22.43 % *** 4.234106e-04 buffers/buffer-creation.js n=1024 len=10 type="fast-alloc" -18.70 % ** 2.991527e-03 buffers/buffer-creation.js n=1024 len=10 type="fast-allocUnsafe" -39.59 % *** 2.983973e-09 buffers/buffer-creation.js n=1024 len=10 type="slow-allocUnsafe" -25.74 % *** 5.983443e-05 buffers/buffer-creation.js n=1024 len=10 type="slow" -27.11 % *** 1.038236e-05 buffers/buffer-creation.js n=1024 len=1024 type="buffer()" -28.41 % *** 2.246628e-05 buffers/buffer-creation.js n=1024 len=1024 type="fast-alloc-fill" -10.43 % 1.321668e-01 buffers/buffer-creation.js n=1024 len=1024 type="fast-alloc" -10.79 % 7.761290e-02 buffers/buffer-creation.js n=1024 len=1024 type="fast-allocUnsafe" -29.88 % *** 2.164879e-06 buffers/buffer-creation.js n=1024 len=1024 type="slow-allocUnsafe" -21.92 % *** 3.027289e-04 buffers/buffer-creation.js n=1024 len=1024 type="slow" -23.86 % *** 3.208618e-04 buffers/buffer-creation.js n=1024 len=2048 type="buffer()" -22.88 % ** 1.258741e-03 buffers/buffer-creation.js n=1024 len=2048 type="fast-alloc-fill" -9.78 % 1.632281e-01 buffers/buffer-creation.js n=1024 len=2048 type="fast-alloc" -11.73 % * 4.364843e-02 buffers/buffer-creation.js n=1024 len=2048 type="fast-allocUnsafe" -22.75 % *** 7.573624e-04 buffers/buffer-creation.js n=1024 len=2048 type="slow-allocUnsafe" -19.22 % ** 6.876306e-03 buffers/buffer-creation.js n=1024 len=2048 type="slow" -19.85 % ** 1.531455e-03 buffers/buffer-creation.js n=1024 len=4096 type="buffer()" -9.88 % 1.343226e-01 buffers/buffer-creation.js n=1024 len=4096 type="fast-alloc-fill" -12.65 % * 3.085357e-02 buffers/buffer-creation.js n=1024 len=4096 type="fast-alloc" -6.36 % 2.733906e-01 buffers/buffer-creation.js n=1024 len=4096 type="fast-allocUnsafe" -10.92 % 1.366664e-01 buffers/buffer-creation.js n=1024 len=4096 type="slow-allocUnsafe" -19.47 % ** 8.094237e-03 buffers/buffer-creation.js n=1024 len=4096 type="slow" -18.56 % ** 3.257171e-03 buffers/buffer-creation.js n=1024 len=8192 type="buffer()" -25.61 % *** 8.851354e-04 buffers/buffer-creation.js n=1024 len=8192 type="fast-alloc-fill" -25.86 % *** 3.210301e-05 buffers/buffer-creation.js n=1024 len=8192 type="fast-alloc" -18.27 % ** 1.576755e-03 buffers/buffer-creation.js n=1024 len=8192 type="fast-allocUnsafe" -24.54 % ** 1.267306e-03 buffers/buffer-creation.js n=1024 len=8192 type="slow-allocUnsafe" -22.22 % ** 2.361535e-03 buffers/buffer-creation.js n=1024 len=8192 type="slow" -24.95 % ** 1.274023e-03 PR to Master improvement confidence p.value buffers/buffer-creation.js n=1024 len=10 type="buffer()" -23.82 % *** 4.603310e-07 buffers/buffer-creation.js n=1024 len=10 type="fast-alloc-fill" -8.98 % * 4.796022e-02 buffers/buffer-creation.js n=1024 len=10 type="fast-alloc" -9.66 % * 2.705076e-02 buffers/buffer-creation.js n=1024 len=10 type="fast-allocUnsafe" -21.20 % *** 1.350862e-04 buffers/buffer-creation.js n=1024 len=10 type="slow-allocUnsafe" -8.17 % * 4.477244e-02 buffers/buffer-creation.js n=1024 len=10 type="slow" -8.14 % 7.364837e-02 buffers/buffer-creation.js n=1024 len=1024 type="buffer()" -12.14 % ** 1.536780e-03 buffers/buffer-creation.js n=1024 len=1024 type="fast-alloc-fill" -2.95 % 4.062755e-01 buffers/buffer-creation.js n=1024 len=1024 type="fast-alloc" -7.04 % 6.421243e-02 buffers/buffer-creation.js n=1024 len=1024 type="fast-allocUnsafe" -21.17 % *** 3.190386e-04 buffers/buffer-creation.js n=1024 len=1024 type="slow-allocUnsafe" -5.00 % 2.486273e-01 buffers/buffer-creation.js n=1024 len=1024 type="slow" -2.82 % 5.463033e-01 buffers/buffer-creation.js n=1024 len=2048 type="buffer()" -4.22 % 4.282637e-01 buffers/buffer-creation.js n=1024 len=2048 type="fast-alloc-fill" -6.86 % * 4.507429e-02 buffers/buffer-creation.js n=1024 len=2048 type="fast-alloc" -4.34 % 3.098785e-01 buffers/buffer-creation.js n=1024 len=2048 type="fast-allocUnsafe" -12.63 % * 1.633488e-02 buffers/buffer-creation.js n=1024 len=2048 type="slow-allocUnsafe" -0.03 % 9.952215e-01 buffers/buffer-creation.js n=1024 len=2048 type="slow" -1.11 % 8.161170e-01 buffers/buffer-creation.js n=1024 len=4096 type="buffer()" 3.13 % 5.248264e-01 buffers/buffer-creation.js n=1024 len=4096 type="fast-alloc-fill" -5.42 % 1.418995e-01 buffers/buffer-creation.js n=1024 len=4096 type="fast-alloc" -6.19 % 8.675164e-02 buffers/buffer-creation.js n=1024 len=4096 type="fast-allocUnsafe" -5.31 % 2.569296e-01 buffers/buffer-creation.js n=1024 len=4096 type="slow-allocUnsafe" -1.27 % 8.108671e-01 buffers/buffer-creation.js n=1024 len=4096 type="slow" -0.12 % 9.768392e-01 buffers/buffer-creation.js n=1024 len=8192 type="buffer()" 15.40 % 1.746439e-01 buffers/buffer-creation.js n=1024 len=8192 type="fast-alloc-fill" -1.56 % 8.272071e-01 buffers/buffer-creation.js n=1024 len=8192 type="fast-alloc" -2.94 % 7.164391e-01 buffers/buffer-creation.js n=1024 len=8192 type="fast-allocUnsafe" 4.65 % 6.791579e-01 buffers/buffer-creation.js n=1024 len=8192 type="slow-allocUnsafe" -15.99 % 9.725391e-02 buffers/buffer-creation.js n=1024 len=8192 type="slow" -15.01 % 1.110732e-01 master to v7-latest improvement confidence p.value buffers/buffer-creation.js n=1024 len=10 type="buffer()" -19.82 % *** 2.918161e-06 buffers/buffer-creation.js n=1024 len=10 type="fast-alloc-fill" -13.46 % *** 2.816522e-04 buffers/buffer-creation.js n=1024 len=10 type="fast-alloc" -7.80 % ** 9.382877e-03 buffers/buffer-creation.js n=1024 len=10 type="fast-allocUnsafe" -20.60 % *** 2.080874e-09 buffers/buffer-creation.js n=1024 len=10 type="slow-allocUnsafe" -9.86 % *** 4.085916e-04 buffers/buffer-creation.js n=1024 len=10 type="slow" -11.86 % ** 2.226668e-03 buffers/buffer-creation.js n=1024 len=1024 type="buffer()" -18.86 % *** 1.114447e-06 buffers/buffer-creation.js n=1024 len=1024 type="fast-alloc-fill" -11.83 % *** 3.524462e-04 buffers/buffer-creation.js n=1024 len=1024 type="fast-alloc" -9.32 % ** 8.059771e-03 buffers/buffer-creation.js n=1024 len=1024 type="fast-allocUnsafe" -9.28 % ** 1.530503e-03 buffers/buffer-creation.js n=1024 len=1024 type="slow-allocUnsafe" -7.37 % ** 1.946543e-03 buffers/buffer-creation.js n=1024 len=1024 type="slow" -8.66 % ** 2.212602e-03 buffers/buffer-creation.js n=1024 len=2048 type="buffer()" -9.55 % ** 1.281355e-03 buffers/buffer-creation.js n=1024 len=2048 type="fast-alloc-fill" -8.09 % * 1.395453e-02 buffers/buffer-creation.js n=1024 len=2048 type="fast-alloc" -4.03 % 1.707212e-01 buffers/buffer-creation.js n=1024 len=2048 type="fast-allocUnsafe" -7.36 % * 4.570890e-02 buffers/buffer-creation.js n=1024 len=2048 type="slow-allocUnsafe" -5.30 % 1.155574e-01 buffers/buffer-creation.js n=1024 len=2048 type="slow" -7.37 % ** 1.663168e-03 buffers/buffer-creation.js n=1024 len=4096 type="buffer()" -6.45 % ** 1.664182e-03 buffers/buffer-creation.js n=1024 len=4096 type="fast-alloc-fill" -7.76 % * 2.186373e-02 buffers/buffer-creation.js n=1024 len=4096 type="fast-alloc" -2.32 % 2.932382e-01 buffers/buffer-creation.js n=1024 len=4096 type="fast-allocUnsafe" -6.03 % ** 4.181543e-03 buffers/buffer-creation.js n=1024 len=4096 type="slow-allocUnsafe" -6.37 % ** 8.358552e-03 buffers/buffer-creation.js n=1024 len=4096 type="slow" -7.15 % * 1.098388e-02 buffers/buffer-creation.js n=1024 len=8192 type="buffer()" -19.75 % ** 8.360417e-03 buffers/buffer-creation.js n=1024 len=8192 type="fast-alloc-fill" -20.11 % *** 1.702175e-04 buffers/buffer-creation.js n=1024 len=8192 type="fast-alloc" -19.21 % *** 3.986116e-04 buffers/buffer-creation.js n=1024 len=8192 type="fast-allocUnsafe" -26.04 % *** 6.409609e-04 buffers/buffer-creation.js n=1024 len=8192 type="slow-allocUnsafe" -27.41 % *** 6.028415e-04 buffers/buffer-creation.js n=1024 len=8192 type="slow" -19.57 % * 1.026433e-02 

@jasnelljasnellforce-pushed the pending-deprecations branch from 7ca48f8 to 72bec87CompareMarch 24, 2017 16:40
@ChALkeR
Copy link
Member

For the record, a heavy +1 for me on this one, but I'm not posting an LGTM because I'm not 100% sure how exactly does the workaround on the FastBuffer line work here.

@ChALkeRChALkeR added this to the 8.0.0 milestone Mar 25, 2017
@ChALkeR
Copy link
Member

We surely can get this in in time for 8.0, right? ;-)

@jasnell
Copy link
MemberAuthor

jasnell commented Mar 25, 2017 via email

@targos
Copy link
Member

I'm not that happy with the FastBuffer work around either given the perf
hit.

The work around does not work if you implement constructor ?

@jasnell
Copy link
MemberAuthor

It does! Just did that. It appears to alleviate some of the perf cost (not all but some).

@jasnell
Copy link
MemberAuthor

I will update the PR in a minute

@jasnelljasnellforce-pushed the pending-deprecations branch from 72bec87 to 11711d6CompareMarch 25, 2017 19:14
@jasnell
Copy link
MemberAuthor

@ChALkeRChALkeR added the security Issues and PRs related to security. label Mar 25, 2017
@TrottTrott added the notable-change PRs with changes that should be highlighted in changelogs. label Mar 25, 2017
@jasnell
Copy link
MemberAuthor

@nodejs/ctc ... one final check on this before it lands. Are there any objections? Should I hold off until the CTC call on Wednesday?

@ChALkeR
Copy link
Member

ChALkeR commented Mar 27, 2017

@jasnell I'm not sure if this isn't a semver-major because of #11968 (comment).

This isn't an objection, though.

@jasnell
Copy link
MemberAuthor

I'm ok with making it a semver-major

@ChALkeR
Copy link
Member

ChALkeR commented Mar 31, 2017

Ok, let's have a quick 🚲🏡 vote here.

Please edit this comment, adding your opinion for each of the flag names.
I know this is cumbersome, but it's still better than having everyone to post a comment.
/cc @nodejs/ctc

Empty No/Abstain fields are hidden to save space, please uncomment them on first use.

--pending-deprecation

Yes: @ChALkeR@Trott@jasnell@targos

--warn-deprecation

No: @ChALkeR@Trott@jasnell@targos

--warn-doc-deprecation

No: @ChALkeR@Trott@jasnell@targos

--flagged-deprecation

Yes: @ChALkeR
No: @targos
Abstain: @Trott@jasnell

--opt-in-deprecate or --opt-in-deprecation

Yes: @ChALkeR@Trott@jasnell

Abstain: @targos

--pending-runtime-deprecation

Yes: @ChALkeR@Trott@targos

--pending-warn-deprecation

No: @targos

--pending-warning


It's ok to propose new flag names right here below this line, using the template above:

@jasnell
Copy link
MemberAuthor

@nodejs/ctc ... Given that this has enough votes to land using the --pending-deprecation name, I plan to land it Friday if there are no further objections

@jasnell
Copy link
MemberAuthor

It's a bit later, but one final call for objections on landing this as --pending-deprecation.

@jasnell
Copy link
MemberAuthor

jasnell added a commit that referenced this pull request Apr 19, 2017
Command line flag and environment variable that can be used to indicate that pending deprecations should be emitted. PR-URL: #11968 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Michaël Zasso <[email protected]> Reviewed-By: Michael Dawson <[email protected]> Reviewed-By: Сковорода Никита Андреевич <[email protected]> Reviewed-By: James M Snell <[email protected]>
jasnell added a commit that referenced this pull request Apr 19, 2017
The pending deprecation warning is off by default. Launch the node process with --pending-deprecation or NODE_PENDING_DEPRECATION=1 env var set. PR-URL: #11968 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Michaël Zasso <[email protected]> Reviewed-By: Michael Dawson <[email protected]> Reviewed-By: Сковорода Никита Андреевич <[email protected]> Reviewed-By: James M Snell <[email protected]>
@jasnell
Copy link
MemberAuthor

Landed in a16b570 and d2d32ea

@jasnelljasnell closed this Apr 19, 2017
@jasnelljasnell mentioned this pull request May 11, 2017
jasnell added a commit to jasnell/node that referenced this pull request May 29, 2017
* **Async Hooks** * The `async_hooks` module has landed in core [[`4a7233c178`](nodejs@4a7233c178)] [nodejs#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@d2d32ea5a2)] [nodejs#11968](nodejs#11968). * `new Buffer(num)` and `Buffer(num)` will zero-fill new `Buffer` instances [[`7eb1b4658e`](nodejs@7eb1b4658e)] [nodejs#12141](nodejs#12141). * Many `Buffer` methods now accept `Uint8Array` as input [[`beca3244e2`](nodejs@beca3244e2)] [nodejs#10236](nodejs#10236). * **Child Process** * Argument and kill signal validations have been improved [[`97a77288ce`](nodejs@97a77288ce)] [nodejs#12348](nodejs#12348), [[`d75fdd96aa`](nodejs@d75fdd96aa)] [nodejs#10423](nodejs#10423). * Child Process methods accept `Uint8Array` as input [[`627ecee9ed`](nodejs@627ecee9ed)] [nodejs#10653](nodejs#10653). * **Console** * Error events emitted when using `console` methods are now supressed. [[`f18e08d820`](nodejs@f18e08d820)] [nodejs#9744](nodejs#9744). * **Dependencies** * The npm client has been updated to 5.0.0 [[`3c3b36af0f`](nodejs@3c3b36af0f)] [nodejs#12936](nodejs#12936). * V8 has been updated to 5.8 with forward ABI stability to 6.0 [[`60d1aac8d2`](nodejs@60d1aac8d2)] [nodejs#12784](nodejs#12784). * **Domains** * Native `Promise` instances are now `Domain` aware [[`84dabe8373`](nodejs@84dabe8373)] [nodejs#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@7a55e34ef4)] [nodejs#10467](nodejs#10467). * The deprecated `fs.read()` string interface has been removed [[`3c2a9361ff`](nodejs@3c2a9361ff)] [nodejs#9683](nodejs#9683). * **HTTP** * Improved support for userland implemented Agents [[`90403dd1d0`](nodejs@90403dd1d0)] [nodejs#11567](nodejs#11567). * Outgoing Cookie headers are concatenated into a single string [[`d3480776c7`](nodejs@d3480776c7)] [nodejs#11259](nodejs#11259). * The `httpResponse.writeHeader()` method has been deprecated [[`fb71ba4921`](nodejs@fb71ba4921)] [nodejs#11355](nodejs#11355). * New methods for accessing HTTP headers have been added to `OutgoingMessage` [[`3e6f1032a4`](nodejs@3e6f1032a4)] [nodejs#10805](nodejs#10805). * **Lib** * All deprecation messages have been assigned static identifiers [[`5de3cf099c`](nodejs@5de3cf099c)] [nodejs#10116](nodejs#10116). * The legacy `linkedlist` module has been removed [[`84a23391f6`](nodejs@84a23391f6)] [nodejs#12113](nodejs#12113). * **N-API** * Experimental support for the new N-API API has been added [[`56e881d0b0`](nodejs@56e881d0b0)] [nodejs#11975](nodejs#11975). * **Process** * Process warning output can be redirected to a file using the `--redirect-warnings` command-line argument [[`03e89b3ff2`](nodejs@03e89b3ff2)] [nodejs#10116](nodejs#10116). * Process warnings may now include additional detail [[`dd20e68b0f`](nodejs@dd20e68b0f)] [nodejs#12725](nodejs#12725). * **REPL** * REPL magic mode has been deprecated [[`3f27f02da0`](nodejs@3f27f02da0)] [nodejs#11599](nodejs#11599). * **Src** * `NODE_MODULE_VERSION` has been updated to 57 (nodejs@ec7cbaf266)] [nodejs#12995](nodejs#12995). * Add `--pending-deprecation` command-line argument and `NODE_PENDING_DEPRECATION` environment variable [[`a16b570f8c`](nodejs@a16b570f8c)] [nodejs#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@010f864426)] [nodejs#12949](nodejs#12949). * Throw when the `-c` and `-e` command-line arguments are used at the same time [[`a5f91ab230`](nodejs@a5f91ab230)] [nodejs#11689](nodejs#11689). * Throw when the `--use-bundled-ca` and `--use-openssl-ca` command-line arguments are used at the same time. [[`8a7db9d4b5`](nodejs@8a7db9d4b5)] [nodejs#12087](nodejs#12087). * **Stream** * `Stream` now supports `destroy()` and `_destroy()` APIs [[`b6e1d22fa6`](nodejs@b6e1d22fa6)] [nodejs#12925](nodejs#12925). * `Stream` now supports the `_final()` API [[`07c7f198db`](nodejs@07c7f198db)] [nodejs#12828](nodejs#12828). * **TLS** * The `rejectUnauthorized` option now defaults to `true` [[`348cc80a3c`](nodejs@348cc80a3c)] [nodejs#5923](nodejs#5923). * The `tls.createSecurePair()` API now emits a runtime deprecation [[`a2ae08999b`](nodejs@a2ae08999b)] [nodejs#11349](nodejs#11349). * A runtime deprecation will now be emitted when `dhparam` is less than 2048 bits [[`d523eb9c40`](nodejs@d523eb9c40)] [nodejs#11447](nodejs#11447). * **URL** * The WHATWG URL implementation is now a fully-supported Node.js API [[`d080ead0f9`](nodejs@d080ead0f9)] [nodejs#12710](nodejs#12710). * **Util** * `Symbol` keys are now displayed by default when using `util.inspect()` [[`5bfd13b81e`](nodejs@5bfd13b81e)] [nodejs#9726](nodejs#9726). * `toJSON` errors will be thrown when formatting `%j` [[`455e6f1dd8`](nodejs@455e6f1dd8)] [nodejs#11708](nodejs#11708). * Convert `inspect.styles` and `inspect.colors` to prototype-less objects [[`aab0d202f8`](nodejs@aab0d202f8)] [nodejs#11624](nodejs#11624). * The new `util.promisify()` API has been added [[`99da8e8e02`](nodejs@99da8e8e02)] [nodejs#12442](nodejs#12442). * **Zlib** * Support `Uint8Array` in Zlib convenience methods [[`91383e47fd`](nodejs@91383e47fd)] [nodejs#12001](nodejs#12001). * Zlib errors now use `RangeError` and `TypeError` consistently [[`b514bd231e`](nodejs@b514bd231e)] [nodejs#11391](nodejs#11391).
jasnell added a commit that referenced this pull request May 30, 2017
* **Async Hooks** * The `async_hooks` module has landed in core [[`4a7233c178`](4a7233c178)] [#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`](d2d32ea5a2)] [#11968](#11968). * `new Buffer(num)` and `Buffer(num)` will zero-fill new `Buffer` instances [[`7eb1b4658e`](7eb1b4658e)] [#12141](#12141). * Many `Buffer` methods now accept `Uint8Array` as input [[`beca3244e2`](beca3244e2)] [#10236](#10236). * **Child Process** * Argument and kill signal validations have been improved [[`97a77288ce`](97a77288ce)] [#12348](#12348), [[`d75fdd96aa`](d75fdd96aa)] [#10423](#10423). * Child Process methods accept `Uint8Array` as input [[`627ecee9ed`](627ecee9ed)] [#10653](#10653). * **Console** * Error events emitted when using `console` methods are now supressed. [[`f18e08d820`](f18e08d820)] [#9744](#9744). * **Dependencies** * The npm client has been updated to 5.0.0 [[`3c3b36af0f`](3c3b36af0f)] [#12936](#12936). * V8 has been updated to 5.8 with forward ABI stability to 6.0 [[`60d1aac8d2`](60d1aac8d2)] [#12784](#12784). * **Domains** * Native `Promise` instances are now `Domain` aware [[`84dabe8373`](84dabe8373)] [#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`](7a55e34ef4)] [#10467](#10467). * The deprecated `fs.read()` string interface has been removed [[`3c2a9361ff`](3c2a9361ff)] [#9683](#9683). * **HTTP** * Improved support for userland implemented Agents [[`90403dd1d0`](90403dd1d0)] [#11567](#11567). * Outgoing Cookie headers are concatenated into a single string [[`d3480776c7`](d3480776c7)] [#11259](#11259). * The `httpResponse.writeHeader()` method has been deprecated [[`fb71ba4921`](fb71ba4921)] [#11355](#11355). * New methods for accessing HTTP headers have been added to `OutgoingMessage` [[`3e6f1032a4`](3e6f1032a4)] [#10805](#10805). * **Lib** * All deprecation messages have been assigned static identifiers [[`5de3cf099c`](5de3cf099c)] [#10116](#10116). * The legacy `linkedlist` module has been removed [[`84a23391f6`](84a23391f6)] [#12113](#12113). * **N-API** * Experimental support for the new N-API API has been added [[`56e881d0b0`](56e881d0b0)] [#11975](#11975). * **Process** * Process warning output can be redirected to a file using the `--redirect-warnings` command-line argument [[`03e89b3ff2`](03e89b3ff2)] [#10116](#10116). * Process warnings may now include additional detail [[`dd20e68b0f`](dd20e68b0f)] [#12725](#12725). * **REPL** * REPL magic mode has been deprecated [[`3f27f02da0`](3f27f02da0)] [#11599](#11599). * **Src** * `NODE_MODULE_VERSION` has been updated to 57 (ec7cbaf266)] [#12995](#12995). * Add `--pending-deprecation` command-line argument and `NODE_PENDING_DEPRECATION` environment variable [[`a16b570f8c`](a16b570f8c)] [#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`](010f864426)] [#12949](#12949). * Throw when the `-c` and `-e` command-line arguments are used at the same time [[`a5f91ab230`](a5f91ab230)] [#11689](#11689). * Throw when the `--use-bundled-ca` and `--use-openssl-ca` command-line arguments are used at the same time. [[`8a7db9d4b5`](8a7db9d4b5)] [#12087](#12087). * **Stream** * `Stream` now supports `destroy()` and `_destroy()` APIs [[`b6e1d22fa6`](b6e1d22fa6)] [#12925](#12925). * `Stream` now supports the `_final()` API [[`07c7f198db`](07c7f198db)] [#12828](#12828). * **TLS** * The `rejectUnauthorized` option now defaults to `true` [[`348cc80a3c`](348cc80a3c)] [#5923](#5923). * The `tls.createSecurePair()` API now emits a runtime deprecation [[`a2ae08999b`](a2ae08999b)] [#11349](#11349). * A runtime deprecation will now be emitted when `dhparam` is less than 2048 bits [[`d523eb9c40`](d523eb9c40)] [#11447](#11447). * **URL** * The WHATWG URL implementation is now a fully-supported Node.js API [[`d080ead0f9`](d080ead0f9)] [#12710](#12710). * **Util** * `Symbol` keys are now displayed by default when using `util.inspect()` [[`5bfd13b81e`](5bfd13b81e)] [#9726](#9726). * `toJSON` errors will be thrown when formatting `%j` [[`455e6f1dd8`](455e6f1dd8)] [#11708](#11708). * Convert `inspect.styles` and `inspect.colors` to prototype-less objects [[`aab0d202f8`](aab0d202f8)] [#11624](#11624). * The new `util.promisify()` API has been added [[`99da8e8e02`](99da8e8e02)] [#12442](#12442). * **Zlib** * Support `Uint8Array` in Zlib convenience methods [[`91383e47fd`](91383e47fd)] [#12001](#12001). * Zlib errors now use `RangeError` and `TypeError` consistently [[`b514bd231e`](b514bd231e)] [#11391](#11391).
jasnell added a commit that referenced this pull request May 30, 2017
* **Async Hooks** * The `async_hooks` module has landed in core [[`4a7233c178`](4a7233c178)] [#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`](d2d32ea5a2)] [#11968](#11968). * `new Buffer(num)` and `Buffer(num)` will zero-fill new `Buffer` instances [[`7eb1b4658e`](7eb1b4658e)] [#12141](#12141). * Many `Buffer` methods now accept `Uint8Array` as input [[`beca3244e2`](beca3244e2)] [#10236](#10236). * **Child Process** * Argument and kill signal validations have been improved [[`97a77288ce`](97a77288ce)] [#12348](#12348), [[`d75fdd96aa`](d75fdd96aa)] [#10423](#10423). * Child Process methods accept `Uint8Array` as input [[`627ecee9ed`](627ecee9ed)] [#10653](#10653). * **Console** * Error events emitted when using `console` methods are now supressed. [[`f18e08d820`](f18e08d820)] [#9744](#9744). * **Dependencies** * The npm client has been updated to 5.0.0 [[`3c3b36af0f`](3c3b36af0f)] [#12936](#12936). * V8 has been updated to 5.8 with forward ABI stability to 6.0 [[`60d1aac8d2`](60d1aac8d2)] [#12784](#12784). * **Domains** * Native `Promise` instances are now `Domain` aware [[`84dabe8373`](84dabe8373)] [#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`](7a55e34ef4)] [#10467](#10467). * The deprecated `fs.read()` string interface has been removed [[`3c2a9361ff`](3c2a9361ff)] [#9683](#9683). * **HTTP** * Improved support for userland implemented Agents [[`90403dd1d0`](90403dd1d0)] [#11567](#11567). * Outgoing Cookie headers are concatenated into a single string [[`d3480776c7`](d3480776c7)] [#11259](#11259). * The `httpResponse.writeHeader()` method has been deprecated [[`fb71ba4921`](fb71ba4921)] [#11355](#11355). * New methods for accessing HTTP headers have been added to `OutgoingMessage` [[`3e6f1032a4`](3e6f1032a4)] [#10805](#10805). * **Lib** * All deprecation messages have been assigned static identifiers [[`5de3cf099c`](5de3cf099c)] [#10116](#10116). * The legacy `linkedlist` module has been removed [[`84a23391f6`](84a23391f6)] [#12113](#12113). * **N-API** * Experimental support for the new N-API API has been added [[`56e881d0b0`](56e881d0b0)] [#11975](#11975). * **Process** * Process warning output can be redirected to a file using the `--redirect-warnings` command-line argument [[`03e89b3ff2`](03e89b3ff2)] [#10116](#10116). * Process warnings may now include additional detail [[`dd20e68b0f`](dd20e68b0f)] [#12725](#12725). * **REPL** * REPL magic mode has been deprecated [[`3f27f02da0`](3f27f02da0)] [#11599](#11599). * **Src** * `NODE_MODULE_VERSION` has been updated to 57 (ec7cbaf266)] [#12995](#12995). * Add `--pending-deprecation` command-line argument and `NODE_PENDING_DEPRECATION` environment variable [[`a16b570f8c`](a16b570f8c)] [#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`](010f864426)] [#12949](#12949). * Throw when the `-c` and `-e` command-line arguments are used at the same time [[`a5f91ab230`](a5f91ab230)] [#11689](#11689). * Throw when the `--use-bundled-ca` and `--use-openssl-ca` command-line arguments are used at the same time. [[`8a7db9d4b5`](8a7db9d4b5)] [#12087](#12087). * **Stream** * `Stream` now supports `destroy()` and `_destroy()` APIs [[`b6e1d22fa6`](b6e1d22fa6)] [#12925](#12925). * `Stream` now supports the `_final()` API [[`07c7f198db`](07c7f198db)] [#12828](#12828). * **TLS** * The `rejectUnauthorized` option now defaults to `true` [[`348cc80a3c`](348cc80a3c)] [#5923](#5923). * The `tls.createSecurePair()` API now emits a runtime deprecation [[`a2ae08999b`](a2ae08999b)] [#11349](#11349). * A runtime deprecation will now be emitted when `dhparam` is less than 2048 bits [[`d523eb9c40`](d523eb9c40)] [#11447](#11447). * **URL** * The WHATWG URL implementation is now a fully-supported Node.js API [[`d080ead0f9`](d080ead0f9)] [#12710](#12710). * **Util** * `Symbol` keys are now displayed by default when using `util.inspect()` [[`5bfd13b81e`](5bfd13b81e)] [#9726](#9726). * `toJSON` errors will be thrown when formatting `%j` [[`455e6f1dd8`](455e6f1dd8)] [#11708](#11708). * Convert `inspect.styles` and `inspect.colors` to prototype-less objects [[`aab0d202f8`](aab0d202f8)] [#11624](#11624). * The new `util.promisify()` API has been added [[`99da8e8e02`](99da8e8e02)] [#12442](#12442). * **Zlib** * Support `Uint8Array` in Zlib convenience methods [[`91383e47fd`](91383e47fd)] [#12001](#12001). * Zlib errors now use `RangeError` and `TypeError` consistently [[`b514bd231e`](b514bd231e)] [#11391](#11391).
@ChALkeRChALkeR mentioned this pull request Jul 29, 2017
@ChALkeRChALkeR mentioned this pull request Jul 11, 2018
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bufferIssues and PRs related to the buffer subsystem.c++Issues and PRs that require attention from people who are familiar with C++.notable-changePRs with changes that should be highlighted in changelogs.securityIssues and PRs related to security.semver-majorPRs that contain breaking changes and should be released in the next major version.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

14 participants

@jasnell@ChALkeR@silverwind@targos@addaleax@Trott@mscdex@cjihrig@gibfahn@seishun@rvagg@Fishrock123@mhdawson@nodejs-github-bot