Skip to content

Comments

feat: cross module noop function optimization#6199

Merged
graphite-app[bot] merged 1 commit intomainfrom
09-14-feat_cross_module_noop_function_optimization
Sep 14, 2025
Merged

feat: cross module noop function optimization#6199
graphite-app[bot] merged 1 commit intomainfrom
09-14-feat_cross_module_noop_function_optimization

Conversation

@IWANABETHATGUY
Copy link
Member

@IWANABETHATGUY IWANABETHATGUY commented Sep 13, 2025

This pr only marks empty function calls as side effects free so that the minifier could eliminate them if possible, even when binding is imported from other chunks.
Removing unused chunks will be done in the next pr.
related to #3403

Copy link
Member Author

IWANABETHATGUY commented Sep 13, 2025


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.

@IWANABETHATGUY IWANABETHATGUY marked this pull request as ready for review September 13, 2025 16:44
@graphite-app graphite-app bot changed the base branch from 09-13-refactor_rename_cross_module_inline_const_to_cross_module_optimization_ to graphite-base/6199 September 13, 2025 16:50
@IWANABETHATGUY IWANABETHATGUY force-pushed the 09-14-feat_cross_module_noop_function_optimization branch from cf8fca2 to 753a489 Compare September 13, 2025 16:52
@IWANABETHATGUY IWANABETHATGUY changed the base branch from graphite-base/6199 to 09-13-refactor_rename_cross_module_inline_const_to_cross_module_optimization_ September 13, 2025 16:52
Base automatically changed from 09-13-refactor_rename_cross_module_inline_const_to_cross_module_optimization_ to main September 13, 2025 16:58
@IWANABETHATGUY IWANABETHATGUY marked this pull request as draft September 13, 2025 17:13
@IWANABETHATGUY IWANABETHATGUY force-pushed the 09-14-feat_cross_module_noop_function_optimization branch from 9eca33e to 743f9ac Compare September 13, 2025 17:24
@netlify
Copy link

netlify bot commented Sep 13, 2025

Deploy Preview for rolldown-rs canceled.

Name Link
🔨 Latest commit 6a5f3bb
🔍 Latest deploy log https://app.netlify.com/projects/rolldown-rs/deploys/68c6713341d1b90008df25b5

@github-actions
Copy link
Contributor

github-actions bot commented Sep 13, 2025

Benchmarks Rust

  • target: main(a4fef5a)
  • pr: 09-14-feat_cross_module_noop_function_optimization(6a5f3bb)
group                                                        pr                                     target
-----                                                        --                                     ------
bundle/bundle@multi-duplicated-top-level-symbol              1.03     81.8±2.55ms        ? ?/sec    1.00     79.2±1.80ms        ? ?/sec
bundle/bundle@multi-duplicated-top-level-symbol-sourcemap    1.13    102.0±5.05ms        ? ?/sec    1.00     90.2±2.49ms        ? ?/sec
bundle/bundle@rome_ts                                        1.01    120.7±2.49ms        ? ?/sec    1.00    119.7±2.04ms        ? ?/sec
bundle/bundle@rome_ts-sourcemap                              1.00    140.6±2.28ms        ? ?/sec    1.00    140.3±3.61ms        ? ?/sec
bundle/bundle@threejs                                        1.01     45.1±1.42ms        ? ?/sec    1.00     44.6±1.50ms        ? ?/sec
bundle/bundle@threejs-sourcemap                              1.01     54.1±3.22ms        ? ?/sec    1.00     53.4±0.91ms        ? ?/sec
bundle/bundle@threejs10x                                     1.02   477.4±11.04ms        ? ?/sec    1.00    468.9±4.73ms        ? ?/sec
bundle/bundle@threejs10x-sourcemap                           1.01   559.7±19.07ms        ? ?/sec    1.00    551.7±4.46ms        ? ?/sec
scan/scan@rome_ts                                            1.00     93.9±1.52ms        ? ?/sec    1.00     94.1±2.13ms        ? ?/sec
scan/scan@threejs                                            1.00     33.4±2.06ms        ? ?/sec    1.01     33.7±2.01ms        ? ?/sec
scan/scan@threejs10x                                         1.00    351.1±5.27ms        ? ?/sec    1.01    356.3±9.89ms        ? ?/sec

@IWANABETHATGUY IWANABETHATGUY force-pushed the 09-14-feat_cross_module_noop_function_optimization branch 3 times, most recently from 5fdf89b to a6fe299 Compare September 14, 2025 06:15
@IWANABETHATGUY IWANABETHATGUY marked this pull request as ready for review September 14, 2025 06:22
@graphite-app
Copy link
Contributor

graphite-app bot commented Sep 14, 2025

Merge activity

This pr only marks empty function calls as **side effects free** so that the minifier could eliminate them if possible, even when binding is imported from other chunks.
Removing unused chunks will be done in the next pr.
related to #3403
@graphite-app graphite-app bot force-pushed the 09-14-feat_cross_module_noop_function_optimization branch from 4d9cc90 to 6a5f3bb Compare September 14, 2025 07:39
@graphite-app graphite-app bot merged commit 6a5f3bb into main Sep 14, 2025
28 checks passed
@graphite-app graphite-app bot deleted the 09-14-feat_cross_module_noop_function_optimization branch September 14, 2025 08:16
shulaoda pushed a commit that referenced this pull request Sep 15, 2025
## [1.0.0-beta.38] - 2025-09-15

📦 OXC Runtime Helpers Now Embedded

- Instant loading: Memory access instead of file I/O
- 91% smaller: From 229 KB external package to ~25 KB in binary
- Universal support: Works seamlessly in all environments including browsers
- Zero dependencies: Helpers embedded directly, no `@oxc-project/runtime` needed

⚡ Windows Performance Boost

- ~10% faster bundling on Windows
- Powered by `oxc-resolver` optimizations

Both improvements require zero configuration - just update to the latest version and enjoy! 🎉

> [!warning] 
> ### 💥 BREAKING CHANGES
> - rolldown_plugin_oxc_runtime: embed helpers to support browser environment (#6177) by @shulaoda

### 🚀 Features

- rolldown: oxc v0.89.0 (#6220) by @Boshen
- rolldown_plugin_esm_external_require: add duplicate external detection (#6202) by @shulaoda
- cross module noop function optimization (#6199) by @IWANABETHATGUY
- support to specify `scan_mode` in `bundler.scan` (#6204) by @IWANABETHATGUY
- warn when transform options override tsconfig compiler options (#6197) by @shulaoda
- support `false` in `resolve.alias` to ignore resolution (#6203) by @shulaoda
- cli: remove `getJsonSchema` (#6186) by @shulaoda
- cli: add Node.js version warning for unsupported versions (#6150) by @Copilot
- rolldown_plugin_oxc_runtime: include version in virtual module paths (#6179) by @shulaoda
- add native react-refresh-wrapper plugin (#6144) by @sapphi-red
- rolldown_plugin_utils: add `to_string_literal` (#6178) by @sapphi-red
- improve error messages for builtin plugins (#6175) by @shulaoda
- indent module content in IIFE format (#6174) by @IWANABETHATGUY
- rolldown_error: improve N-API error handling logic (#6171) by @shulaoda
- rolldown_error: improve `ByteLocator#byte_offset` (#6169) by @shulaoda
- dev: skip writing to file (#6148) by @sapphi-red
- dev: add `skip_write` option (#6151) by @sapphi-red
- dev: ignore file metadata changes (#6138) by @sapphi-red
- dev: add PathsMut for debounced PollWatcher (#6139) by @sapphi-red
- dev: use PathsMut for debounced RecommendedWatcher (#6137) by @sapphi-red
- improve bundler initialization error handling (#6132) by @shulaoda

### 🐛 Bug Fixes

- rolldown_plugin_vite_resolve: correctly handle Windows drive paths with leading slash (#6209) by @shulaoda
- allow `jsx.pragmaFrag` instead of `jsx.pragmaFlag` (#6200) by @sapphi-red
- improve import-glob plugin error handling without panic (#6106) by @hikomoon
- Panic with "jsx": "preserve" when rewrite a `memberExpression` (#6192) by @IWANABETHATGUY
- rolldown_error: use `byte_slice` instead of `slice` for correct span handling (#6185) by @shulaoda
- generate valid identifier for export names with `minifyInternalExports` (#6166) by @sapphi-red
- useless __export helper usage (#6160) by @IWANABETHATGUY
- incremental watch modify entry module (#6156) by @IWANABETHATGUY
- register trace subscriber (#6145) by @sapphi-red
- json imports error with `eval` or `arguments` in *strict mode* (#6140) by @IWANABETHATGUY
- `process` is not defined in repl (#6147) by @IWANABETHATGUY

### 💼 Other

- rolldown: support to build `rolldown` with `.wasm` binding (#6153) by @hyf0
- rolldown: refactor `build.ts` to prepare to support build `rolldown` package with wasi binding (#6152) by @hyf0

### 🚜 Refactor

- share `FlatOptions` in whole build session (#6211) by @IWANABETHATGUY
- remove unnecessary `comments` in ScopeHoistingFinalizerContext (#6205) by @IWANABETHATGUY
- move external string/regex matching from JS to Rust (#6201) by @shulaoda
- rename `cross_module_inline_const` to `cross_module_optimization` (#6193) by @IWANABETHATGUY
- rename `class` and `function` visitor to `class_decl`, `function_decl` (#6176) by @IWANABETHATGUY
- rolldown_error: tweak code (#6168) by @shulaoda
- improve `BuildDiagnostic` (#6165) by @shulaoda
- improve `RolldownBuild` (#6136) by @shulaoda
- rolldown_error: remove unused `EventKind::IoError` (#6134) by @shulaoda
- rename CustomPathsMut to NotifyPathsMutAdapter and move to utils (#6135) by @hyf0

### 📚 Documentation

- contrib-guide: add profiling instructions for macOS (#6183) by @sapphi-red
- contrib-guide: update just commands (#6181) by @sapphi-red

### ⚡ Performance

- pre calculate `side_effects_free_function_symbol_ref` (#6206) by @IWANABETHATGUY
- parallel clone ast (#6167) by @IWANABETHATGUY
- reserve capacity for rendered modules in `instantiate_chunk` (#6159) by @sapphi-red

### 🧪 Testing

- hmr: ensure each test isolated to be able to be retryed (#6142) by @hyf0

### ⚙️ Miscellaneous Tasks

- deps: lock file maintenance npm packages (#6219) by @renovate[bot]
- deps: lock file maintenance rust crates (#6217) by @renovate[bot]
- deps: update github-actions (#6213) by @renovate[bot]
- deps: lock file maintenance npm packages (#6215) by @renovate[bot]
- deps: update github-actions (major) (#6214) by @renovate[bot]
- tweak wordings (#6208) by @iiio2
- fix unused import warnings (#6196) by @shulaoda
- correct deprecated JSDoc reference for jsx option (#6195) by @shulaoda
- add `if: always()` to wasi-test (#6190) by @sapphi-red
- skip `@rolldown/browser` build if no node related changes detected (#6189) by @sapphi-red
- extract wasi build to reusable workflow (#6188) by @sapphi-red
- deps: update dependency tsdown to v0.15.1 (#6184) by @renovate[bot]
- deps: update dependency rolldown-plugin-dts to v0.16.5 (#6182) by @renovate[bot]
- deps: update dependency rolldown-plugin-dts to v0.16.4 (#6180) by @renovate[bot]
- dev: implement Debug trait for DevOptions (#6173) by @sapphi-red
- deps: update dependency rolldown-plugin-dts to v0.16.3 (#6172) by @renovate[bot]
- update @napi-rs/cli and js binding (#6157) by @Brooooooklyn
- ci: ensure `@rolldown/browser` build without errors (#6155) by @hyf0
- ci: ensure running wasi tests correctly (#6154) by @hyf0
- add more tracing instrumentation (#6149) by @sapphi-red
- extend timeout for rollup test (#6143) by @IWANABETHATGUY
- rolldown_error: remove unnecessary `type_aliases.rs` (#6133) by @shulaoda
@dominikg
Copy link

Removing unused chunks will be done in the next pr.

i looked for that but only found #4655 (reads like it should already work but test in vite-plugin-svelte still fails with latest rolldown-vite so maybe not. The dynamic chunk is still part of the vite manifest and in build output, although not referenced by other code)

is there another PR or issue I can track for the progress of that?

@IWANABETHATGUY
Copy link
Member Author

Removing unused chunks will be done in the next pr.

i looked for that but only found #4655 (reads like it should already work but test in vite-plugin-svelte still fails with latest rolldown-vite so maybe not. The dynamic chunk is still part of the vite manifest and in build output, although not referenced by other code)

is there another PR or issue I can track for the progress of that?

#3403 (comment)

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.

4 participants