refactor(napi): allow create BufferSlice from external data#2263
Merged
Brooooooklyn merged 1 commit intomainfrom Sep 19, 2024
Merged
Conversation
Member
Author
|
This stack of pull requests is managed by Graphite. Learn more about stacking. Join @Brooooooklyn and the rest of your teammates on |
Contributor
There was a problem hiding this comment.
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.
c0e9726 to
717b30c
Compare
- 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
717b30c to
5a0dcda
Compare
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 ([#​388](https://redirect.github.com/pacak/bpaf/issues/388)) thanks [@​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 ([#​376](https://redirect.github.com/pacak/bpaf/issues/376)) - Bugfixes related to shell completion and file masks thanks [@​ozwaldorf](https://redirect.github.com/ozwaldorf) - `not_strict` restriction for positional items (TODO - check the docs) thanks [@​ozwaldorf](https://redirect.github.com/ozwaldorf) - more shell completion bugfixes ([#​384](https://redirect.github.com/pacak/bpaf/issues/384), [#​382](https://redirect.github.com/pacak/bpaf/issues/382), [#​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 \[[#​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. [#​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`). [#​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. [#​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. [#​540](https://redirect.github.com/mitsuhiko/insta/issues/540) - Inline snapshots can now be updated with `--force-update-snapshots`. [#​569](https://redirect.github.com/mitsuhiko/insta/issues/569) - `cargo insta test` accepts multiple `--exclude` flags. [#​520](https://redirect.github.com/mitsuhiko/insta/issues/520) - `test` `runner` in insta's yaml config works. [#​544](https://redirect.github.com/mitsuhiko/insta/issues/544) - Print a warning when encountering old snapshot formats. [#​503](https://redirect.github.com/mitsuhiko/insta/issues/503) - Group the options in `cargo insta --help`, upgrade to `clap` from `structopt`. [#​518](https://redirect.github.com/mitsuhiko/insta/issues/518) - No longer suggest running `cargo insta` message when running `cargo insta test --check`. [#​515](https://redirect.github.com/mitsuhiko/insta/issues/515) - Print a clearer error message when accepting a snapshot that was removed. [#​516](https://redirect.github.com/mitsuhiko/insta/issues/516) - Mark `require-full-match` as experimental, given some corner-cases are currently difficult to manage. [#​497](https://redirect.github.com/mitsuhiko/insta/issues/497) - Add a new integration test approach for `cargo-insta` and a set of integration tests. [#​537](https://redirect.github.com/mitsuhiko/insta/issues/537) - Enable Filters to be created from `IntoIterator` types, rather than just `Vec`s. [#​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. [#​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 [@​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 [@​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 [@​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 - [@​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) - [@​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 [@​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 ([#​237](https://redirect.github.com/oxc-project/oxc_resolver/pull/237)) - Yarn PnP (behind a feature flag) ([#​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+ ([#​2816](https://redirect.github.com/serde-rs/serde/issues/2816), thanks [@​MathiasKoch](https://redirect.github.com/MathiasKoch)) - Make `serde::ser::StdError` and `serde::de::StdError` equivalent to `core::error::Error` on Rust 1.81+ ([#​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 ([#​1188](https://redirect.github.com/serde-rs/json/issues/1188), thanks [@​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` ([#​6589]) - process: stabilize `Command::process_group` ([#​6731]) - sync: add `{TrySendError,SendTimeoutError}::into_inner` ([#​6755]) - task: add `JoinSet::join_all` ([#​6784]) ##### Added (unstable) - runtime: add `Builder::{on_task_spawn, on_task_terminate}` ([#​6742]) ##### Changed - io: use vectored io for `write_all_buf` when possible ([#​6724]) - runtime: prevent niche-optimization to avoid triggering miri ([#​6744]) - sync: mark mpsc types as `UnwindSafe` ([#​6783]) - sync,time: make `Sleep` and `BatchSemaphore` instrumentation explicit roots ([#​6727]) - task: use `NonZeroU64` for `task::Id` ([#​6733]) - task: include panic message when printing `JoinError` ([#​6753]) - task: add `#[must_use]` to `JoinHandle::abort_handle` ([#​6762]) - time: eliminate timer wheel allocations ([#​6779]) ##### Documented - docs: clarify that `[build]` section doesn't go in Cargo.toml ([#​6728]) - io: clarify zero remaining capacity case ([#​6790]) - macros: improve documentation for `select!` ([#​6774]) - sync: document mpsc channel allocation behavior ([#​6773]) [#​6589]: https://redirect.github.com/tokio-rs/tokio/pull/6589 [#​6724]: https://redirect.github.com/tokio-rs/tokio/pull/6724 [#​6727]: https://redirect.github.com/tokio-rs/tokio/pull/6727 [#​6728]: https://redirect.github.com/tokio-rs/tokio/pull/6728 [#​6731]: https://redirect.github.com/tokio-rs/tokio/pull/6731 [#​6733]: https://redirect.github.com/tokio-rs/tokio/pull/6733 [#​6742]: https://redirect.github.com/tokio-rs/tokio/pull/6742 [#​6744]: https://redirect.github.com/tokio-rs/tokio/pull/6744 [#​6753]: https://redirect.github.com/tokio-rs/tokio/pull/6753 [#​6755]: https://redirect.github.com/tokio-rs/tokio/pull/6755 [#​6762]: https://redirect.github.com/tokio-rs/tokio/pull/6762 [#​6773]: https://redirect.github.com/tokio-rs/tokio/pull/6773 [#​6774]: https://redirect.github.com/tokio-rs/tokio/pull/6774 [#​6779]: https://redirect.github.com/tokio-rs/tokio/pull/6779 [#​6783]: https://redirect.github.com/tokio-rs/tokio/pull/6783 [#​6784]: https://redirect.github.com/tokio-rs/tokio/pull/6784 [#​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==-->
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Clone)] for the original enums.
argument, this is useful when the return type contains lifetime