Skip to content

Comments

refactor: wait this.load using futures instead of callbacks#6222

Merged
graphite-app[bot] merged 1 commit intomainfrom
09-13-refactor_wait_this.load_using_futures_instead_of_callbacks
Sep 16, 2025
Merged

refactor: wait this.load using futures instead of callbacks#6222
graphite-app[bot] merged 1 commit intomainfrom
09-13-refactor_wait_this.load_using_futures_instead_of_callbacks

Conversation

@sapphi-red
Copy link
Member

@sapphi-red sapphi-red commented Sep 15, 2025

The code for this.load waited for the markModuleLoaded callback to be called. But this should be able to simplify by using a future.
This PR refactors the code for this.load to wait for a future instead. This should also improve the perf a bit because we no longer have to call markModuleLoaded for each module.
I wonder if I'm missing something.

refs #4156, #2777, #2772, #2687

Copy link
Member Author


How to use the Graphite Merge Queue

Add 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.

@netlify
Copy link

netlify bot commented Sep 15, 2025

Deploy Preview for rolldown-rs ready!

Name Link
🔨 Latest commit fab2ef3
🔍 Latest deploy log https://app.netlify.com/projects/rolldown-rs/deploys/68c7d99bb1fa1c000891220d
😎 Deploy Preview https://deploy-preview-6222--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.

@netlify
Copy link

netlify bot commented Sep 15, 2025

Deploy Preview for rolldown-rs ready!

Name Link
🔨 Latest commit 392ad04
🔍 Latest deploy log https://app.netlify.com/projects/rolldown-rs/deploys/68c8ff7f95999e00083967b9
😎 Deploy Preview https://deploy-preview-6222--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.

@github-actions
Copy link
Contributor

github-actions bot commented Sep 15, 2025

Benchmarks Rust

  • target: main(f997d56)
  • pr: 09-13-refactor_wait_this.load_using_futures_instead_of_callbacks(392ad04)
group                                                        pr                                     target
-----                                                        --                                     ------
bundle/bundle@multi-duplicated-top-level-symbol              1.00     83.3±2.90ms        ? ?/sec    1.10     91.5±2.30ms        ? ?/sec
bundle/bundle@multi-duplicated-top-level-symbol-sourcemap    1.00     92.2±2.17ms        ? ?/sec    1.11    102.4±2.25ms        ? ?/sec
bundle/bundle@rome_ts                                        1.00    122.8±3.51ms        ? ?/sec    1.07    131.2±2.29ms        ? ?/sec
bundle/bundle@rome_ts-sourcemap                              1.00    142.5±2.43ms        ? ?/sec    1.06    151.4±2.67ms        ? ?/sec
bundle/bundle@threejs                                        1.00     45.5±2.36ms        ? ?/sec    1.05     47.9±1.16ms        ? ?/sec
bundle/bundle@threejs-sourcemap                              1.00     54.8±1.29ms        ? ?/sec    1.05     57.3±1.88ms        ? ?/sec
bundle/bundle@threejs10x                                     1.00   478.2±10.85ms        ? ?/sec    1.01    483.4±9.74ms        ? ?/sec
bundle/bundle@threejs10x-sourcemap                           1.01    564.4±9.16ms        ? ?/sec    1.00    556.2±6.59ms        ? ?/sec
scan/scan@rome_ts                                            1.00     96.6±2.22ms        ? ?/sec    1.00     96.7±1.25ms        ? ?/sec
scan/scan@threejs                                            1.04     36.2±2.06ms        ? ?/sec    1.00     34.8±2.04ms        ? ?/sec
scan/scan@threejs10x                                         1.02    355.2±5.83ms        ? ?/sec    1.00    349.7±5.09ms        ? ?/sec

@sapphi-red sapphi-red requested a review from hyf0 September 15, 2025 10:06
@sapphi-red sapphi-red marked this pull request as ready for review September 15, 2025 10:07
@sapphi-red sapphi-red changed the title refactor: wait this.load using futures instead of callbacks refactor: wait this.load using futures instead of callbacks Sep 15, 2025
@sapphi-red sapphi-red force-pushed the 09-13-refactor_wait_this.load_using_futures_instead_of_callbacks branch 2 times, most recently from f9d1fac to 9f77094 Compare September 16, 2025 04:24
@sapphi-red sapphi-red force-pushed the 09-13-refactor_wait_this.load_using_futures_instead_of_callbacks branch from 9f77094 to c982e71 Compare September 16, 2025 04:26
@sapphi-red sapphi-red force-pushed the 09-13-refactor_wait_this.load_using_futures_instead_of_callbacks branch from c982e71 to b8f5a72 Compare September 16, 2025 04:31
Copy link
Member

hyf0 commented Sep 16, 2025

Merge activity

The code for `this.load` waited for the `markModuleLoaded` callback to be called. But this should be able to simplify by using a future.
This PR refactors the code for `this.load` to wait for a future instead. This should also improve the perf a bit because we no longer have to call `markModuleLoaded` for each module.
I wonder if I'm missing something.

refs #4156, #2777, #2772, #2687
@graphite-app graphite-app bot force-pushed the 09-13-refactor_wait_this.load_using_futures_instead_of_callbacks branch from b8f5a72 to 392ad04 Compare September 16, 2025 06:11
@graphite-app graphite-app bot merged commit 392ad04 into main Sep 16, 2025
27 checks passed
@graphite-app graphite-app bot deleted the 09-13-refactor_wait_this.load_using_futures_instead_of_callbacks branch September 16, 2025 06:19
shulaoda pushed a commit that referenced this pull request Sep 22, 2025
## [1.0.0-beta.39] - 2025-09-22

