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.
@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.
@gireeshpunathil Sorry, but I have to disagree. The previous text was far from ideal, imo:
Externals are not concerned with where data is stored, or whether data is associated with theExternalat 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,
Externalobjects 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.
| 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.
@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.
I did not think of anything specific. I guess it's fine as it is.
antsmartian
left a comment
There was a problem hiding this comment.
With the example being added here: #31173
This content change looks good to me.
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 <anto.aravinth.cse@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: David Carlier <devnexen@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
|
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 <anto.aravinth.cse@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: David Carlier <devnexen@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
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 <anto.aravinth.cse@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: David Carlier <devnexen@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
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 <anto.aravinth.cse@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: David Carlier <devnexen@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
The previous description did not mention what an
Externalis 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