Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 34.3k
process: wrap process.binding for selective fallthrough to internalBinding#22269
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
Uh oh!
There was an error while loading. Please reload this page.
Conversation
jasnell commented Aug 11, 2018 • edited
Loading Uh oh!
There was an error while loading. Please reload this page.
edited
Uh oh!
There was an error while loading. Please reload this page.
Selectively deprecate `process.binding()` and fallthrough Refs: nodejs#22163
nodejs-github-bot commented Aug 11, 2018
jasnell commented Aug 11, 2018
devsnek left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm with DeprecationWarning
addaleax left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice, thanks!
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
CITGM run has yargs looking okay, with docs added this looks good
lib/internal/bootstrap/node.js Outdated
| if(!internalBindingWarned.has(name)){ | ||
| process.emitWarning( | ||
| `Use of process.binding('${name}') is deprecated.`, | ||
| 'DeprecationWarning','DEP0111'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you add docs in doc/api/deprecations.md
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
also it should be DEP00XX
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
lib/internal/bootstrap/node.js Outdated
| // Deprecated specific process.binding() modules, but not all, allow | ||
| // selective fallback to internalBinding for the deprecated ones. | ||
| constprocessBinding=process.binding; | ||
| constinternalBindingWhitelist=newSet(['uv']); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please use SafeSet
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
jdalton left a comment • edited
Loading Uh oh!
There was an error while loading. Please reload this page.
edited
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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 |
jdalton commented Aug 12, 2018 • edited
Loading Uh oh!
There was an error while loading. Please reload this page.
edited
Uh oh!
There was an error while loading. Please reload this page.
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. |
jdalton commented Aug 13, 2018 • edited
Loading Uh oh!
There was an error while loading. Please reload this page.
edited
Uh oh!
There was an error while loading. Please reload this page.
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. |
jdalton commented Aug 13, 2018 • edited
Loading Uh oh!
There was an error while loading. Please reload this page.
edited
Uh oh!
There was an error while loading. Please reload this page.
@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 |
jasnell commented Aug 13, 2018 • edited
Loading Uh oh!
There was an error while loading. Please reload this page.
edited
Uh oh!
There was an error while loading. Please reload this page.
jdalton commented Aug 13, 2018
Ah nice! Ok then! |
jasnell commented Aug 14, 2018
jasnell commented Aug 14, 2018 • edited
Loading Uh oh!
There was an error while loading. Please reload this page.
edited
Uh oh!
There was an error while loading. Please reload this page.
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 <[email protected]> Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Jon Moss <[email protected]> Reviewed-By: John-David Dalton <[email protected]> Reviewed-By: Ruben Bridgewater <[email protected]>
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