Skip to content

Commit

Permalink
n-api: mark thread-safe function as stable
Browse files Browse the repository at this point in the history
Fixes: #24249
PR-URL: #25556
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
  • Loading branch information
Gabriel Schulhof authored and targos committed Jan 24, 2019
1 parent 5440f9d commit 2b18582
Show file tree
Hide file tree
Showing 7 changed files with 23 additions and 24 deletions.
22 changes: 11 additions & 11 deletions doc/api/n-api.md
Original file line number Diff line number Diff line change
Expand Up @@ -282,15 +282,15 @@ This is an opaque pointer that is used to represent a JavaScript value.

### napi_threadsafe_function

> Stability: 1 - Experimental
> Stability: 2 - Stable

This is an opaque pointer that represents a JavaScript function which can be
called asynchronously from multiple threads via
`napi_call_threadsafe_function()`.

### napi_threadsafe_function_release_mode

> Stability: 1 - Experimental
> Stability: 2 - Stable

A value to be given to `napi_release_threadsafe_function()` to indicate whether
the thread-safe function is to be closed immediately (`napi_tsfn_abort`) or
Expand All @@ -305,7 +305,7 @@ typedef enum {

### napi_threadsafe_function_call_mode

> Stability: 1 - Experimental
> Stability: 2 - Stable

A value to be given to `napi_call_threadsafe_function()` to indicate whether
the call should block whenever the queue associated with the thread-safe
Expand Down Expand Up @@ -400,7 +400,7 @@ typedef void (*napi_async_complete_callback)(napi_env env,

#### napi_threadsafe_function_call_js

> Stability: 1 - Experimental
> Stability: 2 - Stable

Function pointer used with asynchronous thread-safe function calls. The callback
will be called on the main thread. Its purpose is to use a data item arriving
Expand Down Expand Up @@ -4526,7 +4526,7 @@ prevent the event loop from exiting. The APIs `napi_ref_threadsafe_function` and

### napi_create_threadsafe_function

> Stability: 1 - Experimental
> Stability: 2 - Stable

<!-- YAML
added: v10.6.0
Expand Down Expand Up @@ -4569,7 +4569,7 @@ parameters and with `undefined` as its `this` value.

### napi_get_threadsafe_function_context

> Stability: 1 - Experimental
> Stability: 2 - Stable

<!-- YAML
added: v10.6.0
Expand All @@ -4587,7 +4587,7 @@ This API may be called from any thread which makes use of `func`.

### napi_call_threadsafe_function

> Stability: 1 - Experimental
> Stability: 2 - Stable

<!-- YAML
added: v10.6.0
Expand Down Expand Up @@ -4615,7 +4615,7 @@ This API may be called from any thread which makes use of `func`.

### napi_acquire_threadsafe_function

> Stability: 1 - Experimental
> Stability: 2 - Stable

<!-- YAML
added: v10.6.0
Expand All @@ -4637,7 +4637,7 @@ This API may be called from any thread which will start making use of `func`.

### napi_release_threadsafe_function

> Stability: 1 - Experimental
> Stability: 2 - Stable

<!-- YAML
added: v10.6.0
Expand Down Expand Up @@ -4665,7 +4665,7 @@ This API may be called from any thread which will stop making use of `func`.

### napi_ref_threadsafe_function

> Stability: 1 - Experimental
> Stability: 2 - Stable

<!-- YAML
added: v10.6.0
Expand All @@ -4686,7 +4686,7 @@ This API may only be called from the main thread.

### napi_unref_threadsafe_function

> Stability: 1 - Experimental
> Stability: 2 - Stable

<!-- YAML
added: v10.6.0
Expand Down
2 changes: 1 addition & 1 deletion src/js_native_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
#define NAPI_VERSION NAPI_VERSION_EXPERIMENTAL
#else
// The baseline version for N-API
#define NAPI_VERSION 3
#define NAPI_VERSION 4
#endif
#endif

Expand Down
4 changes: 2 additions & 2 deletions src/node_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ NAPI_EXTERN napi_status napi_close_callback_scope(napi_env env,

#endif // NAPI_VERSION >= 3

#ifdef NAPI_EXPERIMENTAL
#if NAPI_VERSION >= 4

// Calling into JS from other threads
NAPI_EXTERN napi_status
Expand Down Expand Up @@ -230,7 +230,7 @@ napi_unref_threadsafe_function(napi_env env, napi_threadsafe_function func);
NAPI_EXTERN napi_status
napi_ref_threadsafe_function(napi_env env, napi_threadsafe_function func);

#endif // NAPI_EXPERIMENTAL
#endif // NAPI_VERSION >= 4

EXTERN_C_END

Expand Down
12 changes: 6 additions & 6 deletions src/node_api_types.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
typedef struct napi_callback_scope__* napi_callback_scope;
typedef struct napi_async_context__* napi_async_context;
typedef struct napi_async_work__* napi_async_work;
#ifdef NAPI_EXPERIMENTAL
#if NAPI_VERSION >= 4
typedef struct napi_threadsafe_function__* napi_threadsafe_function;
#endif // NAPI_EXPERIMENTAL
#endif // NAPI_VERSION >= 4

#ifdef NAPI_EXPERIMENTAL
#ifdef NAPI_VERSION >= 4
typedef enum {
napi_tsfn_release,
napi_tsfn_abort
Expand All @@ -20,19 +20,19 @@ typedef enum {
napi_tsfn_nonblocking,
napi_tsfn_blocking
} napi_threadsafe_function_call_mode;
#endif // NAPI_EXPERIMENTAL
#endif // NAPI_VERSION >= 4

typedef void (*napi_async_execute_callback)(napi_env env,
void* data);
typedef void (*napi_async_complete_callback)(napi_env env,
napi_status status,
void* data);
#ifdef NAPI_EXPERIMENTAL
#ifdef NAPI_VERSION >= 4
typedef void (*napi_threadsafe_function_call_js)(napi_env env,
napi_value js_callback,
void* context,
void* data);
#endif // NAPI_EXPERIMENTAL
#endif // NAPI_VERSION >= 4

typedef struct {
uint32_t major;
Expand Down
2 changes: 1 addition & 1 deletion src/node_version.h
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,6 @@
#define NODE_MODULE_VERSION 67

// the NAPI_VERSION provided by this version of the runtime
#define NAPI_VERSION 3
#define NAPI_VERSION 4

#endif // SRC_NODE_VERSION_H_
4 changes: 2 additions & 2 deletions test/js-native-api/test_general/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ assert.notStrictEqual(test_general.testGetPrototype(baseObject),
test_general.testGetPrototype(extendedObject));

// test version management functions
// expected version is currently 3
assert.strictEqual(test_general.testGetVersion(), 3);
// expected version is currently 4
assert.strictEqual(test_general.testGetVersion(), 4);

[
123,
Expand Down
1 change: 0 additions & 1 deletion test/node-api/test_threadsafe_function/binding.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
// which, in turn, may affect the ABI stability of the project despite its use
// of N-API.
#include <uv.h>
#define NAPI_EXPERIMENTAL
#include <node_api.h>
#include "../../js-native-api/common.h"

Expand Down

0 comments on commit 2b18582

Please sign in to comment.