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

n-api: restrict exports by version #19962

Closed
wants to merge 0 commits into from
Closed

Conversation

kfarnung
Copy link
Contributor

@kfarnung kfarnung commented Apr 12, 2018

  • 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
Checklist
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • tests and/or benchmarks are included
  • documentation is changed or added
  • commit message follows commit guidelines

@kfarnung kfarnung self-assigned this Apr 12, 2018
@nodejs-github-bot nodejs-github-bot added c++ Issues and PRs that require attention from people who are familiar with C++. lib / src Issues and PRs related to general changes in the lib or src directory. labels Apr 12, 2018
@kfarnung kfarnung added doc Issues and PRs related to the documentations. node-api Issues and PRs related to the Node-API. labels Apr 12, 2018
@kfarnung
Copy link
Contributor Author

An example of what the doc update looks like:

napiver

@devsnek
Copy link
Member

devsnek commented Apr 12, 2018

can we just call it napi_version

@kfarnung
Copy link
Contributor Author

I updated it to napiVersion, but I'm open to further feedback.

@kfarnung
Copy link
Contributor Author

Note to self: Add a versioning section to the docs.

@mhdawson
Copy link
Member

Discussed a bit in the N-API meeting today, Kyle will do a few refinements and then we'll review in detail.

@addaleax
Copy link
Member

What’s the motivation for restricting exports?

@kfarnung
Copy link
Contributor Author

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
Copy link
Member

@devsnek devsnek Apr 21, 2018

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

@kfarnung
Copy link
Contributor Author

@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
Copy link
Member

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
Copy link
Contributor Author

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.

@kfarnung kfarnung force-pushed the napiver branch 3 times, most recently from 2902039 to 3ce6459 Compare May 4, 2018 01:00
@BridgeAR
Copy link
Member

Ping @kfarnung

@kfarnung
Copy link
Contributor Author

I rebased the changes (pending a build/test locally), I believe I have addressed @mhdawson's comments as well.

@kfarnung
Copy link
Contributor Author

Ping @nodejs/n-api

@mhdawson
Copy link
Member

@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
Copy link
Contributor Author

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.

Copy link
Contributor

@gabrielschulhof gabrielschulhof left a comment

Choose a reason for hiding this comment

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

LGTM

@kfarnung
Copy link
Contributor Author

Rebased and squashed: https://ci.nodejs.org/job/node-test-pull-request/15657/

@kfarnung
Copy link
Contributor Author

src/node_api.h Outdated

#ifdef NAPI_EXPERIMENTAL

NAPI_EXTERN napi_status napi_fatal_exception(napi_env env, napi_value err);
Copy link
Member

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);

Copy link
Member

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 ?

Copy link
Contributor Author

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.

Copy link
Member

@mhdawson mhdawson left a 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

@kfarnung kfarnung force-pushed the napiver branch 2 times, most recently from 86b0958 to fa003a3 Compare June 29, 2018 22:22
@kfarnung
Copy link
Contributor Author

@kfarnung
Copy link
Contributor Author

kfarnung commented Jul 3, 2018

@kfarnung
Copy link
Contributor Author

kfarnung commented Jul 3, 2018

@mhdawson Any other issues? I'm hoping to land this today, if possible

Copy link
Member

@mhdawson mhdawson left a comment

Choose a reason for hiding this comment

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

LGTM

@mhdawson
Copy link
Member

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?

kfarnung added a commit that referenced this pull request Jul 5, 2018
* 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>
@kfarnung kfarnung closed this Jul 5, 2018
@kfarnung
Copy link
Contributor Author

kfarnung commented Jul 5, 2018

Landed in 8476053

@kfarnung kfarnung deleted the napiver branch July 5, 2018 17:42
targos pushed a commit that referenced this pull request Jul 6, 2018
* 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>
@targos targos mentioned this pull request Jul 17, 2018
gabrielschulhof pushed a commit to gabrielschulhof/node that referenced this pull request Mar 4, 2019
* 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>
BethGriggs pushed a commit that referenced this pull request Mar 20, 2019
* 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>
@MylesBorins MylesBorins mentioned this pull request Mar 26, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
c++ Issues and PRs that require attention from people who are familiar with C++. doc Issues and PRs related to the documentations. lib / src Issues and PRs related to general changes in the lib or src directory. node-api Issues and PRs related to the Node-API.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

7 participants