Skip to content

refactor: Refactor ESMImportSpecifierDependency to share immutable data with Arc#13388

Draft
hardfist wants to merge 1 commit intomainfrom
codex/esmimportspecifierdependency
Draft

refactor: Refactor ESMImportSpecifierDependency to share immutable data with Arc#13388
hardfist wants to merge 1 commit intomainfrom
codex/esmimportspecifierdependency

Conversation

@hardfist
Copy link
Contributor

Summary

  • move the immutable fields of ESMImportSpecifierDependency into a new ESMImportSpecifierDependencyData
  • store that shared data behind Arc with AsInner to reduce clone cost
  • update dependency and template accessors to read from the shared data while keeping mutable runtime state on the outer struct

Testing

  • cargo fmt --all --check
  • cargo check -p rspack_plugin_javascript
  • cargo lint

@hardfist hardfist changed the title Refactor ESMImportSpecifierDependency to share immutable data with Arc refactor: Refactor ESMImportSpecifierDependency to share immutable data with Arc Mar 17, 2026
@github-actions
Copy link
Contributor

github-actions bot commented Mar 17, 2026

Rsdoctor Bundle Diff Analysis

Found 5 projects in monorepo, 0 projects with changes.

📊 Quick Summary
Project Total Size Change
react-10k 5.7 MB 0
react-1k 826.2 KB 0
react-5k 2.7 MB 0
rome 984.2 KB 0
ui-components 2.3 MB 0

Generated by Rsdoctor GitHub Action

@github-actions
Copy link
Contributor

github-actions bot commented Mar 17, 2026

📝 Benchmark detail: Open

