Skip to content

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

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

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

Conversation

@renovate

@renovate renovate Bot commented Apr 13, 2026

Copy link
Copy Markdown
Contributor

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

socket-security Bot commented Apr 13, 2026

Copy link
Copy Markdown

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

netlify Bot commented Apr 13, 2026

Copy link
Copy Markdown

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

socket-security Bot commented Apr 13, 2026

Copy link
Copy Markdown

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

renovate Bot commented Apr 14, 2026

Copy link
Copy Markdown
Contributor Author

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

Claude AI commented Apr 14, 2026

Copy link
Copy Markdown
Contributor

@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

Claude AI commented Apr 14, 2026

Copy link
Copy Markdown
Contributor

@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

Dunqing commented Apr 15, 2026

Copy link
Copy Markdown
Contributor

@claude[agent] fix ci

@Claude

Claude AI commented Apr 15, 2026

Copy link
Copy Markdown
Contributor

@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

@Dunqing Dunqing left a comment

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.

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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
@shulaoda
shulaoda marked this pull request as ready for review April 15, 2026 01:54
@codspeed-hq

codspeed-hq Bot commented Apr 15, 2026

Copy link
Copy Markdown

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.

@Dunqing Dunqing Apr 15, 2026

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.

[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 <[email protected]>
@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 [email protected] (#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 <[email protected]>
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