Commit Graph

794 Commits

Author SHA1 Message Date
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
leaysgur 3a7fe74366 feat(formatter_css): update oxc-css-parser to 0.0.7 (#24434)
- Shadow parts: `::part()`
- Scroll driven animations: `<timeline-range-name>`
2026-07-13 02:16:18 +00:00
leaysgur 652f056f6e chore(oxfmt): update sort-package-json to 0.0.14 (#24431) 2026-07-13 02:16:18 +00:00
leaysgur 6e2472da6a chore(oxfmt): update oxc-toml to 0.14.5 (#24427) 2026-07-13 01:39:53 +00:00
renovate[bot] 58fb253362 chore(deps): update rust crate oxc-graphql-parser to 0.0.7 (#24429)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[oxc-graphql-parser](https://redirect.github.com/oxc-project/oxc-graphql-parser)
| workspace.dependencies | patch | `0.0.6` → `0.0.7` |

---

### Release Notes

<details>
<summary>oxc-project/oxc-graphql-parser (oxc-graphql-parser)</summary>

###
[`v0.0.7`](https://redirect.github.com/oxc-project/oxc-graphql-parser/releases/tag/oxc-graphql-parser-v0.0.7)

[Compare
Source](https://redirect.github.com/oxc-project/oxc-graphql-parser/compare/oxc-graphql-parser-v0.0.6...oxc-graphql-parser-v0.0.7)

##### Fixed

- string values ending in an escaped quote lose the quote
([#&#8203;53](https://redirect.github.com/oxc-project/oxc-graphql-parser/pull/53))
- selection set loop spins forever on invalid selection start
([#&#8203;52](https://redirect.github.com/oxc-project/oxc-graphql-parser/pull/52))

##### Other

- extract definition\_start helper for description-aware spans
([#&#8203;54](https://redirect.github.com/oxc-project/oxc-graphql-parser/pull/54))
- use Peekable::next\_if\_eq for CRLF normalization
([#&#8203;50](https://redirect.github.com/oxc-project/oxc-graphql-parser/pull/50))
- hint cold error paths with std::hint::cold\_path
([#&#8203;49](https://redirect.github.com/oxc-project/oxc-graphql-parser/pull/49))
- lower MSRV to Rust 1.95.0
([#&#8203;48](https://redirect.github.com/oxc-project/oxc-graphql-parser/pull/48))

</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:eyJjcmVhdGVkSW5WZXIiOiI0My4yNTkuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI1OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-13 01:24:52 +00:00
Boshen cadbfee9a5 refactor(react_compiler): remove dead code (#24426)
Removes all compiler-flagged dead code from `oxc_react_compiler`.

## Removed

- **Superseded functions** (`propagate_scope_dependencies_hir`): `collect_hoistable_property_loads`, `collect_hoistable_property_loads_impl`, `key_by_scope_id` — the live pipeline uses the restructured `collect_hoistable_and_propagate` instead.
- **Unused methods/wrappers**: `kind_opt`, `mutate`, `define_context`.
- **Unused fields** (removed with their construction sites): `PropertyPathNode::{parent, root}`, `DependencyCollectionContext::temporaries_used_outside_scope` (cascaded cleanly through `collect_dependencies`), `JsxInstrInfo::instr_id`, `ControlFlowTarget::Loop::owns_block`, `OxcContext::fn_name`, `StartMemoInfo::span`, `Callbacks::memo_locals`.
- **Unused enum variant**: `MutationKind::None` (the `Ord` ordering of the remaining variants is preserved).
- **Dormant scaffolding**: `TransformedValue::Replace` — collapsed the base traversal's replace path down to direct `visit_value` calls (the 11 transform passes are unaffected) — and `LvalueRef::Spread` plus its codegen match arm.
- **`hmac-sha256` dependency** — orphaned once `source_file_hash` was removed; dropped from the crate and workspace manifests.

Pre-existing `#[allow(dead_code)]` markers on live-but-unread code were left intact, so the diff is purely dead-code removal. Snapshot conformance (over the upstream fixture corpus) and the transform integration tests pass unchanged.
2026-07-13 00:43:16 +00:00
renovate[bot] 460c293a86 chore(deps): update rust crates (#24411)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [handlebars](https://redirect.github.com/sunng87/handlebars-rust) |
workspace.dependencies | patch | `6.4.2` → `6.4.3` |
|
[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.27` → `0.4.28` |
| [memchr](https://redirect.github.com/BurntSushi/memchr) |
workspace.dependencies | patch | `2.8.2` → `2.8.3` |
| [oxc-toml](https://crates.io/crates/oxc-toml) | workspace.dependencies
| patch | `0.14.4` → `0.14.5` |
| [saphyr](https://crates.io/crates/saphyr) | workspace.dependencies |
patch | `0.0.9` → `0.0.11` |

---

### Release Notes

<details>
<summary>sunng87/handlebars-rust (handlebars)</summary>

###
[`v6.4.3`](https://redirect.github.com/sunng87/handlebars-rust/blob/HEAD/CHANGELOG.md#643---2026-07-12)

[Compare
Source](https://redirect.github.com/sunng87/handlebars-rust/compare/v6.4.2...v6.4.3)

- \[Fixed] Panic when using whitespace omission (`~`) on an `else if`
  chain tag, e.g. `{{~else if cond}}`. The leading tilde is now handled
consistently with `{{~else}}`
\[[#&#8203;766](https://redirect.github.com/sunng87/handlebars-rust/issues/766)]
- \[Added] `preserve_json_order` feature flag that gates `serde_json`'s
`preserve_order` feature. Enabled by default to keep insertion-order key
iteration; disable with `default-features = false` to restore
alphabetical
JSON object key ordering.
\[[#&#8203;767](https://redirect.github.com/sunng87/handlebars-rust/issues/767)]
- \[Changed] Drop the `pprof` dev-dependency (and its `inferno` /
`quick-xml` transitive deps) from benchmarks. This removes the
vulnerable
`quick-xml` 0.26 transitive dependency
(\[[#&#8203;764](https://redirect.github.com/sunng87/handlebars-rust/issues/764)],
\[[#&#8203;765](https://redirect.github.com/sunng87/handlebars-rust/issues/765)]);
the upgrade was
blocked upstream because `pprof` pins `inferno` 0.11. Benchmarks now use
  plain criterion without in-repo flamegraph generation.

</details>

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

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

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

</details>

<details>
<summary>BurntSushi/memchr (memchr)</summary>

###
[`v2.8.3`](https://redirect.github.com/BurntSushi/memchr/compare/2.8.2...2.8.3)

[Compare
Source](https://redirect.github.com/BurntSushi/memchr/compare/2.8.2...2.8.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:eyJjcmVhdGVkSW5WZXIiOiI0My4yNTkuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI1OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-12 22:04:16 +01:00
camc314 7da0bb18a3 chore(deps): bump MSRV to 1.95.0 (#24359)
Bump MSRV to 1.95.0, following our +2 MSRV policy.
2026-07-10 14:30:07 +00:00
camc314 66e1a25c0e chore(all): fix clippy::manual_assert_eq (#24351) 2026-07-10 09:57:05 +00:00
camc314 87841eebfd chore(all): fix clippy::useless_borrows_in_formatting (#24347) 2026-07-10 09:01:12 +00:00
camc314 1f8997d76a chore(linter): fix clippy::manual_filter (#24335) 2026-07-09 18:35:48 +00:00
renovate[bot] 0e00b91b5a chore(deps): update dependency rust to v1.97.0 (#24328)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [rust](https://redirect.github.com/rust-lang/rust) | minor | `1.96.1`
→ `1.97.0` |

---

### Release Notes

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

###
[`v1.97.0`](https://redirect.github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1970-2026-07-09)

[Compare
Source](https://redirect.github.com/rust-lang/rust/compare/1.96.1...1.97.0)

\==========================

<a id="1.97.0-Language"></a>

## Language

- [Consider `Result<T, Uninhabited>` and `ControlFlow<Uninhabited, T>`
to be equivalent to `T` for must use
lint](https://redirect.github.com/rust-lang/rust/pull/148214)
- [Add allow-by-default `dead_code_pub_in_binary` lint for unused pub
items in binary
crates](https://redirect.github.com/rust-lang/rust/pull/149509)
- [Stabilize the `div32`, `lam-bh`, `lamcas`, `ld-seq-sa` and `scq`
target features](https://redirect.github.com/rust-lang/rust/pull/154510)
- [Stabilize
`cfg(target_has_atomic_primitive_alignment)`](https://redirect.github.com/rust-lang/rust/pull/155006)
- [Allow trailing `self` in imports in more
cases](https://redirect.github.com/rust-lang/rust/pull/155137)

<a id="1.97.0-Platform-Support"></a>

## Platform Support

- [nvptx64-nvidia-cuda: drop support for old architectures and old
ISAs](https://redirect.github.com/rust-lang/rust/pull/152443)

Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.

[platform-support-doc]:
https://doc.rust-lang.org/rustc/platform-support.html

<a id="1.97.0-Stabilized-APIs"></a>

## Stabilized APIs

- [`Default for
RepeatN`](https://doc.rust-lang.org/stable/std/iter/struct.RepeatN.html#impl-Default-for-RepeatN%3CA%3E)
- [`Copy for
ffi::FromBytesUntilNulError`](https://doc.rust-lang.org/stable/std/ffi/struct.FromBytesUntilNulError.html#impl-Copy-for-FromBytesUntilNulError)
- [`Send for std::fs::File` on
UEFI](https://redirect.github.com/rust-lang/rust/pull/154003)
-
[`<{integer}>::isolate_highest_one`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.isolate_highest_one)
-
[`<{integer}>::isolate_lowest_one`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.isolate_lowest_one)
-
[`<{integer}>::highest_one`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.highest_one)
-
[`<{integer}>::lowest_one`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.lowest_one)
-
[`<{integer}>::bit_width`](https://doc.rust-lang.org/stable/std/primitive.u32.html#method.bit_width)
-
[`NonZero<{integer}>::isolate_highest_one`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.isolate_highest_one)
-
[`NonZero<{integer}>::isolate_lowest_one`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.isolate_lowest_one)
-
[`NonZero<{integer}>::highest_one`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.highest_one)
-
[`NonZero<{integer}>::lowest_one`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.lowest_one)
-
[`NonZero<{integer}>::bit_width`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.bit_width)

These previously stable APIs are now stable in const contexts:

-
[`char::is_control`](https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_control)

<a id="1.97.0-Cargo"></a>

## Cargo

- [Stabilize `build.warnings`
config.](https://redirect.github.com/rust-lang/cargo/pull/16796) This
controls how lint warnings from local packages are treated. Useful for
enforcing a warning-free build in CI, replacing `-Dwarnings`.
[docs](https://doc.rust-lang.org/nightly/cargo/reference/config.html#buildwarnings)
- [Stabilize `resolver.lockfile-path`
config.](https://redirect.github.com/rust-lang/cargo/pull/16694) This
allows specifying the path to the lockfile to use when resolving
dependencies. Useful when working with read-only source directories.
[docs](https://doc.rust-lang.org/nightly/cargo/reference/config.html#resolverlockfile-path)
- [cargo-clean: Error when `--target-dir` doesn't look like a Cargo
target
directory.](https://redirect.github.com/rust-lang/cargo/pull/16712) This
prevents accidental deletion of non-target directories.
- [Add `-m` shorthand for
`--manifest-path`](https://redirect.github.com/rust-lang/cargo/pull/16858)
- [Remove `curl` dependency from `crates-io`
crate](https://redirect.github.com/rust-lang/cargo/pull/16936)

<a id="1.97.0-Rustdoc"></a>

## Rustdoc

- [Stabilize `--emit`
flag](https://redirect.github.com/rust-lang/rust/pull/146220)
- [Stabilize
`--remap-path-prefix`](https://redirect.github.com/rust-lang/rust/pull/155307)

<a id="1.97.0-Compatibility-Notes"></a>

## Compatibility Notes

- [Emit a future-compatibility warning when relying on `f32:
From<{float}>` to constrain
`{float}`](https://redirect.github.com/rust-lang/rust/pull/139087)
- [Rust will use the v0 symbol mangling scheme by
default.](https://redirect.github.com/rust-lang/rust/pull/151994) This
may cause some tools (such as debuggers or profilers, especially with
old versions) to fail to demangle symbols emitted by Rust. It may also
cause the formatting of text in backtraces to change.
- [Prevent deref coercions in `pin!`, in order to prevent
unsoundness.](https://redirect.github.com/rust-lang/rust/pull/153457)
The most likely case where this might impact users is: writing `pin!(x)`
where `x` has type `&mut T` will now always correctly produce a value of
type `Pin<&mut &mut T>`, instead of sometimes allowing a coercion that
produces a value of type `Pin<&mut T>`. This coercion was previously
incorrectly allowed since Rust 1.88.0.
- [Deprecate `std::char` constants and
functions](https://redirect.github.com/rust-lang/rust/pull/153873)
- [Warn on linker output by
default](https://redirect.github.com/rust-lang/rust/pull/153968)
- [Remove hidden `f64` methods which have been deprecated since
1.0](https://redirect.github.com/rust-lang/rust/pull/153975)
- [report the `varargs_without_pattern` lint in
deps](https://redirect.github.com/rust-lang/rust/pull/154599)
- [Forbid passing generic arguments to module path segments even if the
module reexports a generic enum
variant](https://redirect.github.com/rust-lang/rust/pull/154971)
- [Error on invalid macho `link_section`
specifier](https://redirect.github.com/rust-lang/rust/pull/155065)
- The encoding of certain `enum`s [have
changed](https://redirect.github.com/rust-lang/rust/pull/155473). This
is not a breaking change, as it only applies to `enum`s without layout
guarantees, but is noted here as we've seen people impacted from having
made assumptions about the layout algorithm.
- [Error on `#[export_name = "..."]` where the name is
empty](https://redirect.github.com/rust-lang/rust/pull/155515)
- [Syntactically reject tuple index shorthands in struct
patterns](https://redirect.github.com/rust-lang/rust/pull/155698)
- [validate `#[link_name = "..."]` & `#[link(name = "...")]`
parameters](https://redirect.github.com/rust-lang/rust/pull/155817)
- On Windows, after calling `shutdown` on a socket to shut down the
write side, attempting to write to the socket will now produce a
`BrokenPipe` error rather than `Other`. [Map `WSAESHUTDOWN` to
`io::ErrorKind::BrokenPipe`](https://redirect.github.com/rust-lang/rust/pull/156063)

</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:eyJjcmVhdGVkSW5WZXIiOiI0My4yNDIuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI0Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Cameron <cameron.clark@hey.com>
2026-07-09 18:34:23 +01:00
Shanon Jackson 6ab439a902 feat(lexer): add oxc_lexer, a unfused SIMD lexer for JS/TS/TSX (#24172)
Adds the x86_64 version of my Research `SIMD For Context Sensitive
Languages`.
(CPB = Cycles per byte)
- Adds new create crates/oxc_lexer; Which eventually lead into an
unfused parser design inside oxc_parser
- Fully test262 compliant JS standalone Lexer; SIMD used has
counterparts on every platform.
- Performs at 2.5CPB on checker.js on my ZEN 3 CPU; or around 1.5-1.75
gbs (3.8GHz).
- Across aarch64, + other platforms performance will hold which I've
seen in my POCs but those targets will come later.
- Supports JSX/TS options, Which don't have much impact on overall perf
results.

------

The expected results for seeing this work through [including on parser
side on oxc_parser]
1. P95 improvements of 80-100% over current `oxc_parser`; 12-18% of this
will come from the unfused contract where JS grammar specifically loves
being able to see 'ahead' into `kinds` in various places. The rest comes
from the perf improvements to the lexer itself and some wins that will
come inside the parser from work now done in the lexer.
2026-07-08 18:07:33 +01:00
leaysgur b1d007e5d6 chore(deps): update oxc-grahql-parser 0.0.6 (#24283)
I thought there might be some code changes, but there weren't, so simply a version bump.
2026-07-08 02:17:08 +00:00
leaysgur eeabc4a55f fix(formatter_css): bail on EOF-recovered parse errors (#24282)
Also updated the code to reflect the changes in `oxc-css-parser` 0.0.6.
2026-07-08 02:17:08 +00:00
oxc-guard[bot] 69b2dfc181 release(crates): oxc v0.139.0 (#24218)
### 🚀 Features

- 260425f semantic/examples: Include unresolved references (#24214)
(camc314)
- 2d9b0b3 minifier: Fold boolean-literal ternary branches in value
contexts (#24110) (Dunqing)
- 61fbf10 ast: Implement `ReplaceWith` on all AST types (#24013)
(overlookmotel)
- 7db7a29 allocator: Add `ReplaceWith` trait (#24012) (overlookmotel)
- 4eb074e mangler: Add `reserved` option for names that must not be
mangled (#24041) (Dunqing)
- 2e62012 data_structures: Add `StringExt` trait (#24006)
(overlookmotel)
- 60e7160 minifier: Drop side-effect-free IIFEs whose result is unused
(#23967) (Dunqing)
- 26dd9e2 ast: Add method to widen inherited enum ref to parent ref
(#23961) (overlookmotel)

### 🐛 Bug Fixes

- e8b50ee transformer: Clean up semantics for stripped TypeScript syntax
(#24180) (camc314)
- d966d0b react_compiler: Remove clippy allows (#24168) (Boshen)
- 854ef8d react_compiler: Compile generic functions instead of
over-bailing on type-param hoisting (#24158) (Boshen)
- 093586c react_compiler: Align memoization cache-slot allocation with
Babel (#24157) (Boshen)
- 09c8f59 react_compiler: Normalize snapshot fixture paths (#24142)
(camc314)
- f13df97 react_compiler: Drop stray empty statement from catch bindings
(#24133) (Boshen)
- cb2a505 react_compiler: Codegen destructuring reassignment targets
(#24131) (Boshen)
- b82c394 react_compiler: Propagate codegen invariants instead of
emitting empty bodies (#24128) (Boshen)
- 5771982 react_compiler: Render unchanged programs as source in fixture
snapshots (#24129) (Boshen)
- 4b16e1a transformer/async-to-generator: Preserve direct eval scope
flags (#24136) (camc314)
- 4e9194f react_compiler: Lower `delete obj.prop` to
Property/ComputedDelete (#24123) (Boshen)
- 0b25582 ast: Type binding node `typeAnnotation` as `TSTypeAnnotation |
null` (#23113) (Boshen)
- 018c0e5 transformer: Hoist lowered async declarations (#22770)
(camc314)
- 652fbaf mangler: Keep names of destructured exported bindings (#24036)
(Dunqing)
- e274415 minifier: Don't drop global calls that throw despite pure
arguments (#23917) (Dunqing)
- 59abb30 minifier: Only merge string literals in `try_fold_add` when
the inner operator is `+` (#23622) (Jerry Zhao)

### ⚡ Performance

- c5ca77b transformer: Avoid cloning refresh options (#24191) (camc314)
- bf1a151 react_compiler: Compile out debug printers (#24184) (Boshen)
- abb44a0 transformer: Build fixed object-rest arguments (#24190)
(camc314)
- a4db731 isolated_declarations: Use `ReplaceWith` instead of `TakeIn`
(#24016) (overlookmotel)
- ff10855 transformer: Use `ReplaceWith` instead of `TakeIn` (#24015)
(overlookmotel)
- bd49aff ecmascript: Avoid heap-allocating Math.min/max/imul operands
(#23941) (Lawrence Lin)
- e4b708b react_compiler: Skip compiled files before prefilters (#24171)
(Boshen)
- c59f2fe rust: Return impl ExactSizeIterator from slice-backed
accessors (#24144) (Boshen)
- 5d6d04a codegen: SWAR-skip boring byte runs in sourcemap line/column
scan (#24023) (Boshen)
- a55e0be traverse: Reduce string operations in `get_var_name_from_node`
(#24007) (overlookmotel)
- e6d48e1 transformer/nullish_coalescing: Move cold path into separate
function (#23989) (overlookmotel)
- c4e35b5 transformer/object_rest_spread: Pre-allocate capacity in `Vec`
(#23988) (overlookmotel)
- 527b8e5 transformer/decorators: Narrow type earlier (#23987)
(overlookmotel)

### 📚 Documentation

- 30d17f5 allocator: Clarify docs for `TakeIn::take_in_box` (#24093)
(overlookmotel)
- 675e6a8 ast: Correct doc comment for `PrivateFieldExpression` (#24008)
(overlookmotel)
- e4c30e6 minifier: Explain what `dce` mode means (#23994) (Dunqing)
- 37cbf88 ast_macros: Document fields of `StructDetails` (#23959)
(overlookmotel)
- 4de3e54 ast: Correct doc comment (#23948) (overlookmotel)

Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2026-07-06 23:26:26 +08:00
renovate[bot] 897d6ac29d chore(deps): update rust crate saphyr to 0.0.9 (#24195)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [saphyr](https://crates.io/crates/saphyr) | workspace.dependencies |
patch | `0.0.6` → `0.0.9` |

---

### 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:eyJjcmVhdGVkSW5WZXIiOiI0My4yNDIuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI0Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-06 01:59:41 +00:00
renovate[bot] ef33878eb8 chore(deps): update rust crates (#24192)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [num-bigint](https://redirect.github.com/rust-num/num-bigint) |
workspace.dependencies | minor | `0.4.6` → `0.5.0` |
| [rustc-hash](https://crates.io/crates/rustc-hash) |
workspace.dependencies | patch | `2.1.2` → `2.1.3` |

---

### Release Notes

<details>
<summary>rust-num/num-bigint (num-bigint)</summary>

###
[`v0.5.1`](https://redirect.github.com/rust-num/num-bigint/blob/HEAD/RELEASES.md#Release-051-2026-07-04)

[Compare
Source](https://redirect.github.com/rust-num/num-bigint/compare/num-bigint-0.5.0...num-bigint-0.5.1)

- [Fixed a regression in the B-Z division algorithm.][348]

[348]: https://redirect.github.com/rust-num/num-bigint/pull/348

**Contributors**: [@&#8203;cuviper](https://redirect.github.com/cuviper)

###
[`v0.5.0`](https://redirect.github.com/rust-num/num-bigint/blob/HEAD/RELEASES.md#Release-050-2026-07-02)

[Compare
Source](https://redirect.github.com/rust-num/num-bigint/compare/num-bigint-0.4.8...num-bigint-0.5.0)

- [Upgrade to `rand` v0.10 and/or v0.9, and split `rand_core`][338].
- The former `rand` feature is now split into multiple features,
`rand_0_9`,
    `rand_core_0_9`, `rand_0_10`, and `rand_core_0_10`, depending on the
    version and feature set you need.
  - The `RandBigInt` extension trait is now split into `BigRng09` and
    `BigRng010` for each version.
- The `gen_*` methods are deprecated in favor of new `random_*` methods.
  - This is also a [value-breaking] release, as `rand` defines it.

[338]: https://redirect.github.com/rust-num/num-bigint/pull/338

[value-breaking]:
https://rust-random.github.io/book/crate-reprod.html#api-breaking-value-breaking-and-semver

**Contributors**:
[@&#8203;bionicles](https://redirect.github.com/bionicles),
[@&#8203;cuviper](https://redirect.github.com/cuviper),
[@&#8203;divergentdave](https://redirect.github.com/divergentdave)

###
[`v0.4.8`](https://redirect.github.com/rust-num/num-bigint/blob/HEAD/RELEASES.md#Release-048-2026-07-04)

[Compare
Source](https://redirect.github.com/rust-num/num-bigint/compare/num-bigint-0.4.7...num-bigint-0.4.8)

- [Fixed a regression in the B-Z division algorithm.][349]

[349]: https://redirect.github.com/rust-num/num-bigint/pull/349

**Contributors**: [@&#8203;cuviper](https://redirect.github.com/cuviper)

###
[`v0.4.7`](https://redirect.github.com/rust-num/num-bigint/blob/HEAD/RELEASES.md#Release-047-2026-07-02)

[Compare
Source](https://redirect.github.com/rust-num/num-bigint/compare/num-bigint-0.4.6...num-bigint-0.4.7)

- [Inline single-digit values.][307] This reduces heap allocations, and
  also enables `const ONE`, `const NEG_ONE`, and `const fn new_const`.
- [Use divide and conquer in `to_radix_digits`,][316] also implementing
  the Burnikel-Ziegler algorithm to speed up large divisions in general.
- [Implement `LowerBounded` for `BigUint`.][330]

[307]: https://redirect.github.com/rust-num/num-bigint/pull/307

[316]: https://redirect.github.com/rust-num/num-bigint/pull/316

[330]: https://redirect.github.com/rust-num/num-bigint/pull/330

**Contributors**: [@&#8203;cp289](https://redirect.github.com/cp289),
[@&#8203;cuviper](https://redirect.github.com/cuviper),
[@&#8203;hkalbasi](https://redirect.github.com/hkalbasi),
[@&#8203;mikem8891](https://redirect.github.com/mikem8891),
[@&#8203;pRizz](https://redirect.github.com/pRizz),
[@&#8203;tyilo](https://redirect.github.com/tyilo),
[@&#8203;xtqqczze](https://redirect.github.com/xtqqczze)

</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:eyJjcmVhdGVkSW5WZXIiOiI0My4yNDIuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI0Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-05 18:35:38 +01:00
Boshen 1e221cef0f refactor(type_checker): use anyhow for error handling (#24185)
## Summary

Switch `oxc_type_checker`'s CLI error handling from `Result<_, String>` to `anyhow`. The tsc-style command-line errors (TS5042/5058/5081/5112) and the tsconfig-parse errors now flow as `anyhow::Result`, and `command_line` prints the error chain and maps to `ExitCode`.

## Details

- `resolve_config_file` and `parse_config_file`: `Result<_, String>` → `anyhow::Result<_>`. `bail!` / `?` replace `format!` / `.to_string()` + the manual `Err(...)` returns.
- `tsc_compilation` → `anyhow::Result<()>` — the three `Err(message) => { eprintln!; return FAILURE }` arms collapse into `?`.
- `command_line` prints the error with `eprintln!("{err:#}")` (the whole chain, no `Error:` prefix) and maps to `ExitCode`, so stderr output, exit codes, and `main.rs` stay unchanged.
- Adds `anyhow` as a workspace dependency (new to the workspace).

## Verification

- `cargo build` / `clippy` / `fmt` clean; doctest passes; nightly `--all-features` build + doc clean.
- Error output unchanged: `-p /nope/tsconfig.json` → `The specified path does not exist: '...'.`; mixing `-p` + files → `Option 'project' cannot be mixed...`; a repo that `extends` a missing package → `Tsconfig not found @eggjs/tsconfig` — all exit 1, no `Error:` prefix. The success path prints the file list as before.

> Based on current `main` (before #24177), so it overlaps #24177's `tsc.rs` changes — to be resolved at merge.
2026-07-05 16:49:57 +00:00