Skip to content

refactor(napi): allow create BufferSlice from external data#2263

Merged
Brooooooklyn merged 1 commit intomainfrom
09-19-refactor_napi_allow_create_bufferslice_from_external_data
Sep 19, 2024
Merged

refactor(napi): allow create BufferSlice from external data#2263
Brooooooklyn merged 1 commit intomainfrom
09-19-refactor_napi_allow_create_bufferslice_from_external_data

Conversation

@Brooooooklyn
Copy link
Copy Markdown
Member

  • also refactor the enum codegen, now we will not emit #[derive(Copy,
    Clone)] for the original enums.
  • also refacotr the fn codegen, now #[napi] fn can accept env: &Env as
    argument, this is useful when the return type contains lifetime

Copy link
Copy Markdown
Member Author

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @Brooooooklyn and the rest of your teammates on Graphite Graphite

Copy link
Copy Markdown
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark

Details
Benchmark suite Current: 5a0dcda Previous: cea1680 Ratio
noop#napi-rs 85057680 ops/sec (±1.25%) 85060343 ops/sec (±1.42%) 1.00
noop#JavaScript 812487242 ops/sec (±0.17%) 813539621 ops/sec (±0.08%) 1.00
Plus number#napi-rs 22341072 ops/sec (±0.61%) 22633442 ops/sec (±0.53%) 1.01
Plus number#JavaScript 812097693 ops/sec (±0.23%) 811824046 ops/sec (±0.08%) 1.00
Create buffer#napi-rs 631070 ops/sec (±13.09%) 637047 ops/sec (±12.84%) 1.01
Create buffer#JavaScript 2973204 ops/sec (±5.9%) 3029626 ops/sec (±2.44%) 1.02
createArray#createArrayJson 53433 ops/sec (±0.62%) 53399 ops/sec (±0.31%) 1.00
createArray#create array for loop 9837 ops/sec (±0.38%) 9915 ops/sec (±0.12%) 1.01
createArray#create array with serde trait 9841 ops/sec (±0.12%) 9898 ops/sec (±0.41%) 1.01
getArrayFromJs#get array from json string 24003 ops/sec (±0.56%) 23901 ops/sec (±0.35%) 1.00
getArrayFromJs#get array from serde 12778 ops/sec (±0.17%) 12743 ops/sec (±0.46%) 1.00
getArrayFromJs#get array with for loop 16603 ops/sec (±0.17%) 16789 ops/sec (±0.34%) 1.01
Get Set property#Get Set from native#u32 575253 ops/sec (±12.85%) 560151 ops/sec (±12.96%) 0.97
Get Set property#Get Set from JavaScript#u32 542316 ops/sec (±2.48%) 540696 ops/sec (±2.23%) 1.00
Get Set property#Get Set from native#string 559758 ops/sec (±11.76%) 550135 ops/sec (±12.02%) 0.98
Get Set property#Get Set from JavaScript#string 504741 ops/sec (±1.92%) 512411 ops/sec (±2.17%) 1.02
Async task#spawn task 26105 ops/sec (±0.38%) 25835 ops/sec (±1.05%) 0.99
Async task#ThreadSafeFunction 9302 ops/sec (±0.99%) 9241 ops/sec (±0.92%) 0.99
Async task#Tokio future to Promise 31255 ops/sec (±0.98%) 31583 ops/sec (±0.56%) 1.01
Query#query * 100 3477 ops/sec (±1.49%) 3507 ops/sec (±0.72%) 1.01
Query#query * 1 26284 ops/sec (±0.92%) 26303 ops/sec (±1.11%) 1.00

This comment was automatically generated by workflow using github-action-benchmark.

@Brooooooklyn Brooooooklyn force-pushed the 09-19-refactor_napi_allow_create_bufferslice_from_external_data branch from c0e9726 to 717b30c Compare September 19, 2024 14:07
- also refactor the enum codegen, now we will not emit #[derive(Copy,
  Clone)] for the original enums.
- also refacotr the fn codegen, now #[napi] fn can accept env: &Env as
  argument, this is useful when the return type contains lifetime
