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

Performance History

Latest Results

fix:fixing typos.
worktree-ci_size_limit_on_main
6 minutes ago
refactor: run size limit on main
worktree-ci_size_limit_on_main
26 minutes ago
chore(release): release 2.0.0-rc.4
chore/release-2026-04-17
1 hour ago
fix dash map
fix-rsc-dead-lock
4 hours ago
fix(tree-shaking): preserve throwing built-ins in pure-globals fast path Reviewer caught a real soundness bug: literal args can still trigger synchronous throws in `Set`/`Map`/`Array`/TypedArray constructors and `Number`/`Date`. With the previous `TriviallySafeArgs` gate, calls like `new Set(1)` (TypeError), `new Array(-1)` (RangeError), and `new Uint8Array(1.5)` (RangeError) were incorrectly classified as pure and could be tree-shaken away — silently dropping the throw. Split `ArgGate` into four variants by argument-shape requirement: * `AnyPureArgs` — callee neither coerces nor throws on values (e.g. `Boolean(x)`, `Array.isArray(x)`, `Object.is(a, b)`). * `TriviallySafeArgs` — callee handles every literal safely (e.g. `String("x")`, `Object("y")`, `Symbol("desc")`). * `NullishOrNoArgs` — callee throws on non-iterable / non-numeric values, so only `null`/`undefined`/no-args are safe (e.g. `new Set()`, `new Map()`, `new Date()`, `new Number()`, `new Array()`). * `NullishOrNonNegativeIntLiteral` — `RangeError` on negative, fractional, or out-of-range lengths; only nullish or `[0, 2^32)` integer literals pass (e.g. `new Uint8Array(16)`, `new ArrayBuffer(0)`). Reclassification: * `Set`/`Map`/`WeakSet`/`WeakMap`: `NullishOrNoArgs`. * `Array` (both new and call): `NullishOrNoArgs`. * `Date`/`Number` (both): `NullishOrNoArgs` (BigInt → ToNumber throws). * TypedArrays / `ArrayBuffer` / `SharedArrayBuffer`: `NullishOrNonNegativeIntLiteral`. * `String`/`Object`: stays `TriviallySafeArgs` (ToString/ToObject accept any literal incl BigInt). * `Boolean`: promoted to `AnyPureArgs` in both positions (ToBoolean never throws and never invokes user code). * `Symbol` (call only): `TriviallySafeArgs`. New helpers in `pure_globals.rs`: * `is_nullish_expr`: null literal / `undefined` ident / `void <safe>`. * `is_non_negative_int_literal`: finite, integer, `[0, 2^32)`, handles `+N` UnaryExpr; rejects BigInt, negative, fractional, NaN/Infinity. * `check_arg_gate`: dispatches arg-shape check based on gate. Snapshot test extended with 9 new "MUST be kept" cases covering each throw category. All cases verified in the regenerated `treeshaking.snap.txt` — pure forms are wrapped in `null && (…)`, throwing forms are preserved verbatim. Unit tests: 25 total (was 16), covering each gate, both positions for each global, and direct arg-shape checks against synthetic Lit/Num expressions.
fy/vigorous-wilbur
4 hours ago

Latest Branches

CodSpeed Performance Gauge
-3%
chore(ci): run size limit on main#13740
19 minutes ago
ddac50a
worktree-ci_size_limit_on_main
CodSpeed Performance Gauge
-3%
chore: release version 2.0.0-rc.4#13737
1 hour ago
85d7840
chore/release-2026-04-17
CodSpeed Performance Gauge
-4%
fix: rsc plugins dead lock#13736
3 hours ago
7f43294
fix-rsc-dead-lock
© 2026 CodSpeed Technology
Home Terms Privacy Docs