Skip to content

Comments

feat: support lazy barrel optimization#7933

Merged
graphite-app[bot] merged 1 commit intomainfrom
01-16-feat_support_lazy_barrel_optimization
Jan 21, 2026
Merged

feat: support lazy barrel optimization#7933
graphite-app[bot] merged 1 commit intomainfrom
01-16-feat_support_lazy_barrel_optimization

Conversation

@shulaoda
Copy link
Member

No description provided.

Copy link
Member Author

shulaoda commented Jan 16, 2026


How to use the Graphite Merge Queue

Add the label graphite: merge-when-ready 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.

@shulaoda shulaoda marked this pull request as ready for review January 17, 2026 19:39
@shulaoda shulaoda marked this pull request as draft January 17, 2026 19:41
@shulaoda shulaoda force-pushed the 01-16-feat_support_lazy_barrel_optimization branch from c76009f to 2c3e161 Compare January 17, 2026 20:03
@shulaoda shulaoda force-pushed the 01-15-feat_support_barrel_module_optimization branch from 5a8ee21 to a016b9e Compare January 17, 2026 20:03
@shulaoda shulaoda marked this pull request as ready for review January 17, 2026 20:04
@shulaoda shulaoda marked this pull request as draft January 17, 2026 20:04
@github-actions
Copy link
Contributor

github-actions bot commented Jan 17, 2026

Benchmarks Rust

  • target: 01-15-feat_support_barrel_module_optimization(94bf52d)
  • pr: 01-16-feat_support_lazy_barrel_optimization(0b1b090)
group                                                        pr                                     target
-----                                                        --                                     ------
bundle/bundle@multi-duplicated-top-level-symbol              1.00     70.9±2.73ms        ? ?/sec    1.02     72.1±2.65ms        ? ?/sec
bundle/bundle@multi-duplicated-top-level-symbol-sourcemap    1.00     77.2±2.75ms        ? ?/sec    1.02     78.4±2.22ms        ? ?/sec
bundle/bundle@rome_ts                                        1.00    102.5±2.50ms        ? ?/sec    1.00    102.3±2.12ms        ? ?/sec
bundle/bundle@rome_ts-sourcemap                              1.00    113.7±1.87ms        ? ?/sec    1.00    114.3±2.19ms        ? ?/sec
bundle/bundle@threejs                                        1.00     36.1±2.12ms        ? ?/sec    1.04     37.5±2.77ms        ? ?/sec
bundle/bundle@threejs-sourcemap                              1.00     40.7±0.60ms        ? ?/sec    1.03     41.8±1.50ms        ? ?/sec
bundle/bundle@threejs10x                                     1.00    372.1±4.26ms        ? ?/sec    1.01    376.7±5.26ms        ? ?/sec
bundle/bundle@threejs10x-sourcemap                           1.00    430.5±5.53ms        ? ?/sec    1.00    432.0±6.35ms        ? ?/sec
scan/scan@rome_ts                                            1.00     82.9±1.89ms        ? ?/sec    1.01     83.3±2.43ms        ? ?/sec
scan/scan@threejs                                            1.04     30.3±1.72ms        ? ?/sec    1.00     29.1±1.65ms        ? ?/sec
scan/scan@threejs10x                                         1.01    294.0±4.73ms        ? ?/sec    1.00    292.3±4.68ms        ? ?/sec

@shulaoda shulaoda force-pushed the 01-16-feat_support_lazy_barrel_optimization branch from 2c3e161 to c47d678 Compare January 18, 2026 08:20
@shulaoda shulaoda marked this pull request as ready for review January 18, 2026 09:05
@shulaoda shulaoda marked this pull request as draft January 18, 2026 09:05
@shulaoda shulaoda force-pushed the 01-15-feat_support_barrel_module_optimization branch from a016b9e to 92c0f0a Compare January 18, 2026 14:13
@shulaoda shulaoda force-pushed the 01-16-feat_support_lazy_barrel_optimization branch from c47d678 to b8a36fa Compare January 18, 2026 14:13
@shulaoda shulaoda force-pushed the 01-15-feat_support_barrel_module_optimization branch from 92c0f0a to 249cefa Compare January 18, 2026 14:20
@shulaoda shulaoda force-pushed the 01-16-feat_support_lazy_barrel_optimization branch from b8a36fa to c332185 Compare January 18, 2026 14:20
@shulaoda shulaoda marked this pull request as ready for review January 18, 2026 19:09
@shulaoda shulaoda marked this pull request as draft January 18, 2026 19:09
@shulaoda shulaoda marked this pull request as ready for review January 18, 2026 20:41
@shulaoda shulaoda marked this pull request as draft January 19, 2026 00:45
@shulaoda shulaoda marked this pull request as ready for review January 19, 2026 16:22
@shulaoda shulaoda marked this pull request as draft January 19, 2026 16:25
@codspeed-hq
Copy link

