Skip to content

chore(deps): update oxc to v0.125.0#9094

Merged
shulaoda merged 6 commits intomainfrom
renovate/oxc
Apr 15, 2026
Merged

chore(deps): update oxc to v0.125.0#9094
shulaoda merged 6 commits intomainfrom
renovate/oxc

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate Bot commented Apr 13, 2026

This PR contains the following updates:

Package Change Age Adoption Passing Confidence Type Update
@oxc-project/runtime (source) =0.124.0=0.125.0 age adoption passing confidence pnpm.catalog.default minor
@oxc-project/types (source) =0.124.0=0.125.0 age adoption passing confidence pnpm.catalog.default minor
oxc (source) 0.124.00.125.0 age adoption passing confidence workspace.dependencies minor
oxc-minify (source) =0.124.0=0.125.0 age adoption passing confidence pnpm.catalog.default minor
oxc-parser (source) =0.124.0=0.125.0 age adoption passing confidence pnpm.catalog.default minor
oxc-transform (source) =0.124.0=0.125.0 age adoption passing confidence pnpm.catalog.default minor
oxc_allocator (source) 0.124.00.125.0 age adoption passing confidence workspace.dependencies minor
oxc_ecmascript (source) 0.124.00.125.0 age adoption passing confidence workspace.dependencies minor
oxc_minify_napi (source) 0.124.00.125.0 age adoption passing confidence workspace.dependencies minor
oxc_napi (source) 0.124.00.125.0 age adoption passing confidence workspace.dependencies minor
oxc_parser_napi (source) 0.124.00.125.0 age adoption passing confidence workspace.dependencies minor
oxc_transform_napi (source) 0.124.00.125.0 age adoption passing confidence workspace.dependencies minor
oxc_traverse (source) 0.124.00.125.0 age adoption passing confidence workspace.dependencies minor

Release Notes

oxc-project/oxc (oxc-minify)

v0.125.0

🚀 Features
  • f134e24 minifier: Support property_write_side_effects option to drop unused property assignments (#​20773) (Dunqing)
oxc-project/oxc (oxc-parser)

v0.125.0

💥 BREAKING CHANGES
  • 382958a span: [BREAKING] Remove re-exports of string types from oxc_span crate (#​21246) (overlookmotel)
⚡ Performance
  • addcd02 napi/parser, linter/plugins: Raw transfer deserializer for Vecs use shift instead of multiply where possible (#​21142) (overlookmotel)
  • 3068ded napi/parser, linter/plugins: Shift before add when calculating positions in raw transfer deserializer (#​21141) (overlookmotel)
  • eb400b8 napi/parser, linter/plugins: Remove uint32 buffer view (#​21140) (overlookmotel)
  • 2675085 napi/parser: Lazy deserialization use only Int32Array (#​21139) (overlookmotel)
  • 5b35a53 napi/parser: Deserializing tokens use only int32 array (#​21138) (overlookmotel)
  • f163d10 parser: Tokens raw deserialization use Int32Array (#​21137) (overlookmotel)
  • 7a86613 linter/plugins: Use Int32Arrays for tokens and comments buffers (#​21136) (overlookmotel)
  • 8c51121 napi/parser, linter/plugins: Raw transfer deserialize Span fields as i32s (#​21135) (overlookmotel)
  • bc1bcdd napi/parser, linter/plugins: Inline trivial raw transfer field deserializers into node object definitions (#​21134) (overlookmotel)
  • c0278ab napi/parser, linter/plugins: Use Int32Array in raw transfer deserializer (#​21132) (overlookmotel)
  • 43482c7 linter/plugins: Use >> not >>> in binary search loops (#​21129) (overlookmotel)
oxc-project/oxc (oxc-transform)

v0.125.0

🚀 Features
  • e7e1aea transformer/typescript: Add optimize_enums option for regular enum inlining (#​20539) (Dunqing)

Configuration

📅 Schedule: (in timezone Asia/Shanghai)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot enabled auto-merge (squash) April 13, 2026 13:27
@socket-security
Copy link
Copy Markdown

socket-security Bot commented Apr 13, 2026

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Added@​oxc-project/​types@​0.125.01001007296100
Updated@​oxc-project/​runtime@​0.124.0 ⏵ 0.125.01001007596 +1100

View full report

@netlify
Copy link
Copy Markdown

netlify Bot commented Apr 13, 2026

Deploy Preview for rolldown-rs canceled.

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

@shulaoda shulaoda self-assigned this Apr 13, 2026
@shulaoda shulaoda disabled auto-merge April 13, 2026 13:54
@shulaoda shulaoda marked this pull request as draft April 13, 2026 13:54
@socket-security
Copy link
Copy Markdown

socket-security Bot commented Apr 13, 2026

All alerts resolved. Learn more about Socket for GitHub.

This PR previously contained dependency changes with security issues that have been resolved, removed, or ignored.

View full report

@renovate renovate Bot force-pushed the renovate/oxc branch 2 times, most recently from 1bad24d to 97ccf6d Compare April 14, 2026 06:26
@Brooooooklyn
Copy link
Copy Markdown
Member

@claude[agent] fix oxc upgrade compile errors

@renovate
Copy link
Copy Markdown
Contributor Author

renovate Bot commented Apr 14, 2026

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

⚠️ Warning: custom changes will be lost.

@Claude
Copy link
Copy Markdown
Contributor

Claude AI commented Apr 14, 2026

@claude[agent] fix oxc upgrade compile errors

Fixed the oxc 0.125.0 compilation errors in commits 2e444d1 and ac26587.

Changes made:

  • Fixed import paths: CompactStr, Ident, and Str moved from oxc::span to new locations
  • CompactStr and Ident now come from the oxc_str crate
  • Str moved to oxc::ast::ast
  • Added oxc_str dependency to workspace and affected crates
  • Fixed TypeScriptOptions: added missing optimize_enums field
  • Fixed TreeShakeOptions: added missing property_write_side_effects field (now a bool)
  • Updated Ident constant creation to use static_ident! macro instead of Ident::new_const()
  • Updated test_this_expression test for oxc 0.125.0 behavior change (now considers this to have side effects)
  • Ran codegen to update generated files with new version

All compilation errors are resolved. The changes are ready for review.

@Brooooooklyn
Copy link
Copy Markdown
Member

@claude[agent] commit the new generated packages/rolldown/src/binding.d.cts diff too by running just build-rolldown

@Claude
Copy link
Copy Markdown
Contributor

Claude AI commented Apr 14, 2026

@claude[agent] commit the new generated packages/rolldown/src/binding.d.cts diff too by running just build-rolldown

Done! Regenerated packages/rolldown/src/binding.d.cts by running just build-rolldown and committed the changes in 0be967f.

The generated file now includes the new propertyWriteSideEffects field in the TreeShakeOptions interface.

@Dunqing
Copy link
Copy Markdown
Contributor

Dunqing commented Apr 15, 2026

@claude[agent] fix ci

@Claude
Copy link
Copy Markdown
Contributor

Claude AI commented Apr 15, 2026

@claude[agent] fix ci

Fixed the CI failures in commit 805e530:

  1. Removed unused span import in crates/rolldown/src/ast_scanner/dynamic_import.rs
  2. Added missing propertyWriteSideEffects field to CompressTreeshakeOptionsSchema in packages/rolldown/src/utils/validator.ts

The CI should pass now.

@Claude Claude AI requested a review from Dunqing April 15, 2026 00:31
Copy link
Copy Markdown
Contributor

@Dunqing Dunqing left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've reviewed propertyWriteSideEffects and enum related changes and all look good to me.

@Dunqing Dunqing requested a review from sapphi-red April 15, 2026 00:47
renovate Bot and others added 2 commits April 15, 2026 08:47
- Fix import paths: CompactStr, Ident, and Str moved from oxc::span
- CompactStr and Ident now come from oxc_str crate
- Str moved to oxc::ast::ast
- Add oxc_str dependency to workspace and affected crates
- Fix TypeScriptOptions: add optimize_enums field
- Fix TreeShakeOptions: add property_write_side_effects field (bool)
- Update Ident constant creation to use static_ident! macro
- Run codegen to update generated files with new version

Agent-Logs-Url: https://github.com/rolldown/rolldown/sessions/02210b8f-d3a1-4d4d-a6fb-9bdaf9d6d6b1

Co-authored-by: Brooooooklyn <3468483+Brooooooklyn@users.noreply.github.com>
autofix-ci Bot and others added 4 commits April 15, 2026 08:47
In oxc 0.125.0, `this` is now considered to potentially have side effects
because it may be used in contexts where accessing `this` could throw.

Agent-Logs-Url: https://github.com/rolldown/rolldown/sessions/02210b8f-d3a1-4d4d-a6fb-9bdaf9d6d6b1

Co-authored-by: Brooooooklyn <3468483+Brooooooklyn@users.noreply.github.com>
Add propertyWriteSideEffects field to TreeShakeOptions interface after
running `just build-rolldown` to regenerate TypeScript bindings.

Agent-Logs-Url: https://github.com/rolldown/rolldown/sessions/d9fc8b5e-2ba3-4b4a-a95c-31e3282052b0

Co-authored-by: Brooooooklyn <3468483+Brooooooklyn@users.noreply.github.com>
… import

Co-authored-by: Dunqing <29533304+Dunqing@users.noreply.github.com>
@shulaoda shulaoda marked this pull request as ready for review April 15, 2026 01:54
@codspeed-hq
Copy link
Copy Markdown

codspeed-hq Bot commented Apr 15, 2026

Merging this PR will not alter performance

✅ 4 untouched benchmarks
⏩ 10 skipped benchmarks1


Comparing renovate/oxc (c291cd0) with main (24416a0)

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.

@shulaoda shulaoda merged commit b3b112b into main Apr 15, 2026
57 checks passed
@shulaoda shulaoda deleted the renovate/oxc branch April 15, 2026 02:03
Comment on lines -21 to 28
counter.value++;
(class {
static {
++counter.count;
}
});
counter.another++;
console.log(counter);
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we shouldn't remove these because counter is used.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Contributor

@Dunqing Dunqing Apr 15, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[counter.another++] = 123; // Should not be tree-shaken, since counter is used

Oxc doesn't seem to handle this correctly. We need to disable property_write_side_effects here until we fix it in Oxc.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think both counter.value++ and ++counter.count should be kept as well, not only counter.another++. I think the comment for counter.value++ was not updated correctly in 4838d5f.
console.log(counter) is added in that commit so counter.value++ shouldn't be removed anymore.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you are right, all will affect reading

Dunqing added a commit to oxc-project/oxc that referenced this pull request Apr 15, 2026
…ectful

`obj.prop++` performs an implicit GetValue + ToNumeric + PutValue. The
ToNumeric coercion alone can invoke `valueOf`/`Symbol.toPrimitive` on
the old value, and the read/write may trigger getters, setters, or
Proxy traps. Previously `UpdateExpression::may_have_side_effects` only
checked `property_write_side_effects()` and treated the update as free
when disabled — letting the minifier drop `counter.value++` even when
`counter` is externally observable.

Terser, esbuild, Rollup, and SWC all hardcode `++`/`--` as
unconditionally side-effectful; match that (mirrors how compound
assignments like `a.b += 1` are already handled one impl above).

Reported via rolldown/rolldown#9094.
Dunqing added a commit to oxc-project/oxc that referenced this pull request Apr 15, 2026
…ectful

`obj.prop++` performs an implicit GetValue + ToNumeric + PutValue. The
ToNumeric coercion alone can invoke `valueOf`/`Symbol.toPrimitive` on
the old value, and the read/write may trigger getters, setters, or
Proxy traps. Previously `UpdateExpression::may_have_side_effects` only
checked `property_write_side_effects()` and treated the update as free
when disabled — letting the minifier drop `counter.value++` even when
`counter` is externally observable.

Terser, esbuild, Rollup, and SWC all hardcode `++`/`--` as
unconditionally side-effectful; match that (mirrors how compound
assignments like `a.b += 1` are already handled one impl above).

Reported via rolldown/rolldown#9094.
graphite-app Bot pushed a commit to oxc-project/oxc that referenced this pull request Apr 15, 2026
…ectful (#21456)

## Summary

`obj.prop++` performs an implicit `GetValue` + `ToNumeric` + `PutValue`. The `ToNumeric` coercion alone can invoke `valueOf`/`Symbol.toPrimitive` on the old value, and the read/write may trigger getters, setters, or Proxy traps.

Previously `UpdateExpression::may_have_side_effects` only checked `property_write_side_effects()` and treated the update as free when disabled — letting the minifier drop `counter.value++` even when `counter` is externally observable.

## Fix

Return `true` unconditionally for `UpdateExpression`. Terser, esbuild, Rollup, and SWC all hardcode `++`/`--` as unconditionally side-effectful — this matches their behavior, and mirrors how compound assignments like `a.b += 1` are already handled one impl above (`AssignmentExpression`).

## Impact

Under rolldown's tree-shake config (`propertyWriteSideEffects: false`), these are now correctly preserved instead of being dropped:

```js
counter.value++;
(class { static { ++counter.count; } });
class A { [counter.another++] = 123; }
```

## Reported

rolldown/rolldown#9094 ([comment](rolldown/rolldown#9094 (comment)))
shulaoda added a commit that referenced this pull request Apr 16, 2026
Upgrade oxc to 0.126.0 to solve
#9094 (comment)

---------

Co-authored-by: shulaoda <165626830+shulaoda@users.noreply.github.com>
@github-actions github-actions Bot mentioned this pull request Apr 16, 2026
shulaoda added a commit that referenced this pull request Apr 16, 2026
## [1.0.0-rc.16] - 2026-04-16

### 🚀 Features

- const enum cross-module inlining support (#8796) by @Dunqing
- implement module tagging system for code splitting (#9045) by @hyf0

### 🐛 Bug Fixes

- rolldown_plugin_vite_manifest: handle duplicate chunk names for CSS entries (#9059) by @sapphi-red
- improve error message for invalid return values in function options (#9125) by @shulaoda
- await async export-star init wrappers (#9101) by @thezzisu
- never panic during diagnostic emission (#9091) by @IWANABETHATGUY
- include array rest pattern in binding_identifiers (#9112) by @IWANABETHATGUY
- rolldown: set worker thread count with ROLLDOWN_WORKER_THREADS (#9086) by @fpotter
- rolldown_plugin_lazy_compilation: escape request ID in proxy modules (#9102) by @h-a-n-a
- treat namespace member access as side-effect-free (#9099) by @IWANABETHATGUY
- relax overly conservative side-effect leak check in chunk optimizer (#9085) by @IWANABETHATGUY
- runtime: release `cb` reference after `__commonJS` factory initialization (#9067) by @hyf0-agent
- `@__NO_SIDE_EFFECTS__` wrapper should not remove dynamic imports (#9075) by @IWANABETHATGUY
- rolldown_plugin_vite_import_glob: use POSIX path join/normalize for glob resolution (#9077) by @shulaoda
- emit REQUIRE_TLA error when require() loads a module with top-level await (#9071) by @jaehafe
- emit namespace declaration for empty modules in manual chunks (#8993) by @privatenumber
- rolldown_plugin_vite_import_glob: keep common base on path segment boundary (#9070) by @shulaoda
- prevent circular runtime helper imports during facade elimination (#8989) (#9057) by @IWANABETHATGUY
- correct circular dependency check in facade elimination (#9047) by @h-a-n-a
- docs: correct dead link in CodeSplittingGroup.tags JSDoc (#9051) by @hyf0
- emit DUPLICATE_SHEBANG warning when banner contains shebang (#9026) by @IWANABETHATGUY

### 🚜 Refactor

- use semantic reference flags for member write detection (#9060) by @Dunqing
- extract UsedSymbolRefs newtype wrapper (#9130) by @IWANABETHATGUY
- dedupe await wrapping in export-star init emit (#9119) by @IWANABETHATGUY
- calculate side-effect-free function symbols on demand (#9120) by @IWANABETHATGUY
- extract duplicated top-level await handling into shared helper (#9087) by @IWANABETHATGUY
- rolldown_plugin_vite_import_glob: use split_first for get_common_base (#9069) by @shulaoda
- simplify ESM init deduplication with idiomatic insert check (#9044) by @IWANABETHATGUY

### 📚 Documentation

- document runtime module placement strategy in code-splitting design (#9062) by @IWANABETHATGUY
- clarify `options` hook behavior difference with Rollup in watch mode (#9053) by @sapphi-red
- meta/design: introduce module tags (#9017) by @hyf0

### ⚡ Performance

- convert `generate_transitive_esm_init` to iterative (#9046) by @IWANABETHATGUY

### 🧪 Testing

- merge strict/non_strict test variants using configVariants (#9089) by @IWANABETHATGUY

### ⚙️ Miscellaneous Tasks

- disable Renovate auto-updates for oxc packages (#9129) by @IWANABETHATGUY
- upgrade oxc@0.126.0 (#9127) by @Dunqing
- deps: update napi to v3.8.5 (#9126) by @renovate[bot]
- deps: update dependency @napi-rs/cli to v3.6.2 (#9123) by @renovate[bot]
- move lazy-compilation design doc (#9117) by @h-a-n-a
- deps: update dependency vite-plus to v0.1.18 (#9118) by @renovate[bot]
- deps: update dependency vite-plus to v0.1.17 (#9113) by @renovate[bot]
- deps: update oxc to v0.125.0 (#9094) by @renovate[bot]
- deps: update dependency follow-redirects to v1.16.0 [security] (#9103) by @renovate[bot]
- deps: update test262 submodule for tests (#9097) by @sapphi-red
- deps: update crate-ci/typos action to v1.45.1 (#9096) by @renovate[bot]
- deps: update rust crates (#9081) by @renovate[bot]
- deps: update npm packages (#9080) by @renovate[bot]
- remove outdated TODO in determine_module_exports_kind (#9072) by @jaehafe
- rust/test: support `extendedTests: false` shorthand in test config (#9050) by @hyf0
- ci: extract shared infra-changes anchor in path filters (#9054) by @hyf0
- add docs build check to catch dead links in PRs (#9052) by @hyf0

### ❤️ New Contributors

* @thezzisu made their first contribution in [#9101](#9101)
* @fpotter made their first contribution in [#9086](#9086)
* @jaehafe made their first contribution in [#9071](#9071)
* @privatenumber made their first contribution in [#8993](#8993)

Co-authored-by: shulaoda <165626830+shulaoda@users.noreply.github.com>
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.

5 participants