Skip to content

refactor(link_stage): simplify exports-kind filter and clarify safety comments#9205

Merged
graphite-app[bot] merged 1 commit intomainfrom
04-21-refactor_simplify_module_exports_kind_filter
Apr 22, 2026
Merged

refactor(link_stage): simplify exports-kind filter and clarify safety comments#9205
graphite-app[bot] merged 1 commit intomainfrom
04-21-refactor_simplify_module_exports_kind_filter

Conversation

@IWANABETHATGUY
Copy link
Copy Markdown
Member

Collapse the two-step filter_map + for_each in determine_module_exports_kind so the iterator yields (rec, &NormalModule) directly via Module::as_normal, removing the inline let-else inside the closure. Also rewrites the SAFETY: and promotion comments to be clearer about what each branch does and why self-import aliasing is safe.

Note: replaces #9178 which was auto-closed as merged after a stack reorder (GitHub detected all its commits were in its former base branch). Same content, now targeting main directly.

@netlify
Copy link
Copy Markdown

netlify Bot commented Apr 22, 2026

Deploy Preview for rolldown-rs canceled.

Name Link
🔨 Latest commit e0733e4
🔍 Latest deploy log https://app.netlify.com/projects/rolldown-rs/deploys/69e8cd61f4c7a70008e87179

@codspeed-hq
Copy link
Copy Markdown

codspeed-hq Bot commented Apr 22, 2026

Merging this PR will not alter performance

✅ 4 untouched benchmarks
⏩ 10 skipped benchmarks1


Comparing 04-21-refactor_simplify_module_exports_kind_filter (e780042) with main (cc38b86)2

Open in CodSpeed

Footnotes

  1. 10 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.

  2. No successful run was found on main (d38b061) during the generation of this report, so cc38b86 was used instead as the comparison base. There might be some changes unrelated to this pull request in this report.

Copy link
Copy Markdown
Member Author

IWANABETHATGUY commented Apr 22, 2026

Merge activity

  • Apr 22, 1:29 PM UTC: The merge label 'graphite: merge-when-ready' was detected. This PR will be added to the Graphite merge queue once it meets the requirements.
  • Apr 22, 1:29 PM UTC: IWANABETHATGUY added this pull request to the Graphite merge queue.
  • Apr 22, 1:36 PM UTC: Merged by the Graphite merge queue.

… comments (#9205)

Collapse the two-step `filter_map` + `for_each` in `determine_module_exports_kind` so the iterator yields `(rec, &NormalModule)` directly via `Module::as_normal`, removing the inline `let-else` inside the closure. Also rewrites the `SAFETY:` and promotion comments to be clearer about what each branch does and why self-import aliasing is safe.

Note: replaces #9178 which was auto-closed as merged after a stack reorder (GitHub detected all its commits were in its former base branch). Same content, now targeting main directly.
@graphite-app graphite-app Bot force-pushed the 04-21-refactor_simplify_module_exports_kind_filter branch 2 times, most recently from e780042 to e0733e4 Compare April 22, 2026 13:30
@graphite-app graphite-app Bot merged commit e0733e4 into main Apr 22, 2026
33 checks passed
@graphite-app graphite-app Bot deleted the 04-21-refactor_simplify_module_exports_kind_filter branch April 22, 2026 13:36
graphite-app Bot pushed a commit that referenced this pull request Apr 27, 2026
Reverts the iterator restructuring from #9205 in `determine_module_exports_kind`, restoring the original `filter_map(rec.resolved_module)` + inline `let Module::Normal(importee) = ... else { return; }` pattern. The clarified `SAFETY` and promotion comments introduced in that PR are kept intact — only the structural refactor is rolled back.

We're rolling back the structural change because it appears to have introduced a regression that we have not yet been able to reduce to a reliable repro. Restoring the prior shape lets us unblock users while we continue investigating the root cause; once we have a minimal reproduction we can revisit the refactor with a regression test in place.
This was referenced Apr 29, 2026
shulaoda added a commit that referenced this pull request Apr 29, 2026
## [1.0.0-rc.18] - 2026-04-29

### 💥 BREAKING CHANGES

- optimization: default unspecified inlineConst.mode to smart (#9248) by @IWANABETHATGUY

### 🐛 Bug Fixes

- rolldown_plugin_vite_import_glob: return error instead of panicking when virtual module uses a relative glob (#9241) by @shulaoda
- binding: treat empty inlineConst object as omitted (#9247) by @IWANABETHATGUY
- rolldown: keep enum declaration for optional-chain access (#9229) by @Dunqing
- link_stage: restore inline let-else in exports-kind filter (#9237) by @IWANABETHATGUY
- dev/lazy: avoid module reinitialization in lazy compilation patches (#9179) by @h-a-n-a
- dev: visit identifier references for runtime rewrites in HMR finalizer (#9191) by @h-a-n-a
- chunk-optimizer: pick dominator for runtime placement to avoid cycles (#9164) by @IWANABETHATGUY
- make `this.emitFile` chunk path synchronous to avoid deadlock (#9031) by @lazarv
- use sentinel id for `browser: false` ignored modules (#9192) by @shulaoda
- prevent chunk optimizer from creating import cycles (#9228) by @IWANABETHATGUY

### 🚜 Refactor

- replace tokio::sync::Mutex with std::sync::Mutex for non-IO data (#9176) by @shulaoda
- rolldown_plugin_vite_import_glob: do not rewrite import path for absolute base (#9195) by @shulaoda
- runtime_helper: wrap DependedRuntimeHelperMap in a struct (#9215) by @IWANABETHATGUY
- drop redundant clear() in determine_safely_merge_cjs_ns (#9206) by @IWANABETHATGUY
- clean up generate_lazy_export (#9208) by @IWANABETHATGUY
- bitset: return bool from set_bit to fuse guard-and-set (#9207) by @IWANABETHATGUY
- link_stage: simplify exports-kind filter and clarify safety comments (#9205) by @IWANABETHATGUY

### 📚 Documentation

- determine_module_exports_kind (#9252) by @IWANABETHATGUY
- fix dead link to esbuild ESM/CJS interop tests (#9230) by @Copilot
- remove CSS bundling references (#9234) by @shulaoda
- correct IncrementalFullBuild row in BundleMode table (#9214) by @IWANABETHATGUY
- design: add bundler data lifecycle design doc (#9212) by @hyf0
- remove minifier alpha status notices (#9202) by @sapphi-red

### ⚙️ Miscellaneous Tasks

- upgrade oxc to 0.128.0 (#9260) by @shulaoda
- deps: bump rolldown-ariadne to 0.6.0 (#9254) by @IWANABETHATGUY
- deps: update github actions (#9259) by @renovate[bot]
- deps: update github actions (#9258) by @renovate[bot]
- remove renovate overrides (#9257) by @Boshen
- use ubuntu-latest for security workflow (#9256) by @Boshen
- notify Discord around release publish (#9251) by @Boshen
- add release environment to npm publish workflow (#9250) by @Boshen
- justfile: drop the `--` separator before forwarded args in `vp run` (#9246) by @shulaoda
- deps: update test262 submodule for tests (#9243) by @sapphi-red
- add more tracing instrumentations (#9220) by @sapphi-red
- rolldown_plugin_vite_import_glob: remove outdated sourcemap doc comment (#9213) by @shulaoda
- update security workflow (#9201) by @Boshen

### ❤️ New Contributors

* @lazarv made their first contribution in [#9031](#9031)

Co-authored-by: shulaoda <165626830+shulaoda@users.noreply.github.com>
@rolldown-guard rolldown-guard Bot mentioned this pull request Apr 29, 2026
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.

2 participants