mirror of
https://github.com/oxc-project/oxc.git
synced 2026-09-14 19:36:11 +08:00
codex/jsstr-core
1610 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
62f1ecb27d |
refactor(str): simplify JavaScript string primitives
Defer metadata packing and benchmarks until a concrete performance need arises. Keep the initial API review focused on correctness and safety. |
||
|
|
75dd063560 |
feat(str): add JavaScript string primitives
JavaScript strings can contain lone surrogates that Rust str cannot represent. Introduce arena-backed primitives with explicit encoding invariants before migrating AST consumers. Part of #26242. |
||
|
|
60fa13878c |
release(crates): oxc v0.149.0 (#26397)
### 💥 BREAKING CHANGES - |
||
|
|
b4da00b621 |
release(apps): oxlint v1.82.0 && oxfmt v0.67.0 (#26384)
# Oxlint ### 🚀 Features - |
||
|
|
68e12abe2c |
feat(formatter_css): follow the oxc-css-parser's acceptance line (#26337)
Fixes #26290, #26291. Also, many changes to follow refined parser acceptance line. --- CI will fail until parser version bumped, needs oxc-project/oxc-css-parser/pull/166 |
||
|
|
3d6ddcef32 |
chore(deps): update rust crates (#26365)
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [indexmap](https://redirect.github.com/indexmap-rs/indexmap) | workspace.dependencies | patch | `2.14.1` → `2.14.2` | | [mimalloc-safe](https://redirect.github.com/napi-rs/mimalloc-safe) | workspace.dependencies | patch | `0.1.65` → `0.1.66` | | [smallvec](https://redirect.github.com/servo/rust-smallvec) | workspace.dependencies | minor | `1.15.2` → `1.16.0` | | [syn](https://redirect.github.com/dtolnay/syn) | workspace.dependencies | patch | `3.0.4` → `3.0.5` | | [toml](https://redirect.github.com/toml-rs/toml) | workspace.dependencies | patch | `1.1.4+spec-1.1.0` → `1.1.5` | | [ureq](https://redirect.github.com/algesten/ureq) | workspace.dependencies | patch | `3.4.0` → `3.4.1` | --- ### Release Notes <details> <summary>indexmap-rs/indexmap (indexmap)</summary> ### [`v2.14.2`](https://redirect.github.com/indexmap-rs/indexmap/blob/HEAD/RELEASES.md#2142-2026-09-04) [Compare Source](https://redirect.github.com/indexmap-rs/indexmap/compare/2.14.1...2.14.2) - Fix item hygiene in map and set macros. Previously, an internal `const CAP` could shadow the same name in the caller's namespace. - Allow `const` initialization of empty `indexmap_with_default!` and `indexset_with_default!`. The hasher may also be omitted if it's inferrable. </details> <details> <summary>napi-rs/mimalloc-safe (mimalloc-safe)</summary> ### [`v0.1.66`](https://redirect.github.com/napi-rs/mimalloc-safe/blob/HEAD/CHANGELOG.md#0166---2026-09-04) [Compare Source](https://redirect.github.com/napi-rs/mimalloc-safe/compare/mimalloc-safe-v0.1.65...mimalloc-safe-v0.1.66) ##### Bug Fixes - *(sys)* Mimalloc3 v3.5.1 + fix for the process-init thread's thread-done hook ([#​97](https://redirect.github.com/napi-rs/mimalloc-safe/pull/97)) ##### Chore - *(deps)* Update dependency [@​napi-rs/cli](https://redirect.github.com/napi-rs/cli) to v3.9.0 ([#​94](https://redirect.github.com/napi-rs/mimalloc-safe/pull/94)) - *(deps)* Update dependency [@​emnapi/core](https://redirect.github.com/emnapi/core) to v2.0.0-alpha.5 ([#​95](https://redirect.github.com/napi-rs/mimalloc-safe/pull/95)) - *(deps)* Update dependency [@​emnapi/runtime](https://redirect.github.com/emnapi/runtime) to v2.0.0-alpha.5 ([#​96](https://redirect.github.com/napi-rs/mimalloc-safe/pull/96)) - *(deps)* Update mimalloc (v2) submodule to v2.5.1 ([#​98](https://redirect.github.com/napi-rs/mimalloc-safe/pull/98)) </details> <details> <summary>servo/rust-smallvec (smallvec)</summary> ### [`v1.16.0`](https://redirect.github.com/servo/rust-smallvec/releases/tag/v1.16.0) [Compare Source](https://redirect.github.com/servo/rust-smallvec/compare/v1.15.2...v1.16.0) #### What's Changed - Include debug\_metadata/\*.natvis in the published crate to fix debugger\_visualizer/docs.rs build by [@​teddytennant](https://redirect.github.com/teddytennant) in [#​417](https://redirect.github.com/servo/rust-smallvec/pull/417) - feat: removed debugger visualizer + tests by [@​alejandro-vaz](https://redirect.github.com/alejandro-vaz) in [#​420](https://redirect.github.com/servo/rust-smallvec/pull/420) - feat: added style check to CI && rustfmt.toml by [@​alejandro-vaz](https://redirect.github.com/alejandro-vaz) in [#​436](https://redirect.github.com/servo/rust-smallvec/pull/436) #### New Contributors - [@​teddytennant](https://redirect.github.com/teddytennant) made their first contribution in [#​417](https://redirect.github.com/servo/rust-smallvec/pull/417) **Full Changelog**: <https://github.com/servo/rust-smallvec/compare/v1.15.2...v1.16.0> </details> <details> <summary>dtolnay/syn (syn)</summary> ### [`v3.0.5`](https://redirect.github.com/dtolnay/syn/releases/tag/3.0.5) [Compare Source](https://redirect.github.com/dtolnay/syn/compare/3.0.4...3.0.5) - Report correct span for lex errors from `LitStr::parse_with` ([#​2080](https://redirect.github.com/dtolnay/syn/issues/2080), thanks [@​sunshowers](https://redirect.github.com/sunshowers)) </details> <details> <summary>toml-rs/toml (toml)</summary> ### [`v1.1.5`](https://redirect.github.com/toml-rs/toml/compare/toml-v1.1.4...toml-v1.1.5) [Compare Source](https://redirect.github.com/toml-rs/toml/compare/toml-v1.1.4...toml-v1.1.5) </details> <details> <summary>algesten/ureq (ureq)</summary> ### [`v3.4.1`](https://redirect.github.com/algesten/ureq/blob/HEAD/CHANGELOG.md#341) [Compare Source](https://redirect.github.com/algesten/ureq/compare/3.4.0...3.4.1) - Bump ureq-proto to 0.6.2 (fixes to parsing and headers) [#​1199](https://redirect.github.com/algesten/ureq/issues/1199) - Do not pool connections with unconsumed buffered input [#​1198](https://redirect.github.com/algesten/ureq/issues/1198) - Fix timeout budgets restarting and applying to later phases [#​1194](https://redirect.github.com/algesten/ureq/issues/1194) - Complete TLS handshake during connect so timeout\_connect covers it [#​1193](https://redirect.github.com/algesten/ureq/issues/1193) - Speed up read\_json for responses with a known, small body size [#​1191](https://redirect.github.com/algesten/ureq/issues/1191) </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:eyJjcmVhdGVkSW5WZXIiOiI0NC42MS4zIiwidXBkYXRlZEluVmVyIjoiNDQuNjEuMyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |
||
|
|
0b4e2e67f4 |
release(apps): oxlint v1.81.0 && oxfmt v0.66.0 (#26199)
# Oxlint ### 🚀 Features - |
||
|
|
894c8f9cd8 |
release(crates): oxc v0.148.0 (#26198)
### 💥 BREAKING CHANGES - |
||
|
|
5ff57f83c0 |
fix(formatter/sort-imports): handle custom side effect groups (#26217)
Fixes #26165 - `side_effect` is predefined selector, it cannot be used as custom group name - respect custom group which uses `side_effect` as side-effect-import correctly - fix metadata detection bug |
||
|
|
1fb37b6e47 |
feat(formatter/css): format declaration-shaped raw-prelude rules (postcss nested config blocks) (#26194)
Fixes #26158 --- > Otherwise, [restore a mark](https://drafts.csswg.org/css-syntax-3/#token-stream-restore-a-mark) from input, then [consume a qualified rule](https://drafts.csswg.org/css-syntax-3/#consume-a-qualified-rule) from input, with nested set to true, and [<semicolon-token>](https://drafts.csswg.org/css-syntax-3/#typedef-semicolon-token) as the stop token. > https://drafts.csswg.org/css-syntax-3/#consume-block-contents When fallback happens: format block, keep prelude verbatim. |
||
|
|
286aa71962 |
chore(deps): bump fast_glob (#26192)
https://github.com/oxc-project/fast-glob/releases/tag/v1.1.1 |
||
|
|
ac817c6e50 |
chore(deps): update rust crate javascript-globals to v2 (#26185)
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [javascript-globals](https://redirect.github.com/oxc-project/javascript-globals) | workspace.dependencies | major | `1.5.1` → `2.0.0` | --- ### Release Notes <details> <summary>oxc-project/javascript-globals (javascript-globals)</summary> ### [`v2.0.0`](https://redirect.github.com/oxc-project/javascript-globals/blob/HEAD/CHANGELOG.md#200---2026-08-27) [Compare Source](https://redirect.github.com/oxc-project/javascript-globals/compare/javascript-globals-v1.6.0...javascript-globals-v2.0.0) ##### Other - \[**breaking**] compact generated global tables ([#​280](https://redirect.github.com/oxc-project/javascript-globals/pull/280)) </details> --- ### Configuration 📅 **Schedule**: (in timezone Asia/Shanghai) - Branch creation - "before 10am on monday" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/oxc-project/oxc). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC40OS4wIiwidXBkYXRlZEluVmVyIjoiNDQuNDkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |
||
|
|
f1831d59ea |
chore(deps): update rust crates (#26179)
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [convert_case](https://redirect.github.com/rutrum/convert-case) | workspace.dependencies | minor | `0.11.0` → `0.12.0` | | [flate2](https://redirect.github.com/rust-lang/flate2-rs) | workspace.dependencies | patch | `1.1.9` → `1.1.10` | | [indexmap](https://redirect.github.com/indexmap-rs/indexmap) | workspace.dependencies | patch | `2.14.0` → `2.14.1` | | [mimalloc-safe](https://redirect.github.com/napi-rs/mimalloc-safe) | workspace.dependencies | patch | `0.1.64` → `0.1.65` | --- > [!WARNING] > Some dependencies could not be looked up. Check the warning logs for more information. --- ### Release Notes <details> <summary>rutrum/convert-case (convert_case)</summary> ### [`v0.12.0`](https://redirect.github.com/rutrum/convert-case/blob/HEAD/CHANGELOG.md#0120-Optimizations) [Compare Source](https://redirect.github.com/rutrum/convert-case/compare/0.11.0...0.12.0) This release improves speed and memory efficiency. A couple techniques were used: - Character case checks first check ascii before doing the more expensive grapheme checks (which require heap allocations). - Delimiter only splits get a dedicated path in the `split` method. - The case of characters is computed upfront in a bitmask before checking individual boundary conditions in `split`. Built-in boundaries get a custom implementation built on top of this bitmask. | Benchmark | Before | After | Improvement | | ----------------------------------------------- | --------- | -------- | ----------- | | `snake_short` (`"hello_world"`) | 412 ns | 21.3 ns | −95% | | `lower_upper` (`"lowerUpperUpper"`) | 1,631 ns | 475 ns | −71% | | `acronym` (`"XMLRequest"`) | 1,108 ns | 418 ns | −62% | | `camel_set` (`"getTotalLength3D"`) | 3,844 ns | 643 ns | −83% | | `defaults_mixed` (9 boundaries) | 8,083 ns | 1,500 ns | −81% | | `defaults_long_snake` (265 chars) | 52,281 ns | 4,730 ns | −91% | | `unicode_cyrillic` (`"ПЕРСПЕКТИВА24"`) | 8,334 ns | 741 ns | −91% | | Full pipeline `from_to_all` (4 words x 14 x 14) | 1,230 µs | 263 µs | −79% | </details> <details> <summary>rust-lang/flate2-rs (flate2)</summary> ### [`v1.1.10`](https://redirect.github.com/rust-lang/flate2-rs/releases/tag/1.1.10) [Compare Source](https://redirect.github.com/rust-lang/flate2-rs/compare/1.1.9...1.1.10) #### What's Changed - feat: reuse zlib's decoder buffer by [@​Vaiz](https://redirect.github.com/Vaiz) in [#​532](https://redirect.github.com/rust-lang/flate2-rs/pull/532) - feat: add reset method for read::GzDecoder and buffered::GzDecoder by [@​Vaiz](https://redirect.github.com/Vaiz) in [#​534](https://redirect.github.com/rust-lang/flate2-rs/pull/534) - Drop cloudflare-zlib by [@​kornelski](https://redirect.github.com/kornelski) in [#​539](https://redirect.github.com/rust-lang/flate2-rs/pull/539) - Add a wrapper for the `Crc` struct by [@​MikkelPaulson](https://redirect.github.com/MikkelPaulson) in [#​540](https://redirect.github.com/rust-lang/flate2-rs/pull/540) - Bump miniz\_oxide to 0.9 by [@​oscargus](https://redirect.github.com/oscargus) in [#​543](https://redirect.github.com/rust-lang/flate2-rs/pull/543) - Upgrade miniz\_oxide and add unit tests of the different flush kinds by [@​fintelia](https://redirect.github.com/fintelia) in [#​498](https://redirect.github.com/rust-lang/flate2-rs/pull/498) - Fix infinite loop in writing gzip header/footer by [@​Shnatsel](https://redirect.github.com/Shnatsel) in [#​547](https://redirect.github.com/rust-lang/flate2-rs/pull/547) - test: generate corrupt gzip fixture at runtime by [@​nanookclaw](https://redirect.github.com/nanookclaw) in [#​550](https://redirect.github.com/rust-lang/flate2-rs/pull/550) - Reject oversized gzip extra fields by [@​Byron](https://redirect.github.com/Byron) in [#​553](https://redirect.github.com/rust-lang/flate2-rs/pull/553) - Reject incomplete deflate streams at EOF by [@​Guflly](https://redirect.github.com/Guflly) in [#​556](https://redirect.github.com/rust-lang/flate2-rs/pull/556) - Include `README.md` in a private module by [@​bushrat011899](https://redirect.github.com/bushrat011899) in [#​562](https://redirect.github.com/rust-lang/flate2-rs/pull/562) - Add `no_std` support using nightly `alloc_io` by [@​bushrat011899](https://redirect.github.com/bushrat011899) in [#​559](https://redirect.github.com/rust-lang/flate2-rs/pull/559) - Update `get_mut()` documentation to make clear how 'inner\` can be used by [@​Byron](https://redirect.github.com/Byron) in [#​558](https://redirect.github.com/rust-lang/flate2-rs/pull/558) #### New Contributors - [@​Vaiz](https://redirect.github.com/Vaiz) made their first contribution in [#​532](https://redirect.github.com/rust-lang/flate2-rs/pull/532) - [@​MikkelPaulson](https://redirect.github.com/MikkelPaulson) made their first contribution in [#​540](https://redirect.github.com/rust-lang/flate2-rs/pull/540) - [@​oscargus](https://redirect.github.com/oscargus) made their first contribution in [#​543](https://redirect.github.com/rust-lang/flate2-rs/pull/543) - [@​nanookclaw](https://redirect.github.com/nanookclaw) made their first contribution in [#​550](https://redirect.github.com/rust-lang/flate2-rs/pull/550) - [@​Guflly](https://redirect.github.com/Guflly) made their first contribution in [#​556](https://redirect.github.com/rust-lang/flate2-rs/pull/556) - [@​bushrat011899](https://redirect.github.com/bushrat011899) made their first contribution in [#​562](https://redirect.github.com/rust-lang/flate2-rs/pull/562) **Full Changelog**: <https://github.com/rust-lang/flate2-rs/compare/1.1.9...1.1.10> </details> <details> <summary>indexmap-rs/indexmap (indexmap)</summary> ### [`v2.14.1`](https://redirect.github.com/indexmap-rs/indexmap/blob/HEAD/RELEASES.md#2141-2026-08-28) [Compare Source](https://redirect.github.com/indexmap-rs/indexmap/compare/2.14.0...2.14.1) - Simplify comparisons where `Equivalent` isn't needed (`Q = K`). - Unify index assertions for bounds checks. - Fix (or `expect`) clippy lints. </details> <details> <summary>napi-rs/mimalloc-safe (mimalloc-safe)</summary> ### [`v0.1.65`](https://redirect.github.com/napi-rs/mimalloc-safe/blob/HEAD/CHANGELOG.md#0165---2026-08-24) [Compare Source](https://redirect.github.com/napi-rs/mimalloc-safe/compare/mimalloc-safe-v0.1.64...mimalloc-safe-v0.1.65) ##### Chore - *(deps)* Update actions/setup-node action to v7 ([#​89](https://redirect.github.com/napi-rs/mimalloc-safe/pull/89)) - *(deps)* Update yarn to v4.18.0 ([#​87](https://redirect.github.com/napi-rs/mimalloc-safe/pull/87)) </details> --- ### Configuration 📅 **Schedule**: (in timezone Asia/Shanghai) - Branch creation - "before 10am on monday" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/oxc-project/oxc). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC40OS4wIiwidXBkYXRlZEluVmVyIjoiNDQuNDkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |
||
|
|
0e734cc7ae |
test(formatter_css): pin signed-value parser fixes from oxc-css-parser 0.0.12 (#26132)
Bump parser and pin fixed by https://github.com/oxc-project/oxc-css-parser/pull/158 |
||
|
|
ac4785a139 |
perf(diagnostics): use fixed ANSI styles (#26130)
Replace dynamic diagnostic styles with fixed ANSI prefixes, reducing `oxfmt` and `oxlint` release text size. AI assistance: Codex was used. The contributor remains responsible for this change. |
||
|
|
97e99b8548 |
release(apps): oxlint v1.80.0 && oxfmt v0.65.0 (#26045)
# Oxlint ### 🚀 Features - |
||
|
|
4e258430cd |
release(crates): oxc v0.147.0 (#26046)
### 🚀 Features - |
||
|
|
f166fbf41f |
chore(deps): update rust crate oxc_resolver to v11.24.3 (#26048)
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [oxc_resolver](https://redirect.github.com/oxc-project/oxc-resolver) | workspace.dependencies | patch | `11.24.2` → `11.24.3` | --- ### Release Notes <details> <summary>oxc-project/oxc-resolver (oxc_resolver)</summary> ### [`v11.24.3`](https://redirect.github.com/oxc-project/oxc-resolver/blob/HEAD/CHANGELOG.md#11243---2026-08-24) [Compare Source](https://redirect.github.com/oxc-project/oxc-resolver/compare/v11.24.2...v11.24.3) ##### <!-- 2 -->🚜 Refactor - normalize fixture directory names ([#​1329](https://redirect.github.com/oxc-project/oxc-resolver/pull/1329)) (by [@​Boshen](https://redirect.github.com/Boshen)) ##### <!-- 3 -->📚 Documentation - update sponsor section ([#​1311](https://redirect.github.com/oxc-project/oxc-resolver/pull/1311)) (by [@​Boshen](https://redirect.github.com/Boshen)) ##### Contributors - [@​Boshen](https://redirect.github.com/Boshen) - [@​renovate](https://redirect.github.com/renovate)\[bot] - [@​20jasper](https://redirect.github.com/20jasper) </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:eyJjcmVhdGVkSW5WZXIiOiI0NC4zOS4wIiwidXBkYXRlZEluVmVyIjoiNDQuMzkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |
||
|
|
fe444cc10a | perf(codegen): avoid allocations for single comment anchors (#25598) | ||
|
|
c29761b8f3 |
chore(deps): update rust crate syn to v3.0.4 (#26032)
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [syn](https://redirect.github.com/dtolnay/syn) | workspace.dependencies | patch | `3.0.3` → `3.0.4` | --- ### Release Notes <details> <summary>dtolnay/syn (syn)</summary> ### [`v3.0.4`](https://redirect.github.com/dtolnay/syn/releases/tag/3.0.4) [Compare Source](https://redirect.github.com/dtolnay/syn/compare/3.0.3...3.0.4) - Allow `safe fn` in `impl Parse for ForeignItemFn` ([#​2078](https://redirect.github.com/dtolnay/syn/issues/2078)) </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:eyJjcmVhdGVkSW5WZXIiOiI0NC4zOS4wIiwidXBkYXRlZEluVmVyIjoiNDQuMzkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |
||
|
|
32c2675084 |
chore(deps): update rust crates (#26024)
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [javascript-globals](https://redirect.github.com/oxc-project/javascript-globals) | workspace.dependencies | minor | `1.5.2` → `1.6.0` | | [papaya](https://redirect.github.com/ibraheemdev/papaya) | workspace.dependencies | patch | `0.2.4` → `0.2.5` | | [saphyr](https://redirect.github.com/saphyr-rs/saphyr) | workspace.dependencies | patch | `0.0.11` → `0.0.12` | | [similar](https://redirect.github.com/mitsuhiko/similar) | workspace.dependencies | minor | `3.1.2` → `3.2.0` | --- ### Release Notes <details> <summary>oxc-project/javascript-globals (javascript-globals)</summary> ### [`v1.6.0`](https://redirect.github.com/oxc-project/javascript-globals/blob/HEAD/CHANGELOG.md#160---2026-08-18) [Compare Source](https://redirect.github.com/oxc-project/javascript-globals/compare/javascript-globals-v1.5.2...javascript-globals-v1.6.0) ##### Added - add Bun globals ([#​275](https://redirect.github.com/oxc-project/javascript-globals/pull/275)) ##### Other - reduce Rust dev debug info ([#​271](https://redirect.github.com/oxc-project/javascript-globals/pull/271)) </details> <details> <summary>ibraheemdev/papaya (papaya)</summary> ### [`v0.2.5`](https://redirect.github.com/ibraheemdev/papaya/releases/tag/v0.2.5): 0.2.5 [Compare Source](https://redirect.github.com/ibraheemdev/papaya/compare/v0.2.4...v0.2.5) - Added the `fast-barrier` feature to allow opting out of process wide memory barriers, which can be expensive to initialize ([#​100](https://redirect.github.com/ibraheemdev/papaya/pull/100)). - Fixed a bug where blocking resizes could lead to deadlocks ([#​92](https://redirect.github.com/ibraheemdev/papaya/pull/92)). - `HashSet::retain` no longer takes a mutable reference ([#​101](https://redirect.github.com/ibraheemdev/papaya/pull/101)). </details> <details> <summary>saphyr-rs/saphyr (saphyr)</summary> ### [`v0.0.12`](https://redirect.github.com/saphyr-rs/saphyr/compare/v0.0.11...v0.0.12) [Compare Source](https://redirect.github.com/saphyr-rs/saphyr/compare/v0.0.11...v0.0.12) </details> <details> <summary>mitsuhiko/similar (similar)</summary> ### [`v3.2.0`](https://redirect.github.com/mitsuhiko/similar/blob/HEAD/CHANGELOG.md#320) [Compare Source](https://redirect.github.com/mitsuhiko/similar/compare/3.1.2...3.2.0) - Added structured, line-oriented three-way merging through `TextMerge`, with merge and diff3 conflict output, configurable labels and marker sizes, owned and borrowed inputs, byte output, and whitespace-insensitive comparison. - Added `WhitespaceMode` and `TextDiffConfig::whitespace_mode` for Git-style line comparisons that ignore changes in whitespace (`-b`) or all whitespace (`-w`). - Changed `Algorithm::Myers` to reduce unmatched/confusing records and use Git-style bounded, non-minimal splits on expensive searches, and added `Algorithm::RawMyers` for the previous shortest-edit-script behavior without output-changing heuristics. - Improved heuristics and performance for most algorithms other than LCS. - Improved large-input performance by avoiding quadratic Histogram scans. </details> --- ### Configuration 📅 **Schedule**: (in timezone Asia/Shanghai) - Branch creation - "before 10am on monday" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/oxc-project/oxc). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4zOS4wIiwidXBkYXRlZEluVmVyIjoiNDQuMzkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Cameron Clark <cameron.clark@hey.com> |
||
|
|
b016fd4110 |
chore(deps): update rust crate napi to v3.12.2 (#25963)
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [napi](https://redirect.github.com/napi-rs/napi-rs) | workspace.dependencies | patch | `3.12.1` → `3.12.2` | --- ### Release Notes <details> <summary>napi-rs/napi-rs (napi)</summary> ### [`v3.12.2`](https://redirect.github.com/napi-rs/napi-rs/releases/tag/napi-v3.12.2) [Compare Source](https://redirect.github.com/napi-rs/napi-rs/compare/napi-v3.12.1...napi-v3.12.2) ##### Fixed - *(napi)* memory safety in PromiseRaw callbacks and AbortSignal conversion ([#​3458](https://redirect.github.com/napi-rs/napi-rs/pull/3458)) </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:eyJjcmVhdGVkSW5WZXIiOiI0NC4zOS4wIiwidXBkYXRlZEluVmVyIjoiNDQuMzkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |
||
|
|
0389c4010e |
release(crates): oxc v0.146.0 (#25912)
### 🚀 Features - |
||
|
|
0db127cc16 |
release(apps): oxlint v1.79.0 && oxfmt v0.64.0 (#25866)
# Oxlint ### 💥 BREAKING CHANGES - |
||
|
|
4a4a1fb2e7 |
release(crates): oxc v0.145.0 (#25865)
### 💥 BREAKING CHANGES - |
||
|
|
300763f328 |
feat(packages/codegen): add full source map support (#25585)
## Summary
Align `oxc-codegen` source maps with Rust `oxc_codegen`, using the Rust implementation as the conformance oracle.
This PR:
- changes `printSync` to return `{ code, map? }`;
- returns a standard Source Map v3 object;
- exposes Rust’s generated source map through `codegen_conformance`;
- compares the complete JS and Rust source maps;
- supports Oxc `start`/`end` offsets and TS-ESTree `range` offsets;
- uses `sourceText` to convert UTF-16 offsets and recover original identifier spellings;
- validates both maps and no-maps builds in both `preserveParens` modes;
- aligns mapping placement across JavaScript, TypeScript, JSX, templates, imports, destructuring, delimiters, and postfix chains;
- handles astral characters and all ECMAScript line terminators.
`loc`-only ASTs are not supported for source maps.
## API change
```ts
const { code, map } = printSync(program, {
sourcemap: true,
sourceFileName: "input.js",
sourceText,
});
```
`map` is a Source Map v3 object:
```ts
interface SourceMap {
version: 3;
mappings: string;
names: string[];
sources: string[];
sourcesContent?: string[];
}
```
## Implementation
Mapped writes collect only:
- the generated UTF-16 offset;
- the original source offset;
- the optional original identifier name.
After printing, the generator builds line tables for the generated output and `sourceText`, converts the offsets to line/column positions, suppresses duplicate source positions, and encodes the result as base64 VLQ.
The no-maps builds continue to remove mapping-specific writes at build time.
## Validation flow
```mermaid
flowchart TB
fixture["Fixture<br/>filename + sourceText + parse options"]
fixture --> rustParse
fixture --> jsParse
subgraph rust["Rust oracle"]
direction TB
rustParse["Parse with oxc_parser"]
normalize["Normalize Rust-only AST information"]
rustPrint["Print with oxc_codegen<br/>source maps enabled"]
rustResult["Expected result<br/>{ code, map }"]
rustParse --> normalize
normalize --> rustPrint
rustPrint --> rustResult
end
subgraph js["JavaScript candidate"]
direction TB
jsParse["Parse ESTree with oxc-parser<br/>start/end or range offsets"]
plainPrint["Print with no-maps build"]
plainResult["Actual code"]
mappedPrint["Print with maps-enabled build"]
deferred["Record generated offsets,<br/>source offsets, and names"]
encode["Convert UTF-16 offsets to positions<br/>deduplicate and encode VLQ"]
mappedResult["Actual result<br/>{ code, map }"]
jsParse --> plainPrint
plainPrint --> plainResult
jsParse --> mappedPrint
mappedPrint --> deferred
deferred --> encode
encode --> mappedResult
end
rustParse --> parseGate
jsParse --> parseGate
rustResult --> codeGate
plainResult --> codeGate
mappedResult --> codeGate
rustResult --> mapGate
mappedResult --> mapGate
parseGate["Parse agreement<br/>Rust success requires no JS errors"]
codeGate["Code equality<br/>both JS builds equal Rust"]
mapGate["Source Map v3 equality<br/>mappings + names + sources + content"]
parseGate --> pass["Fixture passes"]
codeGate --> pass
mapGate --> pass
```
Each fixture runs with both `preserveParens: false` and `preserveParens: true`.
## AST normalization
Rust’s AST contains information that ESTree cannot represent. The Rust AST is normalized before printing so the comparison measures code generation rather than representation differences.
This includes:
- parenthesized function and arrow-expression flags;
- `import "m"` versus `import {} from "m"`;
- absent versus empty import-attribute clauses;
- `assert` versus `with` attribute keywords;
- the unavailable ESTree span for a complete `with` clause.
|
||
|
|
a169e4adf8 |
feat(napi/minify): expose property name mangling options (#24741)
The property mangler added in #24740 is not available through `oxc-minify`. This adds `mangleProps` for configuring it and `mangleCache` for reusing chosen property names. ### Feature - `include` selects property names to mangle. `exclude` and `reserved` keep names unchanged. - `quoted` also mangles quoted property names. `debug` produces readable output names. - `cache` fixes a property to a chosen name. A `false` value keeps the original name. - Property mangling works in both sync and async APIs. It is separate from identifier mangling. - When property mangling is enabled and the call succeeds, the result includes the updated `mangleCache`. - Invalid `mangleProps` regexes and cache entries are returned in `result.errors`. ### Design The binding converts JavaScript values into core minifier options and results. The core minifier still chooses names and rewrites properties, so both APIs follow the same rules. A parser error may leave an incomplete AST. In that case, property mangling is skipped and no partial cache is returned. ### Example ```js const result = minifySync( "test.js", "let local; obj._often; obj._rare; obj._often;", { compress: false, mangle: false, mangleProps: { include: "^_" }, }, ); result.code; // "let local;obj.e;obj.t;obj.e;" result.mangleCache; // { _often: "e", _rare: "t" } ``` ### Limitation - `include` and `exclude` use Rust regex syntax. They match anywhere unless the pattern includes anchors. - Do not reuse the cache on already-mangled output. A mapping is not always safe to apply twice. - The cache only remembers recorded mappings. It cannot find unchanged names in another input or in external code. Reserve, exclude, or pin those names before the first call. - String cache targets must be valid JavaScript `IdentifierName` values and cannot be `__proto__`, `constructor`, or `prototype`. The original name `__proto__` cannot be a cache key. AI assistance: OpenAI Codex and Claude were used for research, implementation, adversarial review, and verification. The contributor remains responsible for reviewing, understanding, and submitting the changes under the repository AI usage policy. |
||
|
|
9c6f1912b5 |
chore(deps): update rust crates (#25756)
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [futures](https://rust-lang.github.io/futures-rs) ([source](https://redirect.github.com/rust-lang/futures-rs)) | workspace.dependencies | patch | `0.3.33` → `0.3.34` | | [handlebars](https://redirect.github.com/sunng87/handlebars-rust) | workspace.dependencies | patch | `6.4.3` → `6.4.4` | | [javascript-globals](https://redirect.github.com/oxc-project/javascript-globals) | workspace.dependencies | patch | `1.5.1` → `1.5.2` | --- ### Release Notes <details> <summary>rust-lang/futures-rs (futures)</summary> ### [`v0.3.34`](https://redirect.github.com/rust-lang/futures-rs/blob/HEAD/CHANGELOG.md#0334---2026-08-11) [Compare Source](https://redirect.github.com/rust-lang/futures-rs/compare/0.3.33...0.3.34) - Preserve cloned waker identity. ([#​3032](https://redirect.github.com/rust-lang/futures-rs/issues/3032)) - Updato `syn` to 3. ([#​3028](https://redirect.github.com/rust-lang/futures-rs/issues/3028)) </details> <details> <summary>sunng87/handlebars-rust (handlebars)</summary> ### [`v6.4.4`](https://redirect.github.com/sunng87/handlebars-rust/blob/HEAD/CHANGELOG.md#644---2026-08-12) [Compare Source](https://redirect.github.com/sunng87/handlebars-rust/compare/v6.4.3...v6.4.4) - \[Changed] We have to revert `preserve_json_order` as a default feature. Users who need this can still enable it for handlebars-rust, or enable `preserve_order` for you serde\_json. </details> <details> <summary>oxc-project/javascript-globals (javascript-globals)</summary> ### [`v1.5.2`](https://redirect.github.com/oxc-project/javascript-globals/blob/HEAD/CHANGELOG.md#152---2026-08-13) [Compare Source](https://redirect.github.com/oxc-project/javascript-globals/compare/javascript-globals-v1.5.1...javascript-globals-v1.5.2) ##### Other - Auto update globals from upstream ([#​268](https://redirect.github.com/oxc-project/javascript-globals/pull/268)) - Auto update globals from upstream ([#​265](https://redirect.github.com/oxc-project/javascript-globals/pull/265)) - Auto update globals from upstream ([#​261](https://redirect.github.com/oxc-project/javascript-globals/pull/261)) - *(deps)* update rust crate serde\_json to v1.0.151 ([#​259](https://redirect.github.com/oxc-project/javascript-globals/pull/259)) - *(deps)* update rust crate serde to v1.0.229 ([#​256](https://redirect.github.com/oxc-project/javascript-globals/pull/256)) - update sponsor section - *(deps)* update rust crate rustc-hash to v2.1.3 ([#​247](https://redirect.github.com/oxc-project/javascript-globals/pull/247)) - standardize rustfmt config - normalize README sponsor section - add crates environment to release workflow </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:eyJjcmVhdGVkSW5WZXIiOiI0NC4yOS41IiwidXBkYXRlZEluVmVyIjoiNDQuMjkuNSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Cameron <cameron.clark@hey.com> |
||
|
|
2f5cdb1231 |
feat(minifier): add property name mangling (#24740)
Oxc can shorten variable names and private class names, but it cannot shorten property names such as `obj._field`. This change adds optional property mangling. It replaces #23772 and gives bundlers a way to use the same property names across several files. ### Feature - `include` selects names to mangle. `exclude` and `reserved` keep names unchanged. - The cache can give a property a fixed output name or keep it unchanged. - The mangler supports member access, object and class keys, destructuring, optional chains, the left side of `in`, and JSX property names. - `mangle_quoted` also handles strings and template literals used directly as property keys. `/* @__KEY__ */` and `/* #__KEY__ */` can mark one other string or template literal as a property key. - Short names are assigned in a stable order. More common properties get shorter names. Existing and reserved names are avoided. - Bundlers can collect names from several programs, create one shared map, and apply it to every program. - Numeric keys, `__proto__`, `constructor`, `prototype`, TypeScript-only keys, and private names are never changed by this pass. ### Design Property names are part of JavaScript syntax, not local scope. For this reason, the code lives in `oxc_minifier`. It only reuses the short-name generator from `oxc_mangler`. For one program, the order is: ```text collect names → assign names → rewrite once → compress → mangle variables and private names ``` Property names are rewritten before compression because compression can remove information about quotes and comments. For several programs, a bundler collects names from each program, merges the results, assigns one shared map, and rewrites each program once. Collection can run in parallel. All programs must use the same options. The shared map keeps property names consistent inside one build. The cache has a different job: it keeps fixed names and reservations across separate minify calls. ### Example With `include: "^_"` and `mangle_quoted: true`: ```js obj[`_field`] = 1; obj._field = 2; ``` becomes: ```js obj[`e`] = 1; obj.e = 2; ``` ### Limitation - Property mangling is unsafe when other code still uses the old property name. Public APIs and names shared with external code, host APIs, imported namespace objects, or separate builds must be excluded or reserved. - Quote handling is per use. Without `mangle_quoted`, `obj._field` may change while `obj["_field"]` does not. - The mangler cannot find names built at runtime or stored in arbitrary strings. Code that uses `eval`, `Function`, or `with` must reserve any affected names. - Compression may create a matching property after this pass has finished. For example, `'f' + 'oo_'` may later become `foo_` and will not be mangled. - TypeScript enum reverse mappings are not supported because the transform creates quoted strings. - Multi-program support is a caller API. The caller must collect every program that shares mangled properties before assigning names. The public `oxc-minify` API is stacked in #24741. The downstream multi-chunk integration is shown in rolldown/rolldown#10374. Supersedes #23772. AI assistance: OpenAI Codex and Claude were used for research, implementation, review, and testing. The contributor is responsible for reviewing and understanding the changes before submission. |
||
|
|
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 ([#​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> |
||
|
|
f62ed0e2b9 |
perf(diagnostics): optimize graphical number rendering (#25715)
Use direct integer formatting for plain graphical snippet coordinates and line numbers. Criterion shows 4-14% faster graphical rendering across the covered cases. Created with AI assistance. <sub>Stack created with <a href="https://github.com/github/gh-stack">GitHub Stacks CLI</a> • <a href="https://gh.io/stacks-feedback">Give Feedback 💬</a></sub> |
||
|
|
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 ([#​155](https://redirect.github.com/oxc-project/sort-package-json/pull/155)) ##### Other - *(deps)* update Rust dependencies ([#​157](https://redirect.github.com/oxc-project/sort-package-json/pull/157)) - borrow JSON strings during sorting ([#​156](https://redirect.github.com/oxc-project/sort-package-json/pull/156)) - reduce Rust dev debug info ([#​153](https://redirect.github.com/oxc-project/sort-package-json/pull/153)) - *(deps)* update rust crate ignore to v0.4.33 ([#​151](https://redirect.github.com/oxc-project/sort-package-json/pull/151)) - *(deps)* update rust crates ([#​144](https://redirect.github.com/oxc-project/sort-package-json/pull/144)) - *(deps)* update rust crate ignore to v0.4.30 ([#​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> |
||
|
|
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. |
||
|
|
b2f8fdf230 |
chore(deps): update rust crate oxc-browserslist to v5.0.1 (#25554)
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [oxc-browserslist](https://redirect.github.com/oxc-project/oxc-browserslist) | workspace.dependencies | patch | `5.0.0` → `5.0.1` | --- ### Release Notes <details> <summary>oxc-project/oxc-browserslist (oxc-browserslist)</summary> ### [`v5.0.1`](https://redirect.github.com/oxc-project/oxc-browserslist/blob/HEAD/CHANGELOG.md#501---2026-08-12) [Compare Source](https://redirect.github.com/oxc-project/oxc-browserslist/compare/oxc-browserslist-v5.0.0...oxc-browserslist-v5.0.1) ##### Fixed - use mktime64 on Windows ([#​835](https://redirect.github.com/oxc-project/oxc-browserslist/pull/835)) </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> |
||
|
|
a4478e960a |
feat(codegen): add oxc-codegen package (#25488)
Add `oxc-codegen` package - a printer written in TS. ### Features - Prints JS, JSX, TS, TSX. - Matches `oxc_codegen` exactly on all Test262, TypeScript, Acorn-JSX fixtures. - Very fast. ### Deficiencies - Pretty-printing only (no compact/minified output). - No support for printing comments. - Source map support is semi-there, but largely untested, and poor API (design doc has some ideas on how to improve it). ### This PR adds - The printer code. - Conformance testing infra. - Further tests for edge cases. - README. - Design doc - how it differs from `oxc_codegen` and why, what produces the perf. ### This PR doesn't add - Not integrated into CI or release pipeline. ### Notes This started as a slop port of `oxc_codegen`. I've iterated on that base, cleaned it up a lot, and at least skimmed through all of it. I think it's in fairly decent shape. The design doc is I think worth a read. It explains the rationale for the choices, in particular the "1 codebase, 4 builds" approach. I've put it in a new top-level directory called `packages`. It's not an app, so didn't seem to me to fit alongside `apps/oxlint` and `apps/oxfmt`. It's pure JS, so not like e.g. `napi/parser`. And it felt too heavyweight to put into `npm` dir. But maybe there's a better place for it. Co-authored-by: Cameron <cameron.clark@hey.com> |
||
|
|
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 ([#​833](https://redirect.github.com/oxc-project/oxc-browserslist/pull/833)) - rework bundled data around a canonical version table ([#​830](https://redirect.github.com/oxc-project/oxc-browserslist/pull/830)) - cache current node query ([#​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> |
||
|
|
a2433117d2 |
fix(formatter_yaml): bump oxc-yaml-parser for contentless block scalar (#25519)
Fixes #25484 |
||
|
|
0fa91283fd |
refactor(formatter,formatter_tests): move out prettier JS,TS,JSDoc conformance from tasks/ (#25477)
Migration from tasks/prettier_conformance to each crate test using oxc_formatter_tests, for JS/TS and JSDoc. |
||
|
|
e4437275de |
refactor(formatter_css,formatter_json,formatter_graphql,formatter_tests): move out prettier CSS,JSON,GraphQL conformance from tasks/ (#25472)
Migration from tasks/prettier_conformance to each crate test using oxc_formatter_tests, for CSS, JSON, and GraphQL. |
||
|
|
72c00f32ea |
refactor(formatter_yaml,formatter_tests): move out prettier YAML conformance from tasks/ (#25469)
Migration from `tasks/prettier_conformance` to each crate test using `oxc_formatter_tests`, for YAML. |
||
|
|
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 ([#​826](https://redirect.github.com/oxc-project/oxc-browserslist/pull/826)) ##### Other - update dependencies ([#​828](https://redirect.github.com/oxc-project/oxc-browserslist/pull/828)) - Update rust crates ([#​825](https://redirect.github.com/oxc-project/oxc-browserslist/pull/825)) - Update browserslist ([#​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> |
||
|
|
6ef3984410 |
refactor(ci): self-provision prettier suite in oxc_formatter_tests (#25467)
Remove the Prettier related stuff from the conformance, which is purely aimed at JS/TS. Instead, `oxc_formatter_tests` manage Prettier's test fixtures along with Oxfmt. |
||
|
|
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 |
||
|
|
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. |
||
|
|
c42d6397ea |
release(apps): oxlint v1.78.0 && oxfmt v0.63.0 (#25473)
# Oxlint ### 💥 BREAKING CHANGES - |
||
|
|
b6f1458dec |
release(crates): oxc v0.144.0 (#25474)
### 💥 BREAKING CHANGES - |
||
|
|
b91dc3a1f1 |
chore(deps): update napi (#25457)
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Adoption](https://docs.renovatebot.com/merge-confidence/) | [Passing](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | Type | Update | |---|---|---|---|---|---|---|---| | [@napi-rs/cli](https://napi.rs/) ([source](https://redirect.github.com/napi-rs/napi-rs)) | [`3.8.3` → `3.8.5`](https://renovatebot.com/diffs/npm/@napi-rs%2fcli/3.8.3/3.8.5) |  |  |  |  | pnpm.catalog.default | patch | | [napi](https://redirect.github.com/napi-rs/napi-rs) | `3.12.0` → `3.12.1` |  |  |  |  | workspace.dependencies | patch | | [napi-build](https://redirect.github.com/napi-rs/napi-rs) | `2.4.0` → `2.4.1` |  |  |  |  | workspace.dependencies | patch | | [napi-derive](https://redirect.github.com/napi-rs/napi-rs) | `3.6.2` → `3.6.3` |  |  |  |  | workspace.dependencies | patch | --- ### Release Notes <details> <summary>napi-rs/napi-rs (@​napi-rs/cli)</summary> ### [`v3.8.5`](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.8.4...a5b5f277ab56e7e7e903b392b15c79da7a6520ce) [Compare Source](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.8.4...@napi-rs/cli@3.8.5) ### [`v3.8.4`](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.8.3...@napi-rs/cli@3.8.4) [Compare Source](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.8.3...@napi-rs/cli@3.8.4) </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. 👻 **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:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMi4wIiwidXBkYXRlZEluVmVyIjoiNDQuMTIuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Cameron <cclark@cloudflare.com> |
||
|
|
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. |
||
|
|
2123b9caf6 |
chore(deps): update rust crates (#25449)
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [base64](https://redirect.github.com/marshallpierce/rust-base64) | workspace.dependencies | patch | `0.23.0` → `0.23.1` | | [encoding_rs_io](https://redirect.github.com/BurntSushi/encoding_rs_io) | workspace.dependencies | patch | `0.1.7` → `0.1.8` | | [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.31` → `0.4.33` | | [similar](https://redirect.github.com/mitsuhiko/similar) | workspace.dependencies | patch | `3.1.1` → `3.1.2` | | [ureq](https://redirect.github.com/algesten/ureq) | workspace.dependencies | minor | `3.3.0` → `3.4.0` | --- ### Release Notes <details> <summary>marshallpierce/rust-base64 (base64)</summary> ### [`v0.23.1`](https://redirect.github.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0231) [Compare Source](https://redirect.github.com/marshallpierce/rust-base64/compare/v0.23.0...v0.23.1) - Make the tests build again on non-SIMD architectures </details> <details> <summary>BurntSushi/encoding_rs_io (encoding_rs_io)</summary> ### [`v0.1.8`](https://redirect.github.com/BurntSushi/encoding_rs_io/compare/0.1.7...0.1.8) [Compare Source](https://redirect.github.com/BurntSushi/encoding_rs_io/compare/0.1.7...0.1.8) </details> <details> <summary>BurntSushi/ripgrep (ignore)</summary> ### [`v0.4.33`](https://redirect.github.com/BurntSushi/ripgrep/compare/ignore-0.4.32...ignore-0.4.33) [Compare Source](https://redirect.github.com/BurntSushi/ripgrep/compare/ignore-0.4.32...ignore-0.4.33) ### [`v0.4.32`](https://redirect.github.com/BurntSushi/ripgrep/compare/ignore-0.4.31...ignore-0.4.32) [Compare Source](https://redirect.github.com/BurntSushi/ripgrep/compare/ignore-0.4.31...ignore-0.4.32) </details> <details> <summary>mitsuhiko/similar (similar)</summary> ### [`v3.1.2`](https://redirect.github.com/mitsuhiko/similar/blob/HEAD/CHANGELOG.md#312) [Compare Source](https://redirect.github.com/mitsuhiko/similar/compare/3.1.1...3.1.2) - Fixed `Algorithm::Lcs` deadline fallback emitting edits twice, which produced out-of-bounds `DiffOp` ranges and panics when consuming timed-out diffs. [#​97](https://redirect.github.com/mitsuhiko/similar/issues/97) - Fixed `Algorithm::Lcs` reporting identical subranges with zero-based indices instead of preserving the supplied range offsets. [#​98](https://redirect.github.com/mitsuhiko/similar/issues/98) - Fixed `Algorithm::Lcs` and `Algorithm::Hunt` emitting zero-length delete operations when both inputs are empty. [#​99](https://redirect.github.com/mitsuhiko/similar/issues/99) </details> <details> <summary>algesten/ureq (ureq)</summary> ### [`v3.4.0`](https://redirect.github.com/algesten/ureq/blob/HEAD/CHANGELOG.md#340) [Compare Source](https://redirect.github.com/algesten/ureq/compare/3.3.0...3.4.0) - Seal RequestExt (technically breaking) [#​1189](https://redirect.github.com/algesten/ureq/issues/1189) - Send canonical Basic authentication scheme to CONNECT proxies [#​1185](https://redirect.github.com/algesten/ureq/issues/1185) - Establish target TLS through HTTPS CONNECT proxies [#​1183](https://redirect.github.com/algesten/ureq/issues/1183) - Update rustls-platform-verifier to 0.7.0 [#​1174](https://redirect.github.com/algesten/ureq/issues/1174) - Fix pooled connections never aging out according to max\_idle\_age [#​1172](https://redirect.github.com/algesten/ureq/issues/1172) - Strip brackets from IPv6-literal hosts before TLS SNI/ServerName [#​1171](https://redirect.github.com/algesten/ureq/issues/1171) - RequestExt::middleware\_config for conf inside middleware [#​1169](https://redirect.github.com/algesten/ureq/issues/1169) </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:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMi4wIiwidXBkYXRlZEluVmVyIjoiNDQuMTIuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |
||
|
|
e23dccf338 |
fix(formatter_css): bump oxc-css-parser to accept unknown at-rule with interpolated (#25277)
Fixes #25272 |