What's Changed
🎉 See Announcing Rspack 2.1 for more details.
New Features 🎉
- feat: expose module error JS API by @SyMind in #14351
- feat(cache): log persistent cache read and write timings by @hardfist in #14314
- feat(module_graph): expose
getProvidedExports()to JS API by @logonoff in #14349 - feat: support drop inactive branch dependencies for member expr by @ahabhgk in #14382
- feat(runtime): introduce experimental.runtimeMode by @LingyuCoder in #14254
- feat: support branch guarded export presence for
inon ESM imports by @ahabhgk in #14426 - feat: bump swc to support react compiler by @CPunisher in #14435
- feat(runtime): runtime internals of rspack runtime mode by @LingyuCoder in #14427
- feat(rsdoctor): expose export usage graph by @JSerFeng in #14291
- feat: enable pureFunctions by default by @JSerFeng in #14465
- feat(cache): add maxAge and maxGenerations for persistent cache cleanup by @matthewdavis-oai in #14296
- feat: make persistent cache max generations default to 3 by @ahabhgk in #14534
- feat: rename persistent cache
maxGenerationstomaxVersionsby @ahabhgk in #14545 - feat: harden persistent cache version cleanup with typed version by @ahabhgk in #14552
- feat: support riscv64 targets by @swwind in #14447
- feat(cache): make stale version cleanup fire-and-forget by @ahabhgk in #14564
Performance 🚀
- perf: remove serde json by @SyMind in #14272
- perf: use mask intersects instead of flag iteration for scope globals by @stormslowly in #14353
- perf: add ASCII fast path for dependency location column computation by @stormslowly in #14355
- perf: force DFA automaton for real content hash scanning by @stormslowly in #14356
- perf(core): reduce memcpy overhead by @hardfist in #14381
- perf: reduce flag dependency usage key allocations by @LingyuCoder in #14417
- perf: reduce build chunk graph preparation work by @LingyuCoder in #14421
- perf(sources): avoid cloning source maps with borrowed fields by @SyMind in #14380
- perf: optimize module concatenation traversal by @LingyuCoder in #14422
- perf(loader-runner): cache esm loader imports by @hardfist in #14434
- perf(core): optimize resource parsing by @chenjiahan in #14456
- perf(ci): drop redundant cargo check from rust CI by @stormslowly in #14461
- perf: avoid JavaScriptTracer overhead when tracing is disabled by @chenjiahan in #14468
- perf(loader-runner): reduce loader object construction overhead by @chenjiahan in #14477
- perf: optimize compilation entrypoints getter by @chenjiahan in #14485
- perf: reduce asset wrapper overhead by @chenjiahan in #14487
- perf(deps): bump camino to 1.2.3 by @stormslowly in #14519
- perf(ci): drop debuginfo from the whole ci profile by @stormslowly in #14528
- perf(core): reduce source map serialization overhead by @chenjiahan in #14547
- perf(module-concat): prune readable identifier work by @LingyuCoder in #14537
- perf: reduce module ids assignment overhead by @LingyuCoder in #14553
Bug Fixes 🐞
- fix: preserve inline source content for transform sourcemaps by @intellild in #14350
- fix: remove webpackSource and webpackDefer magic comments by @ahabhgk in #14364
- fix: apply global
overrideStrictfor ContextModule by @colinaaa in #14361 - fix(watcher): filter ignored-subtree events that emit a spurious folder change by @stormslowly in #14329
- fix: use ChunkWithSizeInfo delimiter in maxInitialSize chunk naming fallback path by @wr40000 in #14331
- fix: wait for in-flight build before closing compiler by @stormslowly in #14377
- fix(browser): point wasi-worker-browser export to dist file by @stormslowly in #14415
- fix(tree-shaking): handle nested pure function calls by @JSerFeng in #14375
- fix: cherry-pick mf manifest expose assets by @2heal1 in #14339
- fix: cache import.meta filename and dirname outside eval by @intellild in #14423
- fix(pure-functions): keep deferred pure import callees by @JSerFeng in #14425
- fix: improve createRequire argument parsing by @JSerFeng in #14424
- fix(rstest): preserve mocks in module chunk loading by @9aoy in #14472
- fix(rspack_watcher): prevent watch-root panic from orphaned path tree by @stormslowly in #14448
- fix(test): isolate source for fixture-writing config cases by @stormslowly in #14462
- fix: change default value of createRequire parsing to false by @JSerFeng in #14482
- fix(types): align wasm loading types by @chenjiahan in #14506
- fix(split-chunks): align max size grouping with webpack by @intellild in #14481
- fix(rstest): fallback to automock for missing manual mocks by @9aoy in #14418
- fix(css): preserve undeclared css module idents by @intellild in #14497
- fix(mf): stabilize consume shared runtime output by @2heal1 in #14532
- fix(cache): default context_dependencies snapshot strategy to timestamp by @hardfist in #14490
- fix(core): support watcher events on native WatchFileSystem by @stormslowly in #14404
- fix: default html script loading to module for module output by @intellild in #14544
- fix: parse preserved magic comments by @intellild in #14536
- fix: preserve source phase for wasm externals by @intellild in #14494
- fix: handle cjs export assignment side effects by @JSerFeng in #14260
- fix(error): use theme-based styling instead of environment-sniffing
dim()in graphical renderer by @ruanyl in #14561 - fix: exclude for const/let in/of decl from hoisted decls by @swwind in #14287
- fix(types): align SWC unsafe function option by @haakjunlee in #14134
- fix(core): set rslib runtime chunk names by @Timeless0911 in #14575
- fix(core): exclude node_modules files from require.context map by @fi3ework in #14576
Refactor 🔨
- refactor(binding): consolidate module property definitions by @SyMind in #14365
- refactor: remove unused unresolved context from pure checks by @CPunisher in #14433
- refactor: merge webpack api parser plugins by @LingyuCoder in #14529
- refactor(core): remove unused TS exports by @chenjiahan in #14548
Document 📖
- docs: document source phase imports by @chenjiahan in #14360
- docs: fix optimization config types by @chenjiahan in #14370
- docs: document split chunks options by @chenjiahan in #14371
- docs: add Remotion to ecosystem by @chenjiahan in #14374
- docs: update magic comment version and anchors by @chenjiahan in #14378
- docs: update Vite comparison docs by @chenjiahan in #14412
- docs: update Rollup comparison docs by @chenjiahan in #14413
- docs: update rules use parallel type by @chenjiahan in #14416
- docs: add instructions for unsupported platforms by @swwind in #14442
- docs(website): fix Rspress summary style by @chenjiahan in #14449
- docs: improve incremental config docs by @chenjiahan in #14450
- docs: add GitHub to who is using by @chenjiahan in #14474
- docs: fix duplicate createRequire parser docs by @JSerFeng in #14486
- docs: update React Compiler guide by @chenjiahan in #14496
- docs: remove redundant javascript/auto type examples by @chenjiahan in #14499
- docs: update ESM config examples by @chenjiahan in #14505
- docs: fix entry config docs by @chenjiahan in #14514
- docs: fix module config types by @chenjiahan in #14515
- docs: fix resolve config types by @chenjiahan in #14516
- docs: fix stats config types by @chenjiahan in #14518
- docs: document dev server options by @chenjiahan in #14523
- docs: move cache migration guide by @chenjiahan in #14535
- docs: improve cache option documentation by @chenjiahan in #14540
- docs: fix broken member links by @chenjiahan in #14563
Other Changes
- chore: release version 2.0.8 by @chenjiahan in #14345
- revert: "fix: temporarily revert JS parser changes causing runtime err" by @CPunisher in #14347
- chore: add scope hoisting regression for for-init references by @CPunisher in #14352
- chore(ci): update ecosystem ci action to v0.3.2 by @Timeless0911 in #14362
- chore(ci): use mini runner to offload lightweight CI jobs by @stormslowly in #14363
- chore(ci): use mini runner for lint workflow by @chenjiahan in #14376
- chore(deps): group emnapi renovate updates by @chenjiahan in #14390
- chore(deps): update dependency terser-webpack-plugin to ^5.6.1 by @renovate[bot] in #14393
- test(wasm): skip file-dependencies-huge to fix flaky afterAll timeout by @stormslowly in #14399
- chore(deps): update yarn to v4.16.0 by @renovate[bot] in #14396
- chore(deps): update dependency http-proxy-middleware to ^4.1.0 by @renovate[bot] in #14392
- chore(deps): update dependency rspack-merge to v1 by @renovate[bot] in #14397
- chore(deps): update dependency ts-checker-rspack-plugin to ^1.4.0 by @renovate[bot] in #14394
- chore(deps): update dependency @rslint/core to v0.6.1 by @renovate[bot] in #14391
- chore(deps): update dependency semver to ^7.8.4 by @renovate[bot] in #14408
- chore(deps): update pnpm to v11.6.0 by @renovate[bot] in #14409
- chore(deps): update dependency acorn to ^8.17.0 by @renovate[bot] in #14407
- chore(deps): update patch crates by @renovate[bot] in #14385
- chore(deps): update patch npm dependencies by @renovate[bot] in #14386
- chore(deps): update react and @rspack/plugin-preact-refresh by @renovate[bot] in #14406
- chore: bump swc exp from 0.10.0 to 0.11.0 by @CPunisher in #14379
- chore(ci): split wasm release build into parallel wasi/browser jobs by @stormslowly in #14414
- chore(deps): update emnapi to v1.11.1 by @renovate[bot] in #14395
- chore(deps): bump swc_ecma_minifier to 55.0.2 for template-literal minify fix by @pkasarda in #14428
- chore: speed up crate release pipeline by @stormslowly in #14429
- chore(ci): use forked CodSpeed runner by @hardfist in #14432
- chore: limit walltime bench triggers by @hardfist in #14441
- chore: bump @rslint/core to 0.6.2 by @fansenze in #14470
- ci: disable debuginfo for the windows ci binding build by @stormslowly in #14479
- chore: release v2.1.0-beta.0 by @ahabhgk in #14480
- chore: remove codspeed js bench case by @SyMind in #14489
- test(tree-shaking): lock in pureFunctions innerGraph deferred-pure-check behavior by @JSerFeng in #14488
- chore(ci): pause portable cache check by @stormslowly in #14492
- chore(ci): align hookTimeout with testTimeout to fix flaky afterAll close timeout by @stormslowly in #14498
- chore(deps): update dependency http-proxy-middleware to v4.1.1 [security] by @renovate[bot] in #14500
- chore(deps): update dependency lint-staged to v17 by @renovate[bot] in #14504
- chore(deps): update pnpm to v11.8.0 by @renovate[bot] in #14503
- chore(deps): update dependency @rslib/core to ^0.23.0 by @renovate[bot] in #14501
- chore(deps): remove unused axios dependency by @chenjiahan in #14507
- chore(deps): update dependency enhanced-resolve to v5.24.0 by @renovate[bot] in #14512
- chore(deps): update dependency webpack-sources to v3.5.0 by @renovate[bot] in #14513
- chore(deps): bump rspack_resolver to 0.9.3 by @stormslowly in #14521
- chore(deps): update patch npm dependencies by @renovate[bot] in #14510
- chore(test): stabilize watch-detection on Windows with synchronous writes by @stormslowly in #14520
- test: replace non_webpack_require in tests by @LingyuCoder in #14530
- chore: bump swc_core from 68 to 71 by @CPunisher in #14526
- ci: upgrade rstack-ecosystem-ci actions to v0.3.3 by @stormslowly in #14542
- chore: walltime bench unbind to dedicated CPUs by @deanjingshui in #14543
- chore: add webpack gap tracking skill by @intellild in #14557
- chore: release version 2.1.0-rc.0 by @LingyuCoder in #14546
- chore: remove unused development commands by @chenjiahan in #14565
- chore(ci): report rust cache utilization per platform build by @stormslowly in #14559
- chore(ci): set HOME for walltime bench codspeed runner install by @stormslowly in #14569
- ci: keep reproduction label until close by @chenjiahan in #14570
- chore(skills): add release-blog-writer skill by @chenjiahan in #14571
- chore(ci): lift rust cache utilization by @stormslowly in #14568
New Contributors
- @wr40000 made their first contribution in #14331
- @pkasarda made their first contribution in #14428
- @swwind made their first contribution in #14442
- @matthewdavis-oai made their first contribution in #14296
- @ruanyl made their first contribution in #14561
- @haakjunlee made their first contribution in #14134
Full Changelog: v2.0.8...v2.1.0