⚡ MacOS Performance Boost

- 10%-30% faster bundling
- Up to 45% in extreme cases

### 🚀 Features

- rolldown: oxc v0.90.0 + other oxc crate updates (#6274) by @Boshen
- support ignoring `/* @vite-ignore */` comment for dynamic imports (#6264) by @IWANABETHATGUY
- dev: merge mergeable queued tasks into one (#6253) by @hyf0
- dev: ignore self imports when computing update for invalidate (#6252) by @sapphi-red
- support `#__NO_SIDE_EFFECTS__` annotation for export default function declaration (#6239) by @IWANABETHATGUY
- rolldown_plugin_dynamic_import_vars: respect `@vite-ignore` comment (#6240) by @shulaoda
- rolldown_plugin_import_glob: support `exhaustive` option (#6236) by @shulaoda
- cross chunk /* @__NO_SIDE_EFFECTS__ */ support (#6207) by @IWANABETHATGUY
- rolldown_plugin_react_refresh_wrapper: make the plugin callable (#6229) by @sapphi-red

### 🐛 Bug Fixes

- handle optional chaining in scope hoisting member expression rewriting (#6278) by @shulaoda
- release: Fix semver commit release format to use plus instead of dash (#6273) by @Copilot
- dev: `ensure_latest_build_output` should work correctly when `eagerBuild: false` (#6262) by @hyf0
- browser: does not work in stackblitz (#6257) by @shulaoda
- only inline constants that are not reassigned (#6247) by @IWANABETHATGUY
- handle lexical declarations in root scope (#6230) by @IWANABETHATGUY

### 🚜 Refactor

- move oxc runtime helper generation from `build.rs` to task generator (#6284) by @shulaoda
- remove unused `SpanExt` (#6266) by @IWANABETHATGUY
- remove `@rolldown-ignore` ignore comment support (#6265) by @IWANABETHATGUY
- enhance CommonJsAstType to track property names (#6250) by @IWANABETHATGUY
- simplify usage for `Address::from` (#6245) by @IWANABETHATGUY
- remove `stmt_info_idx` in StmtInfo (#6244) by @IWANABETHATGUY
- extract `CrossModuleOptimizationRunnerContext` in cross_module_optimization (#6243) by @IWANABETHATGUY
- dev: task-queue based deisgn (#6233) by @hyf0
- extract immutable context from AstScanner (#6238) by @IWANABETHATGUY
- dev: rename `WatcherEventService` to `BuildDriverService` (#6232) by @hyf0
- move FlatOptions to rolldown_common (#6235) by @IWANABETHATGUY
- extract mutable state from ScopeHoistingFinalizerContext (#6234) by @IWANABETHATGUY
- wait `this.load` using futures instead of callbacks (#6222) by @sapphi-red
- rolldown_plugin_transform: remove unused `runtime_resolve_base` option (#6226) by @sapphi-red

### 📚 Documentation

- add "edit this page on GitHub" button (#6241) by @siaeyy

### ⚡ Performance

- rolldown: minor performance optimization (#6271) by @Brooooooklyn
- rolldown: take advantage of tokio blocking threads (#6270) by @Brooooooklyn

### 🧪 Testing

- dev: add rebuild after HMR case (#6260) by @sapphi-red
- dev: support full reload in tests (#6259) by @sapphi-red
- dev: extract waitFor from waitForPathExists (#6261) by @sapphi-red
- add class like cases for empty function optimizations (#6248) by @sapphi-red

### ⚙️ Miscellaneous Tasks

- deps: update github-actions (#6298) by @renovate[bot]
- deps: update dependency dprint/dprint-plugin-typescript to v0.95.11 (#6296) by @renovate[bot]
- deps: update dependency dprint/dprint-plugin-markdown to v0.19.0 (#6295) by @renovate[bot]
- deps: update dependency g-plane/pretty_yaml to v0.5.1 (#6294) by @renovate[bot]
- use a forked version of openharmony-rs/setup-ohos-sdk (#6290) by @Boshen
- deps: update dependency tsdown to v0.15.4 (#6286) by @renovate[bot]
- deps: update dependency rolldown-plugin-dts to v0.16.7 (#6285) by @renovate[bot]
- rust: continue to make `cargo publish --workspace` work (#6281) by @Boshen
- deps: update dependency tsdown to v0.15.3 (#6280) by @renovate[bot]
- rust: fixes for `cargo publish --dry-run --workspace` (#6279) by @Boshen
- deps: update dependency rust to v1.90.0 (#6277) by @renovate[bot]
- deps: update dependency rolldown-plugin-dts to v0.16.6 (#6276) by @renovate[bot]
- adding tracing for all sub stage in LinkStage:link (#6268) by @IWANABETHATGUY
- deps: update oxc-project/setup-node action to v1.0.4 (#6258) by @renovate[bot]
- deps: update github-actions (#6249) by @renovate[bot]
- deps: update dependency tsdown to v0.15.2 (#6242) by @renovate[bot]
- dev: output error when the initial bundle failed (#6228) by @sapphi-red

### ❤️ New Contributors

* @siaeyy made their first contribution in [#6241](#6241)
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