swc-project
swc
Blog
Docs
Changelog
Blog
Docs
Changelog
Overview
Branches
Benchmarks
Runs
Performance History
Latest Results
chore: add changeset for decorated private method getter fix Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
ken7253:fix/decorators-private-method-getter-params
3 hours ago
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
7 hours ago
perf(ecma_utils): Round overflowing radix strings only once Try u64::from_str_radix first and only re-validate digits on failure, instead of scanning the whole string before every parse attempt. The upfront scan duplicated work from_str_radix already does internally, adding a second full pass over every radix literal even in the common case (short hex color codes, bit flags, hashes) where it can never change the outcome — parse success already implies the digits were valid. This was showing up as a small but consistent regression across several real-world library minification benchmarks.
YosefBlandin:feat/minifier-math-constant-folding
7 hours ago
Merge branch 'main' into feat/minifier-math-constant-folding
YosefBlandin:feat/minifier-math-constant-folding
8 hours ago
fix(es/compat): preserve for-of var binding scope (#12158) **Description:** The object-rest transform always emitted `let` for declarations moved from a `for-of` head into the loop body. That preserves lexical bindings, but changes an original `var` binding from function scope to block scope and makes it unavailable after the loop. This preserves the original declaration kind, adds fixture coverage for `var`/`let`/`const`, and adds a runtime regression that checks both post-loop `var` access and per-iteration lexical bindings. Verified with the focused object-rest fixture and runtime tests, `cargo fmt`, and Clippy for the affected crates. **Related issue (if exists):** Fixes #12153
main
14 hours 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
14 hours ago
chore: Add changeset
August-Z:codex/fix-do-while-false-control-flow
14 hours ago
chore: Add changeset
August-Z:codex/fix-do-while-false-control-flow
15 hours ago
Latest Branches
CodSpeed Performance Gauge
0%
fix(es/decorators): drop params from getter replacing decorated private method
#12161
4 hours ago
21db9d6
ken7253:fix/decorators-private-method-getter-params
CodSpeed Performance Gauge
0%
feat(es/minifier): Evaluate Math.floor, Math.ceil, Math.round and Mat…
#12117
7 hours ago
680c708
YosefBlandin:feat/minifier-math-constant-folding
CodSpeed Performance Gauge
0%
fix(es/minifier): preserve do-while control-flow targets
#12160
15 hours ago
4034ad9
August-Z:codex/fix-do-while-false-control-flow
© 2026 CodSpeed Technology
Home
Terms
Privacy
Docs