Skip to content

Commit 3d0b233

Browse files
gabrielschulhofrichardlau
authored andcommitted
node-api: introduce experimental feature flags
Add a flag for each experimental feature to indicate its presence. That way, if we compile with `NAPI_EXPERIMENTAL` turned on, we'll be able to distinguish between what `NAPI_EXPERIMENTAL` used to mean on an old version of the headers when compiling against such an old version, and what it means on a new version of Node.js. PR-URL: #50991 Reviewed-By: Michael Dawson <[email protected]> Reviewed-By: Vladimir Morozov <[email protected]> Reviewed-By: Chengzhong Wu <[email protected]> Backport-PR-URL: #51804 (cherry picked from commit 727dd28)
1 parent 931d02f commit 3d0b233

File tree

3 files changed

+8
-0
lines changed

3 files changed

+8
-0
lines changed

doc/contributing/adding-new-napi-api.md

+4
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ Node-API.
3434
* Experimental APIs **must** be documented as such.
3535
* Experimental APIs **must** require an explicit compile-time flag
3636
(`#define`) to be set to opt-in.
37+
* A feature flag of the form `NODE_API_EXPERIMENTAL_HAS_<FEATURE>` **must**
38+
be added with each experimental feature in order to allow code to
39+
distinguish between experimental features as present in one version of
40+
Node.js versus another.
3741
* Experimental APIs **must** be considered for backport.
3842
* Experimental status exit criteria **must** involve at least the
3943
following:

doc/contributing/releases-node-api.md

+2
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ and update the define version guards with the release version:
100100
+ #endif // NAPI_VERSION >= 10
101101
```
102102
103+
Remove any feature flags of the form `NODE_API_EXPERIMENTAL_HAS_<FEATURE>`.
104+
103105
Also, update the Node-API version value of the `napi_get_version` test in
104106
`test/js-native-api/test_general/test.js` with the release version `x`:
105107

src/js_native_api.h

+2
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ NAPI_EXTERN napi_status NAPI_CDECL napi_create_string_utf16(napi_env env,
9393
size_t length,
9494
napi_value* result);
9595
#ifdef NAPI_EXPERIMENTAL
96+
#define NODE_API_EXPERIMENTAL_HAS_EXTERNAL_STRINGS
9697
NAPI_EXTERN napi_status NAPI_CDECL
9798
node_api_create_external_string_latin1(napi_env env,
9899
char* str,
@@ -518,6 +519,7 @@ NAPI_EXTERN napi_status NAPI_CDECL napi_add_finalizer(napi_env env,
518519
#endif // NAPI_VERSION >= 5
519520

520521
#ifdef NAPI_EXPERIMENTAL
522+
#define NODE_API_EXPERIMENTAL_HAS_POST_FINALIZER
521523

522524
NAPI_EXTERN napi_status NAPI_CDECL
523525
node_api_post_finalizer(napi_env env,

0 commit comments

Comments
 (0)