-
-
Notifications
You must be signed in to change notification settings - Fork 757
refactor: move pass into separate folder and driven by run_passes #12735
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
✅ Deploy Preview for rspack canceled.
|
Rsdoctor Bundle Diff AnalysisFound 5 projects in monorepo, 0 projects with changes. 📊 Quick Summary
Generated by Rsdoctor GitHub Action |
📦 Binary Size-limit
❌ Size increased by 45.25KB from 47.97MB to 48.01MB (⬆️0.09%) |
Merging this PR will not alter performance
Comparing Footnotes
|
There was a problem hiding this 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 pull request refactors the Rspack compilation process by moving individual compilation passes from a monolithic mod.rs file into separate, dedicated modules. Inspired by Rust's rustc_passes design, this change improves code organization, maintainability, and separation of concerns.
Changes:
- Extracted 16 compilation passes into separate modules (optimize_dependencies, build_chunk_graph, optimize_modules, optimize_chunks, optimize_tree, optimize_chunk_modules, module_ids, chunk_ids, assign_runtime_ids, optimize_code_generation, create_module_hashes, code_generation, runtime_requirements, create_hash, create_module_assets, create_chunk_assets, process_assets, after_seal, finish_module)
- Created
run_passes.rsto orchestrate all compilation passes in a single location - Added comprehensive documentation in
rspack_passes.mddescribing the modular architecture and pass execution order
Reviewed changes
Copilot reviewed 24 out of 24 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| crates/rspack_core/src/compilation/mod.rs | Removed large blocks of compilation pass code; added module declarations for new pass modules; removed obsolete imports |
| crates/rspack_core/src/compilation/run_passes.rs | New orchestration module that drives all compilation passes in sequence |
| crates/rspack_core/src/compilation/rspack_passes.md | Documentation describing the new modular architecture and pass order |
| crates/rspack_core/src/compilation/runtime_requirements/mod.rs | Extracted runtime requirements pass implementation |
| crates/rspack_core/src/compilation/process_assets/mod.rs | Extracted process assets pass implementation |
| crates/rspack_core/src/compilation/optimize_tree/mod.rs | Extracted optimize tree pass implementation |
| crates/rspack_core/src/compilation/optimize_modules/mod.rs | Extracted optimize modules pass implementation |
| crates/rspack_core/src/compilation/optimize_dependencies/mod.rs | Extracted optimize dependencies pass implementation |
| crates/rspack_core/src/compilation/optimize_code_generation/mod.rs | Extracted optimize code generation pass implementation |
| crates/rspack_core/src/compilation/optimize_chunks/mod.rs | Extracted optimize chunks pass implementation |
| crates/rspack_core/src/compilation/optimize_chunk_modules/mod.rs | Extracted optimize chunk modules pass implementation |
| crates/rspack_core/src/compilation/module_ids/mod.rs | Extracted module IDs pass implementation |
| crates/rspack_core/src/compilation/finish_module/mod.rs | Extracted finish module pass implementation |
| crates/rspack_core/src/compilation/create_module_hashes/mod.rs | Extracted module hashes creation pass implementation |
| crates/rspack_core/src/compilation/create_module_assets/mod.rs | Extracted module assets creation pass implementation |
| crates/rspack_core/src/compilation/create_hash/mod.rs | Extracted hash creation pass implementation; includes ChunkHashResult struct definition |
| crates/rspack_core/src/compilation/create_chunk_assets/mod.rs | Extracted chunk assets creation pass implementation |
| crates/rspack_core/src/compilation/code_generation/mod.rs | Extracted code generation pass implementation |
| crates/rspack_core/src/compilation/chunk_ids/mod.rs | Extracted chunk IDs pass implementation |
| crates/rspack_core/src/compilation/build_chunk_graph/pass.rs | New pass wrapper for build chunk graph |
| crates/rspack_core/src/compilation/build_chunk_graph/mod.rs | Added pass module declaration |
| crates/rspack_core/src/compilation/assign_runtime_ids/mod.rs | Extracted runtime IDs assignment pass implementation |
| crates/rspack_core/src/compilation/after_seal/mod.rs | Extracted after seal pass implementation |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…2735) * chore: add rspack_passes.md * refactor: move pass into separate folder and drive by run_passes * chore: use function * refactor: move more into run_passes * chore: fix stats logging * chore: fix stats.logging
…2735) * chore: add rspack_passes.md * refactor: move pass into separate folder and drive by run_passes * chore: use function * refactor: move more into run_passes * chore: fix stats logging * chore: fix stats.logging
Summary
Inspired by rustc's rustc_passes design(https://github.com/rust-lang/rust/blob/e314b97ee54091b6bcf33db4770c93d82fded8bc/compiler/rustc_passes/src/lib.rs#L39),
move every pass into seperate folder and remove the complexity of compilation.rs and drive all these passes in run_passes function which
Follow up:
Related links
Checklist