-
Notifications
You must be signed in to change notification settings - Fork 30.1k
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
n-api: restrict exports by version #19962
Conversation
can we just call it napi_version |
I updated it to |
Note to self: Add a versioning section to the docs. |
Discussed a bit in the N-API meeting today, Kyle will do a few refinements and then we'll review in detail. |
What’s the motivation for restricting exports? |
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
@@ -7,6 +7,10 @@ | |||
|
|||
struct uv_loop_s; // Forward declaration. | |||
|
|||
#ifndef NAPI_VERSION | |||
#define NAPI_VERSION 2 |
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
#ifndef NAPI_VERSION
#define NAPI_VERSION 2
#endif // NAPI_VERSION
@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. |
The changes look good but I think we discussed adding a section to the doc which explains how the to use the define etc. |
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
3ce6459
Compare
Ping @kfarnung |
I rebased the changes (pending a build/test locally), I believe I have addressed @mhdawson's comments as well. |
Ping @nodejs/n-api |
@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. |
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. |
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
Rebased and squashed: https://ci.nodejs.org/job/node-test-pull-request/15657/ |
src/node_api.h
Outdated
|
||
#ifdef NAPI_EXPERIMENTAL | ||
|
||
NAPI_EXTERN napi_status napi_fatal_exception(napi_env env, napi_value err); |
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
NAPI_EXTERN napi_status napi_remove_env_cleanup_hook(napi_env env, | ||
void (*fun)(void* arg), | ||
void* arg); | ||
|
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.
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
fa003a3
Compare
@mhdawson Any other issues? I'm hoping to land this today, if possible |
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 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 <gabriel.schulhof@intel.com> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
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 <gabriel.schulhof@intel.com> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
* 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 <gabriel.schulhof@intel.com> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
* 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 <gabriel.schulhof@intel.com> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
napi_get_uv_event_loop
into theNAPI_VERSION >= 2
sectionnapi_open_callback_scope
,napi_close_callback_scope
,napi_fatal_exception
,napi_add_env_cleanup_hook
, andnapi_remove_env_cleanup_hook
into theNAPI_VERSION >= 3
sectionadded
property tonapi_get_uv_event_loop
in thedocs
napiVersion
property to the docs and updated the parser andgenerator to use it.
Checklist
make -j4 test
(UNIX), orvcbuild test
(Windows) passes