Commit graph

396 commits

Author SHA1 Message Date
LongYinan
b42410182e
Release independent packages
napi@2.10.10

napi-derive@2.10.0
2023-01-24 21:59:53 +08:00
LongYinan
ab81f4126b
chore(napi-derive): allow unsafe async &mut self (#1453) 2023-01-24 20:41:57 +08:00
LongYinan
e3adf5dac4
fix(napi): unhandled promise rejection while using EitherN<Promise<..>> (#1452) 2023-01-24 19:07:33 +08:00
LongYinan
54dd120880
fix(napi): add UnknownReturnValue to use in call_async scenario (#1451) 2023-01-24 17:41:36 +08:00
LongYinan
694f761fd9
fix(napi): throw fatal error if cast return value failed (#1450) 2023-01-24 16:32:40 +08:00
LongYinan
c8352a1fb0
feat(napi-derive): allow partial implement From/To Napivalue for Object (#1448) 2023-01-24 14:51:16 +08:00
LongYinan
e79eb34118
feat(napi-derive): generate ThreadsafeFunction types (#1449) 2023-01-24 14:25:05 +08:00
LongYinan
02daa90058
chore(napi): implement FromNapiValue for ThreadsafeFunction (#1447) 2023-01-24 12:16:24 +08:00
LongYinan
c51d657224
Release independent packages
- napi@2.10.9
- napi-sys@2.2.3
2023-01-19 17:30:12 +08:00
LongYinan
fda0aa0eec
fix(napi): fallback to copy buffer if zero copy is not allowed (#1445) 2023-01-19 17:26:59 +08:00
LongYinan
0848746534
Release independent packages
napi@2.10.8
2023-01-18 11:21:22 +08:00
LongYinan
6739ddda20
fix(napi): remove useless aquire while creating ThreadsafeFunction (#1442) 2023-01-18 11:20:47 +08:00
LongYinan
3db49adcdc
Release independent packages
napi@2.10.7
2023-01-17 00:06:43 +08:00
LongYinan
46f08ee6dd
fix(napi): missing From implementation for Bigint (#1440) 2023-01-17 00:05:19 +08:00
LongYinan
f14799f0b7
Release independent packages
napi-derive@2.9.5
2023-01-14 18:30:59 +08:00
Hana
78b6e1574a
fix(napi-derive): fix union type generation for ts function notation (#1439)
* fix(backend): fix union type generation for ts function notation

* chore: update snapshot

* fix: naming
2023-01-14 18:27:46 +08:00
LongYinan
be805b684d
Release independent packages
napi-derive@2.9.4
2023-01-13 16:57:47 +08:00
Hana
976acc773e
fix(napi-derive): remove ts type on field attrs (#1436) 2023-01-12 13:32:59 +08:00
LongYinan
38390dbef9
Release independent packages
napi@2.10.6
2023-01-11 22:02:19 +08:00
HeYunfei
d06bd23351
fix(napi): should correctly return while dropping Buffer (#1434) 2023-01-11 20:09:39 +08:00
LongYinan
dc3a4c9f25
feat(napi): refactor ThreadsafeFunction to allow get return value of it (#1427) 2023-01-11 18:54:45 +08:00
LongYinan
5492a0b9e9
fix(napi): delete reference should be after global custom gc (#1433) 2023-01-11 17:31:03 +08:00
LongYinan
3d3fa533d9
Release independent packages
napi@2.10.5
2023-01-09 17:21:54 +08:00
LongYinan
ad3ac5abc7
fix(napi): array buffer drop notify never be called in cloned buffer (#1424) 2023-01-09 16:58:26 +08:00
overlookmotel
ce2a29fca7
fix(napi): arraybuffer memory leak (#1420) 2023-01-09 14:47:36 +08:00
LongYinan
76a16be0eb
Release independent packages
napi@2.10.4
2022-12-29 16:00:09 +08:00
LongYinan
877d631d99
fix(napi): only delete reference in custom gc 2022-12-29 14:48:00 +08:00
LongYinan
d2a492a2d0
fix(napi): require higher version of once_cell 2022-12-29 14:27:33 +08:00
Xiaopeng Li
ce4c28412a
fix(napi): promise leak (#1403)
Co-authored-by: Xiaopeng Li <lixiaopeng.jetspark@bytedance.com>
2022-12-29 00:15:55 +08:00
LongYinan
1bcb3a3628
Release independent packages
napi@2.10.3
2022-12-19 19:49:11 +08:00
LongYinan
ef5dffca80
fix(napi): add back custom gc for Send Buffer (#1399) 2022-12-19 19:11:53 +08:00
LongYinan
328b84eb8f
style: run format 2022-12-17 00:14:05 +08:00
LongYinan
f8d1dcee5b
Merge pull request #1395 from napi-rs/tweaks-code
chore(napi): reduce Mutex usage while loading addon
2022-12-16 23:13:36 +08:00
LongYinan
e370dee545
chore(napi): remove useless de_init 2022-12-16 21:50:49 +08:00
LongYinan
6e4b16fe5d
style: clippy fix 2022-12-16 20:19:39 +08:00
LongYinan
968d9e10b1
chore(napi): fix tokio destroy logic 2022-12-16 20:07:22 +08:00
F001
d2531352aa
feat(napi): add "run_script" for "Env" (#1393)
* add "run_script" for "Env"

* Apply suggestions from code review

use `AsRef<str>` instead of `&str`

Co-authored-by: LongYinan <lynweklm@gmail.com>

* use `AsRef<str>` instead of `&str`

Co-authored-by: LongYinan <lynweklm@gmail.com>
2022-12-16 15:56:36 +08:00
LongYinan
e88fbcc404
chore(napi): remove more thread_local usage 2022-12-16 15:54:29 +08:00
LongYinan
5bd6c78b5a
chore(napi): expose tokio runtime 2022-12-16 14:35:30 +08:00
LongYinan
c01bcecb2b
chore(napi): reduce the complex about destroying tokio runtime 2022-12-16 14:32:32 +08:00
Patrick Pilch
486ce35c82
fix(napi): napi_create_async_work incorrect argument (napi-rs#1392) (#1396)
The third argument to `napi_create_async_work` (async_resource_name)
should be a `napi_value` that corresponds to a null-terminated utf-8
string.

This resolves errors running Next.js with GraalVM.

oracle/graal#5582
oracle/graal#5581
2022-12-16 13:59:15 +08:00
LongYinan
a9f9dbb232
chore(napi): reduce Mutex usage while loading addon 2022-12-16 13:41:16 +08:00
LongYinan
f6ac154378
Release independent packages
napi-derive@2.9.3
2022-12-09 18:59:54 +08:00
Simon Vandel Sillesen
00b09bca6e
fix(napi): better error message for #[napi(catch_unwind)] (#1383)
Before, the JS error would only have `Any { .. }`
2022-12-09 18:37:10 +08:00
LongYinan
25fb299ac6
Release independent packages
napi@2.10.2
napi-derive@2.9.2
2022-12-09 00:41:03 +08:00
nihohit
1cf32631bf
fix(napi): typed arrays ref shouldn't use offset. (#1376)
Notice from the n-api docs that the data returned from
`napi_get_typedarray_info` is already adjusted by the byte offset.
https://nodejs.org/api/n-api.html#napi_get_typedarray_info

This means that when `as_ref`/`as_mut` apply the byte offset, the
offset is in practice applied twice.
This wasn't caught in tests because no test tried to modify a typed
array with a byte offset, and the test didn't us the typed array
structs, only `JsTypedArray`. If you want, I can modify the rest of the
functions in examples/napi-compt-mode/src/arraybuffers.rs
and the matching tests, to test all typed arrays.

IMO the `byte_offset` field can be removed entirely from the struct,
but I wanted to submit a minimal PR.
2022-11-30 20:54:13 +08:00
LongYinan
573f67b90f
chore(napi-derive): make_ref tweaks (#1371) 2022-11-22 23:17:44 +08:00
Jacob Kiesel
618d0f8046
fix(napi-derive): unsound behavior while using reference and async together 2022-11-22 00:17:19 +08:00
Simon Laux
035def0600
fix(napi): return the join handle when spawning a tokio task. (#1351)
we need this to be able to safely drop an struct,
that makes use of an async task.
the drop function needs to be able to call `.abort()`
on the join handle to avoid memory corruption and undefined bahviour.
2022-11-15 11:50:25 +08:00
Simon Laux
b0c248ad7e
chore(napi): expose tokio runtime's block_on function (#1352) 2022-11-15 11:49:46 +08:00
LongYinan
9816a77729
Release independent packages
napi@2.10.1
2022-11-12 13:39:04 +08:00
LongYinan
3dde26bcef
chore(napi): including type message in error message (#1350) 2022-10-24 00:16:30 +08:00
Wodann
77060adb3d
fix(napi): BigInt::get_u64 lossless check (#1348) 2022-10-22 11:16:08 +08:00
LongYinan
a12bdc4359
Release independent packages
- napi@2.10.0
2022-10-04 17:17:13 +08:00
Devon Govett
5541d650a9
feat(napi): add threadsafe deferred values (#1306) 2022-10-03 13:00:48 +08:00
LongYinan
a5a04a4e54
fix(napi): make Buffer/ArrayBuffer truely Send/Sync safe 2022-10-03 11:34:46 +08:00
LongYinan
47de6301ee
fix(napi): should also delete the reference while dropping the Buffer 2022-10-02 10:14:25 +08:00
user.tax
e54c37a0b1
feat(napi): add support for Vec<(std::string::String, u16)> and some other small change (#1320) 2022-09-20 12:13:07 +08:00
user.tax
0d49b45ea9
feat(napi): add impl<T: Into<Vec<u8>>> From<T> for Uint8Array (#1317)
Co-authored-by: any <any@user.tax>
2022-09-16 23:15:29 +08:00
LongYinan
ea18170779
fix(napi): propagation error in function call (#1315) 2022-09-14 19:30:43 +08:00
Devon Govett
5ba70b0e1a
fix(napi): improve error propagation (#1303) 2022-09-14 17:03:11 +08:00
LongYinan
f3c203d46e
Release independent packages
napi@2.9.1
napi-derive@2.9.1
2022-09-08 17:27:35 +08:00
Dennis Duda
fc63ba8b52
fix(napi): some of the unsoundness in Buffer (#1294)
* fix leaked napi refcount in `Buffer` when cloning

Cloning unconditionally increased the refcount in `Buffer::clone`, but only called `napi_reference_unref` on dropping the last Buffer (the one with `strong_count == 1`). This means that the refcount will never drop back to zero after cloning, leaking the Buffer.

This commit changes it to also unconditionally unref the buffer.

* fix multiple sources of UB in `Buffer`

- `slice::from_raw_parts` may never be created with a null pointer, but `napi_get_buffer_info` was not sufficiently checked → UB when passing an empty Buffer
- `&'static mut [u8],` is invalid, as it certainly doesn't live for `'static`

Switching to `NonNull<u8>` and a `len` field fixes both of these.

- I also don't really understand how the `impl ToNapiValue for &mut Buffer` could have been sound. It creates an entirely new `Arc`, but reuses the same `Vec` allocation, leading to... a double free of the `Vec` on drop? I have replaced it with a simple call to `clone` instead.

* remove overcomplicated bool and drop impl

As far as I can tell, by just removing the bool and letting the drop code do its thing we clean up correctly in all cases. Because `napi_create_external_buffer` gets an owned `Buffer` attached to it via the Box, we can rely on `from_raw` retrieving it in the `drop_buffer` function.
2022-09-05 13:04:43 +08:00
mat-if
26f6c926d3
chore(napi-derive): pin minimum usable version of dependency syn (#1293) 2022-09-01 10:50:48 +08:00
LongYinan
32a039aad0
fix(napi-derive): should not generate this types for Constructor/Getter/Setter 2022-08-30 16:39:51 +08:00
LongYinan
525d881590
fix(napi): remove previous reference if value_ref existed
Usually happens while using ZST
2022-08-25 21:51:06 +08:00
LongYinan
767c040d94
Release independent packages
- napi@2.9.0
- napi-derive@2.9.0
2022-08-23 22:27:53 +08:00
LongYinan
4153c03a9f
Merge pull request #1286 from napi-rs/f32-to-napi-value
feat(napi): implement ToNapiValue for f32
2022-08-23 17:03:01 +08:00
LongYinan
f7c00c9a90
feat(napi): implement as_unknown and validate for Either types (#1285) 2022-08-23 17:02:51 +08:00
LongYinan
49ec8917df
feat(napi): implement as_object and validate for ClassInstance (#1284) 2022-08-23 17:02:41 +08:00
LongYinan
36275438ad
chore(napi): misc cleanup 2022-08-23 16:18:08 +08:00
LongYinan
03e80361d9
feat(napi): implement ToNapiValue for f32 2022-08-23 16:18:08 +08:00
messense
99e17c7294
fix(napi): segfault when ThreadsafeFunction's callback closure captures data (#1281) 2022-08-20 22:40:26 +08:00
LongYinan
b7a3103f0c
feat(napi-derive): catch_unwind attribute (#1280) 2022-08-19 23:36:36 +08:00
Fy
bc69e15efb
fix(napi-derive): fix macro expansion naming shadow (#1278)
Co-authored-by: fengyu <fengyu.shelby@bytedance.com>
2022-08-19 11:05:09 +08:00
LongYinan
5ba603459b
Release independent packages
napi@2.8.0
napi-derive@2.8.0
2022-08-17 23:12:05 +08:00
iuser
13996c1864
feat(napi): error_anyhow feature 2022-08-17 22:50:52 +08:00
LongYinan
1cd4fda01e
feat(napi): add get and get_mut method on WeakReference 2022-08-17 21:29:03 +08:00
LongYinan
528b1d21cb
style: clippy fix 2022-08-17 18:16:01 +08:00
LongYinan
0ef482c6ca
feat(napi-derive): support inject This<Value> into raw function 2022-08-17 18:16:00 +08:00
LongYinan
711372e175
feat(napi-derive): implement instance_of for Class 2022-08-17 15:18:43 +08:00
LongYinan
2385b52a72
feat(napi): allow implement custom finalize logic for Class 2022-08-17 13:24:40 +08:00
huzz
fd191a4586
feat(napi): support rust array to js array 2022-08-12 17:53:36 +08:00
LongYinan
4412c28c6d
chore(napi): enhance error message when unwrap failed from JsObject (#1259) 2022-08-07 23:05:49 +08:00
LongYinan
a0c7176693
Release independent packages
- napi@2.7.0
- napi-derive@2.7.0
2022-08-07 12:51:15 +08:00
LongYinan
cb9239d8dc
fix(napi): either for #[napi(object)] types (#1258) 2022-08-07 01:16:28 +08:00
Ivan Enderlin
6a9fdba8b6
feat(napi-derive) Support #[napi(strict)] on &T and &mut T. (#1238) 2022-08-06 21:55:35 +08:00
LongYinan
0f14799776
feat(napi-derive): support set property attribute in napi macro (#1257) 2022-08-06 21:54:58 +08:00
Jacob Kiesel
94e8e54b38
feat(napi): call sync functions within tokio runtime (#1242) 2022-08-04 00:12:35 +08:00
Dennis Duda
a9a62f225e
feat(napi): add derived traits to ThreadsafeFunctionCallMode (#1243)
This makes it possible to reuse the same value, e.g. when writing utility/helper functions.
2022-07-31 15:29:26 +08:00
Jacob Kiesel
1040c41760
feat(napi): add some useful derived traits for the Null type (#1241) 2022-07-22 23:45:02 +08:00
LongYinan
5b2bff79d4
Release independent packages
napi@2.6.3
2022-07-11 21:54:02 +08:00
LongYinan
16ec32b68e
fix(napi): memory leak in Buffer/ArrayBuffer 2022-07-11 21:34:27 +08:00
LongYinan
552ec43fae
fix(napi): use Mutex instead of Atomic in ThreadSafeFunction 2022-07-10 00:07:56 +08:00
LongYinan
a4448d3e24
Revert "fix(napi): memory leak in ThreadsafeFunction"
This reverts commit 4dfc770c2a.
2022-07-09 15:48:46 +08:00
LongYinan
3eccf45439
Release independent packages
napi@2.6.2
2022-07-08 13:50:37 +08:00
LongYinan
4dfc770c2a
fix(napi): memory leak in ThreadsafeFunction 2022-07-08 00:09:14 +08:00
Ivan Enderlin
1259ce1ba4 fix(napi) undefined is recognized as a valid None for Option<T>. 2022-07-07 15:50:55 +02:00
LongYinan
087b3ed594
Release independent packages
napi@2.6.1
2022-07-07 00:17:02 +08:00
LongYinan
bffc49f11a
fix(napi): drop buffer inner data only when Reference count is 0 2022-07-07 00:01:16 +08:00