Skip to content
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

Closed
wants to merge 3 commits into from

Conversation

addaleax
Copy link
Member

@addaleax addaleax commented Jan 8, 2020

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), or vcbuild test (Windows) passes
  • documentation is changed or added
  • commit message follows commit guidelines

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.
@nodejs-github-bot nodejs-github-bot added doc Issues and PRs related to the documentations. util Issues and PRs related to the built-in util module. labels Jan 8, 2020
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.
Copy link
Member

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?

Copy link
Member Author

@addaleax addaleax Jan 8, 2020

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:

  1. Externals are not concerned with where data is stored, or whether data is associated with the External at all. They could even be used to store a single machine-word-sized value (which would mean that the External’s data is actually fully stored on the JS heap).
  2. 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 from Object.freeze(Object.create(null)).

I’m happy to take updates here, but I’d like to keep things helpful and accurate.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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.

Copy link
Member Author

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?

Copy link
Member

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.

Copy link
Contributor

@antsmartian antsmartian left a 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.

@antsmartian antsmartian added the author ready PRs that have at least one approval, no pending requests for changes, and a CI started. label Jan 8, 2020
doc/api/util.md Outdated Show resolved Hide resolved
Copy link
Member

@Trott Trott left a 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.

Trott pushed a commit that referenced this pull request Jan 10, 2020
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]>
@Trott
Copy link
Member

Trott commented Jan 10, 2020

Landed in b4ae0cb

@Trott Trott closed this Jan 10, 2020
@addaleax addaleax deleted the doc-update-external branch January 10, 2020 09:39
MylesBorins pushed a commit that referenced this pull request Jan 16, 2020
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]>
@codebytere codebytere mentioned this pull request Jan 16, 2020
codebytere pushed a commit that referenced this pull request Mar 14, 2020
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]>
codebytere pushed a commit that referenced this pull request Mar 17, 2020
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]>
@codebytere codebytere mentioned this pull request Mar 17, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
author ready PRs that have at least one approval, no pending requests for changes, and a CI started. doc Issues and PRs related to the documentations. util Issues and PRs related to the built-in util module.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants