Uh oh!
There was an error while loading. Please reload this page.
process: wrap process.binding for selective fallthrough to internalBinding - #22269
process: wrap process.binding for selective fallthrough to internalBinding#22269jasnell wants to merge 3 commits into
Conversation
Selectively deprecate `process.binding()` and fallthrough Refs: nodejs#22163
jasnell
commented
Aug 11, 2018
devsnek
commented
Aug 11, 2018
actually @jasnell can you switch this to use SafeSet from |
maclover7
commented
Aug 12, 2018
maclover7
left a comment
There was a problem hiding this comment.
CITGM run has yargs looking okay, with docs added this looks good
| if (!internalBindingWarned.has(name)) { | ||
| process.emitWarning( | ||
| `Use of process.binding('${name}') is deprecated.`, | ||
| 'DeprecationWarning', 'DEP0111'); |
There was a problem hiding this comment.
Can you add docs in doc/api/deprecations.md
There was a problem hiding this comment.
This is part of the existing DEP0111 process.binding deprecation. The documentation is already there. The odd but is that it's not a complete switch to a runtime deprecation.
| // Deprecated specific process.binding() modules, but not all, allow | ||
| // selective fallback to internalBinding for the deprecated ones. | ||
| const processBinding = process.binding; | ||
| const internalBindingWhitelist = new Set(['uv']); |
There was a problem hiding this comment.
I'd like to hold this until an allow list, and those items in it, are more thoroughly digested. Many of the APIs that are deprecated have no user-land alternatives so leaves devs with nothing to fill the functionality gap. I think before a runtime error can be thrown we should have alternatives or guidance for the various APIs.
Update:
The move from process.binding to internalBinding is good. The mapping in process.binding to internalBinding, included in this PR, is good too (needed for a deprecation and migration path).
Update:
See additional comments, here and here, on migration and deprecation of recently removed bindings in master branch.
jasnell
commented
Aug 12, 2018
@jdalton ... this is not adding a runtime error. It adds a runtime deprecation for only |
The var name is a bit confusing as it suggests an allow list but then it issues a warning (Deprecation warnings can throw). |
jasnell
commented
Aug 12, 2018
They throw only if Either way, we need to fix the |
maclover7
commented
Aug 12, 2018
jasnell
commented
Aug 12, 2018
We can't fast track a semver-major with a red x. |
I'm a fan of removing reliance on
I'll update my ✖️ above with this note |
devsnek
commented
Aug 13, 2018
jdalton
commented
Aug 13, 2018
Data is great for this! |
jasnell
commented
Aug 13, 2018
Unblocking and landing this specific PR gives us a way of actually deprecating these things incrementally. |
@jasnell I 👍 the approach of your previous comment.
|
jasnell
commented
Aug 13, 2018
There is no need for all. |
jdalton
commented
Aug 13, 2018
Cool. You can address specifics in the follow-up commits in this PR. |
jasnell
commented
Aug 13, 2018
Removed the deprecation warning. Will handle that in a separate PR. Did not add the additional modules into the whitelist, prefer that to be done as separate PRs based on need. |
jdalton
commented
Aug 13, 2018
This doesn't really satisfy the request. It's reasonable to add non-experimental bindings to the list until we can determine if they can safely be removed with data. I'm not a fan of a break-first-then-follow-up process. I dig the doc deprecate -> runtime warn -> then drop process. |
jasnell
commented
Aug 13, 2018
Please let me know which transitioned items you want to see landed... So far we've transitioned:
The other modules are handled by still open PRs that would need to be updated after this lands. |
jdalton
commented
Aug 13, 2018
I don't think we have data on usage yet so if the bindings aren't experimental they should be added to the allow-list until then (so |
jdalton
commented
Aug 13, 2018
Ah nice! Ok then! |
jasnell
commented
Aug 14, 2018
CI (with lints fixed): https://ci.nodejs.org/job/node-test-pull-request/16453/ |
Selectively fallthrough `process.binding()` to `internalBinding()` Refs: #22163 PR-URL: #22269 Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Jon Moss <me@jonathanmoss.me> Reviewed-By: John-David Dalton <john.david.dalton@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
jasnell
commented
Aug 15, 2018
Landed in 0257fd7 |

Selectively allow
process.binding()to fall-through tointernalBinding()This adds a selective deprecation. We might want to make this aPendingDeprecationWarninginstead of a regularDeprecationWarning.Refs: #22163
/cc @addaleax
Checklist
make -j4 test(UNIX), orvcbuild test(Windows) passes