codspeed-hq bot commented Jan 19, 2026

Merging this PR will not alter performance

✅ 8 untouched benchmarks


Comparing 01-16-feat_support_lazy_barrel_optimization (0b1b090) with 01-15-feat_support_barrel_module_optimization (94bf52d)

Open in CodSpeed

@shulaoda shulaoda force-pushed the 01-16-feat_support_lazy_barrel_optimization branch 2 times, most recently from d49669a to aa2afa9 Compare January 19, 2026 17:42
@shulaoda shulaoda force-pushed the 01-15-feat_support_barrel_module_optimization branch from 249cefa to be55da4 Compare January 19, 2026 17:43
@shulaoda shulaoda force-pushed the 01-16-feat_support_lazy_barrel_optimization branch from aa2afa9 to a368855 Compare January 19, 2026 17:43
Copy link
Contributor

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 adds support for lazy barrel optimization, which delays loading of barrel module dependencies (re-export-only modules) until their specific exports are actually needed. This can improve build performance by avoiding unnecessary module processing.

Changes:

  • Adds barrel module detection and tracking infrastructure (BarrelInfo, BarrelState, ImportedExports)
  • Introduces IsReExport flag to mark re-export import records in the AST scanner
  • Implements lazy loading logic in the module loader to defer barrel dependency resolution

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
crates/rolldown_common/src/types/mod.rs Exports new barrel_state module
crates/rolldown_common/src/types/import_record.rs Adds IsReExport flag to ImportRecordMeta bitflags
crates/rolldown_common/src/types/barrel_state.rs New module defining barrel optimization types and logic
crates/rolldown_common/src/module_loader/task_result.rs Adds barrel_info field to NormalModuleTaskResult
crates/rolldown_common/src/lib.rs Exports barrel state types and utilities
crates/rolldown/src/types/scan_stage_cache.rs Adds barrel_state field to ScanStageCache
crates/rolldown/src/module_loader/module_task.rs Extracts barrel info during module scanning
crates/rolldown/src/module_loader/module_loader.rs Implements barrel module lazy loading logic
crates/rolldown/src/ast_scanner/mod.rs Marks re-export import records with IsReExport flag

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@shulaoda shulaoda force-pushed the 01-16-feat_support_lazy_barrel_optimization branch from 0c63cc4 to e0f79e7 Compare January 20, 2026 13:33
@sapphi-red sapphi-red force-pushed the 01-16-feat_support_lazy_barrel_optimization branch from e0f79e7 to 78014dc Compare January 21, 2026 03:53
@sapphi-red sapphi-red force-pushed the 01-15-feat_support_barrel_module_optimization branch from 7d25e43 to cbf1cfd Compare January 21, 2026 03:53
@shulaoda shulaoda force-pushed the 01-16-feat_support_lazy_barrel_optimization branch from 78014dc to f71eae3 Compare January 21, 2026 05:35
@shulaoda shulaoda force-pushed the 01-15-feat_support_barrel_module_optimization branch from cbf1cfd to 94bf52d Compare January 21, 2026 05:35
@shulaoda shulaoda force-pushed the 01-16-feat_support_lazy_barrel_optimization branch from f71eae3 to 0b1b090 Compare January 21, 2026 05:38
@hyf0
Copy link
Member

hyf0 commented Jan 21, 2026

Good job!

@graphite-app graphite-app bot changed the base branch from 01-15-feat_support_barrel_module_optimization to graphite-base/7933 January 21, 2026 06:59
@graphite-app
Copy link
Contributor

graphite-app bot commented Jan 21, 2026

Merge activity

@shulaoda shulaoda force-pushed the 01-16-feat_support_lazy_barrel_optimization branch from 0b1b090 to dda1f71 Compare January 21, 2026 07:07
@shulaoda shulaoda changed the base branch from graphite-base/7933 to 01-15-feat_support_barrel_module_optimization January 21, 2026 07:07
Base automatically changed from 01-15-feat_support_barrel_module_optimization to main January 21, 2026 07:09
@graphite-app graphite-app bot force-pushed the 01-16-feat_support_lazy_barrel_optimization branch from dda1f71 to 12f7f59 Compare January 21, 2026 07:09
@netlify
Copy link