Name Base (6dd75d2) Current Change
10000_big_production-mode_disable-minimize + exec 14.3 s ± 190 ms 14.2 s ± 179 ms -0.94 %
10000_development-mode + exec 939 ms ± 7.5 ms 925 ms ± 27 ms -1.51 %
10000_development-mode_hmr + stats 180 ms ± 3.3 ms 176 ms ± 6.7 ms -2.24 %
10000_development-mode_noop-loader + exec 2.1 s ± 88 ms 2.09 s ± 63 ms -0.70 %
10000_production-mode + exec 1.1 s ± 28 ms 1.08 s ± 16 ms -2.10 %
10000_production-mode_persistent-cold + exec 1.35 s ± 19 ms 1.34 s ± 22 ms -0.56 %
10000_production-mode_persistent-hot + exec 960 ms ± 26 ms 935 ms ± 27 ms -2.67 %
10000_production-mode_source-map + exec 1.28 s ± 16 ms 1.26 s ± 22 ms -2.01 %
arco-pro_development-mode + exec 1.35 s ± 62 ms 1.34 s ± 82 ms -0.41 %
arco-pro_development-mode_hmr + stats 37 ms ± 0.89 ms 37 ms ± 0.94 ms -0.63 %
arco-pro_production-mode + exec 2.45 s ± 62 ms 2.43 s ± 69 ms -0.81 %
arco-pro_production-mode_generate-package-json-webpack-plugin + exec 2.52 s ± 102 ms 2.47 s ± 80 ms -1.95 %
arco-pro_production-mode_persistent-cold + exec 2.53 s ± 50 ms 2.52 s ± 50 ms -0.32 %
arco-pro_production-mode_persistent-hot + exec 1.39 s ± 47 ms 1.38 s ± 46 ms -1.21 %
arco-pro_production-mode_source-map + exec 2.98 s ± 104 ms 2.87 s ± 84 ms -3.94 %
arco-pro_production-mode_traverse-chunk-modules + exec 2.48 s ± 41 ms 2.44 s ± 64 ms -1.58 %
bundled-threejs_development-mode + exec 187 ms ± 1.6 ms 185 ms ± 2 ms -1.28 %
bundled-threejs_production-mode + exec 220 ms ± 8.3 ms 216 ms ± 2.5 ms -1.64 %
large-dyn-imports_development-mode + exec 1.18 s ± 32 ms 1.16 s ± 20 ms -1.71 %
large-dyn-imports_production-mode + exec 1.33 s ± 39 ms 1.31 s ± 34 ms -1.43 %
threejs_development-mode_10x + exec 849 ms ± 19 ms 842 ms ± 53 ms -0.78 %
threejs_development-mode_10x_hmr + stats 120 ms ± 3 ms 117 ms ± 3.7 ms -2.22 %
threejs_production-mode_10x + exec 3.09 s ± 43 ms 3.05 s ± 45 ms -1.40 %
threejs_production-mode_10x_persistent-cold + exec 3.34 s ± 75 ms 3.26 s ± 67 ms -2.55 %
threejs_production-mode_10x_persistent-hot + exec 2.61 s ± 34 ms 2.57 s ± 30 ms -1.87 %
threejs_production-mode_10x_source-map + exec 3.9 s ± 26 ms 3.8 s ± 91 ms -2.40 %
10000_big_production-mode_disable-minimize + rss memory 1988 MiB ± 41.7 MiB 2020 MiB ± 28.1 MiB +1.61 %
10000_development-mode + rss memory 593 MiB ± 15.3 MiB 598 MiB ± 19.2 MiB +0.73 %
10000_development-mode_hmr + rss memory 812 MiB ± 45.4 MiB 804 MiB ± 44.6 MiB -1.01 %
10000_development-mode_noop-loader + rss memory 893 MiB ± 12.4 MiB 898 MiB ± 12.3 MiB +0.48 %
10000_production-mode + rss memory 544 MiB ± 14.1 MiB 542 MiB ± 13.8 MiB -0.36 %
10000_production-mode_persistent-cold + rss memory 727 MiB ± 12.3 MiB 720 MiB ± 4.63 MiB -0.89 %
10000_production-mode_persistent-hot + rss memory 642 MiB ± 39.9 MiB 635 MiB ± 39.6 MiB -1.03 %
10000_production-mode_source-map + rss memory 564 MiB ± 6.01 MiB 565 MiB ± 15.9 MiB +0.20 %
arco-pro_development-mode + rss memory 478 MiB ± 3.81 MiB 479 MiB ± 4.53 MiB +0.40 %
arco-pro_development-mode_hmr + rss memory 494 MiB ± 9.55 MiB 493 MiB ± 8.81 MiB -0.13 %
arco-pro_production-mode + rss memory 668 MiB ± 4.34 MiB 657 MiB ± 54.7 MiB -1.64 %
arco-pro_production-mode_generate-package-json-webpack-plugin + rss memory 687 MiB ± 15 MiB 692 MiB ± 4.37 MiB +0.72 %
arco-pro_production-mode_persistent-cold + rss memory 739 MiB ± 14.3 MiB 742 MiB ± 13.4 MiB +0.49 %
arco-pro_production-mode_persistent-hot + rss memory 529 MiB ± 30.5 MiB 530 MiB ± 13.3 MiB +0.02 %
arco-pro_production-mode_source-map + rss memory 764 MiB ± 4.76 MiB 761 MiB ± 21.9 MiB -0.38 %
arco-pro_production-mode_traverse-chunk-modules + rss memory 673 MiB ± 19.6 MiB 672 MiB ± 14.3 MiB -0.24 %
bundled-threejs_development-mode + rss memory 157 MiB ± 4.09 MiB 157 MiB ± 8.66 MiB -0.26 %
bundled-threejs_production-mode + rss memory 177 MiB ± 7.37 MiB 178 MiB ± 6.6 MiB +0.16 %
large-dyn-imports_development-mode + rss memory 592 MiB ± 41.7 MiB 591 MiB ± 11.5 MiB -0.01 %
large-dyn-imports_production-mode + rss memory 456 MiB ± 7.14 MiB 457 MiB ± 10.6 MiB +0.34 %
threejs_development-mode_10x + rss memory 533 MiB ± 11.8 MiB 535 MiB ± 10.9 MiB +0.33 %
threejs_development-mode_10x_hmr + rss memory 673 MiB ± 21.9 MiB 675 MiB ± 22.5 MiB +0.41 %
threejs_production-mode_10x + rss memory 713 MiB ± 19.7 MiB 720 MiB ± 21.2 MiB +1.02 %
threejs_production-mode_10x_persistent-cold + rss memory 850 MiB ± 11 MiB 842 MiB ± 18.5 MiB -0.88 %
threejs_production-mode_10x_persistent-hot + rss memory 611 MiB ± 7.22 MiB 610 MiB ± 7.21 MiB -0.04 %
threejs_production-mode_10x_source-map + rss memory 842 MiB ± 43.2 MiB 845 MiB ± 20.3 MiB +0.45 %

@github-actions
Copy link
Contributor

github-actions bot commented Mar 17, 2026

📦 Binary Size-limit

Comparing 1a43790 to chore: bump napi dependencies (#13362) by CPunisher

🎉 Size decreased by 3.00KB from 48.79MB to 48.78MB (⬇️0.01%)

@github-actions github-actions bot added team The issue/pr is created by the member of Rspack. release: refactor labels Mar 17, 2026
@codspeed-hq
Copy link

codspeed-hq bot commented Mar 17, 2026

Merging this PR will not alter performance

✅ 23 untouched benchmarks
⏩ 3 skipped benchmarks1


Comparing codex/esmimportspecifierdependency (1a43790) with main (a4e0229)

Open in CodSpeed

Footnotes

  1. 3 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

@github-actions
Copy link
Contributor

github-actions bot commented Mar 17, 2026

📝 Benchmark detail: Open

Name Base (6dd75d2) Current Change
10000_big_production-mode_disable-minimize + exec 14.3 s ± 190 ms 14.2 s ± 78 ms -1.11 %
10000_development-mode + exec 939 ms ± 7.5 ms 933 ms ± 39 ms -0.70 %
10000_development-mode_hmr + stats 180 ms ± 3.3 ms 177 ms ± 7.6 ms -1.70 %
10000_development-mode_noop-loader + exec 2.1 s ± 88 ms 2.07 s ± 60 ms -1.30 %
10000_production-mode + exec 1.1 s ± 28 ms 1.08 s ± 38 ms -2.54 %
10000_production-mode_persistent-cold + exec 1.35 s ± 19 ms 1.32 s ± 24 ms -2.24 %
10000_production-mode_persistent-hot + exec 960 ms ± 26 ms 952 ms ± 50 ms -0.83 %
10000_production-mode_source-map + exec 1.28 s ± 16 ms 1.26 s ± 28 ms -1.95 %
arco-pro_development-mode + exec 1.35 s ± 62 ms 1.33 s ± 80 ms -1.54 %
arco-pro_development-mode_hmr + stats 37 ms ± 0.89 ms 37 ms ± 0.42 ms -1.51 %
arco-pro_production-mode + exec 2.45 s ± 62 ms 2.43 s ± 61 ms -1.13 %
arco-pro_production-mode_generate-package-json-webpack-plugin + exec 2.52 s ± 102 ms 2.49 s ± 83 ms -1.18 %
arco-pro_production-mode_persistent-cold + exec 2.53 s ± 50 ms 2.52 s ± 58 ms -0.29 %
arco-pro_production-mode_persistent-hot + exec 1.39 s ± 47 ms 1.37 s ± 63 ms -1.45 %
arco-pro_production-mode_source-map + exec 2.98 s ± 104 ms 2.9 s ± 82 ms -2.76 %
arco-pro_production-mode_traverse-chunk-modules + exec 2.48 s ± 41 ms 2.44 s ± 83 ms -1.52 %
bundled-threejs_development-mode + exec 187 ms ± 1.6 ms 185 ms ± 1.9 ms -1.18 %
bundled-threejs_production-mode + exec 220 ms ± 8.3 ms 216 ms ± 2.5 ms -1.64 %
large-dyn-imports_development-mode + exec 1.18 s ± 32 ms 1.17 s ± 25 ms -0.93 %
large-dyn-imports_production-mode + exec 1.33 s ± 39 ms 1.31 s ± 36 ms -1.25 %
threejs_development-mode_10x + exec 849 ms ± 19 ms 833 ms ± 32 ms -1.93 %
threejs_development-mode_10x_hmr + stats 120 ms ± 3 ms 118 ms ± 3.1 ms -1.58 %
threejs_production-mode_10x + exec 3.09 s ± 43 ms 3.05 s ± 57 ms -1.37 %
threejs_production-mode_10x_persistent-cold + exec 3.34 s ± 75 ms 3.2 s ± 37 ms -4.18 %
threejs_production-mode_10x_persistent-hot + exec 2.61 s ± 34 ms 2.56 s ± 18 ms -1.98 %
threejs_production-mode_10x_source-map + exec 3.9 s ± 26 ms 3.77 s ± 24 ms -3.27 %
10000_big_production-mode_disable-minimize + rss memory 1988 MiB ± 41.7 MiB 2020 MiB ± 48.1 MiB +1.62 %
10000_development-mode + rss memory 593 MiB ± 15.3 MiB 597 MiB ± 17 MiB +0.61 %
10000_development-mode_hmr + rss memory 812 MiB ± 45.4 MiB 809 MiB ± 37.6 MiB -0.31 %
10000_development-mode_noop-loader + rss memory 893 MiB ± 12.4 MiB 898 MiB ± 16 MiB +0.47 %
10000_production-mode + rss memory 544 MiB ± 14.1 MiB 544 MiB ± 17 MiB -0.14 %
10000_production-mode_persistent-cold + rss memory 727 MiB ± 12.3 MiB 737 MiB ± 18.8 MiB +1.35 %
10000_production-mode_persistent-hot + rss memory 642 MiB ± 39.9 MiB 623 MiB ± 23.1 MiB -2.94 %
10000_production-mode_source-map + rss memory 564 MiB ± 6.01 MiB 567 MiB ± 9.12 MiB +0.56 %
arco-pro_development-mode + rss memory 478 MiB ± 3.81 MiB 476 MiB ± 9.04 MiB -0.24 %
arco-pro_development-mode_hmr + rss memory 494 MiB ± 9.55 MiB 497 MiB ± 7.83 MiB +0.53 %
arco-pro_production-mode + rss memory 668 MiB ± 4.34 MiB 657 MiB ± 45.5 MiB -1.64 %
arco-pro_production-mode_generate-package-json-webpack-plugin + rss memory 687 MiB ± 15 MiB 688 MiB ± 19.9 MiB +0.05 %
arco-pro_production-mode_persistent-cold + rss memory 739 MiB ± 14.3 MiB 743 MiB ± 13.4 MiB +0.56 %
arco-pro_production-mode_persistent-hot + rss memory 529 MiB ± 30.5 MiB 517 MiB ± 10.7 MiB -2.30 %
arco-pro_production-mode_source-map + rss memory 764 MiB ± 4.76 MiB 762 MiB ± 14.1 MiB -0.32 %
arco-pro_production-mode_traverse-chunk-modules + rss memory 673 MiB ± 19.6 MiB 670 MiB ± 16.7 MiB -0.46 %
bundled-threejs_development-mode + rss memory 157 MiB ± 4.09 MiB 159 MiB ± 7.87 MiB +0.95 %
bundled-threejs_production-mode + rss memory 177 MiB ± 7.37 MiB 179 MiB ± 12.1 MiB +0.93 %
large-dyn-imports_development-mode + rss memory 592 MiB ± 41.7 MiB 593 MiB ± 40.3 MiB +0.31 %
large-dyn-imports_production-mode + rss memory 456 MiB ± 7.14 MiB 460 MiB ± 5.29 MiB +0.83 %
threejs_development-mode_10x + rss memory 533 MiB ± 11.8 MiB 532 MiB ± 9.93 MiB -0.27 %
threejs_development-mode_10x_hmr + rss memory 673 MiB ± 21.9 MiB 671 MiB ± 27.6 MiB -0.19 %
threejs_production-mode_10x + rss memory 713 MiB ± 19.7 MiB 728 MiB ± 8.49 MiB +2.12 %
threejs_production-mode_10x_persistent-cold + rss memory 850 MiB ± 11 MiB 846 MiB ± 11.9 MiB -0.43 %
threejs_production-mode_10x_persistent-hot + rss memory 611 MiB ± 7.22 MiB 614 MiB ± 13.7 MiB +0.53 %
threejs_production-mode_10x_source-map + rss memory 842 MiB ± 43.2 MiB 862 MiB ± 24.5 MiB +2.45 %

@hardfist hardfist force-pushed the codex/esmimportspecifierdependency branch from a30bdab to 81f9049 Compare March 18, 2026 03:42
@hardfist hardfist force-pushed the codex/esmimportspecifierdependency branch from 81f9049 to 1a43790 Compare March 20, 2026 11:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release: refactor team The issue/pr is created by the member of Rspack.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant