Commit graph

511 commits

Author SHA1 Message Date
Louis
43415251b8
feat(napi): allow Reference as a class method param (#1966)
As of before this commit, there was a lock in the codegen preventing Reference
from being used as a function argument outside of a Reference<Self>.

This changes it, allowing Reference of any class to be added as a class method
argument anywhere. It has the same limitations as reference, as in it requires
the class to have been created with a factory or constructor. This change
implements FromNapiValue on Reference, which will unwrap the class and call the
existing from_value_ptr method. It also updated typegen so that we only emit
the reference type if we're in an impl block that doesn't match the Reference
we're getting. This ensures that typegen works as expected with the previous
behaviour.
2024-02-22 22:37:50 +08:00
LongYinan
33cf208758
Release independent packages
napi@2.15.4
2024-02-22 19:01:18 +08:00
Tom Barham
ebd5eef267
fix(napi): require static lifetime on add_finalizer callback (#1968)
Co-authored-by: LongYinan <lynweklm@gmail.com>
2024-02-22 18:40:04 +08:00
Louis
5b5f616d81
fix(napi): no hard fail on ThreadsafeFunction::call_async (#1970)
For many reasons, in an app we can end up in a scenario where the thread / task that initially called the ThreadsafeFunction gets interrupted. This means that the receiver would get collected, should a ThreadsafeFunction be awaited on the said thread. This will create an error when the ThreadsafeFunction's callback will be called, and call a napi_fatal_error.

This change makes it so that if the send errors, this error is hidden and thus prevents any hard failure. If a ThreadsafeFunction is called in such a case, its output won't be used, but we'll still run all the logic to ensure it ran properly.

Fixes https://github.com/napi-rs/napi-rs/issues/1665 - cc @Brooooooklyn
2024-02-22 17:34:10 +08:00
LongYinan
8855f18f50
Release independent packages
napi@2.15.3
2024-02-21 23:16:27 +08:00
Louis
9391196eef
fix(napi): prevent memory leak when Custom GC is used (#1963)
There is a piece of custom logic that has been added a while back to ensure
that Buffers can be sent across threads, and be dropped properly. This involves
a custom GC that runs on NodeJS's current thread (per my understanding). The
logic to drop the buffer on that custom GC differed from the one in the Drop
impl. This meant that everytime Node sent a buffer back to a napi-rs function,
the reference wouldn't be cleaned up properly, and it would leak (96 bytes per
Reference on an ARM MacOS machine).

This commit updates the logic in the custom GC so that it matches the one in
the Drop impl. This worked locally, and fixed any occurence of the leak I could
find.
2024-02-20 20:36:21 +08:00
Louis
90e3a349db
fix: remove outdated rustdoc about tokio channels (#1961)
This seems to be a relic of when napi-rs used channels to send data to the
tokio runtime. This removes the outdated doc, as this could be misleading if
one wants to understand what those channels are about.
2024-02-20 16:36:29 +08:00
LongYinan
9e44fd635b
fix(napi-derive): napi-derive-backend version 2024-02-20 15:17:43 +08:00
LongYinan
95af8065c0
Release independent packages
napi-build@2.1.2
2024-02-19 19:10:16 +08:00
LongYinan
ad35076d07
fix(cli,build): build params (#1960) 2024-02-19 18:09:34 +08:00
LongYinan
f7376f1e97
Release independent packages
napi-build@2.1.1
2024-02-18 22:05:20 +08:00
LongYinan
08b1f689bf
feat(cli,build): support setjmp.h (#1958) 2024-02-18 21:45:19 +08:00
LongYinan
97039b2f08
Release independent packages
- napi@2.15.2
- napi-derive@2.15.2
2024-02-17 22:58:31 +08:00
LongYinan
c49309fdc2
fix(napi): memory leak while using Reference (#1954)
- Close https://github.com/napi-rs/napi-rs/issues/1952
2024-02-17 22:14:27 +08:00
LongYinan
20e0983288
style: apply clippy fix (#1953) 2024-02-17 14:12:24 +08:00
LongYinan
5ac153388f
feat(napi): accept slice as TypedArray (#1951) 2024-02-15 23:40:45 +08:00
LongYinan
d7dc4dc5a2
feat(napi): extends the Map types interoperability (#1950) 2024-02-15 15:43:21 +08:00
LongYinan
b6adf8ae5c
Release independent packages
napi-derive@2.15.1
2024-02-08 20:41:49 +08:00
LongYinan
adbd34c0b9
fix(napi-derive): serde Number typing (#1941) 2024-02-08 18:20:46 +08:00
LongYinan
5b66467e09
Release independent packages
- napi@2.15.1
2024-02-01 22:16:22 +08:00
jkomyno
a5f3b2e78c fix(napi): in "Object::get", return null values wrapped in a "Some" 2024-01-31 15:50:58 +01:00
Janrupf
ac3626a023
fix(napi): Fix buffer corruption and soundness issues (#1923)
* fix(napi): Fix buffer corruption and soundness issues

* test: fix tests to conform to buffer API
2024-01-29 18:32:28 +08:00
LongYinan
a6aaa94e7d
Release independent packages
- napi@2.15.0
- napi-derive@2.15.0
2024-01-26 14:32:24 +08:00
LongYinan
f625328868
fix(napi): move JsValuesTupleIntoVec trait to function.rs 2024-01-26 14:32:24 +08:00
LongYinan
f69771e2d4
fix(napi-derive): JsArrayBuffer generated type 2024-01-26 14:32:24 +08:00
LongYinan
b9ba7c9d68
fix(napi): memory issue while creating external buffer on electron 2024-01-26 14:32:24 +08:00
LongYinan
aff95d0271
chore(napi): remove napi_val on Ref because it is unused 2024-01-26 03:29:52 +00:00
LongYinan
12503a8061
chore(napi): delete unwrap_from_ref API because it was never work 2024-01-26 02:58:53 +00:00
LongYinan
fecd0d8049
Update crates/napi/src/bindgen_runtime/js_values/function.rs 2024-01-26 02:27:46 +00:00
LongYinan
5be7ab0f6b
feat(napi): new Function/FunctionRef API 2024-01-26 02:27:46 +00:00
LongYinan
134707ef1d
fix(napi): callback in execute_tokio_future does not need to be Send (#1917)
The resolver does not need to be `Send` or `Sync`, because it's assumed to be called from the same thread that the JavaScript thread is running on.
2024-01-26 10:27:17 +08:00
LongYinan
69d2a75384
Release independent packages
- napi@2.14.4
2024-01-24 17:20:46 +08:00
LongYinan
e332270698
fix(napi): future in block_on do not need to be send 2024-01-24 17:20:31 +08:00
LongYinan
3cbae4e8c1
Release independent packages
- napi@2.14.3
2024-01-24 17:16:41 +08:00
LongYinan
38568c2693
chore(napi): expose spawn_blocking on tokio runtime (#1912) 2024-01-24 17:15:36 +08:00
LongYinan
b4345d1375
fix(napi): block_on type (#1911) 2024-01-24 17:13:42 +08:00
Ranger
4d82737efe
chore: fix async_work status typo (#1883) 2024-01-02 13:23:45 +08:00
LongYinan
03eb476cef
Release independent packages
- napi@2.14.2
2023-12-31 22:08:11 +08:00
LongYinan
65273a4631
chore(napi): add status to error messages in AsyncWork (#1880) 2023-12-30 11:56:36 +08:00
LongYinan
43a080d52b
fix(napi): apply clippy suggestions (#1878) 2023-12-29 23:08:56 +08:00
LongYinan
5825dcc3a6
Release independent packages
- napi-derive@2.14.6
2023-12-27 22:10:41 +08:00
LongYinan
84f3092d70
fix(napi-derive): proc-macro crash on enum (#1870) 2023-12-27 21:18:02 +08:00
LongYinan
85807ad790
Release independent packages
- napi-derive@2.14.5
2023-12-27 12:53:10 +08:00
LongYinan
02dd4c3fd3
fix(napi-derive): catch_unwind on constructor (#1869)
- Close https://github.com/napi-rs/napi-rs/issues/1852
2023-12-27 12:49:10 +08:00
liuyi
6f40f94d09
fix(napi-derive): more accurate napi expanding error (#1854) 2023-12-13 15:23:00 +08:00
LongYinan
af248435ac
Release independent packages
- napi-derive@2.14.4
2023-12-13 13:27:53 +08:00
liuyi
e32c105a26
fix(napi-derive): upgrade syn (#1849) 2023-12-13 12:40:01 +08:00
LongYinan
1dda26e6cd
Release independent packages
napi-derive@2.14.3
2023-12-11 10:52:55 +08:00
LongYinan
dab4ce7fe0
fix(napi-derive,cli): register function cross crates (#1848) 2023-12-11 00:36:26 +08:00
renovate[bot]
8d3d60c356
fix(deps): update rust crate once_cell to 1.19 (#1845)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-07 22:23:43 +08:00