Avatar for the web-infra-dev user
web-infra-dev
rstest
BlogDocsChangelog

Performance History

Latest Results

ci(codspeed): clear process.execArgv before threads pool snapshot CodSpeed simulation mode injects V8 introspection flags into the parent's CLI (`--allow-natives-syntax`, `--predictable`, `--hash-seed=1`, etc.) for deterministic Callgrind measurement. rstest's threads pool snapshots `process.execArgv` and propagates it to each Worker, but `node:worker_threads` enforces an allow list and rejects those flags with "Initiated Worker with invalid execArgv flags", so every bench fixture failed on the first worker spawn. Clearing the array in the bench entry is safe: the flags have already taken effect on the parent's V8 engine, and the bench fixtures don't need any inherited Node flags in their workers.
ci/codspeed-threads-pool
9 days ago
fix(runtime): cache vm.SyntheticModule to avoid nodejs/node#54735 crash V8 has a data race in `SyntheticModuleEvaluationStepsCallback` that fires when the same exports are wrapped in multiple `vm.SyntheticModule` instances whose evaluate() calls overlap on the microtask queue — nodejs/node#54735. rstest's `asModule` helpers used to build a fresh SyntheticModule on every call, so any CJS/JSON/Wasm dep imported more than once inside a worker could trigger the segfault. Surfaces as a SIGSEGV during worker bootstrap with the victim test file reported as `(0)` and empty stderr. Structure the wrapping so the cache key can only ever be the resolver's output: - `asModule` now takes a required `resolvedId: string`. Optional `identifier` was the weak link — callers could (and did) reach for raw `specifier`, which is importer-relative and collides across files. - Every SyntheticModule construction lives inside `defineRstestDynamicImport`, where the resolver's absolute path is already in scope. The ESM `link` callback and `importModuleDynamically` hook collapse to pure pass-through — no second wrap site that could re-introduce the wrong key. - Each loader owns a private `Map<resolvedId, SyntheticModule>`. The previous `WeakMap<context, Map<id, SM>>` was dead weight: rstest never creates a custom vm.Context, so every entry landed in the same sentinel bucket. Verified locally with a 50-run repro loop at `maxWorkers=8`, 0 SIGSEGV (baseline reproduced within 7–9 runs). Refs: nodejs/node#54735, vitest-dev/vitest#7741
dp
1 month ago

Latest Branches

CodSpeed Performance Gauge
N/A
ci(codspeed): split CPU per-PR / memory push-to-main, drop codspeed-macro#1321
9 days ago
5d5c1aa
ci/codspeed-threads-pool
CodSpeed Performance Gauge
+11%
feat(pool): replace tinypool with self-owned worker pool#1171
1 month ago
708b700
dp
CodSpeed Performance Gauge
+2%
1 month ago
d359bc9
9aoy/docs-rstest-feature-list
© 2026 CodSpeed Technology
Home Terms Privacy Docs