@Brooooooklyn Brooooooklyn force-pushed the 09-19-refactor_napi_allow_create_bufferslice_from_external_data branch from 717b30c to 5a0dcda Compare September 19, 2024 14:14
@Brooooooklyn Brooooooklyn merged commit 521ef58 into main Sep 19, 2024
@Brooooooklyn Brooooooklyn deleted the 09-19-refactor_napi_allow_create_bufferslice_from_external_data branch September 19, 2024 14:22
Boshen referenced this pull request in oxc-project/oxc Sep 20, 2024
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [bpaf](https://redirect.github.com/pacak/bpaf) | workspace.dependencies | patch | `0.9.12` -> `0.9.14` |
| [dashmap](https://redirect.github.com/xacrimon/dashmap) | workspace.dependencies | minor | `6.0.1` -> `6.1.0` |
| [globset](https://redirect.github.com/BurntSushi/ripgrep/tree/master/crates/globset) ([source](https://redirect.github.com/BurntSushi/ripgrep/tree/HEAD/crates/globset)) | workspace.dependencies | patch | `0.4.14` -> `0.4.15` |
| [handlebars](https://redirect.github.com/sunng87/handlebars-rust) | workspace.dependencies | minor | `6.0.0` -> `6.1.0` |
| [ignore](https://redirect.github.com/BurntSushi/ripgrep/tree/master/crates/ignore) ([source](https://redirect.github.com/BurntSushi/ripgrep/tree/HEAD/crates/ignore)) | workspace.dependencies | patch | `0.4.22` -> `0.4.23` |
| [indexmap](https://redirect.github.com/indexmap-rs/indexmap) | workspace.dependencies | minor | `2.4.0` -> `2.5.0` |
| [insta](https://insta.rs/) ([source](https://redirect.github.com/mitsuhiko/insta)) | workspace.dependencies | minor | `1.39.0` -> `1.40.0` |
| [napi](https://redirect.github.com/napi-rs/napi-rs) | workspace.dependencies | patch | `3.0.0-alpha.8` -> `3.0.0-alpha` |
| [napi-derive](https://redirect.github.com/napi-rs/napi-rs) | workspace.dependencies | patch | `3.0.0-alpha.7` -> `3.0.0-alpha` |
| [owo-colors](https://redirect.github.com/jam1garner/owo-colors) | workspace.dependencies | minor | `4.0.0` -> `4.1.0` |
| [oxc_resolver](https://redirect.github.com/oxc-project/oxc-resolver) | workspace.dependencies | minor | `1.10.2` -> `1.11.0` |
| [serde](https://serde.rs) ([source](https://redirect.github.com/serde-rs/serde)) | workspace.dependencies | patch | `1.0.209` -> `1.0.210` |
| [serde_json](https://redirect.github.com/serde-rs/json) | workspace.dependencies | patch | `1.0.127` -> `1.0.128` |
| [tokio](https://tokio.rs) ([source](https://redirect.github.com/tokio-rs/tokio)) | workspace.dependencies | minor | `1.39.3` -> `1.40.0` |
| [unicode-id-start](https://redirect.github.com/Boshen/unicode-id-start) | workspace.dependencies | minor | `1.2.0` -> `1.3.0` |
| [unicode-width](https://redirect.github.com/unicode-rs/unicode-width) | workspace.dependencies | minor | `0.1.13` -> `0.2.0` |

---

### Release Notes

<details>
<summary>pacak/bpaf (bpaf)</summary>

### [`v0.9.14`](https://redirect.github.com/pacak/bpaf/blob/HEAD/Changelog.md#bpaf-0914--2024-09-19)

[Compare Source](https://redirect.github.com/pacak/bpaf/compare/v0.9.13...v0.9.14)

-   add license files ([#&#8203;388](https://redirect.github.com/pacak/bpaf/issues/388))
    thanks [@&#8203;davide](https://redirect.github.com/davide)
-   fix fish completions - you'll need to regenerate completion files for them to work

### [`v0.9.13`](https://redirect.github.com/pacak/bpaf/blob/HEAD/Changelog.md#bpaf-0913--bpafderive-0513---2024-09-06)

[Compare Source](https://redirect.github.com/pacak/bpaf/compare/v0.9.12...v0.9.13)

-   You can now use `fallback_to_usage` in derive macro for options and subcommands ([#&#8203;376](https://redirect.github.com/pacak/bpaf/issues/376))
-   Bugfixes related to shell completion and file masks
    thanks [@&#8203;ozwaldorf](https://redirect.github.com/ozwaldorf)
-   `not_strict` restriction for positional items (TODO - check the docs)
    thanks [@&#8203;ozwaldorf](https://redirect.github.com/ozwaldorf)
-   more shell completion bugfixes ([#&#8203;384](https://redirect.github.com/pacak/bpaf/issues/384), [#&#8203;382](https://redirect.github.com/pacak/bpaf/issues/382), [#&#8203;381](https://redirect.github.com/pacak/bpaf/issues/381))
-   `ParseFailure::print_mesage` (with one `s` is deprecated in favor of the right spelling

</details>

<details>
<summary>xacrimon/dashmap (dashmap)</summary>

### [`v6.1.0`](https://redirect.github.com/xacrimon/dashmap/releases/tag/v6.1.0)

[Compare Source](https://redirect.github.com/xacrimon/dashmap/compare/v6.0.1...v6.1.0)

-   [https://github.com/xacrimon/dashmap/pull/308](https://redirect.github.com/xacrimon/dashmap/pull/308)

</details>

<details>
<summary>sunng87/handlebars-rust (handlebars)</summary>

### [`v6.1.0`](https://redirect.github.com/sunng87/handlebars-rust/blob/HEAD/CHANGELOG.md#610---2024-09-06)

[Compare Source](https://redirect.github.com/sunng87/handlebars-rust/compare/v6.0.0...v6.1.0)

-   \[Added] More data type support in comparison helpers \[[#&#8203;673](https://redirect.github.com/sunng87/handlebars-rust/issues/673)]

</details>

<details>
<summary>indexmap-rs/indexmap (indexmap)</summary>

### [`v2.5.0`](https://redirect.github.com/indexmap-rs/indexmap/blob/HEAD/RELEASES.md#250)

[Compare Source](https://redirect.github.com/indexmap-rs/indexmap/compare/2.4.0...2.5.0)

-   Added an `insert_before` method to `IndexMap` and `IndexSet`, as an
    alternative to `shift_insert` with different behavior on existing entries.
-   Added `first_entry` and `last_entry` methods to `IndexMap`.
-   Added `From` implementations between `IndexedEntry` and `OccupiedEntry`.

</details>

<details>
<summary>mitsuhiko/insta (insta)</summary>

### [`v1.40.0`](https://redirect.github.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#1400)

[Compare Source](https://redirect.github.com/mitsuhiko/insta/compare/1.39.0...1.40.0)

-   `cargo-insta` no longer panics when running `cargo insta test --accept --workspace`
    on a workspace with a default crate.  [#&#8203;532](https://redirect.github.com/mitsuhiko/insta/issues/532)

-   MSRV for `insta` has been raised to 1.60, and for `cargo-insta` to 1.64.

-   Added support for compact debug snapshots (`assert_compact_debug_snapshot`).  [#&#8203;514](https://redirect.github.com/mitsuhiko/insta/issues/514)

-   Deprecate `--no-force-pass` in `cargo-insta`.  The `--check` option covers the
    same functionality and has a clearer name.  [#&#8203;513](https://redirect.github.com/mitsuhiko/insta/issues/513)

-   Inline snapshots now use the required number of `#`s to escape the snapshot
    value, rather than always using `###`. This allows snapshotting values which
    themselves contain `###`. If there are no existing `#` characters in the
    snapshot value, a single `#` will be used.  [#&#8203;540](https://redirect.github.com/mitsuhiko/insta/issues/540)

-   Inline snapshots can now be updated with `--force-update-snapshots`.  [#&#8203;569](https://redirect.github.com/mitsuhiko/insta/issues/569)

-   `cargo insta test` accepts multiple `--exclude` flags.  [#&#8203;520](https://redirect.github.com/mitsuhiko/insta/issues/520)

-   `test` `runner` in insta's yaml config works.  [#&#8203;544](https://redirect.github.com/mitsuhiko/insta/issues/544)

-   Print a warning when encountering old snapshot formats.  [#&#8203;503](https://redirect.github.com/mitsuhiko/insta/issues/503)

-   Group the options in `cargo insta --help`, upgrade to `clap` from `structopt`.  [#&#8203;518](https://redirect.github.com/mitsuhiko/insta/issues/518)

-   No longer suggest running `cargo insta` message when running `cargo insta test --check`.  [#&#8203;515](https://redirect.github.com/mitsuhiko/insta/issues/515)

-   Print a clearer error message when accepting a snapshot that was removed.  [#&#8203;516](https://redirect.github.com/mitsuhiko/insta/issues/516)

-   Mark `require-full-match` as experimental, given some corner-cases are currently difficult to manage.  [#&#8203;497](https://redirect.github.com/mitsuhiko/insta/issues/497)

-   Add a new integration test approach for `cargo-insta` and a set of integration tests.  [#&#8203;537](https://redirect.github.com/mitsuhiko/insta/issues/537)

-   Enable Filters to be created from `IntoIterator` types, rather than just `Vec`s.  [#&#8203;570](https://redirect.github.com/mitsuhiko/insta/issues/570)

-   Implemented total sort order for an internal `Key` type correctly.  This prevents potential
    crashes introduced by the new sort algorithm in Rust 1.81.  [#&#8203;586](https://redirect.github.com/mitsuhiko/insta/issues/586)

</details>

<details>
<summary>napi-rs/napi-rs (napi)</summary>

### [`v3.0.0-alpha.10`](https://redirect.github.com/napi-rs/napi-rs/releases/tag/napi%403.0.0-alpha.10)

[Compare Source](https://redirect.github.com/napi-rs/napi-rs/compare/napi@3.0.0-alpha.9...napi@3.0.0-alpha.10)

#### What's Changed

-   fix(napi): nullptr handling in `TypedArray`s by [@&#8203;Xanewok](https://redirect.github.com/Xanewok) in [https://github.com/napi-rs/napi-rs/pull/2258](https://redirect.github.com/napi-rs/napi-rs/pull/2258)
-   chore: enable corepack in Debian base Dockerfile by [@&#8203;stevefan1999-personal](https://redirect.github.com/stevefan1999-personal) in [https://github.com/napi-rs/napi-rs/pull/2252](https://redirect.github.com/napi-rs/napi-rs/pull/2252)
-   refactor(napi): allow create BufferSlice from external data by [@&#8203;Brooooooklyn](https://redirect.github.com/Brooooooklyn) in [https://github.com/napi-rs/napi-rs/pull/2263](https://redirect.github.com/napi-rs/napi-rs/pull/2263)

#### New Contributors

-   [@&#8203;Xanewok](https://redirect.github.com/Xanewok) made their first contribution in [https://github.com/napi-rs/napi-rs/pull/2258](https://redirect.github.com/napi-rs/napi-rs/pull/2258)
-   [@&#8203;stevefan1999-personal](https://redirect.github.com/stevefan1999-personal) made their first contribution in [https://github.com/napi-rs/napi-rs/pull/2252](https://redirect.github.com/napi-rs/napi-rs/pull/2252)

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-derive@3.0.0-alpha.8...napi@3.0.0-alpha.10

### [`v3.0.0-alpha.9`](https://redirect.github.com/napi-rs/napi-rs/releases/tag/napi-derive%403.0.0-alpha.9)

[Compare Source](https://redirect.github.com/napi-rs/napi-rs/compare/napi@3.0.0-alpha.8...napi@3.0.0-alpha.9)

#### What's Changed

-   fix(derive): fix clippy warning with newer rust version by [@&#8203;richerfu](https://redirect.github.com/richerfu) in [https://github.com/napi-rs/napi-rs/pull/2262](https://redirect.github.com/napi-rs/napi-rs/pull/2262)

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-derive@3.0.0-alpha.8...napi-derive@3.0.0-alpha.9

</details>

<details>
<summary>jam1garner/owo-colors (owo-colors)</summary>

### [`v4.1.0`](https://redirect.github.com/jam1garner/owo-colors/compare/v4.0.0...v4.1.0)

[Compare Source](https://redirect.github.com/jam1garner/owo-colors/compare/v4.0.0...v4.1.0)

</details>

<details>
<summary>oxc-project/oxc-resolver (oxc_resolver)</summary>

### [`v1.11.0`](https://redirect.github.com/oxc-project/oxc-resolver/blob/HEAD/CHANGELOG.md#1110---2024-08-26)

[Compare Source](https://redirect.github.com/oxc-project/oxc-resolver/compare/oxc_resolver-v1.10.2...oxc_resolver-v1.11.0)

##### Added

-   use simdutf8 to validate UTF-8 when reading files ([#&#8203;237](https://redirect.github.com/oxc-project/oxc_resolver/pull/237))
-   Yarn PnP (behind a feature flag) ([#&#8203;217](https://redirect.github.com/oxc-project/oxc_resolver/pull/217))

</details>

<details>
<summary>serde-rs/serde (serde)</summary>

### [`v1.0.210`](https://redirect.github.com/serde-rs/serde/releases/tag/v1.0.210)

[Compare Source](https://redirect.github.com/serde-rs/serde/compare/v1.0.209...v1.0.210)

-   Support serializing and deserializing `IpAddr` and `SocketAddr` in no-std mode on Rust 1.77+ ([#&#8203;2816](https://redirect.github.com/serde-rs/serde/issues/2816), thanks [@&#8203;MathiasKoch](https://redirect.github.com/MathiasKoch))
-   Make `serde::ser::StdError` and `serde::de::StdError` equivalent to `core::error::Error` on Rust 1.81+ ([#&#8203;2818](https://redirect.github.com/serde-rs/serde/issues/2818))

</details>

<details>
<summary>serde-rs/json (serde_json)</summary>

### [`v1.0.128`](https://redirect.github.com/serde-rs/json/releases/tag/1.0.128)

[Compare Source](https://redirect.github.com/serde-rs/json/compare/1.0.127...1.0.128)

-   Support serializing maps containing 128-bit integer keys to serde_json::Value ([#&#8203;1188](https://redirect.github.com/serde-rs/json/issues/1188), thanks [@&#8203;Mrreadiness](https://redirect.github.com/Mrreadiness))

</details>

<details>
<summary>tokio-rs/tokio (tokio)</summary>

### [`v1.40.0`](https://redirect.github.com/tokio-rs/tokio/releases/tag/tokio-1.40.0): Tokio v1.40.0

[Compare Source](https://redirect.github.com/tokio-rs/tokio/compare/tokio-1.39.3...tokio-1.40.0)

### 1.40.0 (August 30th, 2024)

##### Added

-   io: add `util::SimplexStream` ([#&#8203;6589])
-   process: stabilize `Command::process_group` ([#&#8203;6731])
-   sync: add `{TrySendError,SendTimeoutError}::into_inner` ([#&#8203;6755])
-   task: add `JoinSet::join_all` ([#&#8203;6784])

##### Added (unstable)

-   runtime: add `Builder::{on_task_spawn, on_task_terminate}` ([#&#8203;6742])

##### Changed

-   io: use vectored io for `write_all_buf` when possible ([#&#8203;6724])
-   runtime: prevent niche-optimization to avoid triggering miri ([#&#8203;6744])
-   sync: mark mpsc types as `UnwindSafe` ([#&#8203;6783])
-   sync,time: make `Sleep` and `BatchSemaphore` instrumentation explicit roots ([#&#8203;6727])
-   task: use `NonZeroU64` for `task::Id` ([#&#8203;6733])
-   task: include panic message when printing `JoinError` ([#&#8203;6753])
-   task: add `#[must_use]` to `JoinHandle::abort_handle` ([#&#8203;6762])
-   time: eliminate timer wheel allocations ([#&#8203;6779])

##### Documented

-   docs: clarify that `[build]` section doesn't go in Cargo.toml ([#&#8203;6728])
-   io: clarify zero remaining capacity case ([#&#8203;6790])
-   macros: improve documentation for `select!` ([#&#8203;6774])
-   sync: document mpsc channel allocation behavior ([#&#8203;6773])

[#&#8203;6589]: https://redirect.github.com/tokio-rs/tokio/pull/6589

[#&#8203;6724]: https://redirect.github.com/tokio-rs/tokio/pull/6724

[#&#8203;6727]: https://redirect.github.com/tokio-rs/tokio/pull/6727

[#&#8203;6728]: https://redirect.github.com/tokio-rs/tokio/pull/6728

[#&#8203;6731]: https://redirect.github.com/tokio-rs/tokio/pull/6731

[#&#8203;6733]: https://redirect.github.com/tokio-rs/tokio/pull/6733

[#&#8203;6742]: https://redirect.github.com/tokio-rs/tokio/pull/6742

[#&#8203;6744]: https://redirect.github.com/tokio-rs/tokio/pull/6744

[#&#8203;6753]: https://redirect.github.com/tokio-rs/tokio/pull/6753

[#&#8203;6755]: https://redirect.github.com/tokio-rs/tokio/pull/6755

[#&#8203;6762]: https://redirect.github.com/tokio-rs/tokio/pull/6762

[#&#8203;6773]: https://redirect.github.com/tokio-rs/tokio/pull/6773

[#&#8203;6774]: https://redirect.github.com/tokio-rs/tokio/pull/6774

[#&#8203;6779]: https://redirect.github.com/tokio-rs/tokio/pull/6779

[#&#8203;6783]: https://redirect.github.com/tokio-rs/tokio/pull/6783

[#&#8203;6784]: https://redirect.github.com/tokio-rs/tokio/pull/6784

[#&#8203;6790]: https://redirect.github.com/tokio-rs/tokio/pull/6790

</details>

<details>
<summary>unicode-rs/unicode-width (unicode-width)</summary>

### [`v0.1.14`](https://redirect.github.com/unicode-rs/unicode-width/compare/v0.1.13...v0.1.14)

[Compare Source](https://redirect.github.com/unicode-rs/unicode-width/compare/v0.1.13...v0.1.14)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 10am on monday" in timezone Asia/Shanghai, Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/oxc-project/oxc).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC44MC4wIiwidXBkYXRlZEluVmVyIjoiMzguODAuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant