Skip to content

Conversation

quininer
Copy link
Contributor

@quininer quininer commented Aug 6, 2025

Summary

This PR updates the swc version to 35.0.0 and switch the swc plugin runner backend from wasmer to wasmtime.

Related links

Checklist

  • Tests updated (or not required).
  • Documentation updated (or not required).

Copy link

netlify bot commented Aug 6, 2025

Deploy Preview for rspack canceled.

Name Link
🔨 Latest commit da493fb
🔍 Latest deploy log https://app.netlify.com/projects/rspack/deploys/68942823fd80bd0008f5c8b8

@github-actions github-actions bot added team The issue/pr is created by the member of Rspack. release: performance release: performance related release(mr only) labels Aug 6, 2025
@quininer quininer force-pushed the o/wasmtime branch 2 times, most recently from 06c805f to 2163d74 Compare August 6, 2025 03:44
Copy link
Contributor

github-actions bot commented Aug 6, 2025

📦 Binary Size-limit

Comparing da493fb to perf: parallel mangle exports (#10877) by harpsealjs

🎉 Size decreased by 2.76MB from 50.38MB to 47.62MB (⬇️5.48%)

@quininer quininer force-pushed the o/wasmtime branch 3 times, most recently from ddde9ab to 9de33dc Compare August 6, 2025 04:15
Copy link

codspeed-hq bot commented Aug 6, 2025

CodSpeed Performance Report

Merging #11303 will not alter performance

Comparing o/wasmtime (da493fb) with main (805363e)

🎉 Hooray! codspeed-rust just leveled up to 2.7.2!

A heads-up, this is a breaking change and it might affect your current performance baseline a bit. But here's the exciting part - it's packed with new, cool features and promises improved result stability 🥳!
Curious about what's new? Visit our releases page to delve into all the awesome details about this new version.

Summary

✅ 17 untouched benchmarks

@quininer quininer force-pushed the o/wasmtime branch 2 times, most recently from f201f0e to 76d0202 Compare August 6, 2025 04:51
Copy link
Contributor

github-actions bot commented Aug 6, 2025

📝 Benchmark detail: Open

Name Base (2025-08-06 e147092) Current Change
10000_big_production-mode_disable-minimize + exec 29.9 s ± 874 ms 32.3 s ± 477 ms +8.15 %
10000_development-mode + exec 1.78 s ± 16 ms 2.03 s ± 49 ms +14.46 %
10000_development-mode_hmr + exec 696 ms ± 14 ms 700 ms ± 12 ms +0.62 %
10000_production-mode + exec 1.79 s ± 38 ms 2.01 s ± 43 ms +12.31 %
10000_production-mode_persistent-cold + exec 1.97 s ± 108 ms 2.16 s ± 45 ms +9.75 %
10000_production-mode_persistent-hot + exec 1.41 s ± 45 ms 1.42 s ± 69 ms +0.60 %
arco-pro_development-mode + exec 1.78 s ± 105 ms 1.8 s ± 43 ms +1.10 %
arco-pro_development-mode_hmr + exec 366 ms ± 0.68 ms 367 ms ± 1 ms +0.24 %
arco-pro_production-mode + exec 3.29 s ± 152 ms 3.26 s ± 26 ms -0.90 %
arco-pro_production-mode_generate-package-json-webpack-plugin + exec 3.41 s ± 149 ms 3.43 s ± 72 ms +0.53 %
arco-pro_production-mode_persistent-cold + exec 3.34 s ± 112 ms 3.47 s ± 302 ms +3.99 %
arco-pro_production-mode_persistent-hot + exec 2.06 s ± 144 ms 2.01 s ± 73 ms -2.65 %
arco-pro_production-mode_traverse-chunk-modules + exec 3.33 s ± 93 ms 3.4 s ± 306 ms +2.14 %
large-dyn-imports_development-mode + exec 1.99 s ± 17 ms 2.24 s ± 204 ms +12.62 %
large-dyn-imports_production-mode + exec 1.97 s ± 30 ms 2.1 s ± 29 ms +6.45 %
threejs_development-mode_10x + exec 1.51 s ± 29 ms 1.51 s ± 17 ms -0.22 %
threejs_development-mode_10x_hmr + exec 918 ms ± 26 ms 898 ms ± 8.6 ms -2.13 %
threejs_production-mode_10x + exec 4.64 s ± 312 ms 4.59 s ± 76 ms -1.26 %
threejs_production-mode_10x_persistent-cold + exec 4.78 s ± 355 ms 4.76 s ± 234 ms -0.44 %
threejs_production-mode_10x_persistent-hot + exec 4.19 s ± 51 ms 4.19 s ± 162 ms +0.07 %
10000_big_production-mode_disable-minimize + rss memory 9887 MiB ± 368 MiB 10486 MiB ± 386 MiB +6.05 %
10000_development-mode + rss memory 689 MiB ± 17.7 MiB 1114 MiB ± 67.9 MiB +61.67 %
10000_development-mode_hmr + rss memory 835 MiB ± 33.1 MiB 1255 MiB ± 72.6 MiB +50.34 %
10000_production-mode + rss memory 646 MiB ± 14.6 MiB 947 MiB ± 63 MiB +46.63 %
10000_production-mode_persistent-cold + rss memory 774 MiB ± 64.3 MiB 1074 MiB ± 76.1 MiB +38.77 %
10000_production-mode_persistent-hot + rss memory 755 MiB ± 48.6 MiB 750 MiB ± 49.4 MiB -0.65 %
arco-pro_development-mode + rss memory 607 MiB ± 44 MiB 746 MiB ± 82.5 MiB +22.99 %
arco-pro_development-mode_hmr + rss memory 509 MiB ± 9.52 MiB 699 MiB ± 155 MiB +37.32 %
arco-pro_production-mode + rss memory 735 MiB ± 69.1 MiB 890 MiB ± 94.9 MiB +21.11 %
arco-pro_production-mode_generate-package-json-webpack-plugin + rss memory 753 MiB ± 103 MiB 860 MiB ± 48.8 MiB +14.24 %
arco-pro_production-mode_persistent-cold + rss memory 800 MiB ± 57.9 MiB 993 MiB ± 66.4 MiB +24.12 %
arco-pro_production-mode_persistent-hot + rss memory 649 MiB ± 66.7 MiB 656 MiB ± 37.4 MiB +1.15 %
arco-pro_production-mode_traverse-chunk-modules + rss memory 762 MiB ± 95.4 MiB 878 MiB ± 69.8 MiB +15.15 %
large-dyn-imports_development-mode + rss memory 727 MiB ± 9.14 MiB 755 MiB ± 7.85 MiB +3.93 %
large-dyn-imports_production-mode + rss memory 629 MiB ± 5.64 MiB 653 MiB ± 7.87 MiB +3.75 %
threejs_development-mode_10x + rss memory 630 MiB ± 16.7 MiB 681 MiB ± 25.2 MiB +8.06 %
threejs_development-mode_10x_hmr + rss memory 829 MiB ± 65.4 MiB 882 MiB ± 54 MiB +6.43 %
threejs_production-mode_10x + rss memory 825 MiB ± 220 MiB 910 MiB ± 203 MiB +10.33 %
threejs_production-mode_10x_persistent-cold + rss memory 839 MiB ± 19.7 MiB 879 MiB ± 22 MiB +4.69 %
threejs_production-mode_10x_persistent-hot + rss memory 709 MiB ± 43.6 MiB 719 MiB ± 20.9 MiB +1.42 %

Threshold exceeded: ["10000_big_production-mode_disable-minimize + exec","10000_development-mode + exec","10000_production-mode + exec","10000_production-mode_persistent-cold + exec","large-dyn-imports_development-mode + exec","large-dyn-imports_production-mode + exec","10000_development-mode + rss memory","10000_development-mode_hmr + rss memory","10000_production-mode + rss memory","10000_production-mode_persistent-cold + rss memory","arco-pro_development-mode_hmr + rss memory"]

Copy link
Contributor

github-actions bot commented Aug 6, 2025

📝 Benchmark detail: Open

Name Base (2025-08-06 e147092) Current Change
10000_big_production-mode_disable-minimize + exec 29.9 s ± 874 ms 32.1 s ± 414 ms +7.42 %
10000_development-mode + exec 1.78 s ± 16 ms 2.04 s ± 58 ms +15.15 %
10000_development-mode_hmr + exec 696 ms ± 14 ms 702 ms ± 36 ms +0.82 %
10000_production-mode + exec 1.79 s ± 38 ms 2.02 s ± 53 ms +12.80 %
10000_production-mode_persistent-cold + exec 1.97 s ± 108 ms 2.21 s ± 137 ms +12.16 %
10000_production-mode_persistent-hot + exec 1.41 s ± 45 ms 1.4 s ± 60 ms -0.67 %
arco-pro_development-mode + exec 1.78 s ± 105 ms 1.8 s ± 125 ms +1.08 %
arco-pro_development-mode_hmr + exec 366 ms ± 0.68 ms 366 ms ± 0.64 ms +0.12 %
arco-pro_production-mode + exec 3.29 s ± 152 ms 3.33 s ± 154 ms +1.12 %
arco-pro_production-mode_generate-package-json-webpack-plugin + exec 3.41 s ± 149 ms 3.39 s ± 161 ms -0.66 %
arco-pro_production-mode_persistent-cold + exec 3.34 s ± 112 ms 3.44 s ± 156 ms +3.02 %
arco-pro_production-mode_persistent-hot + exec 2.06 s ± 144 ms 2.02 s ± 51 ms -2.20 %
arco-pro_production-mode_traverse-chunk-modules + exec 3.33 s ± 93 ms 3.38 s ± 125 ms +1.32 %
large-dyn-imports_development-mode + exec 1.99 s ± 17 ms 2.2 s ± 50 ms +10.28 %
large-dyn-imports_production-mode + exec 1.97 s ± 30 ms 2.09 s ± 12 ms +5.97 %
threejs_development-mode_10x + exec 1.51 s ± 29 ms 1.51 s ± 44 ms +0.05 %
threejs_development-mode_10x_hmr + exec 918 ms ± 26 ms 900 ms ± 12 ms -1.94 %
threejs_production-mode_10x + exec 4.64 s ± 312 ms 4.67 s ± 206 ms +0.65 %
threejs_production-mode_10x_persistent-cold + exec 4.78 s ± 355 ms 4.81 s ± 231 ms +0.48 %
threejs_production-mode_10x_persistent-hot + exec 4.19 s ± 51 ms 4.2 s ± 155 ms +0.25 %
10000_big_production-mode_disable-minimize + rss memory 9887 MiB ± 368 MiB 10470 MiB ± 424 MiB +5.89 %
10000_development-mode + rss memory 689 MiB ± 17.7 MiB 1167 MiB ± 72.6 MiB +69.32 %
10000_development-mode_hmr + rss memory 835 MiB ± 33.1 MiB 1304 MiB ± 62.9 MiB +56.16 %
10000_production-mode + rss memory 646 MiB ± 14.6 MiB 1009 MiB ± 89 MiB +56.13 %
10000_production-mode_persistent-cold + rss memory 774 MiB ± 64.3 MiB 1119 MiB ± 65.3 MiB +44.63 %
10000_production-mode_persistent-hot + rss memory 755 MiB ± 48.6 MiB 770 MiB ± 29.3 MiB +2.00 %
arco-pro_development-mode + rss memory 607 MiB ± 44 MiB 791 MiB ± 75.7 MiB +30.30 %
arco-pro_development-mode_hmr + rss memory 509 MiB ± 9.52 MiB 695 MiB ± 110 MiB +36.57 %
arco-pro_production-mode + rss memory 735 MiB ± 69.1 MiB 942 MiB ± 52.6 MiB +28.16 %
arco-pro_production-mode_generate-package-json-webpack-plugin + rss memory 753 MiB ± 103 MiB 913 MiB ± 60.1 MiB +21.32 %
arco-pro_production-mode_persistent-cold + rss memory 800 MiB ± 57.9 MiB 967 MiB ± 141 MiB +20.93 %
arco-pro_production-mode_persistent-hot + rss memory 649 MiB ± 66.7 MiB 659 MiB ± 24.4 MiB +1.54 %
arco-pro_production-mode_traverse-chunk-modules + rss memory 762 MiB ± 95.4 MiB 938 MiB ± 59.6 MiB +23.11 %
large-dyn-imports_development-mode + rss memory 727 MiB ± 9.14 MiB 773 MiB ± 9.62 MiB +6.34 %
large-dyn-imports_production-mode + rss memory 629 MiB ± 5.64 MiB 679 MiB ± 7.1 MiB +8.03 %
threejs_development-mode_10x + rss memory 630 MiB ± 16.7 MiB 721 MiB ± 58.9 MiB +14.49 %
threejs_development-mode_10x_hmr + rss memory 829 MiB ± 65.4 MiB 948 MiB ± 41.5 MiB +14.40 %
threejs_production-mode_10x + rss memory 825 MiB ± 220 MiB 985 MiB ± 140 MiB +19.44 %
threejs_production-mode_10x_persistent-cold + rss memory 839 MiB ± 19.7 MiB 952 MiB ± 36.4 MiB +13.39 %
threejs_production-mode_10x_persistent-hot + rss memory 709 MiB ± 43.6 MiB 746 MiB ± 44.7 MiB +5.27 %

Threshold exceeded: ["10000_big_production-mode_disable-minimize + exec","10000_development-mode + exec","10000_production-mode + exec","10000_production-mode_persistent-cold + exec","large-dyn-imports_development-mode + exec","large-dyn-imports_production-mode + exec","10000_development-mode + rss memory","10000_development-mode_hmr + rss memory","10000_production-mode + rss memory","10000_production-mode_persistent-cold + rss memory","arco-pro_development-mode + rss memory","arco-pro_development-mode_hmr + rss memory"]

kdy1 pushed a commit to swc-project/swc that referenced this pull request Aug 6, 2025
)

**Description:**

Currently, `wasmtime-wasi` uses tokio `block_on` internally, which
causes panic when used in the tokio runtime.

I originally thought this could be solved by use `block_in_place`, but
the large scope of `block_in_place` caused a serious performance
regression (even without use plugin). see
web-infra-dev/rspack#11303 (comment)

Switch to `wasi-common` is a better choice, which simplifies the wasi
implment and makes it independent of tokio.
Copy link
Contributor

github-actions bot commented Aug 7, 2025

📝 Benchmark detail: Open

Name Base (2025-08-07 1e3a0c1) Current Change
10000_big_production-mode_disable-minimize + exec 29.7 s ± 644 ms 29.8 s ± 686 ms +0.32 %
10000_development-mode + exec 1.78 s ± 28 ms 1.74 s ± 33 ms -1.97 %
10000_development-mode_hmr + exec 695 ms ± 15 ms 691 ms ± 11 ms -0.60 %
10000_production-mode + exec 1.8 s ± 52 ms 1.77 s ± 38 ms -2.13 %
10000_production-mode_persistent-cold + exec 2 s ± 139 ms 1.94 s ± 43 ms -2.67 %
10000_production-mode_persistent-hot + exec 1.42 s ± 37 ms 1.42 s ± 149 ms -0.13 %
arco-pro_development-mode + exec 1.75 s ± 75 ms 1.8 s ± 121 ms +2.52 %
arco-pro_development-mode_hmr + exec 366 ms ± 1.5 ms 366 ms ± 1.2 ms -0.10 %
arco-pro_production-mode + exec 3.27 s ± 77 ms 3.3 s ± 236 ms +0.80 %
arco-pro_production-mode_generate-package-json-webpack-plugin + exec 3.41 s ± 206 ms 3.37 s ± 55 ms -1.25 %
arco-pro_production-mode_persistent-cold + exec 3.42 s ± 245 ms 3.37 s ± 65 ms -1.32 %
arco-pro_production-mode_persistent-hot + exec 2.05 s ± 54 ms 2.06 s ± 160 ms +0.74 %
arco-pro_production-mode_traverse-chunk-modules + exec 3.34 s ± 264 ms 3.34 s ± 28 ms -0.22 %
large-dyn-imports_development-mode + exec 1.96 s ± 25 ms 1.95 s ± 22 ms -0.79 %
large-dyn-imports_production-mode + exec 1.96 s ± 34 ms 1.95 s ± 56 ms -0.46 %
threejs_development-mode_10x + exec 1.51 s ± 22 ms 1.53 s ± 28 ms +0.98 %
threejs_development-mode_10x_hmr + exec 908 ms ± 26 ms 918 ms ± 14 ms +1.12 %
threejs_production-mode_10x + exec 4.62 s ± 77 ms 4.7 s ± 144 ms +1.71 %
threejs_production-mode_10x_persistent-cold + exec 4.73 s ± 85 ms 4.77 s ± 57 ms +0.94 %
threejs_production-mode_10x_persistent-hot + exec 4.18 s ± 264 ms 4.25 s ± 241 ms +1.60 %
10000_big_production-mode_disable-minimize + rss memory 9876 MiB ± 272 MiB 9935 MiB ± 168 MiB +0.59 %
10000_development-mode + rss memory 691 MiB ± 28.2 MiB 727 MiB ± 25.3 MiB +5.35 %
10000_development-mode_hmr + rss memory 834 MiB ± 34.1 MiB 852 MiB ± 38.4 MiB +2.20 %
10000_production-mode + rss memory 642 MiB ± 14.4 MiB 702 MiB ± 48.7 MiB +9.31 %
10000_production-mode_persistent-cold + rss memory 761 MiB ± 26.1 MiB 818 MiB ± 59 MiB +7.54 %
10000_production-mode_persistent-hot + rss memory 731 MiB ± 58.1 MiB 775 MiB ± 44.6 MiB +5.95 %
arco-pro_development-mode + rss memory 642 MiB ± 46 MiB 620 MiB ± 52.2 MiB -3.43 %
arco-pro_development-mode_hmr + rss memory 512 MiB ± 14.5 MiB 523 MiB ± 13.5 MiB +2.27 %
arco-pro_production-mode + rss memory 729 MiB ± 62.8 MiB 759 MiB ± 81.8 MiB +4.14 %
arco-pro_production-mode_generate-package-json-webpack-plugin + rss memory 766 MiB ± 81 MiB 740 MiB ± 127 MiB -3.33 %
arco-pro_production-mode_persistent-cold + rss memory 803 MiB ± 79.4 MiB 815 MiB ± 46.3 MiB +1.43 %
arco-pro_production-mode_persistent-hot + rss memory 660 MiB ± 69.3 MiB 666 MiB ± 42.2 MiB +0.96 %
arco-pro_production-mode_traverse-chunk-modules + rss memory 751 MiB ± 34.5 MiB 767 MiB ± 79.7 MiB +2.09 %
large-dyn-imports_development-mode + rss memory 733 MiB ± 23 MiB 733 MiB ± 20.4 MiB +0.06 %
large-dyn-imports_production-mode + rss memory 634 MiB ± 13.5 MiB 635 MiB ± 10.2 MiB +0.09 %
threejs_development-mode_10x + rss memory 651 MiB ± 29.5 MiB 685 MiB ± 22.2 MiB +5.19 %
threejs_development-mode_10x_hmr + rss memory 859 MiB ± 60.3 MiB 875 MiB ± 59.6 MiB +1.97 %
threejs_production-mode_10x + rss memory 846 MiB ± 211 MiB 893 MiB ± 221 MiB +5.60 %
threejs_production-mode_10x_persistent-cold + rss memory 875 MiB ± 45.6 MiB 889 MiB ± 56.1 MiB +1.55 %
threejs_production-mode_10x_persistent-hot + rss memory 737 MiB ± 24.1 MiB 742 MiB ± 31.8 MiB +0.59 %

