Avatar for the swc-project user
swc-project
swc
BlogDocsChangelog

Performance History

Latest Results

fix(ecma_utils): Saturate the radix exponent instead of wrapping it An unchecked usize-to-i32 cast on the computed exponent wraps into a negative value once remaining_bits + extra_bits exceeds i32::MAX, which a radix literal of a few hundred million digits can reach. That silently turns what should legitimately round to Infinity into 0 or another finite value. Clamp to i32::MAX before casting; powi already saturates to Infinity on its own from there.
YosefBlandin:feat/minifier-math-constant-folding
28 seconds ago
Merge branch 'main' into feat/minifier-math-constant-folding
YosefBlandin:feat/minifier-math-constant-folding
56 minutes ago
fix(es/minifier): preserve do-while control-flow targets (#12160) **Description:** The minifier's `loops` optimization replaces a constant-false `do...while` statement with its body. It previously allowed a direct `break` or `continue` while doing so, even though those statements target the loop being removed. After unwrapping, the abrupt completion could target a surrounding loop and silently change program behavior, or become an illegal statement when no enclosing target existed. This change passes `false` for `allow_break_continue` when checking a constant-false `do...while` body. SWC now retains the loop when a direct `break` or `continue` depends on it, while other safe constant-false loop bodies remain eligible for unwrapping. The regression fixture covers: - unlabeled and labeled `break` statements nested in an outer loop; - unlabeled and labeled `continue` statements nested in an outer loop; - declaration hoisting after an early `break`. Labels are not required to reproduce the bug. The labeled cases are included because they match the Kotlin/JS output reported in web-infra-dev/rspack#15335; after label normalization they expose the same direct control-flow dependency. A similar semantic guard exists in the separate `simplify` transform following #1618. This change applies that constraint to the minifier compressor's independent constant-loop optimization. **Testing:** - `UPDATE=1 cargo test -p swc_ecma_minifier --test compress --features concurrent do_while_false_control_flow -- --nocapture` - `cargo test -p swc_ecma_minifier --test compress --features concurrent do_while_false_control_flow -- --nocapture` - `(cd crates/swc_ecma_minifier && ./scripts/exec.sh)` - `cargo test -p swc_ecma_minifier` - `cargo fmt --all` - `cargo clippy -p swc_ecma_minifier --all-targets --features concurrent -- -D warnings` **BREAKING CHANGE:** None. **Related issue (if exists):** Fixes #12159. Related to web-infra-dev/rspack#15335. See also #1618.
main
7 hours ago
chore: Add changeset
August-Z:codex/fix-do-while-false-control-flow
8 hours ago
chore: Add changeset
August-Z:codex/fix-do-while-false-control-flow
8 hours ago

Latest Branches

CodSpeed Performance Gauge
0%
feat(es/minifier): Evaluate Math.floor, Math.ceil, Math.round and Mat…#12117
32 minutes ago
f9e6b9c
YosefBlandin:feat/minifier-math-constant-folding
CodSpeed Performance Gauge
0%
fix(es/minifier): preserve do-while control-flow targets#12160
9 hours ago
4034ad9
August-Z:codex/fix-do-while-false-control-flow
CodSpeed Performance Gauge
+2%
14 hours ago
900e9fd
mameikagou:fix/object-rest-for-of-var-scope-v2
© 2026 CodSpeed Technology
Home Terms Privacy Docs