netlify bot commented Jan 21, 2026

Deploy Preview for rolldown-rs ready!

Name Link
🔨 Latest commit 12f7f59
🔍 Latest deploy log https://app.netlify.com/projects/rolldown-rs/deploys/69707bbd557e6b000820c803
😎 Deploy Preview https://deploy-preview-7933--rolldown-rs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@graphite-app graphite-app bot merged commit 12f7f59 into main Jan 21, 2026
34 checks passed
@graphite-app graphite-app bot deleted the 01-16-feat_support_lazy_barrel_optimization branch January 21, 2026 07:27
@github-actions github-actions bot mentioned this pull request Jan 22, 2026
shulaoda pushed a commit that referenced this pull request Jan 22, 2026
## [1.0.0-rc.1] - 2026-01-22

### 🚀 Features

- debug_info: add facade chunk elimination reason (#7980) by @IWANABETHATGUY
- support lazy barrel optimization (#7933) by @shulaoda
- add `experimental.lazyBarrel` option (#7908) by @shulaoda
- skip unused external modules from IIFE parameter list (#7978) by @sapphi-red
- add custom panic hook for better crash reporting (#7752) by @shulaoda
- treeshake: add `invalidImportSideEffects` option (#7958) by @shulaoda
- merge allow-extension emitted chunks (#7940) by @IWANABETHATGUY
- nativeMagicString generateMap (#7944) by @IWANABETHATGUY
- Include meta.magicString in RenderChunkMeta (#7943) by @IWANABETHATGUY
- debug_info: add debug info for eliminated facade chunks (#7946) by @IWANABETHATGUY
- stablize `strictExecutionOrder` and move to `output.strictExecutionOrder` from `experimental.strictExecutionOrder` (#7901) by @sapphi-red
- add documentation link to require() error message (#7898) by @Copilot
- add `codeSplitting: boolean` and deprecate `inlineDynamicImports` (#7870) by @hyf0
- dev: change lazy module URL to `/@vite/lazy` from `/lazy` (#7884) by @sapphi-red

### 🐛 Bug Fixes

- transform JS files containing `</script>` to escape template literals (#7987) by @IWANABETHATGUY
- apply avoid-breaking-exported-api = false to clippy.toml and fix clippy errors (#7982) by @Boshen
- pass `kind` from `this.resolve` (#7981) by @sapphi-red
- rolldown_plugin_vite_resolve: ignore yarn resolution errors and fallback to other resolvers (#7968) by @sapphi-red
- renamer: prevent renaming symbols when there no conflicts (#7936) by @Dunqing
- correct minifyInterExports when emitted chunk got merged (#7941) by @IWANABETHATGUY
- deduplicate entry points when module is both emitted and dynamically imported (#7885) by @IWANABETHATGUY
- dev: add `@vite-ignore` to lazy compilation proxy module import (#7883) by @sapphi-red

### 🚜 Refactor

- rust: enable clippy nursery lint group (#8002) by @Boshen
- rust: fix inconsistent_struct_constructor clippy lint (#7999) by @Boshen
- rust: fix needless_pass_by_ref_mut clippy lint (#7994) by @Boshen
- rust: fix unnecessary_wraps clippy lint (#7993) by @Boshen
- rust: fix enum_variant_names clippy lint (#7992) by @Boshen
- fix single_match clippy lint (#7997) by @Boshen
- rust: fix redundant_clone clippy lint (#7996) by @Boshen
- rust: rename CJS to Cjs to follow upper_case_acronyms lint (#7991) by @Boshen
- rust: remove unnecessary Box wrapper around Vec in MemberExprRef (#7990) by @Boshen
- import_record: make resolved_module optional (#7907) by @shulaoda
- remove unnecessary `.parse` (#7966) by @sapphi-red
- remove unused `ImportRecordMeta::IsPlainImport` (#7948) by @shulaoda
- proper set chunk meta (#7939) by @IWANABETHATGUY
- module_loader: remove `try_spawn_with_cache` (#7920) by @shulaoda
- link_stage: simplify `ImportStatus::NoMatch` to unit variant (#7909) by @shulaoda
- improve global scope symbol reservation in chunk deconfliction (#7906) by @IWANABETHATGUY
- simplify ast unwrapping in generate stage (#7900) by @IWANABETHATGUY
- generate_stage: optimize cross-chunk imports computation (#7889) by @shulaoda
- link_stage: move runtime require logic into match branch (#7892) by @shulaoda
- link_stage: simplify runtime require reference conditions (#7891) by @shulaoda
- link_stage: inline and simplify external dynamic import check (#7890) by @shulaoda
- generate_stage: simplify external module import collection logic (#7887) by @shulaoda
- avoid redundant module lookup in TLA computation (#7886) by @shulaoda
- dev: `devEngine.compileEntry` does not return null (#7882) by @sapphi-red
- dev: fix type errors for test HMR runtime (#7881) by @sapphi-red
- dev: move `clientId` property to `DevRuntime` base class (#7880) by @sapphi-red
- dev: generate client id in browser (#7878) by @hyf0

### 📚 Documentation

- apis: organize hook filters documentation and add composable filters section (#8003) by @sapphi-red
- update `vitepress-plugin-group-icons` (#7947) by @yuyinws
- add in-depth documentation for lazy barrel optimization (#7969) by @shulaoda
- bump theme & update activeMatch for reference (#7963) by @mdong1909
- mark `build()` API as experimental (#7954) by @sapphi-red
- enhance search functionality with improved scoring and filtering logic (#7935) by @hyf0
- add minor comments to multiple types (#7930) by @sapphi-red
- refactor advanedChunks related content to adapt manual code splitting concept (#7925) by @hyf0
- apis: add content to Bundler API page (#7926) by @sapphi-red
- apis: restructure plugin API related docs (#7924) by @sapphi-red
- add plugin API docs (#7923) by @sapphi-red
- apis: add docs to important APIs (#7913) by @sapphi-red
- move the important APIs to the top of the sidebar (#7912) by @sapphi-red
- apis: add more content to CLI documentation (#7911) by @sapphi-red
- apis: generate CLI docs from --help output (#7910) by @sapphi-red
- add fathom analytics (#7896) by @mdong1909

### ⚡ Performance

- use u32 for string indices in string_wizard and rolldown to reduce memory usage (#7989) by @IWANABETHATGUY
- rust: remove all usages of `with_scope_tree_child_ids(true)` for `SemanticBuilder` (#7995) by @Dunqing
- renamer: skip unnecessary nested scope symbol processing (#7899) by @Dunqing
- module_loader: use ArcStr for importer_id to avoid string copy (#7922) by @shulaoda
- module_loader: defer `ModuleTaskOwner` construction until needed (#7921) by @shulaoda
- renamer: optimize symbol renaming by eliminating `rename_non_root_symbol` pass (#7867) by @Dunqing

### 🧪 Testing

- add lazy barrel optimization test cases (#7967) by @shulaoda

### ⚙️ Miscellaneous Tasks

- remove lazy barrel option (#8010) by @shulaoda
- mark watch API as experimental (#8004) by @sapphi-red
- deps: update dependency lodash-es to v4.17.23 [security] (#8001) by @renovate[bot]
- git ignore zed local config (#7988) by @IWANABETHATGUY
- setup publint for published packages (#7972) by @Copilot
- enable `tagged_template_transform ` uncondionally (#7975) by @IWANABETHATGUY
- deps: update oxc to v0.110.0 (#7964) by @renovate[bot]
- deps: update oxc apps (#7962) by @renovate[bot]
- ai: add upgrade-oxc Claude skill (#7957) by @Boshen
- deps: update rollup submodule for tests to v4.55.2 (#7959) by @sapphi-red
- deps: update test262 submodule for tests (#7960) by @sapphi-red
- deps: update crate-ci/typos action to v1.42.1 (#7961) by @renovate[bot]
- deps: update rust crates (#7951) by @renovate[bot]
- deps: update npm packages (#7953) by @renovate[bot]
- deps: update github-actions (#7952) by @renovate[bot]
- deps: update npm packages (#7950) by @renovate[bot]
- format magic-string test before write to disk (#7945) by @IWANABETHATGUY
- deps: update dependency rolldown-plugin-dts to ^0.21.0 (#7915) by @renovate[bot]
- deps: update dependency oxlint-tsgolint to v0.11.1 (#7914) by @renovate[bot]
- deps: update dependency diff to v8.0.3 [security] (#7904) by @renovate[bot]
- remove outdated TODO comment in `collect_depended_symbols` (#7888) by @shulaoda
- deps: update oxc resolver to v11.16.3 (#7876) by @renovate[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants