-
Notifications
You must be signed in to change notification settings - Fork 30k
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
doc: update description of External
#31255
Conversation
The previous description did not mention what an `External` is and instead only provided some hints around what it is not. Update the description to be more accurate.
doc/api/util.md
Outdated
|
||
A native `External` value is a special type of object that contains a | ||
C++ `void*` pointer for access from native code, and has no other properties. | ||
Such objects are created either by Node.js internals or native addons. |
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.
@addaleax - while this is more specific definition of external
types, the existing text is more consumable by end users IMO. For easy consumption while being accurate, shall I suggest to retain data is not stored within the JavaScript managed heap and does not conform to standard JavaScript types..
phrase?
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.
@gireeshpunathil Sorry, but I have to disagree. The previous text was far from ideal, imo:
External
s are not concerned with where data is stored, or whether data is associated with theExternal
at all. They could even be used to store a single machine-word-sized value (which would mean that theExternal
’s data is actually fully stored on the JS heap).- Saying that an object “does not conform to standard JavaScript types” without describing in what way it doesn’t conform is just not helpful, and worse,
External
objects do conform to standard JS behaviour – in JS, they’re indistinguishable fromObject.freeze(Object.create(null))
.
I’m happy to take updates here, but I’d like to keep things helpful and accurate.
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.
Such objects are created either by Node.js internals or native addons. | |
Such objects are created either by Node.js internals or native addons. | |
In JS, they’re indistinguishable from `Object.freeze(Object.create(null))`. |
Would it be possible to reword the ...contains a C++ `void*` pointer
part? A pure JS developers might not be able to follow the part otherwise.
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.
@BridgeAR I’ve reworded the text a bit along the lines of your suggestions, but I’m not quite sure what you had in mind for the second one?
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 did not think of anything specific. I guess it's fine as it is.
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.
With the example being added here: #31173
This content change looks good to me.
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 or without my nit.
The previous description did not mention what an `External` is and instead only provided some hints around what it is not. Update the description to be more accurate. PR-URL: #31255 Reviewed-By: Anto Aravinth <[email protected]> Reviewed-By: Ruben Bridgewater <[email protected]> Reviewed-By: David Carlier <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Rich Trott <[email protected]> Reviewed-By: James M Snell <[email protected]>
Landed in b4ae0cb |
The previous description did not mention what an `External` is and instead only provided some hints around what it is not. Update the description to be more accurate. PR-URL: #31255 Reviewed-By: Anto Aravinth <[email protected]> Reviewed-By: Ruben Bridgewater <[email protected]> Reviewed-By: David Carlier <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Rich Trott <[email protected]> Reviewed-By: James M Snell <[email protected]>
The previous description did not mention what an `External` is and instead only provided some hints around what it is not. Update the description to be more accurate. PR-URL: #31255 Reviewed-By: Anto Aravinth <[email protected]> Reviewed-By: Ruben Bridgewater <[email protected]> Reviewed-By: David Carlier <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Rich Trott <[email protected]> Reviewed-By: James M Snell <[email protected]>
The previous description did not mention what an `External` is and instead only provided some hints around what it is not. Update the description to be more accurate. PR-URL: #31255 Reviewed-By: Anto Aravinth <[email protected]> Reviewed-By: Ruben Bridgewater <[email protected]> Reviewed-By: David Carlier <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Rich Trott <[email protected]> Reviewed-By: James M Snell <[email protected]>
The previous description did not mention what an
External
is and instead only provided some hints around what it is not. Update the description to be more accurate./cc @Trott @BridgeAR @cjihrig @gireeshpunathil who reviewed the previous PR.
Checklist
make -j4 test
(UNIX), orvcbuild test
(Windows) passes