oxc-project
oxc-resolver
Blog
Docs
Changelog
Blog
Docs
Changelog
Overview
Branches
Benchmarks
Runs
Performance History
Latest Results
chore(deps): update napi (#1307) This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Adoption](https://docs.renovatebot.com/merge-confidence/) | [Passing](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | Type | Update | |---|---|---|---|---|---|---|---| | [@napi-rs/cli](https://napi.rs/) ([source](https://redirect.github.com/napi-rs/napi-rs)) | [`3.7.2` → `3.7.3`](https://renovatebot.com/diffs/npm/@napi-rs%2fcli/3.7.2/3.7.3) |  |  |  |  | devDependencies | patch | | [napi](https://redirect.github.com/napi-rs/napi-rs) | `3.10.4` → `3.10.5` |  |  |  |  | dependencies | patch | --- ### Release Notes <details> <summary>napi-rs/napi-rs (@​napi-rs/cli)</summary> ### [`v3.7.3`](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.7.2...@napi-rs/cli@3.7.3) [Compare Source](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.7.2...@napi-rs/cli@3.7.3) </details> --- ### Configuration 📅 **Schedule**: (in timezone Asia/Shanghai) - Branch creation - At any time (no schedule defined) - 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-resolver). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNTkuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI1OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
main
3 hours ago
chore(deps): update napi
renovate/napi
3 hours ago
perf: store canonicalization state only where it differs from the path Canonicalization cached a `(Weak, Box<Path>)` result on every path level and interned the whole canonical-side chain alongside the logical one. For a single pnpm package both `node_modules/pkg/*` and `node_modules/.pnpm/pkg@x/node_modules/pkg/*` were fully interned, and every node of both chains stored a canonical mapping — on a path that is its own canonical form (the large majority) that is a self-referential `Weak` plus a byte-copy of the node's own spelling. Keep canonicalization state only where it is not redundant: - A path that is its own canonical form (no ancestor is a symlink — the large majority) carries a one-bit `canonical_is_self` flag and no heap. - A symlink stores its resolved target (live `Weak`, used by `followed_metadata`); a path below a symlink caches its derived canonical form so re-resolving it stays O(1). `Cache::canonicalize` scans the cached parent chain bottom-up to the nearest node whose canonical form is known, verifies via the cached `lstat` bits that the suffix contains no symlink, then folds the suffix onto the prefix in one allocation. Measured over the bench-pm workload (16 requests, 8 layouts): - Cache entries carrying a canonical mapping: 50-71 -> 5-21 per combo. - Path key + mapping heap bytes: -40% per combo. - Cold allocations: -6 to -9% (npm-flat 1086->1020, pnpm-isolated 1211->1127). - Filesystem syscalls: byte-identical (per-op-type and total). - Warm resolution: at parity (allocations identical; wall time within noise on resolver_memory / resolver_real single-thread and resolve-from-symlinks). Adds tests pinning that self-canonical paths store no mapping and that dirty spellings inside node_modules canonicalize correctly. Closes #852
perf/canonicalize-symlink-mappings
12 hours ago
perf: store canonicalization state only where it differs from the path Canonicalization cached a `(Weak, Box<Path>)` result on every path level and interned the whole canonical-side chain alongside the logical one. For a single pnpm package both `node_modules/pkg/*` and `node_modules/.pnpm/pkg@x/node_modules/pkg/*` were fully interned, and every node of both chains stored a canonical mapping — on a path that is its own canonical form (the large majority) that is a self-referential `Weak` plus a byte-copy of the node's own spelling. Keep canonicalization state only where it is not redundant: - A path that is its own canonical form (no ancestor is a symlink) carries a one-bit `canonical_is_self` flag and no heap. - A symlink stores its resolved target (live `Weak`, used by `followed_metadata`); a path below a symlink caches its derived canonical form (dangling `Weak`) so re-resolving it stays O(1). `Cache::canonicalize` scans the cached parent chain bottom-up to the nearest node whose canonical form is known, verifying via the cached `lstat` bits that the suffix contains no symlink, then folds the suffix onto the prefix in one allocation. Measured over the bench-pm workload (16 requests, 8 layouts): - Cache entries carrying a canonical mapping: 50-71 -> 5-21 per combo. - Path key + mapping heap bytes: -40% per combo. - Cold allocations: -6 to -9% (npm-flat 1086->1016, pnpm-isolated 1211->1113). - Filesystem syscalls: byte-identical (per-op-type and total). - Warm resolution: at parity (allocations identical; wall time within noise on resolver_memory / resolver_real single-thread and resolve-from-symlinks). Adds a `pm-dense` benchmark (one cold resolver over every top-level `lodash-es/<file>.js`, serial) covering the dense regime the 16-request workload dilutes, and tests pinning that self-canonical paths store no mapping and that dirty spellings inside node_modules canonicalize correctly. Closes #852
perf/canonicalize-symlink-mappings
12 hours ago
perf: store canonicalization state only where it differs from the path Canonicalization cached a `(Weak, Box<Path>)` result on every path level and interned the whole canonical-side chain alongside the logical one. For a single pnpm package both `node_modules/pkg/*` and `node_modules/.pnpm/pkg@x/node_modules/pkg/*` were fully interned, and every node of both chains stored a canonical mapping — on a path that is its own canonical form (the large majority) that is a self-referential `Weak` plus a byte-copy of the node's own spelling. Keep canonicalization state only where it is not redundant: - A path that is its own canonical form (no ancestor is a symlink) carries a one-bit `canonical_is_self` flag and no heap. - A symlink stores its resolved target (live `Weak`, used by `followed_metadata`); a path below a symlink caches its derived canonical form (dangling `Weak`) so re-resolving it stays O(1). `Cache::canonicalize` scans the cached parent chain bottom-up to the nearest node whose canonical form is known, verifying via the cached `lstat` bits that the suffix contains no symlink, then folds the suffix onto the prefix in one allocation. Measured over the bench-pm workload (16 requests, 8 layouts): - Cache entries carrying a canonical mapping: 50-71 -> 5-21 per combo. - Path key + mapping heap bytes: -40% per combo. - Cold allocations: -6 to -9% (npm-flat 1086->1016, pnpm-isolated 1211->1113). - Filesystem syscalls: byte-identical (per-op-type and total). - Warm resolution: at parity (allocations identical; wall time within noise on resolver_memory / resolver_real single-thread and resolve-from-symlinks). Adds a `pm-dense` benchmark (one cold resolver over every top-level `lodash-es/<file>.js`, serial) covering the dense regime the 16-request workload dilutes, and tests pinning that self-canonical paths store no mapping and that dirty spellings inside node_modules canonicalize correctly. Closes #852
perf/canonicalize-symlink-mappings
14 hours ago
chore(deps): update rust crates (#1306) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [memchr](https://redirect.github.com/BurntSushi/memchr) | dependencies | patch | `2.8.2` → `2.8.3` | | [simd-json](https://crates.io/crates/simd-json) | dependencies | patch | `0.17.0` → `0.17.3` | --- ### Release Notes <details> <summary>BurntSushi/memchr (memchr)</summary> ### [`v2.8.3`](https://redirect.github.com/BurntSushi/memchr/compare/2.8.2...2.8.3) [Compare Source](https://redirect.github.com/BurntSushi/memchr/compare/2.8.2...2.8.3) </details> --- ### Configuration 📅 **Schedule**: (in timezone Asia/Shanghai) - Branch creation - "before 10am on monday" - 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-resolver). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNTkuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI1OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
main
15 hours ago
chore(deps): update dependency @napi-rs/cli to v3.7.3 (#1305) This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Adoption](https://docs.renovatebot.com/merge-confidence/) | [Passing](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---|---|---| | [@napi-rs/cli](https://napi.rs/) ([source](https://redirect.github.com/napi-rs/napi-rs)) | [`3.7.2` → `3.7.3`](https://renovatebot.com/diffs/npm/@napi-rs%2fcli/3.7.2/3.7.3) |  |  |  |  | --- ### Release Notes <details> <summary>napi-rs/napi-rs (@​napi-rs/cli)</summary> ### [`v3.7.3`](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.7.2...@napi-rs/cli@3.7.3) [Compare Source](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.7.2...@napi-rs/cli@3.7.3) </details> --- ### Configuration 📅 **Schedule**: (in timezone Asia/Shanghai) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- 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-resolver). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNTkuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI1OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
main
15 hours ago
chore(deps): update codspeedhq/action action to v4.18.5 (#1304) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [CodSpeedHQ/action](https://redirect.github.com/CodSpeedHQ/action) | action | patch | `v4.18.4` → `v4.18.5` | --- ### Release Notes <details> <summary>CodSpeedHQ/action (CodSpeedHQ/action)</summary> ### [`v4.18.5`](https://redirect.github.com/CodSpeedHQ/action/releases/tag/v4.18.5) [Compare Source](https://redirect.github.com/CodSpeedHQ/action/compare/v4.18.4...v4.18.5) #### Release Notes ##### <!-- 10 -->💼 Other - Bump pinned valgrind-codspeed to [3.26.0-0codspeed6](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/releases/tag/3.26.0-0codspeed6) ([#​448](https://redirect.github.com/CodSpeedHQ/action/issues/448)) by [@​adriencaccia](https://redirect.github.com/adriencaccia) in [#​448](https://redirect.github.com/CodSpeedHQ/runner/pull/448) - fix: hangs on ARM64 due to atomics by [@​not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/valgrind-codspeed#23](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/pull/23) - fix(aspacem): raise amd64 managed address ceiling to 1 TiB by [@​not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/valgrind-codspeed#22](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/pull/22) #### Install codspeed-runner 4.18.4 ##### Install prebuilt binaries via shell script ```sh curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CodSpeedHQ/codspeed/releases/download/v4.18.4/codspeed-runner-installer.sh | sh ``` #### Download codspeed-runner 4.18.4 | File | Platform | Checksum | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | | [codspeed-runner-aarch64-apple-darwin.tar.gz](https://redirect.github.com/CodSpeedHQ/codspeed/releases/download/v4.18.4/codspeed-runner-aarch64-apple-darwin.tar.gz) | Apple Silicon macOS | [checksum](https://redirect.github.com/CodSpeedHQ/codspeed/releases/download/v4.18.4/codspeed-runner-aarch64-apple-darwin.tar.gz.sha256) | | [codspeed-runner-aarch64-unknown-linux-musl.tar.gz](https://redirect.github.com/CodSpeedHQ/codspeed/releases/download/v4.18.4/codspeed-runner-aarch64-unknown-linux-musl.tar.gz) | ARM64 MUSL Linux | [checksum](https://redirect.github.com/CodSpeedHQ/codspeed/releases/download/v4.18.4/codspeed-runner-aarch64-unknown-linux-musl.tar.gz.sha256) | | [codspeed-runner-x86\_64-unknown-linux-musl.tar.gz](https://redirect.github.com/CodSpeedHQ/codspeed/releases/download/v4.18.4/codspeed-runner-x86_64-unknown-linux-musl.tar.gz) | x64 MUSL Linux | [checksum](https://redirect.github.com/CodSpeedHQ/codspeed/releases/download/v4.18.4/codspeed-runner-x86_64-unknown-linux-musl.tar.gz.sha256) | **Full Runner Changelog**: <https://github.com/CodSpeedHQ/codspeed/blob/main/CHANGELOG.md> **Full Changelog**: <https://github.com/CodSpeedHQ/action/compare/v4.18.4...v4.18.5> </details> --- ### Configuration 📅 **Schedule**: (in timezone Asia/Shanghai) - Branch creation - "before 10am on monday" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- 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-resolver). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNTkuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI1OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
main
15 hours ago
Latest Branches
CodSpeed Performance Gauge
+4%
chore(deps): update napi
#1307
3 hours ago
a27ffb7
renovate/napi
CodSpeed Performance Gauge
+7%
perf: store canonicalization state only where it differs from the path
#1298
23 hours ago
a372fb0
perf/canonicalize-symlink-mappings
CodSpeed Performance Gauge
+2%
chore(deps): update rust crates
#1306
15 hours ago
99b037a
renovate/rust-crates
© 2026 CodSpeed Technology
Home
Terms
Privacy
Docs