node/test/node-api/test_threadsafe_function
Gabriel Schulhof 7a216d5fd6
node-api: segregate nogc APIs from rest via type system
We define a new type called `node_api_nogc_env` as the `const` version
of `napi_env` and `node_api_nogc_finalize` as a variant of
`napi_finalize` that accepts a `node_api_nogc_env` as its first
argument.

We then modify those APIs which do not affect GC state as accepting a
`node_api_nogc_env`. APIs accepting finalizer callbacks are modified to
accept `node_api_nogc_finalize` callbacks. Thus, the only way to attach
a `napi_finalize` callback, wherein Node-APIs affecting GC state may be
called is to call `node_api_post_finalizer` from a
`node_api_nogc_finalize` callback.

In keeping with the process of introducing new Node-APIs, this feature
is guarded by `NAPI_EXPERIMENTAL`. Since this feature modifies APIs
already marked as stable, it is additionally guared by
`NODE_API_EXPERIMENTAL_NOGC_ENV`, so as to provide a further buffer to
adoption. Nevertheless, both guards must be removed upon releasing a
new version of Node-API.

PR-URL: https://github.com/nodejs/node/pull/50060
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Reviewed-By: Vladimir Morozov <vmorozov@microsoft.com>
Reviewed-By: Michael Dawson <midawson@redhat.com>
2023-12-19 07:37:15 +00:00
..
binding.c node-api: emit uncaught-exception on unhandled tsfn callbacks 2022-05-27 13:32:08 -04:00
binding.gyp node-api: enable uncaught exceptions policy by default 2023-09-25 04:23:58 +00:00
test.js test: add trailing commas in test/node-api 2023-01-29 20:01:09 +01:00
test_legacy_uncaught_exception.js node-api: enable uncaught exceptions policy by default 2023-09-25 04:23:58 +00:00
test_uncaught_exception.c node-api: segregate nogc APIs from rest via type system 2023-12-19 07:37:15 +00:00
test_uncaught_exception.js node-api: enable uncaught exceptions policy by default 2023-09-25 04:23:58 +00:00
test_uncaught_exception_v9.js node-api: enable uncaught exceptions policy by default 2023-09-25 04:23:58 +00:00
uncaught_exception.js node-api: enable uncaught exceptions policy by default 2023-09-25 04:23:58 +00:00