@quininer quininer marked this pull request as ready for review August 7, 2025 05:22
@Copilot Copilot AI review requested due to automatic review settings August 7, 2025 05:22
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR updates SWC dependencies and switches the WebAssembly runtime from wasmer to wasmtime for plugin execution. The update brings SWC from version 33.0.0 to 35.0.0 and introduces wasmtime as the new WASM runtime backend.

Key changes include:

  • Update SWC core and related dependencies to version 35.0.0
  • Replace wasmer-based plugin runtime with wasmtime implementation
  • Clean up dependency allowlist in deny.toml by removing unused crates

Reviewed Changes

Copilot reviewed 11 out of 13 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
crates/rspack_workspace/src/generated.rs Updates SWC version constant from 33.0.0 to 35.0.0
crates/rspack_util/src/swc/runtime.rs Adds new wasmtime-based plugin runtime implementation
crates/rspack_util/src/swc.rs Exposes the new runtime module under plugin feature flag
crates/rspack_util/Cargo.toml Adds wasmtime and related dependencies for plugin feature
crates/rspack_loader_swc/src/lib.rs Integrates wasmtime runtime into SWC loader configuration
crates/rspack_loader_swc/Cargo.toml Updates plugin feature dependencies to use wasmtime
crates/rspack_binding_api/src/swc.rs Integrates wasmtime runtime into binding API
crates/rspack_binding_api/Cargo.toml Adds rspack_util plugin feature dependency
Cargo.toml Updates SWC package versions and adds wasmtime dependencies
deny.toml Removes unused dependency allowlist entries
packages/rspack-test-tools/tests/watchCases/build-chunk-graph/runtime-chunk-recover-error/1/errors.js Updates expected error messages for new parser

@quininer quininer requested a review from ahabhgk August 7, 2025 05:56
@quininer quininer merged commit 1058ba0 into main Aug 7, 2025
75 of 77 checks passed
@quininer quininer deleted the o/wasmtime branch August 7, 2025 06:20
@chenjiahan
Copy link
Member

Could you add a PR description? 😄

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
release: performance release: performance related release(mr only) team The issue/pr is created by the member of Rspack.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants