refactor(rust/watcher): construct the bundler within watcher itself#7550
Conversation
How to use the Graphite Merge QueueAdd the label graphite: merge to this PR to add it to the merge queue. You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has enabled the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. This stack of pull requests is managed by Graphite. Learn more about stacking. |
✅ Deploy Preview for rolldown-rs canceled.
|
Benchmarks Rust |
84a8218 to
19d5a93
Compare
There was a problem hiding this comment.
Pull request overview
This PR refactors the watcher architecture to construct bundler instances within the Watcher itself rather than requiring pre-constructed bundlers. This change simplifies the API and centralizes bundler construction logic. The refactoring introduces a new BundlerConfig type that encapsulates bundler options and plugins, and moves the dev_mode validation from the binding layer to the Rust core layer.
- Introduced
BundlerConfigtype to bundle options and plugins together - Moved bundler construction from binding layer into
Watcher::new() - Centralized dev_mode validation in the Rust watcher implementation
Reviewed changes
Copilot reviewed 11 out of 11 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
crates/rolldown/src/types/bundler_config.rs |
New BundlerConfig struct to encapsulate bundler options and plugins |
crates/rolldown/src/types/mod.rs |
Added module declaration for bundler_config |
crates/rolldown/src/lib.rs |
Exported BundlerConfig from the public API |
crates/rolldown/src/watcher.rs |
Refactored to accept BundlerConfig and construct bundlers internally; added dev_mode validation |
crates/rolldown_binding/src/watcher.rs |
Simplified to use new helper function; removed dev_mode validation (now handled in Rust layer) |
crates/rolldown_binding/src/utils/normalize_binding_options.rs |
Changed return type from custom struct to BundlerConfig |
crates/rolldown_binding/src/utils/mod.rs |
Added new module for create_bundler_options_from_binding_options |
crates/rolldown_binding/src/utils/create_bundler_options_from_binding_options.rs |
New utility to create BundlerConfig from binding options |
crates/rolldown_binding/src/utils/create_bundler_from_binding_options.rs |
Updated to use options field from BundlerConfig |
crates/rolldown_binding/src/binding_bundler.rs |
Updated field access from bundler_options to options in BundlerConfig |
crates/rolldown/examples/watch.rs |
Updated example to use new BundlerConfig API |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
crates/rolldown_binding/src/utils/create_bundler_options_from_binding_options.rs
Show resolved
Hide resolved
Merge activity
|
19d5a93 to
9ee271e
Compare
## [1.0.0-beta.56] - 2025-12-22 ### 💥 BREAKING CHANGES - rename `MIXED_EXPORT` error to `MIXED_EXPORTS` (#7565) by @sapphi-red ### 🚀 Features - rename `id` property to `exporter` in CIRCULAR_REEXPORT error (#7592) by @sapphi-red - add `ids` property to `CIRCULAR_DEPENDENCY` error (#7591) by @sapphi-red - node/dev: expose `devMode.lazy` (#7549) by @hyf0 - set log and pos properties for `parseAst` function errors (#7568) by @sapphi-red - set log and pos properties for logs (#7567) by @sapphi-red - test-dev-sever: support to manually configure port, run tests in concurrent (#7576) by @hyf0 - add `exporter` property to `MISSING_EXPORT` error (#7564) by @sapphi-red - add `id` property to `PARSE_ERROR` error (#7563) by @sapphi-red - support ImporterId hook filter (#7540) by @IWANABETHATGUY ### 🐛 Bug Fixes - types: better "go to definition" experience for interface `OutputPlugin` (#7610) by @KazariEX - `postBanner` content should be placed after shebang (#7583) by @btea - use sanitized filename for preserve modules chunk name (#7603) by @IWANABETHATGUY - correct filter out unused cjs namespace (#7602) by @IWANABETHATGUY - watch: property respect `notify.pollInternal` and `notify.compareContents` (#7595) by @sapphi-red - make `cleanDir` work with default output directory (#7579) by @shulaoda - merge `MISSING_NAME_OPTION_FOR_UMD_EXPORT` error to `MISSING_NAME_OPTION_FOR_IIFE_EXPORT` error (#7566) by @sapphi-red - dev/hmr: ensure cjs modules with no exports reference correct `module` identifier (#7544) by @leegeunhyeok ### 🚜 Refactor - remove `stable_id` field from `PARSE_ERROR` error (#7593) by @sapphi-red - make include_runtime_symbol reuseable after linking stage (#7580) by @IWANABETHATGUY - rust/dev: construct the bundler within itself (#7553) by @hyf0 - rust/watcher: polish API of `Watcher` struct (#7551) by @hyf0 - use `LinkingMetadata::stmt_info_included` to check if a stmt_info is included (#7572) by @IWANABETHATGUY - use `LinkingMetadata::is_included` to check if a module is included (#7571) by @IWANABETHATGUY - store module and stmt_info is included info to module meta (#7570) by @IWANABETHATGUY - make include_* method reunsable after linking stage (#7552) by @IWANABETHATGUY - rust/watcher: construct the bundler within watcher itself (#7550) by @hyf0 - extract make include_runtime_symbol reusable (#7546) by @IWANABETHATGUY ### ⚙️ Miscellaneous Tasks - renovate: add `kill-port` in `ignoreDeps` in renovate.json (#7619) by @sapphi-red - deps: update rust crates (#7617) by @renovate[bot] - deps: update npm packages (#7616) by @renovate[bot] - deps: update github-actions (#7615) by @renovate[bot] - ci: skip benchmark workflows on draft PRs (#7611) by @Copilot - deps: update dependency rolldown-plugin-dts to ^0.19.0 (#7607) by @renovate[bot] - deps: update dependency oxlint-tsgolint to v0.10.0 (#7601) by @renovate[bot] - deps: update dependency rolldown-plugin-dts to v0.18.4 (#7599) by @renovate[bot] - deps: update notify (#7594) by @sapphi-red - test-dev-server: add retry mechanism to hmr-full-bundle-mode tests (#7588) by @Copilot - deps: update napi to v3.7.1 (#7590) by @renovate[bot] - add JSDoc documentation for memfs type (#7587) by @Copilot - deps: update dependency oxlint to v1.34.0 (#7589) by @renovate[bot] - move some tests in ignored-by-unsupported-features that are passing (#7569) by @sapphi-red - deps: update dependency oxlint-tsgolint to v0.9.2 (#7582) by @renovate[bot] - deps: update oxc resolver to v11.16.0 (#7574) by @renovate[bot] - test/dev-server: don't run `pnpm install` during tests (#7560) by @hyf0 - test/dev-server: use `kill-port@1` to improve performance (#7575) by @hyf0 - normalize error object to make some Rollup tests pass (#7562) by @sapphi-red - ci: separate dev-server(hmr) tests and normal tests (#7558) by @hyf0 - ci: make native rolldown build reusable (#7557) by @hyf0 - resolve some TODOs (#7561) by @sapphi-red ### ❤️ New Contributors * @KazariEX made their first contribution in [#7610](#7610) * @leegeunhyeok made their first contribution in [#7544](#7544) Co-authored-by: shulaoda <[email protected]>

Closes #6931