-
Notifications
You must be signed in to change notification settings - Fork 29.8k
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
src: move process.binding('performance') to internalBinding #22029
Conversation
I don't have any experience with |
@jdalton It's used to power https://nodejs.org/api/perf_hooks.html. |
Ah nice! So already exposed in a user-friendly way 🤘 |
module.exports = { | ||
ModuleWrap: internalBinding('module_wrap').ModuleWrap, | ||
}; | ||
module.exports = { internalBinding }; |
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.
If I am not mistaken this file is now actually obsolete.
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.
No it is not. This is the only way internalBinding is accessible by tests
@@ -5,10 +5,5 @@ process.emitWarning( | |||
'tracked by any versioning system or deprecation process.', | |||
'internal/test/binding'); | |||
|
|||
// These exports should be scoped as specifically as possible | |||
// to avoid exposing APIs because even with that warning and | |||
// this file being internal people will still try to abuse it. |
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.
Is there any reason to switch from the original idea of limiting the set of exports as much as possible here?
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 was here for a reason. I'm really kinda -1 on changing it without first exploring alternatives.
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.
The reason is to help keep this maintainable. We use process.binding quite a bit in tests and it's far less maintainable to expose each individual property as exports on this object. I understand the reasoning but this approach keeps this test object as simple as possible.
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.
For instance, process.binding()
appears 157 times in test/parallel. Several of those are duplicates, but supporting all of those would mean managing a very large number of exports on internal/test/binding
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 agree with @jasnell. I do not see a different way for doing this, could you come up with a different approach @apapirovski?
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.
Ping @apapirovski ... there's really not a scalable way of picking and choosing the exports here so if you have a suggested alternative please let me know.
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
CITGM ( |
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
Ping @apapirovski again. See #22029 (comment) ^^ |
Given that there's been no follow up on the conversation and there are multiple approvals, I plan to go ahead and land this tomorrow if there are no further objections. |
as the person who added that comment about keeping the exports scoped... as we're moving everything to internalBinding it would basically become a flat object of all the different exports of all the different internal bindings. the change here makes sense imo. cc @apapirovski |
PR-URL: #22029 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Jon Moss <me@jonathanmoss.me> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Landed in 9f5cc1f |
Migrate
process.binding('performance')
tointernalBinding('performance')
Checklist
make -j4 test
(UNIX), orvcbuild test
(Windows) passes