Commit Graph

812 Commits

Author SHA1 Message Date
oxc-guard 60fa13878c release(crates): oxc v0.149.0 (#26397)
### 💥 BREAKING CHANGES

- 66744f0 parser: [**BREAKING**] Rename `panicked` to `fatal_error` in `ParserReturn` (#26382) (overlookmotel)
- 2c9a947 parser: [**BREAKING**] Reduce `MAX_LEN` to 256 bytes below `u32::MAX` (#26352) (overlookmotel)

### 🚀 Features

- 32bdc5b allocator: Construct `ArenaHashSet` with any `Default` hasher (#26372) (Dunqing)
- a17de58 minifier: Process of return/throw in non last position and fix async * inlining (#26214) (Armano)
- bfb4c57 parser: Distinguish unapplied no-side-effects comments (#26120) (碳苯 Carbon)
- 1d9b9d3 ast: Add `GetNodeId` trait (#26145) (camc314)

### 🐛 Bug Fixes

- b156333 codegen: Order accessibility before abstract on accessors (#26392) (camc314)
- 116c8b8 transformer/class-properties: Keep private methods in class-expression scope (#26308) (Changsu Seong)
- 1400a0f parser: Require a string source after `export ... from` (#26389) (camc314)
- 2da73b7 codegen: Print matching quoted import names as identifiers (#26386) (camc314)
- 0a81d29 codegen: Preserve private-in left operand precedence (#26383) (camc314)
- 9a02337 parser: Correctly round large nondecimal literals (#26379) (camc314)
- 3d95477 transformer: Gate async-only rewrites by owning transform (#26326) (Dunqing)
- f45a9ee transformer: Limit arguments capture to lowered async functions (#26317) (Dunqing)
- 789969f transformer: Gate this capture by owning async transform (#26227) (Dunqing)
- affeb14 minifier: Mangle class private members in Node API (#26118) (碳苯 Carbon)
- 8b35abd semantic: Detect duplicate private class elements (#26361) (camc314)
- 457ed57 semantic: Reject await and yield in rest parameter defaults (#26359) (camc314)
- 4b89c7b semantic: Reject jumps across arrow functions (#26357) (camc314)
- c966aca parser: Do not omit `<` token opening type argument list (#26328) (overlookmotel)
- f07dca5 ast_visit: Add the trimmed prefix length to translation table offsets (#26173) (Bharadwaj Pendyala)
- 3ab9bd1 parser: Do not re-lex template substitution tail after fatal error (#26230) (overlookmotel)
- 07851b9 parser: Fix debug assert failure when lexer error with tokens enabled (#26229) (overlookmotel)
- 00dea7a allocator: Gate `Allocator::data_end_ptr` behind fixed_size feature (#26248) (camc314)
- 853ffab ecmascript: Avoid `charAt` panic on 32-bit (#26244) (camc314)
- 34feccb runtime: Remove stale regenerator exports (#26243) (camc314)

### ⚡ Performance

- 34a242e minifier: Use `Ident` for property mangler (#26334) (sapphi-red)
- 5303f5c minifier: Unify merging of last expression into target sequence (#26264) (Armano)
- 2ca7d29 minifier: Consume nodes in minimize_statements in reverse order (#26258) (Armano)
- d2354b4 mangler: Use `Ident` for variable names to keep (#26333) (sapphi-red)
- 5b3e335 minifier: Use `Ident` instead of `Str` in `KeepVar` (#26332) (sapphi-red)
- 51366fb minifier: Use `IdentHashSet` in `PrivateMemberUsageStack` (#26331) (sapphi-red)
- d19c42a minifier: Merge nested if stmt in place instead of creating dummies (#26351) (Armano)
- 356def6 parser: Shrink annotation comment ranges (#26356) (overlookmotel)
- a5be474 parser: Shave instruction off `parse_jsx_element_name` (#26355) (overlookmotel)
- 9780663 parser: Remove fatal error guard from `parse_jsx_element_name` (#26354) (overlookmotel)
- 766e12f parser: Remove `token` field from `LexerCheckpoint` (#26350) (overlookmotel)

### 📚 Documentation

- d4b4e61 transformer: Document ES2015 target floor (#26378) (Dunqing)
- 67dd054 ast_visit: Correct out-of-date comments on `Utf8ToUtf16` converter (#26285) (overlookmotel)
- a8ed2a7 minifier: Fix stale validation instructions (#26251) (camc314)
2026-09-07 14:29:34 +00:00
leaysgur 68e12abe2c feat(formatter_css): follow the oxc-css-parser's acceptance line (#26337)
Fixes #26290, #26291.
Also, many changes to follow refined parser acceptance line.

---

CI will fail until parser version bumped, needs oxc-project/oxc-css-parser/pull/166
2026-09-07 01:33:14 +00:00
overlookmotel 6365db964b test(lexer): enable oxc_lexer conformance tests on all platforms (#26263)
`oxc_lexer` has 2 implementations:

1\. SIMD-based on x86_64 with AVX2.
2\. Scalar/SWAR fallback which works on all platforms.

Both produce the same output.

This PR enables running the lexer conformance on either implementation. Which implementation is tested depends on what build flags are passed to `cargo coverage`.

It turns out that it's possible to test the SIMD implementation on Mac by compiling as x86_64, and running it under Rosetta 2.

This PR also adds `just` recipes to run tests and conformance on either implementation:

- `just test-lexer`
- `just test-lexer-simd`
- `just conformance-lexer`
- `just conformance-lexer-simd`

These commands should work correctly on any of Linux x86, Windows x86, Mac aarch64.
2026-09-03 10:59:05 +00:00
overlookmotel ef0f33eb7d test(all): run conformance with panic = "unwind" (#26260)
Conformance tests for `oxc_lexer` crate rely on using `catch_unwind` to catch panics and report them, rather than crashing the whole process. Currently this doesn't work because conformance is compiled with `panic = "abort"` (inherited from `release` profile).

This PR fixes that by adding `panic = "unwind"` to `coverage` profile.

I've measured the time it takes to run conformance locally before/after this change, and the difference is within noise (+/- 2%), so this seems to have no adverse effects.

`codegen-conformance` profile only existed to add `panic = "unwind"` too, so after this change it becomes identical to `coverage` profile. That makes it redundant, so this PR removes it in favour of just using `coverage` everywhere.
2026-09-03 10:59:04 +00:00
oxc-guard 894c8f9cd8 release(crates): oxc v0.148.0 (#26198)
### 💥 BREAKING CHANGES

- a31567a allocator: [**BREAKING**] Make `Allocator::cursor_ptr` and `data_end_ptr` private (#26081) (overlookmotel)

### 🚀 Features

- 784e9fa minifier: Invert `!0` and `!1` in place for boolean context to `1` and `0` (#26050) (Armano)
- 1e902cc minifier: Expand fold leading assignments into the var decl (#26142) (Armano)
- 3ed4f6a minifier: Expand de morgan's optimization to allow move of `!` (#25930) (Armano)
- 5672585 parser: Attach all comments to nodes (#25944) (camc314)

### 🐛 Bug Fixes

- 4adfb4c semantic: Validate chained continue labels (#26157) (camc314)
- b874f48 ecmascript: `Math.round` only exact half ties (#26150) (camc314)
- a625378 minifier: Coerce omitted `indexOf` search argument (#26149) (camc314)
- dc7398b ecmascript: Trim trailing whitespace in string to number (#26148) (camc314)
- 243b685 transformer/object-rest: Lower multiple declarators correctly (#26147) (camc314)
- dc09a3a parser: Avoid panic on escaped string export names (#26146) (camc314)
- e412cf2 linter: Clamp invalid JS plugin locations (#26144) (camc314)
- c3dedc9 semantic: Skip function body bindings in parameters (#26099) (Dunqing)
- e74de61 transform-react: Match Babel diagnostic reporting (#26128) (Boshen)
- d5163d0 parser: Correctly classify unapplied pure annotations (#26084) (camc314)
- 8531b9b linter/plugins: Alter method for obtaining mutable `Program` when sending AST to JS plugins (#26077) (overlookmotel)
- 9b51658 regular_expression: Allow oversized decimal escape for Annex B (#26070) (leaysgur)
- c8de4df regular_expression: Reject oversized backreferences (#26055) (camc314)

### ⚡ Performance

- ac4785a diagnostics: Use fixed ANSI styles (#26130) (Boshen)
- 07a0793 packages/codegen: Flatten output in chunks (#26109) (overlookmotel)
- 487427a packages/codegen: Faster string flattening (#26108) (overlookmotel)
- 7785583 packages/codegen: Ensure indent strings are flattened (#26107) (overlookmotel)
- 0dd4db3 packages/codegen: Store mapping positions in an `Int32Array` (#26085) (overlookmotel)
2026-09-01 08:15:07 +00:00
leaysgur 1fb37b6e47 feat(formatter/css): format declaration-shaped raw-prelude rules (postcss nested config blocks) (#26194)
Fixes #26158

---

> Otherwise, [restore a mark](https://drafts.csswg.org/css-syntax-3/#token-stream-restore-a-mark) from input, then [consume a qualified rule](https://drafts.csswg.org/css-syntax-3/#consume-a-qualified-rule) from input, with nested set to true, and [<semicolon-token>](https://drafts.csswg.org/css-syntax-3/#typedef-semicolon-token) as the stop token.
> https://drafts.csswg.org/css-syntax-3/#consume-block-contents

When fallback happens: format block, keep prelude verbatim.
2026-08-31 04:42:06 +00:00
leaysgur 286aa71962 chore(deps): bump fast_glob (#26192)
https://github.com/oxc-project/fast-glob/releases/tag/v1.1.1
2026-08-31 02:03:31 +00:00
renovate[bot] ac817c6e50 chore(deps): update rust crate javascript-globals to v2 (#26185)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[javascript-globals](https://redirect.github.com/oxc-project/javascript-globals)
| workspace.dependencies | major | `1.5.1` → `2.0.0` |

---

### Release Notes

<details>
<summary>oxc-project/javascript-globals (javascript-globals)</summary>

###
[`v2.0.0`](https://redirect.github.com/oxc-project/javascript-globals/blob/HEAD/CHANGELOG.md#200---2026-08-27)

[Compare
Source](https://redirect.github.com/oxc-project/javascript-globals/compare/javascript-globals-v1.6.0...javascript-globals-v2.0.0)

##### Other

- \[**breaking**] compact generated global tables
([#&#8203;280](https://redirect.github.com/oxc-project/javascript-globals/pull/280))

</details>

---

### Configuration

📅 **Schedule**: (in timezone Asia/Shanghai)

- Branch creation
  - "before 10am on monday"
- 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 this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/oxc-project/oxc).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC40OS4wIiwidXBkYXRlZEluVmVyIjoiNDQuNDkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-30 20:02:34 +00:00
renovate[bot] f1831d59ea chore(deps): update rust crates (#26179)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [convert_case](https://redirect.github.com/rutrum/convert-case) |
workspace.dependencies | minor | `0.11.0` → `0.12.0` |
| [flate2](https://redirect.github.com/rust-lang/flate2-rs) |
workspace.dependencies | patch | `1.1.9` → `1.1.10` |
| [indexmap](https://redirect.github.com/indexmap-rs/indexmap) |
workspace.dependencies | patch | `2.14.0` → `2.14.1` |
| [mimalloc-safe](https://redirect.github.com/napi-rs/mimalloc-safe) |
workspace.dependencies | patch | `0.1.64` → `0.1.65` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the warning logs for
more information.

---

### Release Notes

<details>
<summary>rutrum/convert-case (convert_case)</summary>

###
[`v0.12.0`](https://redirect.github.com/rutrum/convert-case/blob/HEAD/CHANGELOG.md#0120-Optimizations)

[Compare
Source](https://redirect.github.com/rutrum/convert-case/compare/0.11.0...0.12.0)

This release improves speed and memory efficiency. A couple techniques
were used:

- Character case checks first check ascii before doing the more
expensive grapheme checks (which require heap allocations).
- Delimiter only splits get a dedicated path in the `split` method.
- The case of characters is computed upfront in a bitmask before
checking individual boundary conditions in `split`. Built-in boundaries
get a custom implementation built on top of this bitmask.

| Benchmark | Before | After | Improvement |
| ----------------------------------------------- | --------- | --------
| ----------- |
| `snake_short` (`"hello_world"`) | 412 ns | 21.3 ns | −95% |
| `lower_upper` (`"lowerUpperUpper"`) | 1,631 ns | 475 ns | −71% |
| `acronym` (`"XMLRequest"`) | 1,108 ns | 418 ns | −62% |
| `camel_set` (`"getTotalLength3D"`) | 3,844 ns | 643 ns | −83% |
| `defaults_mixed` (9 boundaries) | 8,083 ns | 1,500 ns | −81% |
| `defaults_long_snake` (265 chars) | 52,281 ns | 4,730 ns | −91% |
| `unicode_cyrillic` (`"ПЕРСПЕКТИВА24"`) | 8,334 ns | 741 ns | −91% |
| Full pipeline `from_to_all` (4 words x 14 x 14) | 1,230 µs | 263 µs |
−79% |

</details>

<details>
<summary>rust-lang/flate2-rs (flate2)</summary>

###
[`v1.1.10`](https://redirect.github.com/rust-lang/flate2-rs/releases/tag/1.1.10)

[Compare
Source](https://redirect.github.com/rust-lang/flate2-rs/compare/1.1.9...1.1.10)

#### What's Changed

- feat: reuse zlib's decoder buffer by
[@&#8203;Vaiz](https://redirect.github.com/Vaiz) in
[#&#8203;532](https://redirect.github.com/rust-lang/flate2-rs/pull/532)
- feat: add reset method for read::GzDecoder and buffered::GzDecoder by
[@&#8203;Vaiz](https://redirect.github.com/Vaiz) in
[#&#8203;534](https://redirect.github.com/rust-lang/flate2-rs/pull/534)
- Drop cloudflare-zlib by
[@&#8203;kornelski](https://redirect.github.com/kornelski) in
[#&#8203;539](https://redirect.github.com/rust-lang/flate2-rs/pull/539)
- Add a wrapper for the `Crc` struct by
[@&#8203;MikkelPaulson](https://redirect.github.com/MikkelPaulson) in
[#&#8203;540](https://redirect.github.com/rust-lang/flate2-rs/pull/540)
- Bump miniz\_oxide to 0.9 by
[@&#8203;oscargus](https://redirect.github.com/oscargus) in
[#&#8203;543](https://redirect.github.com/rust-lang/flate2-rs/pull/543)
- Upgrade miniz\_oxide and add unit tests of the different flush kinds
by [@&#8203;fintelia](https://redirect.github.com/fintelia) in
[#&#8203;498](https://redirect.github.com/rust-lang/flate2-rs/pull/498)
- Fix infinite loop in writing gzip header/footer by
[@&#8203;Shnatsel](https://redirect.github.com/Shnatsel) in
[#&#8203;547](https://redirect.github.com/rust-lang/flate2-rs/pull/547)
- test: generate corrupt gzip fixture at runtime by
[@&#8203;nanookclaw](https://redirect.github.com/nanookclaw) in
[#&#8203;550](https://redirect.github.com/rust-lang/flate2-rs/pull/550)
- Reject oversized gzip extra fields by
[@&#8203;Byron](https://redirect.github.com/Byron) in
[#&#8203;553](https://redirect.github.com/rust-lang/flate2-rs/pull/553)
- Reject incomplete deflate streams at EOF by
[@&#8203;Guflly](https://redirect.github.com/Guflly) in
[#&#8203;556](https://redirect.github.com/rust-lang/flate2-rs/pull/556)
- Include `README.md` in a private module by
[@&#8203;bushrat011899](https://redirect.github.com/bushrat011899) in
[#&#8203;562](https://redirect.github.com/rust-lang/flate2-rs/pull/562)
- Add `no_std` support using nightly `alloc_io` by
[@&#8203;bushrat011899](https://redirect.github.com/bushrat011899) in
[#&#8203;559](https://redirect.github.com/rust-lang/flate2-rs/pull/559)
- Update `get_mut()` documentation to make clear how 'inner\` can be
used by [@&#8203;Byron](https://redirect.github.com/Byron) in
[#&#8203;558](https://redirect.github.com/rust-lang/flate2-rs/pull/558)

#### New Contributors

- [@&#8203;Vaiz](https://redirect.github.com/Vaiz) made their first
contribution in
[#&#8203;532](https://redirect.github.com/rust-lang/flate2-rs/pull/532)
- [@&#8203;MikkelPaulson](https://redirect.github.com/MikkelPaulson)
made their first contribution in
[#&#8203;540](https://redirect.github.com/rust-lang/flate2-rs/pull/540)
- [@&#8203;oscargus](https://redirect.github.com/oscargus) made their
first contribution in
[#&#8203;543](https://redirect.github.com/rust-lang/flate2-rs/pull/543)
- [@&#8203;nanookclaw](https://redirect.github.com/nanookclaw) made
their first contribution in
[#&#8203;550](https://redirect.github.com/rust-lang/flate2-rs/pull/550)
- [@&#8203;Guflly](https://redirect.github.com/Guflly) made their first
contribution in
[#&#8203;556](https://redirect.github.com/rust-lang/flate2-rs/pull/556)
- [@&#8203;bushrat011899](https://redirect.github.com/bushrat011899)
made their first contribution in
[#&#8203;562](https://redirect.github.com/rust-lang/flate2-rs/pull/562)

**Full Changelog**:
<https://github.com/rust-lang/flate2-rs/compare/1.1.9...1.1.10>

</details>

<details>
<summary>indexmap-rs/indexmap (indexmap)</summary>

###
[`v2.14.1`](https://redirect.github.com/indexmap-rs/indexmap/blob/HEAD/RELEASES.md#2141-2026-08-28)

[Compare
Source](https://redirect.github.com/indexmap-rs/indexmap/compare/2.14.0...2.14.1)

- Simplify comparisons where `Equivalent` isn't needed (`Q = K`).
- Unify index assertions for bounds checks.
- Fix (or `expect`) clippy lints.

</details>

<details>
<summary>napi-rs/mimalloc-safe (mimalloc-safe)</summary>

###
[`v0.1.65`](https://redirect.github.com/napi-rs/mimalloc-safe/blob/HEAD/CHANGELOG.md#0165---2026-08-24)

[Compare
Source](https://redirect.github.com/napi-rs/mimalloc-safe/compare/mimalloc-safe-v0.1.64...mimalloc-safe-v0.1.65)

##### Chore

- *(deps)* Update actions/setup-node action to v7
([#&#8203;89](https://redirect.github.com/napi-rs/mimalloc-safe/pull/89))
- *(deps)* Update yarn to v4.18.0
([#&#8203;87](https://redirect.github.com/napi-rs/mimalloc-safe/pull/87))

</details>

---

### Configuration

📅 **Schedule**: (in timezone Asia/Shanghai)

- Branch creation
  - "before 10am on monday"
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

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

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/oxc-project/oxc).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC40OS4wIiwidXBkYXRlZEluVmVyIjoiNDQuNDkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-30 18:54:27 +00:00
leaysgur 0e734cc7ae test(formatter_css): pin signed-value parser fixes from oxc-css-parser 0.0.12 (#26132)
Bump parser and pin fixed by https://github.com/oxc-project/oxc-css-parser/pull/158
2026-08-27 07:49:30 +00:00
Boshen ac4785a139 perf(diagnostics): use fixed ANSI styles (#26130)
Replace dynamic diagnostic styles with fixed ANSI prefixes, reducing `oxfmt` and `oxlint` release text size.

AI assistance: Codex was used. The contributor remains responsible for this change.
2026-08-27 05:19:35 +00:00
oxc-guard 4e258430cd release(crates): oxc v0.147.0 (#26046)
### 🚀 Features

- b6e9e5e minifier: Fold switch stmt whose parent is not block stmt (#25403) (Armano)

### 🐛 Bug Fixes

- 8a9bdbd estree: Include decorators in `FormalParameterRest ` spans (#26021) (camc314)
- 6f0c7cf minifier: Avoid merging `if` to `for` in sloppy mode when containing function declaration (#25638) (sapphi-red)
- 2cde1f6 rust: Address nightly deprecations (#25998) (Boshen)
- 6c5ad1b codegen: Only add mapping names for `PrivateIdentifier`s which have changed (#25958) (overlookmotel)
- 2dad1e0 parser: Track irregular line terminators in trivia (#25947) (camc314)
- 58ba651 minifier: Avoid merging `if` to `for` when the body contains a function declaration (#25637) (sapphi-red)
- a185ac3 codegen: Print `#` before private identifier in TS signature key (#25938) (overlookmotel)
- af82a07 minifier: Keep unary `+` when the other operand has side effects (#25645) (Kotaro Chikuba)

### ⚡ Performance

- 53f6270 packages/codegen: Eagerly initialize `mapNames` (#25979) (overlookmotel)
- 5b43c60 packages/codegen: Split recording mappings into multiple functions (#25978) (overlookmotel)
- cc947b5 packages/codegen: Reduce property lookups (#25977) (overlookmotel)
- c22a9cc packages/codegen: Combine condition checks (#25976) (overlookmotel)
- 215a6a5 packages/codegen: Add functions for writing/marking unnamed mappings (#25975) (overlookmotel)
- fe444cc codegen: Avoid allocations for single comment anchors (#25598) (camc314)
- a0aee81 minifier: Do not rebuild expression when substituting void to null (#25964) (Armano)
- 1004439 packages/codegen: Merge `mark` and `write` calls in `printImportAttributes` (#25972) (overlookmotel)
- 94c8a34 packages/codegen: Remove `node` param from `printString` and `printNonNegativeFloat` (#25971) (overlookmotel)
- 7e2b4b3 packages/codegen: `printNonNegativeFloat` write mapping directly (#25968) (overlookmotel)
- f09c8ab minifier: Avoid creation of unnecessary conditional expressions (#25931) (Armano)
- 53ff080 packages/codegen: Remove `lastWasPostfixClose` (#25888) (overlookmotel)

### 📚 Documentation

- 07de646 packages/codegen: Fix JSDoc comments on `write*` methods (#25966) (overlookmotel)
- 3b09c04 packages/codegen: Clarify comment (#25959) (overlookmotel)
2026-08-24 11:19:12 +00:00
Boshen 8b0cbed459 chore(deps): bump oxc-resolver to 11.24.3 (#26049)
Bumps `oxc-resolver` to 11.24.3. The arm64 macOS oxlint release binary remains 12,542,400 bytes (0-byte change).

AI assistance was used to update the dependency, measure binary size, and prepare this PR. I reviewed and take responsibility for the changes.
2026-08-24 10:27:10 +00:00
renovate[bot] 32c2675084 chore(deps): update rust crates (#26024)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[javascript-globals](https://redirect.github.com/oxc-project/javascript-globals)
| workspace.dependencies | minor | `1.5.2` → `1.6.0` |
| [papaya](https://redirect.github.com/ibraheemdev/papaya) |
workspace.dependencies | patch | `0.2.4` → `0.2.5` |
| [saphyr](https://redirect.github.com/saphyr-rs/saphyr) |
workspace.dependencies | patch | `0.0.11` → `0.0.12` |
| [similar](https://redirect.github.com/mitsuhiko/similar) |
workspace.dependencies | minor | `3.1.2` → `3.2.0` |

---

### Release Notes

<details>
<summary>oxc-project/javascript-globals (javascript-globals)</summary>

###
[`v1.6.0`](https://redirect.github.com/oxc-project/javascript-globals/blob/HEAD/CHANGELOG.md#160---2026-08-18)

[Compare
Source](https://redirect.github.com/oxc-project/javascript-globals/compare/javascript-globals-v1.5.2...javascript-globals-v1.6.0)

##### Added

- add Bun globals
([#&#8203;275](https://redirect.github.com/oxc-project/javascript-globals/pull/275))

##### Other

- reduce Rust dev debug info
([#&#8203;271](https://redirect.github.com/oxc-project/javascript-globals/pull/271))

</details>

<details>
<summary>ibraheemdev/papaya (papaya)</summary>

###
[`v0.2.5`](https://redirect.github.com/ibraheemdev/papaya/releases/tag/v0.2.5):
0.2.5

[Compare
Source](https://redirect.github.com/ibraheemdev/papaya/compare/v0.2.4...v0.2.5)

- Added the `fast-barrier` feature to allow opting out of process wide
memory barriers, which can be expensive to initialize
([#&#8203;100](https://redirect.github.com/ibraheemdev/papaya/pull/100)).
- Fixed a bug where blocking resizes could lead to deadlocks
([#&#8203;92](https://redirect.github.com/ibraheemdev/papaya/pull/92)).
- `HashSet::retain` no longer takes a mutable reference
([#&#8203;101](https://redirect.github.com/ibraheemdev/papaya/pull/101)).

</details>

<details>
<summary>saphyr-rs/saphyr (saphyr)</summary>

###
[`v0.0.12`](https://redirect.github.com/saphyr-rs/saphyr/compare/v0.0.11...v0.0.12)

[Compare
Source](https://redirect.github.com/saphyr-rs/saphyr/compare/v0.0.11...v0.0.12)

</details>

<details>
<summary>mitsuhiko/similar (similar)</summary>

###
[`v3.2.0`](https://redirect.github.com/mitsuhiko/similar/blob/HEAD/CHANGELOG.md#320)

[Compare
Source](https://redirect.github.com/mitsuhiko/similar/compare/3.1.2...3.2.0)

- Added structured, line-oriented three-way merging through `TextMerge`,
with
merge and diff3 conflict output, configurable labels and marker sizes,
owned
and borrowed inputs, byte output, and whitespace-insensitive comparison.
- Added `WhitespaceMode` and `TextDiffConfig::whitespace_mode` for
Git-style
line comparisons that ignore changes in whitespace (`-b`) or all
whitespace
  (`-w`).
- Changed `Algorithm::Myers` to reduce unmatched/confusing records and
use
  Git-style bounded, non-minimal splits on expensive searches, and added
`Algorithm::RawMyers` for the previous shortest-edit-script behavior
without
  output-changing heuristics.
- Improved heuristics and performance for most algorithms other than
LCS.
- Improved large-input performance by avoiding quadratic Histogram
scans.

</details>

---

### Configuration

📅 **Schedule**: (in timezone Asia/Shanghai)

- Branch creation
  - "before 10am on monday"
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

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

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/oxc-project/oxc).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4zOS4wIiwidXBkYXRlZEluVmVyIjoiNDQuMzkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Cameron Clark <cameron.clark@hey.com>
2026-08-23 17:02:20 +00:00
Boshen 2cde1f6671 fix(rust): address nightly deprecations (#25998)
Addresses deprecations reported by the latest Rust nightly while preserving Rust 1.98 compatibility.

- Rename `unit-bindings` to `unit_bindings`: hyphenated lint names are deprecated in favor of their canonical underscore spelling.
- Replace `isize::max_value()` and `usize::max_value()` with `isize::MAX` and `usize::MAX`: the legacy numeric methods are deprecated in favor of associated constants.
- Set explicit `MAX_INDEX` values on `define_index_type!`: `oxc_index` otherwise generates `<raw>::max_value() as usize`; the explicit modern constants avoid that deprecated expansion without changing the index limits.
- Remove obsolete `clippy::legacy_numeric_constants` expectations: the corrected code no longer triggers that lint, so the expectations would be unfulfilled.
- Allow the AST scanner to consume optional `define_index_type!` configuration: it previously parsed only the struct declaration and rejected the added `MAX_INDEX` option.

AI-assisted.
2026-08-22 11:34:02 +00:00
camc314 c0f71564c3 chore(deps): bump MSRV to 1.96.0 (#25946)
## Summary

- bump the workspace MSRV from 1.95.0 to 1.96.0 under the N-2 policy after #25945
- retain an MSRV-compatible layout calculation while suppressing the Rust 1.98 Clippy suggestion
2026-08-20 18:23:40 +00:00
oxc-guard 0389c4010e release(crates): oxc v0.146.0 (#25912)
### 🚀 Features

- 83cb516 minifier: Improve negation of expressions in boolean context (#25755) (Armano)

### 🐛 Bug Fixes

- 134fb22 isolated-declarations: Preserve unresolved parameter types (#25909) (Dunqing)
- 526c2b3 codegen: Remove deprecated test APIs (#25889) (camc314)
- 344a9b2 codegen: Align enum template sourcemaps (#25872) (camc314)

### ⚡ Performance

- 5ef0c93 minifier: Unwrap all unary exprs without creating dummy expressions (#25891) (Armano)
- 8783524 packages/codegen: Remove loop from `growMappingBuffer` (#25886) (overlookmotel)
- b6b14c0 packages/codegen: Remove redundant branch (#25885) (overlookmotel)
- be6adf0 packages/sourcemap: Make `location` passed to `recordSourceMapping` always a number (#25884) (overlookmotel)
- f720f15 packages/codegen: Take named-mapping only code off hot path in `recordSourceMapping` (#25883) (overlookmotel)
- a734af5 packages/codegen: Remove redundant setting of `last` in `printImportAttributes` and `printIf` (#25882) (overlookmotel)
- c6e44c6 packages/codegen: Combine 2 writes in `printJSXElement` (#25881) (overlookmotel)
- 8801662 packages/codegen: Remove redundant mapping from `printParams` (#25880) (overlookmotel)

### 📚 Documentation

- 5ad330e packages/codegen: Reformat comments (#25876) (overlookmotel)
2026-08-19 08:29:51 +00:00
oxc-guard[bot] 4a4a1fb2e7 release(crates): oxc v0.145.0 (#25865)
### 💥 BREAKING CHANGES

- 365274e packages/codegen: [**BREAKING**] `printSync` return an object
(#25720) (overlookmotel)

### 🚀 Features

- 6a7eb60 packages/codegen: Alter capitalization of `sourceFilename`
option (#25854) (overlookmotel)
- 300763f packages/codegen: Add full source map support (#25585)
(camc314)
- a169e4a napi/minify: Expose property name mangling options (#24741)
(Dunqing)
- 2f5cdb1 minifier: Add property name mangling (#24740) (Dunqing)
- 4922141 mangler: Deduplicate private accessor names (#25601) (camc314)
- 1c4f519 napi: Add Relay transform plugin (#25503) (Boshen)
- a4478e9 codegen: Add `oxc-codegen` package (#25488) (overlookmotel)

### 🐛 Bug Fixes

- 0fbcf64 codegen: Validate sourcemap options (#25860) (camc314)
- 345f981 react_compiler: Skip node_modules by default (#25859) (Boshen)
- ab81f3f minifier: Drop side-effect-free additions (#25639) (Dunqing)
- 241c559 napi/minify: Accept RegExp for property filters (#25827)
(Dunqing)
- 4cc7ea4 codegen: Reject invalid indent options (#25807) (camc314)
- 53f9295 isolated-declarations: Preserve undefined for defaulted any
(#25292) (camc314)
- 8ab883a codegen: Preserve property key annotations (#25766) (Dunqing)
- b13fd48 minifier: Model uninitialized module vars as undefined
(#25497) (Dunqing)
- f6000ac ecmascript: Fold `**` with `Number::exponentiate`, not IEEE
`pow` (#25644) (Kotaro Chikuba)
- b846abc isolated-declarations: Handle ambient expando properties
(#25655) (camc314)
- dec0a86 react-compiler: Standardize diagnostics (#25702) (Boshen)
- fca2e0c parser: Reject initialized lexical declarations in for-in
(#25700) (Boshen)
- ae9be8f parser: Forbid type parameters on quoted constructors (#25696)
(Boshen)
- c5f188a react-compiler: Use Babel v1 validation defaults (#25676)
(Boshen)
- db44651 napi: Disable reuseWorker in browser bindings (#25640)
(leaysgur)
- ce35d47 react_compiler: Preserve JSX import source pragmas (#25592)
(Boshen)
- 059784d semantic: Respect shadowed `Infinity` and `NaN` in enum
evaluation (#25604) (camc314)
- bb5a232 minifier: Keep variable declaration initilized with class when
keepNames is enabled (#25584) (sapphi-red)
- f49229d minifier: Keep side effects when rotating bitwise operands
(#25596) (Kotaro Chikuba)
- e82495b ecmascript: Derive `ToNumber` of `!x` from `ToBoolean`
(#25595) (Kotaro Chikuba)
- 509931b semantic: Classify global references per identifier (#25608)
(camc314)
- 80484ce mangler: Correct base54 safety comment (#25606) (camc314)
- c1369a7 codegen: Resolve private names in class heritage (#25588)
(camc314)
- c002f29 codegen: Escape sources for empty import specifiers (#25586)
(camc314)
- 0c68b7f estree: Emit `decorators` on `FormalParameterRest` (#25582)
(camc314)
- cdf1846 semantic: Allow legacy escapes in JSX attributes (#25576)
(Boshen)
- e75e102 minifier: Preserve block statement in labeled iteration
statements (#25162) (Armano)
- 771d79a mangler: Exclude non-manglable symbols from slot assignment
(#25539) (sapphi-red)
- 76b19f5 minifier: Avoid duplicating large folded strings (#25532)
(Dunqing)
- 59e8895 codegen: Validate starting indent level (#25550) (camc314)
- 88b34f2 clippy: Remove unneeded `unsafe` (#25551) (camc314)
- 23a7ad0 parser: Stop delimited lists at end of file (#25542) (Boshen)
- 73acba9 parser: Preserve fatal errors during await reparse (#25541)
(Boshen)
- c3e99d1 minifier: Avoid invalid octal escapes in template folds
(#25495) (Dunqing)
- b4e6a9e codegen: Output newline after `export default interface`
(#25487) (overlookmotel)
- 5fcf683 minifier: Correct issue with try finally termination (#25185)
(Armano)
- 1645d93 react_compiler: Preserve source spans (#25462) (Boshen)
- 8d7f9cf react_compiler: Honor eslint suppressions (#25394) (Boshen)

### ⚡ Performance

- 568203e ecmascript: Use binary search for known globals (#25817)
(Boshen)
- c84ede3 estree_tokens: Share JS token update entry point (#25826)
(Boshen)
- 9a6e862 minifier: Move owned statements directly (#25835) (Dunqing)
- 61b2aef minifier: Move owned AST nodes directly (#25837) (Dunqing)
- 673b04b minifier: Replace expressions without take_in dummies (#25836)
(Dunqing)
- 63ff8ef linter: Outline diagnostic construction (#25762) (Boshen)
- 621808e diagnostics: Measure graphemes lazily (#25723) (Boshen)
- f62ed0e diagnostics: Optimize graphical number rendering (#25715)
(Boshen)
- 7152834 diagnostics: Reduce graphical formatting overhead (#25714)
(Boshen)
- 10fc4b7 diagnostics: Reduce graphical rendering allocations (#25711)
(Boshen)
- 9c8abab diagnostics: Batch graphical reports (#25710) (Boshen)
- 757f3d4 mangler: Share allocated names across reused slots (#25605)
(camc314)
- 5444cbf codegen: Skip escaping harmless `<` tokens (#25564) (camc314)

### 📚 Documentation

- 58f7ab9 packages/codegen: Reformat docs and comments (#25848)
(overlookmotel)
- 627466e transform-react: Document all options (#25800) (Boshen)
- ce03ac1 packages/codegen: Fix JSDoc comments for `printSync` (#25722)
(overlookmotel)
- 386a699 packages/codegen: Correct JSDoc comment (#25716)
(overlookmotel)
- 31e571d mangler: Update code example (#25599) (camc314)
- fd62354 codegen: Revamp package readme (#25560) (camc314)
- ffa3153 codegen: Clarify raw transfer Node requirement (#25565)
(camc314)
- c5d4063 codegen: Clarify binary walk allocations (#25562) (camc314)
- 5703d7a codegen: Correct stale printer comments (#25561) (camc314)

Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2026-08-18 22:26:40 +08:00
renovate[bot] 2d2b3be43d chore(deps): update rust crate sort-package-json to v1 (#25741)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[sort-package-json](https://redirect.github.com/oxc-project/sort-package-json)
| workspace.dependencies | major | `0.0.15` → `1.0.0` |

---

### Release Notes

<details>
<summary>oxc-project/sort-package-json (sort-package-json)</summary>

###
[`v1.0.0`](https://redirect.github.com/oxc-project/sort-package-json/blob/HEAD/CHANGELOG.md#100---2026-08-16)

[Compare
Source](https://redirect.github.com/oxc-project/sort-package-json/compare/v0.0.15...v1.0.0)

##### Changed

- **Breaking:** Stabilize the public `SortOptions` API and refresh crate
metadata and documentation
([#&#8203;158](https://redirect.github.com/oxc-project/sort-package-json/pull/158))

</details>

---

### 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 this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/oxc-project/oxc).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4yOS41IiwidXBkYXRlZEluVmVyIjoiNDQuMjkuNSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Boshen <boshenc@gmail.com>
2026-08-16 13:58:43 +00:00
renovate[bot] f004852aac chore(deps): update rust crate sort-package-json to 0.0.15 (#25736)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[sort-package-json](https://redirect.github.com/oxc-project/sort-package-json)
| workspace.dependencies | patch | `0.0.14` → `0.0.15` |

---

### Release Notes

<details>
<summary>oxc-project/sort-package-json (sort-package-json)</summary>

###
[`v0.0.15`](https://redirect.github.com/oxc-project/sort-package-json/blob/HEAD/CHANGELOG.md#0015---2026-08-16)

[Compare
Source](https://redirect.github.com/oxc-project/sort-package-json/compare/v0.0.14...v0.0.15)

##### Fixed

- sort devEngines descriptor fields
([#&#8203;155](https://redirect.github.com/oxc-project/sort-package-json/pull/155))

##### Other

- *(deps)* update Rust dependencies
([#&#8203;157](https://redirect.github.com/oxc-project/sort-package-json/pull/157))
- borrow JSON strings during sorting
([#&#8203;156](https://redirect.github.com/oxc-project/sort-package-json/pull/156))
- reduce Rust dev debug info
([#&#8203;153](https://redirect.github.com/oxc-project/sort-package-json/pull/153))
- *(deps)* update rust crate ignore to v0.4.33
([#&#8203;151](https://redirect.github.com/oxc-project/sort-package-json/pull/151))
- *(deps)* update rust crates
([#&#8203;144](https://redirect.github.com/oxc-project/sort-package-json/pull/144))
- *(deps)* update rust crate ignore to v0.4.30
([#&#8203;142](https://redirect.github.com/oxc-project/sort-package-json/pull/142))
- update sponsor section

</details>

---

### 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 this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/oxc-project/oxc).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4yOS41IiwidXBkYXRlZEluVmVyIjoiNDQuMjkuNSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-16 08:49:48 +00:00
Boshen 1c4f519e36 feat(napi): add Relay transform plugin (#25503)
## What

Ports the Relay `graphql` tagged template transform (babel-plugin-relay / swc_relay) as an individual napi transform, per #24914:

- **`crates/oxc_relay`** — the core transform as its own crate (modeled on `oxc_react_compiler`): replaces `graphql` tagged templates with references to relay-compiler artifacts. Definition names are extracted textually like `swc_relay` (equivalent to `\b(fragment|mutation|query|subscription)\s+(\w+)` with `#` comments stripped; hand-rolled scanner, no regex dependency).
- **`napi/transform-relay`** (`oxc-transform-relay`) — standalone napi package copied from the `napi/transform-react` template: parse → semantic → relay traverse → codegen. Only `graphql` tags are rewritten; TypeScript/JSX syntax is preserved untouched, so the output composes with any downstream toolchain.

## Options

| option | default | behavior |
|---|---|---|
| `artifactDirectory` | unset | when set, the import path is computed lexically relative to the transformed file (babel-plugin-relay `getRelativeImportPath` semantics — swc emits absolute paths instead); unset → `./__generated__/` next to the file |
| `language` | `javascript` | `typescript` imports `Name.graphql.ts`, otherwise `Name.graphql.js` |
| `eagerEsModules` | `true` | hoisted default imports (babel-plugin-relay ≥ v17 parity); `false` emits inline `require()` (`@swc/plugin-relay` / Next.js behavior) |

A `graphql` tag with no extractable definition name produces an error diagnostic (babel throws; swc silently skips).

Not supported, documented in both READMEs: dev-mode artifact hash validation, `jsModuleFormat: "haste"`, `isDevVariableName`, swc's Next.js-specific `projects`/`pagesDir`, and GraphQL document validation.

closes #24914

---

Implemented with Claude Code.
2026-08-13 13:56:01 +00:00
camc314 cd25e4f56e fix(codegen): surface conformance reference panics (#25552)
## Summary

Make Codegen conformance failures visible when the Rust reference panics.

- Preserve `null` for source text with parser diagnostics.
- Return a N-API error for a caught reference panic.
- Let Vitest fail the affected fixture instead of silently skipping it.
2026-08-12 17:09:00 +00:00
renovate[bot] 2c61dfb7d6 chore(deps): update rust crate oxc-browserslist to v5 (#25529)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[oxc-browserslist](https://redirect.github.com/oxc-project/oxc-browserslist)
| workspace.dependencies | major | `4.0.0` → `5.0.0` |

---

### Release Notes

<details>
<summary>oxc-project/oxc-browserslist (oxc-browserslist)</summary>

###
[`v5.0.0`](https://redirect.github.com/oxc-project/oxc-browserslist/blob/HEAD/CHANGELOG.md#500---2026-08-12)

[Compare
Source](https://redirect.github.com/oxc-project/oxc-browserslist/compare/oxc-browserslist-v4.0.0...oxc-browserslist-v5.0.0)

##### Other

- clean up code for idiomatic Rust
([#&#8203;833](https://redirect.github.com/oxc-project/oxc-browserslist/pull/833))
- rework bundled data around a canonical version table
([#&#8203;830](https://redirect.github.com/oxc-project/oxc-browserslist/pull/830))
- cache current node query
([#&#8203;831](https://redirect.github.com/oxc-project/oxc-browserslist/pull/831))

</details>

---

### 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 this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/oxc-project/oxc).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4yNC4wIiwidXBkYXRlZEluVmVyIjoiNDQuMjQuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-12 06:58:42 +00:00
leaysgur a2433117d2 fix(formatter_yaml): bump oxc-yaml-parser for contentless block scalar (#25519)
Fixes #25484
2026-08-12 05:36:16 +00:00
renovate[bot] 79dd965e6b chore(deps): update rust crate oxc-browserslist to v4 (#25511)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[oxc-browserslist](https://redirect.github.com/oxc-project/oxc-browserslist)
| workspace.dependencies | major | `3.0.9` → `4.0.0` |

---

### Release Notes

<details>
<summary>oxc-project/oxc-browserslist (oxc-browserslist)</summary>

###
[`v4.0.0`](https://redirect.github.com/oxc-project/oxc-browserslist/blob/HEAD/CHANGELOG.md#400---2026-08-11)

[Compare
Source](https://redirect.github.com/oxc-project/oxc-browserslist/compare/oxc-browserslist-v3.0.13...oxc-browserslist-v4.0.0)

##### Added

- add Baseline query support
([#&#8203;826](https://redirect.github.com/oxc-project/oxc-browserslist/pull/826))

##### Other

- update dependencies
([#&#8203;828](https://redirect.github.com/oxc-project/oxc-browserslist/pull/828))
- Update rust crates
([#&#8203;825](https://redirect.github.com/oxc-project/oxc-browserslist/pull/825))
- Update browserslist
([#&#8203;820](https://redirect.github.com/oxc-project/oxc-browserslist/pull/820))

</details>

---

### 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 this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/oxc-project/oxc).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4yNC4wIiwidXBkYXRlZEluVmVyIjoiNDQuMjQuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-12 00:46:54 +00:00
leaysgur 6e1b4ddceb refactor(formatter_core,formatter_tests): extract oxc_formatter_tests crate from oxc_formatter_core (#25465)
- Extract `test_harness` feature as crate `oxc_formatter_tests`
- This crate will also provide infra for `tasks/prettier_conformance` later
2026-08-12 00:40:59 +00:00
Boshen 00e1b762e0 refactor(diagnostics): vendor oxc-miette (#25499)
We no longer need to maintain the `oxc-miette` repo as most of the code is now removed, the remaining code is minimal and can be vendored.
2026-08-11 08:04:02 +00:00
oxc-guard b6f1458dec release(crates): oxc v0.144.0 (#25474)
### 💥 BREAKING CHANGES

- a33788e ast: [**BREAKING**] Group class heritage into `ClassHeritage` (#25360) (camc314)
- 5c5cdcd ast: [**BREAKING**] Narrow `TSInterfaceHeritage::expression` to TSTypeName (#24360) (camc314)
- 6be314f ast: [**BREAKING**] Remove duplicated `VariableDeclarator::kind` (#25319) (camc314)
- 44fd320 ast: [**BREAKING**] Split TS external modules & Namespace Declarations (#25284) (camc314)

### 🚀 Features

- 9a37c41 napi: Restructure React transform options (#25326) (Boshen)
- b3c1b30 allocator: Add `ArenaVec::push_mut` (#25338) (overlookmotel)

### 🐛 Bug Fixes

- bbd6ed3 codegen: Wrap string literal in parens after directives (#25435) (overlookmotel)
- d07a293 codegen: Preserve cast parentheses in conditional tests (#25115) (camc314)
- 8b7d441 codegen: Preserve satisfies parentheses before bitwise operators (#25113) (camc314)
- e0fb2d7 minifier: Avoid unsafe return removal in labeled blocks (#25406) (Armano)
- c49f4ce parser: Preserve terminal license comments (#25400) (camc314)
- 9d19ab3 transform_react: Downgrade nonfatal compiler diagnostics (#25418) (Boshen)
- 937825c react_compiler: Disable exhaustive memo validation by default (#25417) (Boshen)
- 12937b3 parser: Reject comma expressions in class fields (#25385) (Cameron)
- 7d8a9b5 react_compiler: Preserve hook spans for React Refresh (#25393) (Boshen)
- 9e93ba6 parser: Reset auto-accessor initializer context (#25384) (camc314)
- cc2e28d parser: Reject trailing tokens in `Parser::parse_expression` (#25371) (camc314)
- 697c629 minifier: Preserve Annex B labeled-function bindings in implicit-return rewrite (#25349) (Armano)
- 4d723ca parser: Report TS1035 for quoted module names (#25305) (camc314)
- 0c9b980 semantic: Report module declaration diagnostics (#25285) (camc314)
- 2a1058a napi: Omit parser header from WASI declarations (#25254) (camc314)

### ⚡ Performance

- dd1430b semantic: Avoid allocation in class overload check (#25440) (camc314)
- e420816 parser: Optimize trailing comma tracking (#25376) (camc314)
- 6529d1a minifier: Short-circuit scope check when alternate already determines result (#25318) (Armano)

### 📚 Documentation

- fe111eb allocator: Improve doc comments for `Arena` methods (#24922) (overlookmotel)
2026-08-10 09:57:10 +00:00
Boshen 030857b509 refactor(diagnostics): update oxc-miette to v4 (#25395)
Remove the miette `Report` wrapper and update oxc-miette to v4's narrowed diagnostic and source protocol.

AI-assisted by OpenAI Codex.
2026-08-10 07:48:02 +00:00
leaysgur e23dccf338 fix(formatter_css): bump oxc-css-parser to accept unknown at-rule with interpolated (#25277)
Fixes #25272
2026-08-04 06:39:46 +00:00
oxc-guard 45a17c25d1 release(crates): oxc v0.143.0 (#25250)
### 💥 BREAKING CHANGES

- 4120da0 semantic: [**BREAKING**] Return borrowed JSDoc so the parse cache works (#25186) (Connor Shea)
- f0a41c8 allocator: [**BREAKING**] Remove `ArenaBox::dangling` method (#25236) (overlookmotel)
- 067da8c ast: [**BREAKING**] Store single parameter in `TSIndexSignature::parameter` (#25154) (camc314)
- a0c7788 ast: [**BREAKING**] Change `TSIndexSignatureName::name` to `Ident` (#25150) (camc314)
- 1bdedd1 ast: [**BREAKING**] Introduce `ExportDeclaration`, `ExportFromDeclaration` (#25095) (camc314)
- c917f20 ast: [**BREAKING**] Introduce `ArrowFunctionBody` enum (#24987) (camc314)
- 7e1199c ast: [**BREAKING**] Remove conversion to `Box` from AST builder methods (#25038) (overlookmotel)

### 🚀 Features

- 3c8312e allocator: Make `Box` `Send` + `Sync` when the type it contains is (#25242) (overlookmotel)
- cb5bc08 ast: Derive `GetSpan` for `Comment` (#25147) (leaysgur)
- 8541e18 ast_tools: Generate minifier scope collector (#25088) (camc314)
- 5acdae2 ecmascript: Skip transparent TS expressions (#25072) (camc314)
- 85d0f4d napi: Add React Compiler transform binding (#24934) (Boshen)
- 70d6ece minifier: Fold safe integer exponentiation (#25009) (Dunqing)
- 73fc747 minifier: Enable termination statement optimization for do while (#24921) (Armano)
- 5eadfdb minifier: Fold safe integer division and remainder (#24981) (Dunqing)

### 🐛 Bug Fixes

- 6c9ee14 minifier: Preserve if-chain idempotency and correct side effects when alternate should not be moved (#25041) (Armano)
- 8a47ff3 ecmascript: Do not treat lone-surrogate strings as constants (#25084) (Dunqing)
- 468b970 isolated-declarations: Strip re-export attributes (#25090) (camc314)
- a70035d parser: Report export imports in namespaces (#25086) (camc314)
- 5d8ccf5 react_compiler: Preserve nonfatal diagnostics (#25066) (Boshen)
- d349e4a react_compiler: Match eslint suppression gating (#25068) (Boshen)
- 0dc16ba react_compiler: Track catch block declarations (#25067) (Boshen)
- e6734a5 minifier: Fold typeof comparisons with known object strings (#25017) (Dunqing)
- 3a9d5a5 minifier: Keep `typeof foo == ['object']` as-is (#24941) (sapphi-red)
- 10ec276 ast: Custom AST builder methods take `IntoIn<ArenaBox>` where child method does (#25033) (overlookmotel)
- fbe8d31 minifier: Respect targets when folding RegExp source (#24790) (Dunqing)

### ⚡ Performance

- fb402b0 minifier: Stop re-deriving printed numeric spellings (#25103) (Dunqing)
- 7251e52 react_compiler: Avoid large types on stack (#25037) (overlookmotel)
- e07718f isolated_declarations: Avoid large types on stack (#25036) (overlookmotel)
- 9fb1e3e transformer: Avoid large types on stack (#25035) (overlookmotel)
- 8b80f8b parser: Avoid large types on stack (#25034) (overlookmotel)

### 📚 Documentation

- 2ea0aa9 ast: Correct grammar in AST builder methods doc comments (#25173) (overlookmotel)
2026-08-03 11:07:37 +00:00
leaysgur 20f68e74a3 fix(oxlint,oxfmt): respect .gitignore for walk targets and explicit paths (#25133)
Fixes #25107.

The `ignore` crate walker enforces gitignore's "everything under an ignored directory is ignored" rule only by pruning ignored directories during traversal.

And it never filters its walk roots.
So when a walk target (based on cwd or an explicit CLI target path) is already inside a gitignored tree, pruning never happens and a bare directory pattern like `generated` matches nothing file-level. (even though `git check-ignore` says they are ignored)

See also BurntSushi/ripgrep#2595

### Changes

- oxc_config: added `GitignoreChecker`
  - a pre-walk check that replays git's resolution order over the ancestor chain
  - Matchers and `.git`/`.jj` probes are cached per directory
- oxlint / oxfmt: filter all CLI targets through this check before walking

### Behavior changes

- Explicitly passed gitignored files are now skipped (previously always linted/formatted)
- `oxlint --no-ignore` no longer force-lints gitignored targets
  - The same behavior as `--no-ignore` does not disable during walk `.gitignore`

<details>
<summary>FYI: Current our ignore model overview</summary>

Two independent families, AND-ed (a path excluded by any layer is skipped):

| Layer                                        | Source                                                 | oxlint                                                                                         | oxfmt                                                |
| -------------------------------------------- | ------------------------------------------------------ | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------- |
| git-derived (always on, not user-disablable) | nested `.gitignore`, `.git/info/exclude` (during walk) | walker via shared `configure_walk_builder`                                                     | same (shared)                                        |
|                                              | walk roots / explicit CLI targets                      | `GitignoreChecker` (this PR)                                                                   | `GitignoreChecker` (this PR)                         |
| tool-owned                                   | ignore file                                            | `.eslintignore` / `--ignore-path`; disabled by `--no-ignore`                                   | `.prettierignore` / `--ignore-path`; no disable flag |
|                                              | CLI patterns                                           | `--ignore-pattern`; disabled by `--no-ignore`                                                  | `!pattern` path args                                 |
|                                              | config `ignorePatterns`                                | `LintIgnoreMatcher` (already containment-correct via `matched_path_or_any_parents`); always on | scope-local `is_path_ignored` (same); always on      |

NOTE: `ignorePatterns` never had this bug, only the walker-backed gitignore layer did; this PR brings it to the same level.
A `!` negation in `ignorePatterns` cannot re-include gitignored paths (unchanged; the layers are independent).

</details>
2026-08-02 13:11:06 +00:00
leaysgur dd28596d0a fix(formatter_css): bump oxc-css-parser for substituted at-rule preludes (#25104)
Fixes #25075
2026-07-30 03:28:44 +00:00
Boshen 85d0f4dd1f feat(napi): add React Compiler transform binding (#24934)
Adds the `oxc-transform-react` N-API binding and its public CI and publish workflows.

AI-assisted.
2026-07-29 09:08:58 +00:00
leaysgur 46fe15e0cb refactor(formatter_yaml): read comment.own_line_columns (#25011)
Also bump `oxc-yaml-parser` for it.

Now, `is_own_line` comment check has been gone.
2026-07-28 05:57:11 +00:00
oxc-guard[bot] fc702c1fa9 release(crates): oxc v0.142.0 (#24977)
### 💥 BREAKING CHANGES

- 1ac5ac7 ast: [**BREAKING**] Tighten bound on `AstBuild` trait (#24925)
(overlookmotel)

### 🚀 Features

- c7c5696 minifier: Fold parenthesized boolean ternary tests (#24968)
(Dunqing)
- 82c5806 minifier: Fold sequence branches in boolean ternaries (#24943)
(Dunqing)
- cc623d9 ast_visit: Add VisitJsMut visitor (#24828) (Boshen)
- b31713a minifier: Add new IsTerminated trait and use it in exit-point
optimization (#24950) (Armano)
- e9e0f24 minifier: Shorten integer zero comparisons (#24933) (Dunqing)
- 34f5559 minifier: Convert switch with one case to if statement
(#24611) (Armano)
- 9107e74 str: Add `static_str!` macro (#24887) (overlookmotel)
- 4d6f623 parser: Emit error for type args in JS files (#24896)
(camc314)
- ec08afc ast: Re-export `Ident` from `oxc_ast` crate (#24861)
(overlookmotel)
- 73cfdfa oxc: Re-export `oxc_str` types from `oxc` crate (#24860)
(overlookmotel)
- 11f5d1f ast_visit: Add `Utf8ToUtf16::convert_program_and_comments`
(#24859) (overlookmotel)

### 🐛 Bug Fixes

- cb5acfb minifier: Optimize termination statements in labeled
statements (#24813) (Armano)
- 4618300 minifier: Avoid longer numeric constant folds (#24875)
(Dunqing)
- f7971f1 minifier: Keep side effects in typeof comparisons (#24940)
(sapphi-red)
- 4597d6f minifier: Keep side effects when compressing `== true` to `==
1` (#24939) (sapphi-red)
- c3a48df minifier: Keep side effects values in template literals
(#24938) (sapphi-red)
- e19f183 minifier: Keep side effects when folding `Number` call
(#24937) (sapphi-red)
- 9d7745a react-compiler: Preserve warning bailouts (#24935) (Boshen)
- 0126aba codegen: Preserve orphaned file coverage comments (#24815)
(Dunqing)
- 9fbbaf8 parser: Clarify return in class static blocks (#24899)
(camc314)
- e7d5c78 str: Fix hygiene of `format_ident!` and `format_str!` macros
(#24886) (overlookmotel)
- 07e9acc ecmascript: Keep side effects in parent of `toString` calls
(#24846) (sapphi-red)
- 16a40ad ecmascript: Detect side effects in unused arguments to
`charCodeAt` (#24845) (sapphi-red)
- 5b4ae54 parser: Use specific for-await diagnostic (#24856) (camc314)
- ffcc33a parser: Report for-await in non-async functions (#24855)
(camc314)
- df230d0 minifier: Avoid reordering this in nested class keys (#24785)
(Dunqing)
- d24b76b minifier: Isolate derived constructor this state (#24784)
(Dunqing)
- 582805d parser: Parse unary conditional after satisfies (#24807)
(Boshen)
- 23b904f minifier: Preserve default parameter side effects (#24791)
(Dunqing)
- 3048594 parser: Use correct diagnostic for `await using` in bare
switch case (#24798) (camc314)
- e80574f estree: Handle empty spans serializing `ImportMeta` and
`NewTarget` (#24775) (overlookmotel)
- 4b12840 minifier: Do not fold a `-0` ternary branch to `+a` (loses the
sign) (#23637) (Jerry Zhao)
- 133bb35 ecmascript: Detect side effects of `foo().#bar` correctly when
PropertyReadSideEffects::None (#24769) (sapphi-red)

### ⚡ Performance

- a086d91 ecmascript: Avoid number literal allocations (#24889)
(Dunqing)
- 98f2ecb react_compiler: Compare value set pointers before probing in
state merge (#24805) (Marius Schulz)
- b287f29 estree: Avoid ident hash calculations when serializing
(#24774) (overlookmotel)

### 📚 Documentation

- 4d2e2bf ast: Fix incorrect return value in `common_js_require` docs
(#24945) (connorshea)
- b539e74 estree: Document custom serializers for `ImportMeta` and
`NewTarget` (#24777) (overlookmotel)

Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2026-07-27 23:07:40 +08:00
leaysgur dbf85def42 refactor(formatter_graphql): rework comment printing (#24970)
Also fixes #24927

- rework comment printing to follow the rules and align with other formatters
- bump `oxc-graphql-parser`
  - to track comments inside a node's span more accurately
2026-07-27 05:31:01 +00:00
renovate[bot] 9d65862a8b chore(deps): update rust crates (#24949)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [base64](https://redirect.github.com/marshallpierce/rust-base64) |
workspace.dependencies | minor | `0.22.1` → `0.23.0` |
|
[ignore](https://redirect.github.com/BurntSushi/ripgrep/tree/master/crates/ignore)
([source](https://redirect.github.com/BurntSushi/ripgrep/tree/HEAD/crates/ignore))
| workspace.dependencies | patch | `0.4.30` → `0.4.31` |
| [serde_json](https://redirect.github.com/serde-rs/json) |
workspace.dependencies | patch | `1.0.150` → `1.0.151` |
| [syn](https://redirect.github.com/dtolnay/syn) |
workspace.dependencies | patch | `3.0.1` → `3.0.3` |
| [tokio](https://tokio.rs)
([source](https://redirect.github.com/tokio-rs/tokio)) |
workspace.dependencies | patch | `1.53.0` → `1.53.1` |

---

### Release Notes

<details>
<summary>marshallpierce/rust-base64 (base64)</summary>

###
[`v0.23.0`](https://redirect.github.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0230)

[Compare
Source](https://redirect.github.com/marshallpierce/rust-base64/compare/v0.22.1...v0.23.0)

- Added more consts for preconfigured configs and engines
- Make DecodeError::InvalidLastSymbol more clear by including the
decoded value
- Added SIMD-accelerated engines behind the default-on `simd-unsafe`
feature: `Simd` picks the best
instruction set at runtime (AVX2 on `x86_64`, NEON on `aarch64`) and
falls back to the scalar
`GeneralPurpose` engine, while `Avx2` and `Neon` target one instruction
set with no runtime
detection and work in `no_std`. The engines support the standard and
URL-safe alphabets.
- Update MSRV to 1.71.0
- Add support for custom padding symbols

</details>

<details>
<summary>BurntSushi/ripgrep (ignore)</summary>

###
[`v0.4.31`](https://redirect.github.com/BurntSushi/ripgrep/compare/ignore-0.4.30...ignore-0.4.31)

[Compare
Source](https://redirect.github.com/BurntSushi/ripgrep/compare/ignore-0.4.30...ignore-0.4.31)

</details>

<details>
<summary>serde-rs/json (serde_json)</summary>

###
[`v1.0.151`](https://redirect.github.com/serde-rs/json/releases/tag/v1.0.151)

[Compare
Source](https://redirect.github.com/serde-rs/json/compare/v1.0.150...v1.0.151)

- Add RawValue::from\_string\_unchecked
([#&#8203;1331](https://redirect.github.com/serde-rs/json/issues/1331),
thanks
[@&#8203;WonderLawrence](https://redirect.github.com/WonderLawrence))

</details>

<details>
<summary>dtolnay/syn (syn)</summary>

###
[`v3.0.3`](https://redirect.github.com/dtolnay/syn/releases/tag/3.0.3)

[Compare
Source](https://redirect.github.com/dtolnay/syn/compare/3.0.2...3.0.3)

- Documentation improvements

###
[`v3.0.2`](https://redirect.github.com/dtolnay/syn/releases/tag/3.0.2)

[Compare
Source](https://redirect.github.com/dtolnay/syn/compare/3.0.1...3.0.2)

- Add [`Error::new_range(start..end,
"msg")`](https://docs.rs/syn/3/syn/struct.Error.html#method.new_range)
([#&#8203;2068](https://redirect.github.com/dtolnay/syn/issues/2068),
[#&#8203;2070](https://redirect.github.com/dtolnay/syn/issues/2070))
- Add
[`Cursor::prev_span`](https://docs.rs/syn/3/syn/buffer/struct.Cursor.html#method.prev_span)

</details>

<details>
<summary>tokio-rs/tokio (tokio)</summary>

###
[`v1.53.1`](https://redirect.github.com/tokio-rs/tokio/releases/tag/tokio-1.53.1):
Tokio v1.53.1

[Compare
Source](https://redirect.github.com/tokio-rs/tokio/compare/tokio-1.53.0...tokio-1.53.1)

### 1.53.1 (July 20th, 2026)

##### Fixed

- signal: restore MSRV by removing `OnceLock::wait` from the Windows
handler ([#&#8203;8300])

##### Fixed (unstable)

- time: fix alt timer cancellation and insertion race ([#&#8203;8252])

##### Documented

- runtime: remove dead link definition in Runtime::block\_on
([#&#8203;8301])

[#&#8203;8252]: https://redirect.github.com/tokio-rs/tokio/pull/8252

[#&#8203;8300]: https://redirect.github.com/tokio-rs/tokio/pull/8300

[#&#8203;8301]: https://redirect.github.com/tokio-rs/tokio/pull/8301

</details>

---

### Configuration

📅 **Schedule**: (in timezone Asia/Shanghai)

- Branch creation
  - "before 10am on monday"
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

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

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/oxc-project/oxc).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yODAuMCIsInVwZGF0ZWRJblZlciI6IjQzLjI4MC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-26 17:06:29 +01:00
leaysgur 4b6a87847c chore(deps): sort and annotate workspace dependencies (#24822) 2026-07-23 05:22:32 +00:00
leaysgur fe3d170074 test(prettier_conformance): add YAML formatter (#24535)
> yaml compatibility: 346/354 (97.74%), 0 files skipped

This is currently the limit, as we have fixed several bugs in Prettier, ensuring consistent behavior.
2026-07-23 05:02:59 +00:00
leaysgur 2357a10dfa feat(formatter_yaml): implement YAML formatter (#24534)
Add `oxc_formatter_yaml` crate using `oxc_yaml_parser`.
2026-07-23 05:02:59 +00:00
camc314 fdcdb10d0f chore(cargo-shear): remove redundant ignore (#24767)
<img width="730" height="185" alt="Screenshot 2026-07-21 at 16 20 23" src="https://github.com/user-attachments/assets/f0d41a1f-fa49-4d7c-83d0-7f5f07ac04e7" />
2026-07-21 15:27:43 +00:00
oxc-guard[bot] 14533a3dc1 release(crates): oxc v0.141.0 (#24714)
### 💥 BREAKING CHANGES

- 54cc121 ast: [**BREAKING**] Split `MetaProperty` into `ImportMeta` and
`NewTarget` (#24557) (camc314)

### 🚀 Features

- 4c71560 parser: More friendly error for spread element in dynamic
imports (#24705) (sapphi-red)
- 7b045cd minfier: Drop last break from last switch case (#24673)
(Armano)
- 7d3c178 minifier: Remove unreachable recursive functions (#24125)
(Dunqing)
- 94f99b3 ast: Allow `NONE` to be passed to AST builder methods where
`Option<ArenaVec>` is expected (#24629) (overlookmotel)
- 77230c5 ast: Accept arrays for `ArenaVec` params of AST builder
methods (#24621) (overlookmotel)
- f08b152 allocator: Implement `FromIn` for array to `Vec` conversion
(#24620) (overlookmotel)
- 2338c13 track-memory-allocations: Track heap deallocs, alloc bytes,
and peak growth (#24619) (Boshen)
- 7aa4739 syntax,transformer: Move JSX entity decoder to `oxc_syntax`
(#24617) (camc314)
- 2b097c4 str: Export `Str` as `ArenaStr` (#24604) (overlookmotel)
- 3acf4c1 minifier: Expand switch optimiation to remove empty cases
(#24520) (Armano)
- 129b759 parser: Improve diagnostics for unparenthesized LHS on
exponential expr (#24569) (camc314)
- 4d0c601 minifier: Fold arithmetic over undefined and null operands
(#24485) (Dunqing)
- 91541dd minifier: Drop empty switch statements  (#24527) (Armano)
- d05224d ast_visit: Generate VisitJs visitor that skips TypeScript
type-space (#24499) (Boshen)
- 3d22307 parser: Add `ParseOptions::enable_ident_hashes` (#24491)
(Boshen)

### 🐛 Bug Fixes

- 64c2241 minifier: Align class heritage removal with assumptions
(#24533) (Dunqing)
- 48b59f4 parser: Span ambient generator diagnostics (#24711) (camc314)
- e750a82 ecmascript: Fix false negative for may_have_side_effects on
dynamic property access (#24709) (sapphi-red)
- f145d73 minifier: Guard reordered identifier reads (#24698) (Dunqing)
- a2ef382 isolated-declarations: Reject `window.Symbol` as global symbol
reference (#24689) (camc314)
- b1bcf72 minifier: Invalidate facts for redeclared bindings (#24658)
(Dunqing)
- 921b834 minifier: Don't treat a conditionally-assigned var as
write-once (#24650) (Dunqing)
- 061af1f minifier: Avoid stale pure function summaries (#24636)
(Dunqing)
- 40c2f43 allocator: `Vec::from_array_in` do not allocate zero-length
array (#24628) (overlookmotel)
- 70994ae codegen: Preserve comments before expression operands (#24510)
(Dunqing)
- 7b4baff parser: Reject new import member access (#23459) (camc314)
- 128b385 minifier: Clippy warning with no-debug-assertions (#24547)
(camc314)
- 8421feb parser: Use first `as` span for imported name (#24537)
(leaysgur)
- c517aa0 parser: Reject invalid accessor assertions (#24504) (camc314)

### ⚡ Performance

- 884d9eb parser: Pre-size cover-grammar assignment target buffers
(#24683) (Boshen)
- d3f07a0 diagnostics: Box OxcDiagnosticInner to reduce binary size
(#24665) (Boshen)
- bcc9de0 parser: Defer diagnostic creation until parse exit (#24663)
(Boshen)
- c35d8ab allocator: Mark `ReplaceWith` panic path cold (#24515)
(camc314)
- ba65790 semantic, allocator: Branchless `clone_in` for semantic IDs
(#24564) (overlookmotel)
- 747feec parser: Build AST nodes with the AST builder instead of
cloning (#24540) (Boshen)
- ba35a0d react_compiler: Use IndexVec for dense id-keyed maps (#24549)
(Boshen)
- b685062 react_compiler: Keep small hot-path collections inline
(#24514) (Marius Schulz)
- a149e95 transformer: Outline rare expression exits (#24512) (camc314)
- 7808a6e react_compiler: Make aliasing effects cheap to intern and
clone (#24506) (Marius Schulz)
- 3a36f2a react_compiler: Store AbstractValue reasons as a u16 bitmask
(#24480) (Boshen)
- 1c96753 react_compiler: Use FxHashMap for the lookup-only aliasing
node map (#24490) (Boshen)

Co-authored-by: Cameron <cameron.clark@hey.com>
2026-07-21 16:09:41 +01:00
leaysgur fd7cf5b500 fix(formatter_css): update oxc-css-parser to 0.0.9 (#24745)
Fixes #24726
2026-07-21 04:52:30 +00:00
leaysgur e81b2ff6c5 fix(oxlint,oxfmt): report error for invalid glob patterns (#24744)
Fixes #24612

- Update `fast-glob` to `1.1.0` which exposes `validate()` api
- Use it in `oxc_config`, apps will be validated through `deserialize`
- Oxfmt supports globs for CLI paths, also validated
2026-07-21 04:43:49 +00:00
leaysgur c399367877 fix(formatter_css): update oxc-css-parser to 0.0.8 (#24725)
This also fixes #24723
2026-07-20 13:37:52 +00:00
renovate[bot] 75ce81de95 chore(deps): update rust crate syn to v3 (#24684)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [syn](https://redirect.github.com/dtolnay/syn) |
workspace.dependencies | major | `2` → `3` |

---

### Release Notes

<details>
<summary>dtolnay/syn (syn)</summary>

###
[`v3.0.0`](https://redirect.github.com/dtolnay/syn/releases/tag/3.0.0)

[Compare
Source](https://redirect.github.com/dtolnay/syn/compare/2.0.119...3.0.0)

This release contains adjustments to the syntax tree to account for
ongoing Rust language development from the 3 years since syn 2.0.0 and
to anticipate some in-flight Rust language RFCs.

These include: default values in fields, pinned type sugar, raw
lifetimes, generator blocks and functions, unnamed enum variants,
attributes in tuple types and tuple patterns, named arguments in
parenthesized generic argument lists, lightweight clones, const traits,
const function pointers, mutability restricted fields, supertrait auto
implementation, final associated functions, trait implementability
restrictions, const blocks in path arguments, item-level const blocks,
return type notation, never patterns, function delegation, mutable
by-reference bindings, in-place initialization, field projections,
explicitly dyn-compatible traits, view types, file-level frontmatter,
generic const arguments, guard patterns, lazy type aliases, explicitly
safe foreign items, super let, unsafe fields, pattern types,
heterogeneous try-blocks, function contracts, async function trait
bounds, static closure coroutine syntax, unsafe binder types, move
expressions, for-await loops, and postfix keywords.

<br>

<p align="center"><a href="https://docs.rs/syn/3/syn">[API documentation
for 3.0]</a></p>

### Breaking changes
#### Modifiers

To reserve more room for language evolution, there are 10 new
non-exhaustive structs in the syntax tree having the following
commonality:

- Name ending in `Modifiers`. {`BlockModifiers`, `ClosureModifiers`,
`ConstModifiers`, `FieldModifiers`, `FnModifiers`, `ImplModifiers`,
`LocalModifiers`, `TraitBoundModifiers`, `TraitModifiers`,
`TypeModifiers`}

- Each implements `Default`. The default value is guaranteed to comprise
no tokens.

- Non-exhaustive. Can only be instantiated by Syn's parser or by
creating and then mutating `▁▁Modifiers::default()`.

- Does not implement `Parse`. When parsing, they are parsed by the
enclosing syntax tree node.

- Does not implement `ToTokens`. In some cases the syntax that these
nodes might hold in the future is not necessarily contiguous tokens.

- Provides `.require_empty() -> Result<()>` which returns a meaningfully
spanned error if the modifiers are different from the empty default.
This enables a caller to reject syntax it does not recognize without
knowing what that syntax may be.

#### Types

- `Type::BareFn` has been renamed to `Type::FnPtr` to mirror the
compiler's terminology. Together with this, `BareVariadic` is renamed to
`FnPtrVariadic`.

- The mutually exclusive `const_token` and `mutability` fields of
`Type::Ptr` have been unified into an enum of type `PointerMutability`,
which was already previously used by `Expr::RawAddr`.

- Every `Type` variant now holds attributes, which can represent the
attributes of element types inside a tuple type, or attributes for a
function return type.

- `BareFnArg` is renamed to `NamedArg` and is used in
`ParenthesizedGenericArguments`, in addition to the existing use in
`Type::FnPtr`.

#### Expressions

- In `Expr::Closure`, the fields `or1_token` and `or2_token` have been
renamed to `inputs_begin` and `inputs_end` to indicate the beginning and
ending `|` token of the closure inputs.

#### Statements

- Attributes are now preserved on all expression kinds in statement
position. Previously, parsing would silently lose attributes on some
expression statements without a dedicated Expr variant, such as
tail-call expressions.

#### Patterns

- The `guard` field of `Arm` is replaced by a new `Pat::Guard` variant
held in the arm's `pat`.

#### Items

- The `unsafety` field of `Signature`, which represented the presence or
absence of `unsafe`, is replaced by a 3-way `Safety` enum which may be
safe, unsafe, or default. `ForeignItem::Static` also gets a `Safety`.

- Some of the fields of `Receiver` have been split to a non-exhaustive
`ReceiverKind` enum to create room for proposed new kinds of method
receivers, such as pinned.

- Type aliases now hold a `WhereClausePlacement` to distinguish between
early placement (which is the default for item-level type aliases and is
*deprecated* in associated type aliases) and late placement (which is
the default for associated type aliases and is *unstable* in item-level
type aliases). Parsing and printing a syntax tree will now preserve the
where-clause placement rather than rewriting it to the default placement
for the item kind.

#### Generics

- `WherePredicate::Lifetime` and `WherePredicate::Type` have a new field
holding the attributes on the where-predicates.

- `GenericParam::Type` and `GenericParam::Const` now match the rest of
the syntax tree in holding their optional default using a single Option
of tuple, rather than a pair of Option.

#### Literals

- The `Parse` implementation of `Lifetime` no longer permits keyword
lifetimes, matching a change in Rust 1.81 to deny such lifetimes
pre-expansion. `Lifetime::parse_any` may be used to parse lifetimes
permissive of keywords.

- `LitInt` and `LitFloat` no longer implement
`From<proc_macro2::Literal>`. Use `Lit::new(literal)` and then match
`Lit::Int` or `Lit::Float`.

- The `StrStyle` enum was unused and has been deleted.

#### More

- `File` contains a new `Option<Frontmatter>`, but does not yet parse
frontmatter in `syn::parse_file` until that language feature progresses
closer to stabilization.

- Some enums no longer provide `From` impls. Construct the variant by
name instead, such as `Expr::Array(e)` in place of `e.into()`.

- The `pop` method of `Punctuated<T, P>` now returns `Option<T>`
discarding the trailing punctuation if any, rather than `Option<Pair<T,
P>>`. A new method `pop_pair` provides the old behavior.

- Syntax tree traversal (`visit`, `visit_mut`, `fold`) no longer
provides a method for processing `Span`. This was already incompletely
supported and never walked most of the spans in a syntax tree.

- The `Speculative` and `AnyDelimiter` traits have been sealed and
cannot be implemented for types outside of Syn's `ParseStream`.

</details>

---

### Configuration

📅 **Schedule**: (in timezone Asia/Shanghai)

- Branch creation
  - "before 10am on monday"
- 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 this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/oxc-project/oxc).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNjUuMSIsInVwZGF0ZWRJblZlciI6IjQzLjI2NS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Cameron Clark <cameron.clark@hey.com>
2026-07-19 20:57:12 +01:00
renovate[bot] da927afaa5 chore(deps): update rust crates (#24681)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [anyhow](https://redirect.github.com/dtolnay/anyhow) |
workspace.dependencies | patch | `1.0.103` → `1.0.104` |
| [bitflags](https://redirect.github.com/bitflags/bitflags) |
workspace.dependencies | patch | `2.13.0` → `2.13.1` |
| [compact_str](https://redirect.github.com/ParkMyCar/compact_str) |
workspace.dependencies | minor | `0.9.1` → `0.10.0` |
| [futures](https://rust-lang.github.io/futures-rs)
([source](https://redirect.github.com/rust-lang/futures-rs)) |
workspace.dependencies | patch | `0.3.32` → `0.3.33` |
|
[ignore](https://redirect.github.com/BurntSushi/ripgrep/tree/master/crates/ignore)
([source](https://redirect.github.com/BurntSushi/ripgrep/tree/HEAD/crates/ignore))
| workspace.dependencies | patch | `0.4.28` → `0.4.30` |
| [prettyplease](https://redirect.github.com/dtolnay/prettyplease) |
workspace.dependencies | minor | `0.2.37` → `0.3.0` |
| [proc-macro2](https://redirect.github.com/dtolnay/proc-macro2) |
workspace.dependencies | patch | `1.0.106` → `1.0.107` |
| [quote](https://redirect.github.com/dtolnay/quote) |
workspace.dependencies | patch | `1.0.46` → `1.0.47` |
| [self_cell](https://redirect.github.com/Voultapher/self_cell) |
workspace.dependencies | minor | `1.2.2` → `1.3.0` |
| [serde](https://serde.rs)
([source](https://redirect.github.com/serde-rs/serde)) |
workspace.dependencies | patch | `1.0.228` → `1.0.229` |
| [syn](https://redirect.github.com/dtolnay/syn) |
workspace.dependencies | patch | `2.0.118` → `2.0.119` |
| [tokio](https://tokio.rs)
([source](https://redirect.github.com/tokio-rs/tokio)) |
workspace.dependencies | minor | `1.52.3` → `1.53.0` |
| [toml](https://redirect.github.com/toml-rs/toml) |
workspace.dependencies | patch | `1.1.2+spec-1.1.0` → `1.1.3` |

---

### Release Notes

<details>
<summary>dtolnay/anyhow (anyhow)</summary>

###
[`v1.0.104`](https://redirect.github.com/dtolnay/anyhow/releases/tag/1.0.104)

[Compare
Source](https://redirect.github.com/dtolnay/anyhow/compare/1.0.103...1.0.104)

- Update `syn` dev-dependency to version 3

</details>

<details>
<summary>bitflags/bitflags (bitflags)</summary>

###
[`v2.13.1`](https://redirect.github.com/bitflags/bitflags/blob/HEAD/CHANGELOG.md#2131)

[Compare
Source](https://redirect.github.com/bitflags/bitflags/compare/2.13.0...2.13.1)

#### What's Changed

- Lower the LLVM IR output of the generated output by
[@&#8203;bolshoytoster](https://redirect.github.com/bolshoytoster) in
[#&#8203;492](https://redirect.github.com/bitflags/bitflags/pull/492)

#### New Contributors

- [@&#8203;bolshoytoster](https://redirect.github.com/bolshoytoster)
made their first contribution in
[#&#8203;492](https://redirect.github.com/bitflags/bitflags/pull/492)

**Full Changelog**:
<https://github.com/bitflags/bitflags/compare/2.13.0...2.13.1>

</details>

<details>
<summary>ParkMyCar/compact_str (compact_str)</summary>

###
[`v0.10.0`](https://redirect.github.com/ParkMyCar/compact_str/blob/HEAD/CHANGELOG.md#0100)

[Compare
Source](https://redirect.github.com/ParkMyCar/compact_str/compare/v0.9.1...v0.10.0)

##### July 12, 2026

#### Changes

- Minimum supported Rust version (MSRV) was bumped to `v1.71`.
- The `Error` trait impls once again require the `std` feature. This
reverts the (unreleased)
no-std `core::error::Error` support from
[#&#8203;443](https://redirect.github.com/ParkMyCar/compact_str/pull/443),
which required Rust `v1.81`, it can return once the MSRV reaches
`v1.81`.
- Added support for the [`garde`](https://crates.io/crates/garde)
validation crate under an
optional feature, implementing its string rule traits for
`CompactString`.
- Implemented in [`feat: add garde validation
support`](https://redirect.github.com/ParkMyCar/compact_str/pull/471).
- Added support for the [`schemars`](https://crates.io/crates/schemars)
crate under an optional
feature, implementing `JsonSchema` for `CompactString`. Every method
delegates to `String`'s
  impl, so the generated schema is identical to a `String`'s.
- Implemented in [`feat: support
schemars`](https://redirect.github.com/ParkMyCar/compact_str/pull/454).
- Added support for the [`valuable`](https://crates.io/crates/valuable)
crate under an optional
feature, implementing the `Valuable` trait for `CompactString` so it
presents as a `Value::String`.
- Implemented in [`Add impl
Valuable`](https://redirect.github.com/ParkMyCar/compact_str/pull/451).
- Added a `pyo3` feature which implements
[`FromPyObject`](https://docs.rs/pyo3/0.29/pyo3/conversion/trait.FromPyObject.html)
and
[`IntoPyObject`](https://docs.rs/pyo3/0.29/pyo3/conversion/trait.IntoPyObject.html)
for `CompactString`, so it can
  be used seamlessly with [`pyo3`](https://crates.io/crates/pyo3) v0.29.
- Implemented in [`feat: add pyo3
feature`](https://redirect.github.com/ParkMyCar/compact_str/pull/446).
- Added support for the [`defmt`](https://crates.io/crates/defmt) crate
under an optional feature,
  implementing `defmt::Format` for `CompactString`.
- Implemented in [`feat: Add support for
defmt`](https://redirect.github.com/ParkMyCar/compact_str/pull/438).
- Added a `bevy-reflect` feature which implements
[`bevy_reflect`](https://crates.io/crates/bevy_reflect)'s
  reflection traits for `CompactString` (as an opaque type).
- Implemented in [`feat: Add bevy-reflect
feature`](https://redirect.github.com/ParkMyCar/compact_str/pull/439).
- Added a `utoipa` feature which implements
[`utoipa`](https://crates.io/crates/utoipa)'s
  `PartialSchema` and `ToSchema` traits for `CompactString`.
- Implemented in [`fix sqlx type impl, add utoipa
feature`](https://redirect.github.com/ParkMyCar/compact_str/pull/442)
and [`feat: fixup the utoipa
feature`](https://redirect.github.com/ParkMyCar/compact_str/pull/445).
- Removed `#[must_use]` from the `Drain` iterator.
- Implemented in [`fix: remove #[must_use] from
Drain`](https://redirect.github.com/ParkMyCar/compact_str/pull/486).
- Added [Kani](https://redirect.github.com/model-checking/kani) proof
harnesses to formally verify the crate's
  unsafe code.
- Implemented in [`feat: add kani proof harnesses to verify unsafe
code`](https://redirect.github.com/ParkMyCar/compact_str/pull/480).
- Bump the [`sqlx`](https://crates.io/crates/sqlx) dependency to `v0.9`.
Enabling the `sqlx`
  feature now requires Rust `v1.94`.
- Implemented in [`deps: bump sqlx to
0.9`](https://redirect.github.com/ParkMyCar/compact_str/pull/474).
- Bump the [`bevy_reflect`](https://crates.io/crates/bevy_reflect)
dependency to `v0.19`.
- Implemented in [`deps: update optional deps to
latest`](https://redirect.github.com/ParkMyCar/compact_str/pull/490).
- Bump the [`markup`](https://crates.io/crates/markup) dependency to
`v0.16`.
- Implemented in [`deps: update optional deps to
latest`](https://redirect.github.com/ParkMyCar/compact_str/pull/490).

#### Bug Fixes

- Fixed possible undefined behavior when reallocating a heap-allocated
`CompactString`.
- Implemented in [`fix: possible undefined behavior with realloc in a
HeapString`](https://redirect.github.com/ParkMyCar/compact_str/pull/459).
- Fixed `CompactString::retain` to avoid briefly creating references to
invalid UTF-8.
- Implemented in [`Avoid invalid UTF-8 references in
retain`](https://redirect.github.com/ParkMyCar/compact_str/pull/469).
- Fixed `CompactString::as_mut_bytes` exposing uninitialized spare
capacity through a `&mut [u8]`;
  heap spare capacity is now zero-initialized before it's returned.
- Implemented in [`fix: avoid exposing uninitialized spare
capacity`](https://redirect.github.com/ParkMyCar/compact_str/pull/468).

#### Performance

- Reuse an owned `String`'s existing allocation in `CompactString::new`.
- Implemented in [`perf: reuse owned String in
CompactString::new`](https://redirect.github.com/ParkMyCar/compact_str/pull/460).
- Specialize `ToCompactString` for `str`.
- Implemented in [`perf: specialize ToCompactString for
str`](https://redirect.github.com/ParkMyCar/compact_str/pull/461).
- Pass heap fields by value when dropping a `CompactString` instead of
`&mut Repr`.
- Implemented in [`perf: Drop passes heap fields by-value instead of
&mut Repr`](https://redirect.github.com/ParkMyCar/compact_str/pull/462).
- Skip the `Result` on the hot inline construction path with
`Repr::new_panic`.
- Implemented in [`perf: add Repr::new_panic to skip Result on the hot
inline
path`](https://redirect.github.com/ParkMyCar/compact_str/pull/463).
- Assert internal `Repr` invariants so the compiler can fold dead
error-handling branches on construction.
- Implemented in [`perf: assert Repr invariants to fold dead Err arms on
construction`](https://redirect.github.com/ParkMyCar/compact_str/pull/467).
- Speed up append, integer formatting, and inline creation.
- Implemented in [`perf: speed up append, integer formatting, and inline
creation`](https://redirect.github.com/ParkMyCar/compact_str/pull/479).
- Bulk-copy valid runs in `from_utf8_lossy` instead of copying
byte-by-byte.
- Implemented in [`perf: bulk-copy valid runs in
from_utf8_lossy`](https://redirect.github.com/ParkMyCar/compact_str/pull/484).
- Specialize memory copies for small/medium strings to avoid calling
`memcpy`. Keep heap construction out-of-line,
and move the OOM panic off the hot construction path to keep generated
assembly lean.
- Implemented in [`perf: several small
improvements`](https://redirect.github.com/ParkMyCar/compact_str/pull/488).
- Replaced the `ryu` dependency with
[`zmij`](https://crates.io/crates/zmij) for float formatting.
- Implemented in [`deps: replace ryu with zmij for float
formatting`](https://redirect.github.com/ParkMyCar/compact_str/pull/485).

</details>

<details>
<summary>rust-lang/futures-rs (futures)</summary>

###
[`v0.3.33`](https://redirect.github.com/rust-lang/futures-rs/blob/HEAD/CHANGELOG.md#0333---2026-07-18)

[Compare
Source](https://redirect.github.com/rust-lang/futures-rs/compare/0.3.32...0.3.33)

- Fix `ReadLine`'s soundness issue regarding to exception safety.
([#&#8203;3020](https://redirect.github.com/rust-lang/futures-rs/issues/3020))
- Fix unsound `Send` impl for `IterPinRef` and `Iter`.
([#&#8203;3003](https://redirect.github.com/rust-lang/futures-rs/issues/3003))
- Fix stacked borrows violation in `compat01as03` implementation.
([#&#8203;3012](https://redirect.github.com/rust-lang/futures-rs/issues/3012))
- Fix memory leak in `FuturesUnordered::IntoIter`.
([#&#8203;3005](https://redirect.github.com/rust-lang/futures-rs/issues/3005))
- Add `portable-atomic-alloc` feature and use it in `FuturesUnordered`.
([#&#8203;3007](https://redirect.github.com/rust-lang/futures-rs/issues/3007))
- Re-export `alloc::task::Wake`.
([#&#8203;3010](https://redirect.github.com/rust-lang/futures-rs/issues/3010))
- Update `spin` to 0.12.
([#&#8203;3014](https://redirect.github.com/rust-lang/futures-rs/issues/3014))

</details>

<details>
<summary>BurntSushi/ripgrep (ignore)</summary>

###
[`v0.4.30`](https://redirect.github.com/BurntSushi/ripgrep/compare/ignore-0.4.29...ignore-0.4.30)

[Compare
Source](https://redirect.github.com/BurntSushi/ripgrep/compare/ignore-0.4.29...ignore-0.4.30)

###
[`v0.4.29`](https://redirect.github.com/BurntSushi/ripgrep/compare/ignore-0.4.28...ignore-0.4.29)

[Compare
Source](https://redirect.github.com/BurntSushi/ripgrep/compare/ignore-0.4.28...ignore-0.4.29)

</details>

<details>
<summary>dtolnay/prettyplease (prettyplease)</summary>

###
[`v0.3.0`](https://redirect.github.com/dtolnay/prettyplease/releases/tag/0.3.0)

[Compare
Source](https://redirect.github.com/dtolnay/prettyplease/compare/0.2.37...0.3.0)

- Update to syn 3 (release notes:
<https://github.com/dtolnay/syn/releases/tag/3.0.0>)

</details>

<details>
<summary>dtolnay/proc-macro2 (proc-macro2)</summary>

###
[`v1.0.107`](https://redirect.github.com/dtolnay/proc-macro2/releases/tag/1.0.107)

[Compare
Source](https://redirect.github.com/dtolnay/proc-macro2/compare/1.0.106...1.0.107)

- Documentation improvements

</details>

<details>
<summary>dtolnay/quote (quote)</summary>

###
[`v1.0.47`](https://redirect.github.com/dtolnay/quote/releases/tag/1.0.47)

[Compare
Source](https://redirect.github.com/dtolnay/quote/compare/1.0.46...1.0.47)

- Documentation improvements

</details>

<details>
<summary>Voultapher/self_cell (self_cell)</summary>

###
[`v1.3.0`](https://redirect.github.com/Voultapher/self_cell/releases/tag/v1.3.0):
Version 1.3.0

[Compare
Source](https://redirect.github.com/Voultapher/self_cell/compare/v1.2.2...v1.3.0)

- Async `self_cell` construction is now `Send`, this makes using it with
tokio easier. This comes at no additional performance cost. See
[#&#8203;74](https://redirect.github.com/Voultapher/self_cell/issues/74)
for more details.
- Fixed some typos in the docs.

</details>

<details>
<summary>serde-rs/serde (serde)</summary>

###
[`v1.0.229`](https://redirect.github.com/serde-rs/serde/releases/tag/v1.0.229)

[Compare
Source](https://redirect.github.com/serde-rs/serde/compare/v1.0.228...v1.0.229)

- Update to syn 3

</details>

<details>
<summary>dtolnay/syn (syn)</summary>

###
[`v2.0.119`](https://redirect.github.com/dtolnay/syn/releases/tag/2.0.119)

[Compare
Source](https://redirect.github.com/dtolnay/syn/compare/2.0.118...2.0.119)

- Preserve attributes on tail-call expressions in statement position
([#&#8203;1994](https://redirect.github.com/dtolnay/syn/issues/1994))
- Parse field-representing types builtin in type position
([#&#8203;1996](https://redirect.github.com/dtolnay/syn/issues/1996))

</details>

<details>
<summary>tokio-rs/tokio (tokio)</summary>

###
[`v1.53.0`](https://redirect.github.com/tokio-rs/tokio/releases/tag/tokio-1.53.0):
Tokio v1.53.0

[Compare
Source](https://redirect.github.com/tokio-rs/tokio/compare/tokio-1.52.4...tokio-1.53.0)

### 1.53.0 (July 17th, 2026)

##### Added

- fs: implement `From<OwnedFd>` and `From<OwnedHandle>` for `File`
([#&#8203;8266])
- metrics: add task schedule latency metric ([#&#8203;7986])
- net: add `SocketAddr` methods to Unix sockets ([#&#8203;8144])

##### Changed

- io: add `#[inline]` to IO trait impls for in-memory types
([#&#8203;8242])
- net: implement UCred::pid on FreeBSD ([#&#8203;8086])
- net: support Nuttx target os ([#&#8203;8259])
- signal: refactor global variables on Windows ([#&#8203;8231])
- sync: `mpsc::{Receiver,UnboundedReceiver}` now drops waker on drop,
even if there are still senders ([#&#8203;8095])
- taskdump: support taskdumps on s390x ([#&#8203;8192])
- time: add `#[track_caller]` to `timeout_at()` ([#&#8203;8077])
- time: consolidate mutex locks on spurious poll ([#&#8203;8124])
- time: defer waker clone on spurious poll ([#&#8203;8107])
- time: move lazy-registration state into `Sleep` ([#&#8203;8132])
- tracing: remove unnecessary span clone ([#&#8203;8126])

##### Fixed

- io: do not treat zero-length reads as EOF in `Chain` ([#&#8203;8251])
- net: use getpeereid for QNX peer credentials ([#&#8203;8270])
- runtime: avoid illegal state in `FastRand` ([#&#8203;8078])
- sync: wake mpsc receiver when a queued `reserve[_many]` returns
permits ([#&#8203;8260])
- taskdump: skip double wake on `Trace::capture`/`Trace::trace_with`
([#&#8203;8043])
- time: avoid stack overflow in runtime constructor ([#&#8203;8093])
- time (alt timer): ensure timers stay in the same runtime after
`.reset()` ([#&#8203;8169])

##### IO uring (unstable)

- fs: use io-uring for `fs::try_exists` ([#&#8203;8080])
- fs: use io-uring for renaming files ([#&#8203;7800])
- rt: flush io-uring CQE in case of CQE overflow ([#&#8203;8277])

##### Documented

- docs: clarify cancel safety wording ([#&#8203;8181])
- fs: clarify `create_dir_all` succeeds if path exists ([#&#8203;8149])
- io: add warning about stdout reordering with multiple handles
([#&#8203;8276])
- net: document pipe `try_read*`/`try_write*` readiness behavior
([#&#8203;8032])
- runtime: document interaction with fork() ([#&#8203;8202])
- sync: clarify broadcast lagging semantics ([#&#8203;8239])
- sync: document memory ordering guarantees for Semaphore
([#&#8203;8119])
- task: explain why `yield_now` defers its waker ([#&#8203;8254])
- time: add panic docs to `timeout_at()` ([#&#8203;8077])
- time: fix reversed poll order in timeout doc ([#&#8203;8214])

[#&#8203;7800]: https://redirect.github.com/tokio-rs/tokio/pull/7800

[#&#8203;7986]: https://redirect.github.com/tokio-rs/tokio/pull/7986

[#&#8203;8032]: https://redirect.github.com/tokio-rs/tokio/pull/8032

[#&#8203;8043]: https://redirect.github.com/tokio-rs/tokio/pull/8043

[#&#8203;8077]: https://redirect.github.com/tokio-rs/tokio/pull/8077

[#&#8203;8078]: https://redirect.github.com/tokio-rs/tokio/pull/8078

[#&#8203;8080]: https://redirect.github.com/tokio-rs/tokio/pull/8080

[#&#8203;8086]: https://redirect.github.com/tokio-rs/tokio/pull/8086

[#&#8203;8093]: https://redirect.github.com/tokio-rs/tokio/pull/8093

[#&#8203;8095]: https://redirect.github.com/tokio-rs/tokio/pull/8095

[#&#8203;8107]: https://redirect.github.com/tokio-rs/tokio/pull/8107

[#&#8203;8119]: https://redirect.github.com/tokio-rs/tokio/pull/8119

[#&#8203;8124]: https://redirect.github.com/tokio-rs/tokio/pull/8124

[#&#8203;8126]: https://redirect.github.com/tokio-rs/tokio/pull/8126

[#&#8203;8132]: https://redirect.github.com/tokio-rs/tokio/pull/8132

[#&#8203;8144]: https://redirect.github.com/tokio-rs/tokio/pull/8144

[#&#8203;8149]: https://redirect.github.com/tokio-rs/tokio/pull/8149

[#&#8203;8169]: https://redirect.github.com/tokio-rs/tokio/pull/8169

[#&#8203;8181]: https://redirect.github.com/tokio-rs/tokio/pull/8181

[#&#8203;8192]: https://redirect.github.com/tokio-rs/tokio/pull/8192

[#&#8203;8193]: https://redirect.github.com/tokio-rs/tokio/pull/8193

[#&#8203;8202]: https://redirect.github.com/tokio-rs/tokio/pull/8202

[#&#8203;8214]: https://redirect.github.com/tokio-rs/tokio/pull/8214

[#&#8203;8231]: https://redirect.github.com/tokio-rs/tokio/pull/8231

[#&#8203;8239]: https://redirect.github.com/tokio-rs/tokio/pull/8239

[#&#8203;8242]: https://redirect.github.com/tokio-rs/tokio/pull/8242

[#&#8203;8251]: https://redirect.github.com/tokio-rs/tokio/pull/8251

[#&#8203;8254]: https://redirect.github.com/tokio-rs/tokio/pull/8254

[#&#8203;8259]: https://redirect.github.com/tokio-rs/tokio/pull/8259

[#&#8203;8260]: https://redirect.github.com/tokio-rs/tokio/pull/8260

[#&#8203;8266]: https://redirect.github.com/tokio-rs/tokio/pull/8266

[#&#8203;8270]: https://redirect.github.com/tokio-rs/tokio/pull/8270

[#&#8203;8276]: https://redirect.github.com/tokio-rs/tokio/pull/8276

[#&#8203;8277]: https://redirect.github.com/tokio-rs/tokio/pull/8277

###
[`v1.52.4`](https://redirect.github.com/tokio-rs/tokio/releases/tag/tokio-1.52.4):
Tokio v1.52.4

[Compare
Source](https://redirect.github.com/tokio-rs/tokio/compare/tokio-1.52.3...tokio-1.52.4)

### 1.52.4 (July 16th, 2026)

##### Fixed

- runtime: don't skip the driver when `before_park` schedules work
([#&#8203;8222])

##### Fixed (unstable)

- taskdump: remove crate disambiguators from output ([#&#8203;8264])

[#&#8203;8264]: https://redirect.github.com/tokio-rs/tokio/pull/8264

[#&#8203;8222]: https://redirect.github.com/tokio-rs/tokio/pull/8222

</details>

<details>
<summary>toml-rs/toml (toml)</summary>

###
[`v1.1.3`](https://redirect.github.com/toml-rs/toml/compare/toml-v1.1.2...toml-v1.1.3)

[Compare
Source](https://redirect.github.com/toml-rs/toml/compare/toml-v1.1.2...toml-v1.1.3)

</details>

---

### Configuration

📅 **Schedule**: (in timezone Asia/Shanghai)

- Branch creation
  - "before 10am on monday"
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

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

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/oxc-project/oxc).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNjUuMSIsInVwZGF0ZWRJblZlciI6IjQzLjI2NS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Cameron Clark <cameron.clark@hey.com>
2026-07-19 18:22:30 +01:00
Brooooooklyn 582ea7547f refactor(napi): don't force tokio_rt on the napi binding crates (#24475)
## What

Stop forcing `tokio_rt` on oxc's napi binding crates.

`tokio_rt` was enabled as a blanket default on the workspace `napi` dependency, so **every** napi crate pulled in tokio. But the napi binding crates don't use a tokio runtime:

- no `#[napi] async fn` exports and no `tokio::` usage anywhere in the napi crates
- the only async surface is `oxc_parser_napi`'s `parse_async`, which is a libuv-backed `AsyncTask` / `Task` (napi4), **not** a tokio future

## Change (2 lines)

- workspace `Cargo.toml`: `napi = { version = "3", features = ["tokio_rt"] }` → `napi = { version = "3" }` — napi's own `default` already provides `napi4` + `dyn-symbols`, which covers `AsyncTask`
- `napi/parser/Cargo.toml`: drop the now-redundant `features = ["async"]`

## Effect

- oxc's napi crates (`oxc_napi`, `oxc_parser_napi`, `oxc_transform_napi`, `oxc_minify_napi`) no longer link tokio → smaller npm binaries
- downstream consumers that share the same `napi` (e.g. a bundler wiring napi's pluggable async-runtime SPI) are no longer forced to pull tokio in via Cargo feature unification
- crates that genuinely want napi's tokio async (`oxlint`, `oxfmt`) keep opting in explicitly via `features = ["async"]`

## Verification

- `cargo check --workspace` — green
- `cargo tree -i tokio` shows tokio gone from all four napi crates' normal dependency trees; `napi` now resolves to just `default` (`napi4` + `dyn-symbols`)
- CI validates the JS-side async parse (`parse_async`) tests

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01T34fMrYCf2V13Mg8BKmnda

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Dependency-feature-only change with explicit opt-in preserved for crates that need napi async; async parse paths use `Task`/`AsyncTask`, not Tokio futures.
>
> **Overview**
> Removes **`tokio_rt`** from the workspace **`napi`** dependency so NAPI binding crates no longer inherit Tokio through Cargo feature unification. **`napi/parser`** also drops the redundant **`features = ["async"]`** on its **`napi`** line.
>
> Published NAPI crates (`oxc_parser_napi`, `oxc_transform_napi`, etc.) should link a smaller native addon while **`parse`** / **`parse_raw`** keep using **`AsyncTask`** / **`Task`** (napi4), not napi’s Tokio async runtime. Crates that need napi async (**`oxlint`**, **`oxfmt`**, playground) still enable **`features = ["async"]`** locally.
>
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 48c63d442bcc2ffa8b88f5aa6f777137bebe8651. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
2026-07-14 07:50:59 +00:00
oxc-guard[bot] 8e0ed2ebb9 release(crates): oxc v0.140.0 (#24453)
### 🚀 Features

- 616bfa2 minifier: Remove unreachable code after terminating statements
(#24441) (Dunqing)
- ddab89a data_structures: Add `likely` and `unlikely` functions
(#24368) (overlookmotel)
- a3a39f9 react_compiler: Implement enableEmitHookGuards codegen
(#24329) (Boshen)
- b79eef7 minifier: Apply De Morgan's law to negated comparison chains
in jump guards and loop tests (#24279) (Dunqing)
- 34ff7b4 minifier: Drop write-only property assignments to unused local
bindings by default (#24112) (Dunqing)
- 1b829d8 semantic: Record const enums in EnumData (#24268) (Dunqing)
- ba0944c semantic: Add `Scoping::set_symbol_span` (#24221) (camc314)

### 🐛 Bug Fixes

- 7d33363 minifier: Preserve guaranteed throws from class heritage
evaluation (#24349) (Dunqing)
- 058a62f semantic: Track ambient contexts in `SemanticBuilder` (#24327)
(camc314)
- 721eb0b transformer/decorator: Scope accessor class binding (#24330)
(camc314)
- 1ebdce3 semantic: Allow reserved keywords in ambient declaration types
(#24325) (camc314)
- 460176a track-memory-allocations: Exclude arena chunks from Sys allocs
(#24292) (Dunqing)
- af4922b transformer: Clear lowered namespace redeclarations (#24300)
(camc314)
- ffd2765 semantic: Mark declared computed `MethodDefinition`s as type
references (#24296) (camc314)
- f17514b isolated-declarations: Emit const readonly fields as types
(#24288) (camc314)
- 40f769d minifier: Make `__proto__` write tracking execution-order
independent (#24280) (Dunqing)
- 6371fed transformer: Remove stale enum member bindings (#24272)
(camc314)
- f05dfab transformer: Correct symbol flags for lowered namespaces
(#24271) (Dunqing)
- 84eeb55 transformer: Correct symbol flags for lowered enums (#24269)
(Dunqing)
- c3057da transformer: Preserve generated class binding spans (#24220)
(camc314)
- 8260096 transformer: Correct span for lowered namespace symbol
(#24222) (camc314)
- 42d00d3 semantic: Mark declared class heritage as type references
(#24237) (camc314)
- 588d997 semantic: Mark TS `PropertyDefinition`s computed fields as
type references (#24233) (camc314)
- 9b95632 semantic: Mark computed method keys in `TSMethodSignature`s as
type references (#24232) (camc314)

### ⚡ Performance

- 5b26643 transformer_plugins: Dispatch global defines by trailing name
(#23666) (Boshen)
- dce0f29 react_compiler: Replace all compiled functions in a single AST
walk (#24403) (Boshen)
- f85f0d8 ast: Delegate inherited enum variants in clone_in and estree
derives (#23555) (Boshen)
- 3ff0234 allocator: Remove `unwrap` from `ReplaceWith` (#24365)
(overlookmotel)
- ab22e80 transformer: Fix Rust 1.97 performance regression (#24354)
(camc314)
- b47585c parser: Use `ReplaceWith` instead of `TakeIn` (#24018)
(overlookmotel)
- b227a06 minifier: Use `ReplaceWith` instead of `TakeIn` (#24017)
(overlookmotel)

Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2026-07-14 15:02:22 +08:00