Avatar for the oxc-project user
oxc-project
oxc-resolver
BlogDocsChangelog

Performance History

Latest Results

chore: release v11.20.1
release-plz-2026-05-28T15-25-06Z
24 minutes ago
perf: reduce resolution syscalls by unifying stat and lstat (#1182) ## Summary Module resolution looked at each path twice: a `stat` (`metadata`, follows symlinks) for `is_file`/`is_dir` during resolution, then an `lstat` (`symlink_metadata`) on the same path again during canonicalization. Most paths aren't symlinks, so the two passes were redundant β€” for `npm-flat`, 49 lstats found only **2** actual symlinks, and ~37 of those paths had already been `stat`'d. This unifies them so `is_file`/`is_dir` are **lstat-first**. ## What changed - `CachedMeta` now holds two 1-byte slots β€” `link` (the cached `lstat` view) and `followed` (the cached `stat` view). - `is_file`/`is_dir` read the cached `lstat`; for the common non-symlink case that *is* the answer (no `stat`), and only a genuine symlink triggers a follow-up `stat`. - Canonicalization reuses the same cached `lstat` instead of issuing its own. - `FileSystemOs::symlink_metadata` is now VPath-aware for Yarn PnP. Previously only `metadata()` translated virtual/zip paths, so lstat-backed `is_file`/`is_dir` would have failed under PnP. Net per path: `savings = |stat∩lstat| βˆ’ symlinks-followed`. ## Results β€” 18–28% fewer syscalls Measured on the 16-request package-manager workload (same one the `package_managers` bench uses): | layout | before | after | |---|---|---| | npm-flat / yarn-flat / bun-flat | 126 | **91** | | pnpm-isolated / hoisted / bun-isolated | 149 | **122** | | yarn-isolated | 142 | **115** | | yarn-pnp | 144 | **106** | `stat` calls collapse from ~40–51 down to 0–8 (only the genuine symlink-follows). Behavior of `is_file`/`is_dir` is unchanged β€” they still return symlink-followed results. πŸ€– Generated with [Claude Code](https://claude.com/claude-code)
main
27 minutes ago
perf: reduce resolution syscalls by unifying stat and lstat (#1182) ## Summary Module resolution looked at each path twice: a `stat` (`metadata`, follows symlinks) for `is_file`/`is_dir` during resolution, then an `lstat` (`symlink_metadata`) on the same path again during canonicalization. Most paths aren't symlinks, so the two passes were redundant β€” for `npm-flat`, 49 lstats found only **2** actual symlinks, and ~37 of those paths had already been `stat`'d. This unifies them so `is_file`/`is_dir` are **lstat-first**. ## What changed - `CachedMeta` now holds two 1-byte slots β€” `link` (the cached `lstat` view) and `followed` (the cached `stat` view). - `is_file`/`is_dir` read the cached `lstat`; for the common non-symlink case that *is* the answer (no `stat`), and only a genuine symlink triggers a follow-up `stat`. - Canonicalization reuses the same cached `lstat` instead of issuing its own. - `FileSystemOs::symlink_metadata` is now VPath-aware for Yarn PnP. Previously only `metadata()` translated virtual/zip paths, so lstat-backed `is_file`/`is_dir` would have failed under PnP. Net per path: `savings = |stat∩lstat| βˆ’ symlinks-followed`. ## Results β€” 18–28% fewer syscalls Measured on the 16-request package-manager workload (same one the `package_managers` bench uses): | layout | before | after | |---|---|---| | npm-flat / yarn-flat / bun-flat | 126 | **91** | | pnpm-isolated / hoisted / bun-isolated | 149 | **122** | | yarn-isolated | 142 | **115** | | yarn-pnp | 144 | **106** | `stat` calls collapse from ~40–51 down to 0–8 (only the genuine symlink-follows). Behavior of `is_file`/`is_dir` is unchanged β€” they still return symlink-followed results. πŸ€– Generated with [Claude Code](https://claude.com/claude-code)
perf/lstat-first-metadata
29 minutes ago
chore: release v11.20.1
release-plz-2026-05-28T15-25-06Z
2 hours ago

Latest Branches

CodSpeed Performance Gauge
-5%
chore: release v11.20.1#1178
36 minutes ago
57d63ef
release-plz-2026-05-28T15-25-06Z
CodSpeed Performance Gauge
-5%
perf: reduce resolution syscalls by unifying stat and lstat#1182
40 minutes ago
4e9ac5e
perf/lstat-first-metadata
CodSpeed Performance Gauge
+4%
2 hours ago
a539c40
fix/symlink-metadata-vpath
Β© 2026 CodSpeed Technology
Home Terms Privacy Docs