Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 34.3k
n-api: restrict exports by version#19962
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
Uh oh!
There was an error while loading. Please reload this page.
Conversation
kfarnung commented Apr 12, 2018 • edited
Loading Uh oh!
There was an error while loading. Please reload this page.
edited
Uh oh!
There was an error while loading. Please reload this page.
kfarnung commented Apr 12, 2018
devsnek commented Apr 12, 2018
can we just call it napi_version |
kfarnung commented Apr 12, 2018
I updated it to |
kfarnung commented Apr 12, 2018
Note to self: Add a versioning section to the docs. |
mhdawson commented Apr 12, 2018
Discussed a bit in the N-API meeting today, Kyle will do a few refinements and then we'll review in detail. |
addaleax commented Apr 21, 2018
What’s the motivation for restricting exports? |
kfarnung commented Apr 21, 2018
The idea is that an embedder can declare the version of N-API they want to target and trying to use any newer APIs would result in a build break. |
src/node_api.h Outdated
devsnekApr 21, 2018 • edited
Loading Uh oh!
There was an error while loading. Please reload this page.
edited
Uh oh!
There was an error while loading. Please reload this page.
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 our styles i think this should be
#ifndefNAPI_VERSION#defineNAPI_VERSION 2 #endif// NAPI_VERSIONkfarnung commented Apr 24, 2018
@mhdawson I bumped the default NAPI_VERSION to 3 since v10.0.0 is coming out soon and we're in the process of backporting the version 3 changes anyway. |
mhdawson commented Apr 24, 2018
The changes look good but I think we discussed adding a section to the doc which explains how the to use the define etc. |
kfarnung commented Apr 24, 2018
Yeah, sorry about that, I haven't had a chance to flesh that out yet. Now that 10.0.0 is out I should have a little more time. |
2902039 to 3ce6459CompareBridgeAR commented May 15, 2018
Ping @kfarnung |
kfarnung commented May 15, 2018
I rebased the changes (pending a build/test locally), I believe I have addressed @mhdawson's comments as well. |
kfarnung commented May 15, 2018
Ping @nodejs/n-api |
mhdawson commented May 29, 2018
@kfarnung I think the one thing we discussed addint to this since you updated was the concept of EXPERIMENTAL that we could use to manage the flow of new functions into N-API. |
kfarnung commented May 29, 2018
That change is on my backlog, I've just been busy with other stuff. I'm hoping to get to that before the N-API meeting on Thursday. |
gabrielschulhof left a comment
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
kfarnung commented Jun 28, 2018
Rebased and squashed: https://ci.nodejs.org/job/node-test-pull-request/15657/ |
kfarnung commented Jun 29, 2018
src/node_api.h Outdated
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 believe fatal_exception is part of NAPI_VERSION 3, it is already exposed in 6.x
src/node_api.h Outdated
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.
These 2 are already in 10.x but not in 6.x so we probably missed bumping the NAPI_VERSION when they went out.
If we leave as experimental like this PR does we risk breaking somebody, but the same goes if we add a guard for NAPI_VERSION 4. I think we'll need to figure out who added them and figure out what makes the most sense. I do think getting this PR landed would be good though, so maybe just leave them in the regular set (ie non-experimental) for this PR ?
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 What do you think the best approach is? I've moved them to NAPI_VERSION 3 for now.
mhdawson left a comment
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 once napi_fatal_exception is moved under version 3, and napi_add_env_cleanup_hook and napi_remove_env_cleanup_hook are moved out of experimental
86b0958 to fa003a3Comparekfarnung commented Jun 29, 2018
kfarnung commented Jul 3, 2018
kfarnung commented Jul 3, 2018
@mhdawson Any other issues? I'm hoping to land this today, if possible |
mhdawson left a comment
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
mhdawson commented Jul 4, 2018
@kfarnung agreeing we should land, as would like this in place so we can make sure all future API are added as experimental. Can you take the action to follow up on napi_add_env_cleanup_hook/napi_remove_env_cleanup_hook to see if we can move out to NAPI_VERSION 4.x without breaking people? |
* Move `napi_get_uv_event_loop` into the `NAPI_VERSION >= 2` section * Move `napi_open_callback_scope`, `napi_close_callback_scope`, `napi_fatal_exception`, `napi_add_env_cleanup_hook`, and `napi_remove_env_cleanup_hook` into the `NAPI_VERSION >= 3` section * Added a missing `added` property to `napi_get_uv_event_loop` in the docs * Added a `napiVersion` property to the docs and updated the parser and generator to use it. * Added usage documentation PR-URL: #19962 Reviewed-By: Gabriel Schulhof <[email protected]> Reviewed-By: Michael Dawson <[email protected]>
kfarnung commented Jul 5, 2018
Landed in 8476053 |
* Move `napi_get_uv_event_loop` into the `NAPI_VERSION >= 2` section * Move `napi_open_callback_scope`, `napi_close_callback_scope`, `napi_fatal_exception`, `napi_add_env_cleanup_hook`, and `napi_remove_env_cleanup_hook` into the `NAPI_VERSION >= 3` section * Added a missing `added` property to `napi_get_uv_event_loop` in the docs * Added a `napiVersion` property to the docs and updated the parser and generator to use it. * Added usage documentation PR-URL: #19962 Reviewed-By: Gabriel Schulhof <[email protected]> Reviewed-By: Michael Dawson <[email protected]>
* Move `napi_get_uv_event_loop` into the `NAPI_VERSION >= 2` section * Move `napi_open_callback_scope`, `napi_close_callback_scope`, `napi_fatal_exception`, `napi_add_env_cleanup_hook`, and `napi_remove_env_cleanup_hook` into the `NAPI_VERSION >= 3` section * Added a missing `added` property to `napi_get_uv_event_loop` in the docs * Added a `napiVersion` property to the docs and updated the parser and generator to use it. * Added usage documentation PR-URL: nodejs#19962 Backport-PR-URL: nodejs#25648 Reviewed-By: Gabriel Schulhof <[email protected]> Reviewed-By: Michael Dawson <[email protected]>
* Move `napi_get_uv_event_loop` into the `NAPI_VERSION >= 2` section * Move `napi_open_callback_scope`, `napi_close_callback_scope`, `napi_fatal_exception`, `napi_add_env_cleanup_hook`, and `napi_remove_env_cleanup_hook` into the `NAPI_VERSION >= 3` section * Added a missing `added` property to `napi_get_uv_event_loop` in the docs * Added a `napiVersion` property to the docs and updated the parser and generator to use it. * Added usage documentation PR-URL: #19962 Backport-PR-URL: #25648 Reviewed-By: Gabriel Schulhof <[email protected]> Reviewed-By: Michael Dawson <[email protected]>

napi_get_uv_event_loopinto theNAPI_VERSION >= 2sectionnapi_open_callback_scope,napi_close_callback_scope,napi_fatal_exception,napi_add_env_cleanup_hook, andnapi_remove_env_cleanup_hookinto theNAPI_VERSION >= 3sectionaddedproperty tonapi_get_uv_event_loopin thedocs
napiVersionproperty to the docs and updated the parser andgenerator to use it.
Checklist
make -j4 test(UNIX), orvcbuild test(Windows) passes