web-infra-dev
rspack
Blog
Docs
Changelog
Blog
Docs
Changelog
Overview
Branches
Benchmarks
Runs
Performance History
Latest Results
fix: concatenate empty CommonJS export-star chains
fy/cjs-empty-exports
3 hours ago
Merge branch 'main' into chenjiahan/chore-heading-case-formatter
chenjiahan/chore-heading-case-formatter
3 hours ago
chore: use heading-case as a formatter plugin (#15405)
main
3 hours ago
ci: refresh self-hosted cache action reference (#15407) Co-authored-by: fenghao.0721 <fenghao.0721@bytedance.com>
main
4 hours ago
fix: treat CJS export assignment as side-effect-free without breaking innerGraph Re-lands the optimization from #14260 (treating `module.exports = X` / `exports.foo = X` as not a module-evaluation side effect, so an all-export CommonJS module can be tree-shaken when its exports are unused) while fixing the regression #14589 it caused. `is_pure_expression`, which is also the purity oracle for innerGraph. innerGraph then tagged `var _default = (exports.default = value)` as a pure declarator bound to the never-read local `_default`, emitted a PureExpressionDependency over the whole init, and on finding `_default` unused wrapped it in `null && (...)` — so the real `exports.default = value` write never ran and the Babel default export resolved to `undefined`. The relaxation belongs only to module-evaluation side-effect determination, not to innerGraph statement->symbol attribution (webpack's `isPure` likewise has no AssignmentExpression case). Instead of marking the assignment pure inside `is_pure_expression`, a small `is_module_eval_pure_expression` wrapper sees through the CJS export-assignment shell to its RHS and is used only by the SideEffectsParserPlugin module-level walk (`analyze_stmt_side_effects` and `is_pure_var_decl`). innerGraph keeps calling the unchanged `is_pure_expression`, so it never folds a CJS export write into an unused local. A free/unresolved global on the RHS is kept (observable), matching webpack. `get_module_evaluation_side_effects_state -> Active(false)` is restored on CommonJsExportsDependency and CommonJsSelfReferenceDependency so a module's own export writes don't re-mark it as side-effectful in connection-state aggregation. Adds `configCases/tree-shaking/cjs-export-default-reassign` asserting the reassigned default (42) and named (7) exports survive under production with innerGraph on. Test fixtures that asserted chunk/module presence of bare `module.exports = X` modules get a real side effect so they still exercise their intended behavior now that such modules are correctly tree-shaken. Fixes #14589
fy/cjs-export-assignment-side-effects
4 hours ago
fix(cache): aggregate the skipped cache item warning
lazerg:fix/issue-15406-skip-non-serializable-cache-entries
4 hours ago
fix: report diagnostics for unsupported context modes (#15361) Co-authored-by: dr4gan <116430214+dr4gan0x@users.noreply.github.com>
main
4 hours ago
fix: downgrade eval source maps for modern-module (#15404)
main
4 hours ago
Latest Branches
CodSpeed Performance Gauge
-3%
fix: concatenate empty CommonJS modules without export access
#14669
3 hours ago
7dd1a6f
fy/cjs-empty-exports
CodSpeed Performance Gauge
-2%
chore: use heading-case as a formatter plugin
#15405
4 hours ago
7629d2c
chenjiahan/chore-heading-case-formatter
CodSpeed Performance Gauge
+10%
fix: treat CJS export assignment as side-effect-free without breaking innerGraph
#14623
2 months ago
89bfc52
fy/cjs-export-assignment-side-effects
© 2026 CodSpeed Technology
Home
Terms
Privacy
Docs