@@ -33,23 +33,28 @@ properties:
3333 using `napi_get_last_error_info`. More information can be found in the error
3434 handling section [Error handling][].
3535
36+ ## Writing addons in various programming languages
37+
3638Node-API is a C API that ensures ABI stability across Node.js versions
37- and different compiler levels. A C++ API can be easier to use.
38- To support using C++, the project maintains a
39- C++ wrapper module called [`node-addon-api` ][].
40- This wrapper provides an inlinable C++ API. Binaries built
41- with `node-addon-api` will depend on the symbols for the Node-API C-based
42- functions exported by Node.js. `node-addon-api` is a more
43- efficient way to write code that calls Node-API. Take, for example, the
44- following `node-addon-api` code. The first section shows the
45- `node-addon-api` code and the second section shows what actually gets
46- used in the addon.
39+ and different compiler levels. With this stability guarantee, it is possible
40+ to write addons in other programming languages on top of Node-API. Refer
41+ to [language and engine bindings ][] for more programming languages and engines
42+ support details.
43+
44+ [ `node-addon-api`][] is the official C++ binding that provides a more efficient way to
45+ write C++ code that calls Node-API. This wrapper is a header-only library that offers an inlinable C++ API.
46+ Binaries built with `node-addon-api` will depend on the symbols of the Node-API
47+ C-based functions exported by Node.js. The following code snippet is an example
48+ of `node- addon-api`:
4749
4850```cpp
4951Object obj = Object::New(env);
5052obj["foo"] = String::New(env, "bar");
5153```
5254
55+ The above `node-addon-api` C++ code is equivalent to the following C-based
56+ Node-API code:
57+
5358```cpp
5459napi_status status;
5560napi_value object, string;
@@ -72,8 +77,9 @@ if (status != napi_ok) {
7277}
7378```
7479
75- The end result is that the addon only uses the exported C APIs. As a result,
76- it still gets the benefits of the ABI stability provided by the C API.
80+ The end result is that the addon only uses the exported C APIs. Even though
81+ the addon is written in C++, it still gets the benefits of the ABI stability
82+ provided by the C Node-API.
7783
7884When using `node-addon-api` instead of the C APIs, start with the API [docs][]
7985for `node-addon-api`.
@@ -6887,6 +6893,7 @@ the add-on's file name during loading.
68876893[externals]: #napi_create_external
68886894[global scope]: globals.md
68896895[gyp-next]: https://github.com/nodejs/gyp-next
6896+ [language and engine bindings]: https://github.com/nodejs/abi-stable-node/blob/doc/node-api-engine-bindings.md
68906897[module scope]: modules.md#the-module-scope
68916898[node-gyp]: https://github.com/nodejs/node-gyp
68926899[node-pre-gyp]: https://github.com/mapbox/node-pre-gyp
0 commit comments