8000 doc: update description of `External` by addaleax · Pull Request #31255 · nodejs/node · GitHub
  • [go: up one dir, main page]

    Skip to content

    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
    8000
    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 <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>
    @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 <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>
    @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 <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>
    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 <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>
    @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

    163B
    0