mirror of
https://github.com/oxc-project/oxc.git
synced 2026-11-04 10:29:58 +00:00
main
1693
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
3fd78d7451 |
fix(codegen): preserve names in duplicate source mappings (#26051)
When an unnamed parent node and a mangled identifier begin at the same source position, codegen deduplicated the identifier mapping. This retained location data but discarded the original identifier name, leaving consumers unable to restore inferred function names in source-mapped Node stack traces.
```mermaid
flowchart LR
A[AssignmentExpression mapping<br/>unnamed] --> B[Token at source position P<br/>name: none]
C[Identifier mapping<br/>name: longName] --> D{Same source position P?}
D -->|before| E[Drop duplicate<br/>names: empty]
D -->|after| F[Enrich existing token<br/>name: longName]
```
### Changes
- Cache whether the last emitted token has a name, keeping duplicate-position handling cheap in the source-map builder hot path.
- Enrich an unnamed duplicate token when a later identifier mapping supplies the original name.
- Add a unit regression test for the builder behavior.
- Extend the existing Node source-map stack-trace snapshot test with a mangled ES module fixture.
The Node fixture verifies:
```text
function longFunctionName(longName) { ... }
↓ mangled
function e(e) { ... }
```
and asserts that the source map includes both original names while Node restores the inferred inner frame as:
```text
at longName (/project/input.js:6:15)
```
|
||
|
|
f3fcdcc61b |
release(apps): oxlint v1.91.0 && oxfmt v0.76.0 (#28718)
# Oxlint ### 🚀 Features - |
||
|
|
f799f174b5 |
release(crates): oxc v0.157.0 (#28719)
### 🚀 Features - |
||
|
|
b6f1ac9b05 |
perf(formatter_markdown): bump parser to 0.0.4 and skip unread work (#28713)
- bump oxc-markdown-parser 0.0.4 which skips autolink literal attempts that cannot match - Compute a text's next words only under `proseWrap: always`, the only mode that reads them - Print link destinations with nothing to escape as is About 15% CPU instruction reduction. |
||
|
|
633ee960da |
perf(formatter_css): use u32 spans (#28708)
- bump oxc-css-parser 0.0.19 which changes `Span` from `usize` to `u32` - update conversion codes Peak memory is reduced 5% ~ 20% in large CSS file. |
||
|
|
f680ee1f2e |
perf(formatter_yaml): use multiline flag for flow scalars (#28707)
- bump `oxc-yaml-parser` which has `multiline` flag - eliminate all `\n` contains check from formatter Reduce 5~7% CPU instructions. |
||
|
|
ff7c203711 |
perf(formatter_css): avoid repeated scans and allocations in values (#28706)
Use `smallvec` and optimize `split_comma_groups()`. |
||
|
|
46f8efd1fb |
perf(formatter_graphql): print block string lines borrowed from the source (#28701)
GraphQL block string `"""..."""` may or may not contain CR,CRLF. But if not, we can use source as-is. |
||
|
|
fef809a7f3 |
fix(formatter_htmlish): handle XHTML (#28703)
- bump `oxc-htmlish-parser` to support Xhtml dialect - Use it in formatter |
||
|
|
ffdb114504 |
refactor(lexer): convert cpu_version and cpu_versions macros to proc macros (#28681)
Part of effort to move to runtime CPU feature detection. The `cpu_version` and `cpu_versions` macros had become unweildly, and we'd reached the edge of what it's possible to do with declarative macros, even using all the tt-muncher tricks. Some improvements were impractical to make. Convert both macros to proc macros in a new `oxc_lexer_macros` crate. The proc macros are half as many lines of code, easier to understand, and more capable. This also allows getting rid of the weird `apply` wrapper: ```rust // Before #[apply(cpu_version(Avx2))] // After #[cpu_version(Avx2)] ``` Rename `cpu_versions` to `cpu_multiversion`, which describes it better. |
||
|
|
82007bd941 |
ci(lexer): remove oxc_lexer benchmark (#28664)
Remove the wallclock benchmark for `oxc_lexer`. It's not accurate enough to be useful. |
||
|
|
0baa3011fb |
chore(deps): update rust crates (#28608)
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [bitflags](https://redirect.github.com/bitflags/bitflags) | workspace.dependencies | patch | `2.13.1` → `2.13.2` | | [bpaf](https://redirect.github.com/pacak/bpaf) | workspace.dependencies | patch | `0.9.27` → `0.9.28` | | [console](https://redirect.github.com/console-rs/console) | workspace.dependencies | patch | `0.16.4` → `0.16.6` | | [criterion2](https://bheisler.github.io/criterion.rs/book/index.html) ([source](https://redirect.github.com/Boshen/criterion2.rs)) | workspace.dependencies | patch | `3.0.4` → `3.0.5` | | [encoding_rs](https://docs.rs/encoding_rs/) ([source](https://redirect.github.com/hsivonen/encoding_rs)) | workspace.dependencies | patch | `0.8.35` → `0.8.44` | | [fast-glob](https://redirect.github.com/oxc-project/fast-glob) | workspace.dependencies | patch | `1.1.1` → `1.1.2` | | [hmac-sha1-compact](https://redirect.github.com/jedisct1/rust-hmac-sha1) | workspace.dependencies | patch | `1.1.7` → `1.1.8` | | [ignore](https://redirect.github.com/BurntSushi/ripgrep) ([source](https://redirect.github.com/BurntSushi/ripgrep/tree/HEAD/crates/ignore)) | workspace.dependencies | patch | `0.4.33` → `0.4.34` | | [insta](https://insta.rs/) ([source](https://redirect.github.com/mitsuhiko/insta)) | workspace.dependencies | minor | `1.48.0` → `1.49.0` | | [lazy-regex](https://redirect.github.com/Canop/lazy-regex) | workspace.dependencies | patch | `3.6.1` → `3.6.2` | | [mimalloc-safe](https://redirect.github.com/napi-rs/mimalloc-safe) | workspace.dependencies | patch | `0.1.66` → `0.1.69` | | [rand](https://rust-random.github.io/book) ([source](https://redirect.github.com/rust-random/rand)) | workspace.dependencies | patch | `0.10.2` → `0.10.3` | | [saphyr](https://redirect.github.com/saphyr-rs/saphyr) | workspace.dependencies | minor | `0.2.0` → `0.3.0` | | [serde_json](https://redirect.github.com/serde-rs/json) | workspace.dependencies | patch | `1.0.151` → `1.0.154` | | [similar](https://redirect.github.com/mitsuhiko/similar) | workspace.dependencies | patch | `3.2.0` → `3.2.1` | | [smallvec](https://smallvec.rs) ([source](https://redirect.github.com/servo/rust-smallvec)) | workspace.dependencies | patch | `1.16.0` → `1.16.4` | | [syn](https://redirect.github.com/dtolnay/syn) | workspace.dependencies | patch | `3.0.5` → `3.0.9` | | [textwrap](https://redirect.github.com/mgeisler/textwrap) | workspace.dependencies | patch | `0.16.2` → `0.16.4` | | [toml](https://redirect.github.com/toml-rs/toml) | workspace.dependencies | patch | `1.1.5+spec-1.1.0` → `1.1.8` | | [unicode-id-start](https://redirect.github.com/Boshen/unicode-id-start) | workspace.dependencies | minor | `1.4.0` → `1.5.0` | | [unicode-width](https://redirect.github.com/unicode-rs/unicode-width) | workspace.dependencies | patch | `0.2.2` → `0.2.3` | | [ureq](https://redirect.github.com/algesten/ureq) | workspace.dependencies | minor | `3.4.1` → `3.5.0` | --- ### Release Notes <details> <summary>bitflags/bitflags (bitflags)</summary> ### [`v2.13.2`](https://redirect.github.com/bitflags/bitflags/blob/HEAD/CHANGELOG.md#2132) [Compare Source](https://redirect.github.com/bitflags/bitflags/compare/2.13.1...2.13.2) #### What's Changed - Flags: adjust order of elements in manual implementation example by [@​DanielEScherzer](https://redirect.github.com/DanielEScherzer) in [#​494](https://redirect.github.com/bitflags/bitflags/pull/494) - Re-pull const declarations outside of nested const by [@​KodrAus](https://redirect.github.com/KodrAus) in [#​496](https://redirect.github.com/bitflags/bitflags/pull/496) **Full Changelog**: <https://github.com/bitflags/bitflags/compare/2.13.1...2.13.2> </details> <details> <summary>pacak/bpaf (bpaf)</summary> ### [`v0.9.28`](https://redirect.github.com/pacak/bpaf/blob/HEAD/Changelog.md#bpaf-0928---2026-09-17) [Compare Source](https://redirect.github.com/pacak/bpaf/compare/v0.9.27...v0.9.28) - more consistent formatting for .adjacent() items ([#​461](https://redirect.github.com/pacak/bpaf/issues/461)) - try harder not to corrupt completion output with very long help </details> <details> <summary>console-rs/console (console)</summary> ### [`v0.16.6`](https://redirect.github.com/console-rs/console/releases/tag/0.16.6) [Compare Source](https://redirect.github.com/console-rs/console/compare/0.16.4...0.16.6) #### What's Changed - Fix truncate_str panicking mid-character without ansi-parsing by [@​lenamonj](https://redirect.github.com/lenamonj) in [#​296](https://redirect.github.com/console-rs/console/pull/296) - perf: accelerate printable ASCII text width by [@​dexhunter](https://redirect.github.com/dexhunter) in [#​297](https://redirect.github.com/console-rs/console/pull/297) - fix: measure the truncation tail in visible columns, not raw width by [@​youdie006](https://redirect.github.com/youdie006) in [#​298](https://redirect.github.com/console-rs/console/pull/298) - Prepare 0.16.6 by [@​djc](https://redirect.github.com/djc) in [#​299](https://redirect.github.com/console-rs/console/pull/299) </details> <details> <summary>Boshen/criterion2.rs (criterion2)</summary> ### [`v3.0.5`](https://redirect.github.com/Boshen/criterion2.rs/blob/HEAD/CHANGELOG.md#305---2026-10-25) ##### Fixed - address new clippy and rustc lints for Rust 1.97.0 ##### Other - *(deps)* update rust crate codspeed to v6 ([#​209](https://redirect.github.com/Boshen/criterion2.rs/pull/209)) - *(deps)* update rust crate tokio to v1.54.1 ([#​208](https://redirect.github.com/Boshen/criterion2.rs/pull/208)) - *(deps)* update rust crates ([#​207](https://redirect.github.com/Boshen/criterion2.rs/pull/207)) - *(deps)* update dependency rust to v1.99.1 ([#​206](https://redirect.github.com/Boshen/criterion2.rs/pull/206)) - *(deps)* update rust crate serde_json to v1.0.154 ([#​205](https://redirect.github.com/Boshen/criterion2.rs/pull/205)) - *(deps)* update rust crate tokio to v1.53.2 ([#​204](https://redirect.github.com/Boshen/criterion2.rs/pull/204)) - *(deps)* update dependency rust to v1.99.0 ([#​203](https://redirect.github.com/Boshen/criterion2.rs/pull/203)) - *(deps)* update rust crates ([#​202](https://redirect.github.com/Boshen/criterion2.rs/pull/202)) - *(deps)* update dependency rust to v1.98.1 ([#​201](https://redirect.github.com/Boshen/criterion2.rs/pull/201)) - *(deps)* update dependency rust to v1.98.0 ([#​199](https://redirect.github.com/Boshen/criterion2.rs/pull/199)) - *(deps)* update rust crate futures to v0.3.34 ([#​198](https://redirect.github.com/Boshen/criterion2.rs/pull/198)) - *(deps)* update swatinem/rust-cache action to v2.9.2 ([#​197](https://redirect.github.com/Boshen/criterion2.rs/pull/197)) - *(deps)* update rust crate bpaf to v0.9.27 ([#​196](https://redirect.github.com/Boshen/criterion2.rs/pull/196)) - *(deps)* update rust crates ([#​195](https://redirect.github.com/Boshen/criterion2.rs/pull/195)) - *(deps)* update taiki-e/install-action digest to [`69db1bb`](https://redirect.github.com/Boshen/criterion2.rs/commit/69db1bb) ([#​194](https://redirect.github.com/Boshen/criterion2.rs/pull/194)) - *(deps)* update rust crates ([#​193](https://redirect.github.com/Boshen/criterion2.rs/pull/193)) - *(deps)* update github actions ([#​192](https://redirect.github.com/Boshen/criterion2.rs/pull/192)) - remove dead WASI test step ([#​191](https://redirect.github.com/Boshen/criterion2.rs/pull/191)) - *(deps)* update dependency rust to v1.97.1 ([#​190](https://redirect.github.com/Boshen/criterion2.rs/pull/190)) - *(deps)* update taiki-e/install-action digest to [`e658deb`](https://redirect.github.com/Boshen/criterion2.rs/commit/e658deb) ([#​189](https://redirect.github.com/Boshen/criterion2.rs/pull/189)) - make the MSRV job actually test its MSRV toolchain ([#​188](https://redirect.github.com/Boshen/criterion2.rs/pull/188)) - *(deps)* update dependency rust to v1.97.0 ([#​187](https://redirect.github.com/Boshen/criterion2.rs/pull/187)) - *(deps)* update rust to v1.96.1 ([#​186](https://redirect.github.com/Boshen/criterion2.rs/pull/186)) - *(deps)* update rust crate rand to v0.10.2 ([#​185](https://redirect.github.com/Boshen/criterion2.rs/pull/185)) - *(deps)* update github actions ([#​184](https://redirect.github.com/Boshen/criterion2.rs/pull/184)) - *(deps)* update rust crate codspeed to v5 ([#​183](https://redirect.github.com/Boshen/criterion2.rs/pull/183)) - *(deps)* update taiki-e/install-action digest to [`96c7780`](https://redirect.github.com/Boshen/criterion2.rs/commit/96c7780) ([#​182](https://redirect.github.com/Boshen/criterion2.rs/pull/182)) - *(deps)* update github actions ([#​181](https://redirect.github.com/Boshen/criterion2.rs/pull/181)) </details> <details> <summary>hsivonen/encoding_rs (encoding_rs)</summary> ### [`v0.8.42`](https://redirect.github.com/hsivonen/encoding_rs/compare/v0.8.41...v0.8.42) [Compare Source](https://redirect.github.com/hsivonen/encoding_rs/compare/v0.8.41...v0.8.42) ### [`v0.8.41`](https://redirect.github.com/hsivonen/encoding_rs/compare/v0.8.40...v0.8.41) [Compare Source](https://redirect.github.com/hsivonen/encoding_rs/compare/v0.8.40...v0.8.41) ### [`v0.8.40`](https://redirect.github.com/hsivonen/encoding_rs/compare/v0.8.35...v0.8.40) [Compare Source](https://redirect.github.com/hsivonen/encoding_rs/compare/v0.8.35...v0.8.40) </details> <details> <summary>oxc-project/fast-glob (fast-glob)</summary> ### [`v1.1.2`](https://redirect.github.com/oxc-project/fast-glob/blob/HEAD/CHANGELOG.md#112---2026-09-21) [Compare Source](https://redirect.github.com/oxc-project/fast-glob/compare/v1.1.1...v1.1.2) ##### Fixed - recognize globstars in brace branches ([#​181](https://redirect.github.com/oxc-project/fast-glob/pull/181)) - keep character classes within path segments ([#​179](https://redirect.github.com/oxc-project/fast-glob/pull/179)) - validate the brace group limit ([#​178](https://redirect.github.com/oxc-project/fast-glob/pull/178)) - track syntactic brace depth ([#​177](https://redirect.github.com/oxc-project/fast-glob/pull/177)) </details> <details> <summary>jedisct1/rust-hmac-sha1 (hmac-sha1-compact)</summary> ### [`v1.1.8`](https://redirect.github.com/jedisct1/rust-hmac-sha1/compare/1.1.7...1.1.8) [Compare Source](https://redirect.github.com/jedisct1/rust-hmac-sha1/compare/1.1.7...1.1.8) </details> <details> <summary>BurntSushi/ripgrep (ignore)</summary> ### [`v0.4.34`](https://redirect.github.com/BurntSushi/ripgrep/compare/ignore-0.4.33...ignore-0.4.34) [Compare Source](https://redirect.github.com/BurntSushi/ripgrep/compare/ignore-0.4.33...ignore-0.4.34) </details> <details> <summary>mitsuhiko/insta (insta)</summary> ### [`v1.49.0`](https://redirect.github.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#1490) [Compare Source](https://redirect.github.com/mitsuhiko/insta/compare/1.48.0...1.49.0) - Allow `Option<&OsStr>` snapshot names, such as `Path::file_name()`, without explicit string conversion. [#​929](https://redirect.github.com/mitsuhiko/insta/issues/929) ([@​dislogical](https://redirect.github.com/dislogical)) - Add prebuilt `cargo-insta` binaries for ARM64 Linux (`aarch64-unknown-linux-gnu`). [#​942](https://redirect.github.com/mitsuhiko/insta/issues/942) ([@​aljohri](https://redirect.github.com/aljohri)) - Fix JSON serialization of maps keyed by unit enum variants. Keys use the serialized variant name, including serde renames. [#​934](https://redirect.github.com/mitsuhiko/insta/issues/934) ([@​teddytennant](https://redirect.github.com/teddytennant)) - Remove trailing semicolons from serialization macro bodies to avoid compiler warnings when used in expression position. [#​940](https://redirect.github.com/mitsuhiko/insta/issues/940) ([@​Tiwalun](https://redirect.github.com/Tiwalun)) - Mention `INSTA_UPDATE=always` in snapshot mismatch hints for file snapshots. [#​927](https://redirect.github.com/mitsuhiko/insta/issues/927) ([@​hiro-nikaitou](https://redirect.github.com/hiro-nikaitou)) - Update the lockfile's `tempfile` and `rustix` dependencies to fix builds with newer Rust toolchains. [#​939](https://redirect.github.com/mitsuhiko/insta/issues/939) - Fix `cargo insta test --all-targets --test-runner nextest` failing with "Can't mix --doc with other target selecting options". Like `cargo test --all-targets`, it no longer runs doctests. [#​460](https://redirect.github.com/mitsuhiko/insta/issues/460) </details> <details> <summary>Canop/lazy-regex (lazy-regex)</summary> ### [`v3.6.2`](https://redirect.github.com/Canop/lazy-regex/blob/HEAD/CHANGELOG.md#v362---2026-10-03) - `syn` dependency updated to 3.0. Lighten compilation for programs already importing syn 3 (serde, this_error, etc.) - Thanks [@​hwright](https://redirect.github.com/hwright) - fix "unreachable_code" warning in regex_switch still emitted by rustc < 1.83 - explicit compilation error when neither a regex feature nor "lite" is enabled </details> <details> <summary>napi-rs/mimalloc-safe (mimalloc-safe)</summary> ### [`v0.1.69`](https://redirect.github.com/napi-rs/mimalloc-safe/blob/HEAD/CHANGELOG.md#0169---2026-10-29) [Compare Source](https://redirect.github.com/napi-rs/mimalloc-safe/compare/mimalloc-safe-v0.1.68...mimalloc-safe-v0.1.69) ##### Chore - Updated the following local packages: libmimalloc-sys2 ### [`v0.1.68`](https://redirect.github.com/napi-rs/mimalloc-safe/blob/HEAD/CHANGELOG.md#0168---2026-10-24) [Compare Source](https://redirect.github.com/napi-rs/mimalloc-safe/compare/mimalloc-safe-v0.1.67...mimalloc-safe-v0.1.68) ##### Features - *(sys)* Add free_use_pagemap feature ([#​109](https://redirect.github.com/napi-rs/mimalloc-safe/pull/109)) ##### Bug Fixes - *(ci)* Locate armv7 GCC runtime when using Clang ([#​111](https://redirect.github.com/napi-rs/mimalloc-safe/pull/111)) ##### Chore - *(deps)* Update mimalloc3 to v3.6.0 ([#​110](https://redirect.github.com/napi-rs/mimalloc-safe/pull/110)) - *(deps)* Update emnapi to v2.0.0-beta.2 ([#​108](https://redirect.github.com/napi-rs/mimalloc-safe/pull/108)) - *(deps)* Update yarn to v4.18.1 ([#​107](https://redirect.github.com/napi-rs/mimalloc-safe/pull/107)) - *(deps)* Update dependency [@​napi-rs/cli](https://redirect.github.com/napi-rs/cli) to v3.10.9 ([#​103](https://redirect.github.com/napi-rs/mimalloc-safe/pull/103)) - *(deps)* Update dependency [@​napi-rs/cli](https://redirect.github.com/napi-rs/cli) to v3.10.9 ([#​114](https://redirect.github.com/napi-rs/mimalloc-safe/pull/114)) ### [`v0.1.67`](https://redirect.github.com/napi-rs/mimalloc-safe/blob/HEAD/CHANGELOG.md#0167---2026-09-14) [Compare Source](https://redirect.github.com/napi-rs/mimalloc-safe/compare/mimalloc-safe-v0.1.66...mimalloc-safe-v0.1.67) ##### Chore - *(deps)* Update mimalloc to v2.5.2 and mimalloc3 to v3.5.2 + init fix ([#​104](https://redirect.github.com/napi-rs/mimalloc-safe/pull/104)) - *(deps)* Update [@​napi-rs/cli](https://redirect.github.com/napi-rs/cli) and emnapi, group emnapi in renovate ([#​106](https://redirect.github.com/napi-rs/mimalloc-safe/pull/106)) </details> <details> <summary>rust-random/rand (rand)</summary> ### [`v0.10.3`](https://redirect.github.com/rust-random/rand/blob/HEAD/CHANGELOG.md#0103--2026-09-20) [Compare Source](https://redirect.github.com/rust-random/rand/compare/0.10.2...0.10.3) ##### Fixes - Fix `WeightedIndex` panic when the sum of float weights is infinite; return `Error::Overflow` instead ([#​1808]) - Fix spurious `Error::NonFinite` from `Uniform::new_inclusive` on large finite float ranges such as `0.0..=f64::MAX` ([#​1821]) - Fix possible panic due to sampling a deserialized `Uniform<char>` ([#​1831]) ##### Changes - Report exact remaining lengths from `WeightedIndex::weights()` and reduce overhead when reading weights ([#​1838]) [#​1808]: https://redirect.github.com/rust-random/rand/pull/1808 [#​1821]: https://redirect.github.com/rust-random/rand/pull/1821 [#​1831]: https://redirect.github.com/rust-random/rand/pull/1831 [#​1838]: https://redirect.github.com/rust-random/rand/pull/1838 </details> <details> <summary>saphyr-rs/saphyr (saphyr)</summary> ### [`v0.3.3`](https://redirect.github.com/saphyr-rs/saphyr/compare/v0.3.2...v0.3.3) [Compare Source](https://redirect.github.com/saphyr-rs/saphyr/compare/v0.3.2...v0.3.3) ### [`v0.3.2`](https://redirect.github.com/saphyr-rs/saphyr/compare/v0.3.1...v0.3.2) [Compare Source](https://redirect.github.com/saphyr-rs/saphyr/compare/v0.3.1...v0.3.2) ### [`v0.3.1`](https://redirect.github.com/saphyr-rs/saphyr/compare/v0.3.0...v0.3.1) [Compare Source](https://redirect.github.com/saphyr-rs/saphyr/compare/v0.3.0...v0.3.1) ### [`v0.3.0`](https://redirect.github.com/saphyr-rs/saphyr/compare/v0.2.2...v0.3.0) [Compare Source](https://redirect.github.com/saphyr-rs/saphyr/compare/v0.2.2...v0.3.0) </details> <details> <summary>serde-rs/json (serde_json)</summary> ### [`v1.0.154`](https://redirect.github.com/serde-rs/json/releases/tag/v1.0.154) [Compare Source](https://redirect.github.com/serde-rs/json/compare/v1.0.153...v1.0.154) - Support preserve_order in no_std builds ([#​1333](https://redirect.github.com/serde-rs/json/issues/1333), thanks [@​razmser](https://redirect.github.com/razmser)) ### [`v1.0.153`](https://redirect.github.com/serde-rs/json/releases/tag/v1.0.153) [Compare Source](https://redirect.github.com/serde-rs/json/compare/v1.0.152...v1.0.153) - Report invalid UTF-8 at the first bad byte ([#​1345](https://redirect.github.com/serde-rs/json/issues/1345), thanks [@​00200200](https://redirect.github.com/00200200)) ### [`v1.0.152`](https://redirect.github.com/serde-rs/json/releases/tag/v1.0.152) [Compare Source](https://redirect.github.com/serde-rs/json/compare/v1.0.151...v1.0.152) - Preserve sign of `-0` in arbitrary_precision mode ([#​1346](https://redirect.github.com/serde-rs/json/issues/1346), thanks [@​yuxi-liu-wired](https://redirect.github.com/yuxi-liu-wired)) - Fix comparison of large non-integer values with f32::INFINITY ([#​1347](https://redirect.github.com/serde-rs/json/issues/1347), thanks [@​yuxi-liu-wired](https://redirect.github.com/yuxi-liu-wired)) </details> <details> <summary>mitsuhiko/similar (similar)</summary> ### [`v3.2.1`](https://redirect.github.com/mitsuhiko/similar/blob/HEAD/CHANGELOG.md#321) [Compare Source](https://redirect.github.com/mitsuhiko/similar/compare/3.2.0...3.2.1) - Improved real-world diffing performance substantially without changing the produced diffs. On a corpus of real source file revisions, line diffs run about 4x faster with `Algorithm::Myers`, 5x faster with `Algorithm::Histogram`, and 2.5x faster with `Algorithm::Patience`; word diffs run about 2x faster. This comes from a faster line tokenizer, a SipHash-1-3 content hash that consumes whole words (randomly keyed with `std`), cheaper integer-keyed lookup tables, hashing only the changed middle of Myers line diffs, flat occurrence tables in Histogram, and a gap buffer in the compaction pass that was quadratic on diffs with many ops. Allocation counts and peak memory dropped as well; in particular one sided and heavily unbalanced inputs no longer build index structures proportional to the larger side for `Algorithm::Hunt`, `Algorithm::Histogram`, and `Algorithm::Patience`. - Fixed `Algorithm::Histogram` overflowing the stack on inputs with many scattered changes. Pending ranges are now tracked on the heap, so stack usage no longer grows with the number of anchors. [#​105](https://redirect.github.com/mitsuhiko/similar/issues/105) - Fixed `TextMerge::labels` writing carriage returns and newlines verbatim into conflict markers, which let a label add lines to the output that looked like merged content. Line terminators in labels are now replaced with spaces. [#​101](https://redirect.github.com/mitsuhiko/similar/issues/101) </details> <details> <summary>servo/rust-smallvec (smallvec)</summary> ### [`v1.16.4`](https://redirect.github.com/servo/rust-smallvec/releases/tag/v1.16.4) [Compare Source](https://redirect.github.com/servo/rust-smallvec/compare/v1.16.3...v1.16.4) #### What's Changed - Port fuzzer changes from PR [#​737](https://redirect.github.com/servo/rust-smallvec/issues/737) to v1 by [@​GauravPawar101](https://redirect.github.com/GauravPawar101) in [#​753](https://redirect.github.com/servo/rust-smallvec/pull/753) - chore: bump version by [@​alejandro-vaz](https://redirect.github.com/alejandro-vaz) in [#​779](https://redirect.github.com/servo/rust-smallvec/pull/779) **Full Changelog**: <https://github.com/servo/rust-smallvec/compare/v1.16.3...v1.16.4> ### [`v1.16.3`](https://redirect.github.com/servo/rust-smallvec/releases/tag/v1.16.3) [Compare Source](https://redirect.github.com/servo/rust-smallvec/compare/v1.16.2...v1.16.3) ##### What's Changed - Port new fuzzer to v1 by [@​bolshoytoster](https://redirect.github.com/bolshoytoster) in [#​678](https://redirect.github.com/servo/rust-smallvec/pull/678) - fix: overflow during fuzzy check by [@​GauravPawar101](https://redirect.github.com/GauravPawar101) in [#​693](https://redirect.github.com/servo/rust-smallvec/pull/693) - chore: bump version by [@​alejandro-vaz](https://redirect.github.com/alejandro-vaz) in [#​723](https://redirect.github.com/servo/rust-smallvec/pull/723) **Full Changelog**: <https://github.com/servo/rust-smallvec/compare/v1.16.2...v1.16.3> ### [`v1.16.2`](https://redirect.github.com/servo/rust-smallvec/releases/tag/v1.16.2) [Compare Source](https://redirect.github.com/servo/rust-smallvec/compare/v1.16.1...v1.16.2) #### What's Changed - Backport v2’s retain implementation to v1 by [@​charliermarsh](https://redirect.github.com/charliermarsh) in [#​596](https://redirect.github.com/servo/rust-smallvec/pull/596) - Fix element ownership tracking with may_dangle by [@​charliermarsh](https://redirect.github.com/charliermarsh) in [#​594](https://redirect.github.com/servo/rust-smallvec/pull/594) - Fix Cargo manual_readme warning by [@​Rayan-and-beyond](https://redirect.github.com/Rayan-and-beyond) in [#​608](https://redirect.github.com/servo/rust-smallvec/pull/608) - chore: bump version by [@​alejandro-vaz](https://redirect.github.com/alejandro-vaz) in [#​617](https://redirect.github.com/servo/rust-smallvec/pull/617) #### New Contributors - [@​Rayan-and-beyond](https://redirect.github.com/Rayan-and-beyond) made their first contribution in [#​608](https://redirect.github.com/servo/rust-smallvec/pull/608) **Full Changelog**: <https://github.com/servo/rust-smallvec/compare/v1.16.1...v1.16.2> ### [`v1.16.1`](https://redirect.github.com/servo/rust-smallvec/releases/tag/v1.16.1) [Compare Source](https://redirect.github.com/servo/rust-smallvec/compare/v1.16.0...v1.16.1) #### What's Changed - Speed up push by expanding triple_mut by [@​bolshoytoster](https://redirect.github.com/bolshoytoster) in [#​557](https://redirect.github.com/servo/rust-smallvec/pull/557) - chore: bump version to 1.16.1 by [@​ryux1](https://redirect.github.com/ryux1) in [#​585](https://redirect.github.com/servo/rust-smallvec/pull/585) - fix: doc warning by [@​alejandro-vaz](https://redirect.github.com/alejandro-vaz) in [#​582](https://redirect.github.com/servo/rust-smallvec/pull/582) - fix: cargo warnings by [@​alejandro-vaz](https://redirect.github.com/alejandro-vaz) in [#​581](https://redirect.github.com/servo/rust-smallvec/pull/581) #### New Contributors - [@​ryux1](https://redirect.github.com/ryux1) made their first contribution in [#​585](https://redirect.github.com/servo/rust-smallvec/pull/585) **Full Changelog**: <https://github.com/servo/rust-smallvec/compare/v1.16.0...v1.16.1> </details> <details> <summary>dtolnay/syn (syn)</summary> ### [`v3.0.9`](https://redirect.github.com/dtolnay/syn/releases/tag/3.0.9) [Compare Source](https://redirect.github.com/dtolnay/syn/compare/3.0.8...3.0.9) - Add Punctuated::retain ([#​2088](https://redirect.github.com/dtolnay/syn/issues/2088)) ### [`v3.0.8`](https://redirect.github.com/dtolnay/syn/releases/tag/3.0.8) [Compare Source](https://redirect.github.com/dtolnay/syn/compare/3.0.7...3.0.8) - Fix parsing of `<-` and `->` tokens in expressions ([#​2086](https://redirect.github.com/dtolnay/syn/issues/2086), [#​2087](https://redirect.github.com/dtolnay/syn/issues/2087)) ### [`v3.0.7`](https://redirect.github.com/dtolnay/syn/releases/tag/3.0.7) [Compare Source](https://redirect.github.com/dtolnay/syn/compare/3.0.6...3.0.7) - Fix parsing absolute path expr in labeled break ([#​2085](https://redirect.github.com/dtolnay/syn/issues/2085), thanks [@​A4-Tacks](https://redirect.github.com/A4-Tacks)) ### [`v3.0.6`](https://redirect.github.com/dtolnay/syn/releases/tag/3.0.6) [Compare Source](https://redirect.github.com/dtolnay/syn/compare/3.0.5...3.0.6) - Fix parsing interpolated lifetime at statement start ([#​2082](https://redirect.github.com/dtolnay/syn/issues/2082)) </details> <details> <summary>mgeisler/textwrap (textwrap)</summary> ### [`v0.16.4`](https://redirect.github.com/mgeisler/textwrap/blob/HEAD/CHANGELOG.md#Version-0164-2026-09-13) [Compare Source](https://redirect.github.com/mgeisler/textwrap/compare/0.16.3...0.16.4) - [#​628](https://redirect.github.com/mgeisler/textwrap/pull/628): Reduce MSRV to 1.88. ### [`v0.16.3`](https://redirect.github.com/mgeisler/textwrap/blob/HEAD/CHANGELOG.md#Version-0163-2026-09-10) [Compare Source](https://redirect.github.com/mgeisler/textwrap/compare/0.16.2...0.16.3) This release adds `no_std` support as well as optional support for wrapping complex Unicode scripts such as Khmer, Lao, Myanmar, and Thai. The minimum supported Rust version is now 1.90. - [#​586](https://redirect.github.com/mgeisler/textwrap/pull/586): Make `Word::width` public so it can be used without `Word::from`. - [#​587](https://redirect.github.com/mgeisler/textwrap/pull/587): Add `Options::preserve_trailing_space` to keep trailing whitespace when wrapping text. - [#​594](https://redirect.github.com/mgeisler/textwrap/pull/594): Add example showing how one can use owned `Options`. - [#​597](https://redirect.github.com/mgeisler/textwrap/pull/597): Add GitHub Sponsors configuration. - [#​608](https://redirect.github.com/mgeisler/textwrap/pull/608): Switch from `unicode-linebreak` to `icu_segmenter`. - [#​623](https://redirect.github.com/mgeisler/textwrap/pull/623): Avoid arithmetic overflow in `wrap_columns`. - [#​626](https://redirect.github.com/mgeisler/textwrap/pull/626): Add `no_std` support. </details> <details> <summary>toml-rs/toml (toml)</summary> ### [`v1.1.8`](https://redirect.github.com/toml-rs/toml/compare/toml-v1.1.7...toml-v1.1.8) [Compare Source](https://redirect.github.com/toml-rs/toml/compare/toml-v1.1.7...toml-v1.1.8) ### [`v1.1.7`](https://redirect.github.com/toml-rs/toml/compare/toml-v1.1.6...toml-v1.1.7) [Compare Source](https://redirect.github.com/toml-rs/toml/compare/toml-v1.1.6...toml-v1.1.7) ### [`v1.1.6`](https://redirect.github.com/toml-rs/toml/compare/toml-v1.1.5...toml-v1.1.6) [Compare Source](https://redirect.github.com/toml-rs/toml/compare/toml-v1.1.5...toml-v1.1.6) </details> <details> <summary>Boshen/unicode-id-start (unicode-id-start)</summary> ### [`v1.5.0`](https://redirect.github.com/Boshen/unicode-id-start/blob/HEAD/CHANGELOG.md#150---2026-09-19) ##### Fixed - fix clippy ##### Other - *(unicode-id-start)* exclude extraneous files from published package ([#​47](https://redirect.github.com/oxc-project/unicode-id-start/pull/47)) - Upgrade to Unicode 18.0.0 ([#​55](https://redirect.github.com/oxc-project/unicode-id-start/pull/55)) - Update github actions ([#​54](https://redirect.github.com/oxc-project/unicode-id-start/pull/54)) - Update github actions ([#​53](https://redirect.github.com/oxc-project/unicode-id-start/pull/53)) - Update github actions ([#​52](https://redirect.github.com/oxc-project/unicode-id-start/pull/52)) - Update github actions ([#​51](https://redirect.github.com/oxc-project/unicode-id-start/pull/51)) - reduce Rust dev debug info ([#​50](https://redirect.github.com/oxc-project/unicode-id-start/pull/50)) - Update github actions ([#​49](https://redirect.github.com/oxc-project/unicode-id-start/pull/49)) - Update github actions ([#​48](https://redirect.github.com/oxc-project/unicode-id-start/pull/48)) - *(semgrep)* add scan workflow ([#​46](https://redirect.github.com/oxc-project/unicode-id-start/pull/46)) - Update taiki-e/install-action action to v2.83.3 ([#​45](https://redirect.github.com/oxc-project/unicode-id-start/pull/45)) - update sponsor section - Update taiki-e/install-action action to v2.83.0 ([#​43](https://redirect.github.com/oxc-project/unicode-id-start/pull/43)) - Update github actions ([#​37](https://redirect.github.com/oxc-project/unicode-id-start/pull/37)) - standardize rustfmt config ([#​42](https://redirect.github.com/oxc-project/unicode-id-start/pull/42)) - normalize README sponsor section - configure clippy exported api lint ([#​39](https://redirect.github.com/oxc-project/unicode-id-start/pull/39)) - add crates environment to release workflow - Update github actions to v2.82.0 ([#​36](https://redirect.github.com/oxc-project/unicode-id-start/pull/36)) - Update github actions to v2.81.10 ([#​35](https://redirect.github.com/oxc-project/unicode-id-start/pull/35)) - Update github actions to v2.81.4 ([#​34](https://redirect.github.com/oxc-project/unicode-id-start/pull/34)) - Update github actions ([#​33](https://redirect.github.com/oxc-project/unicode-id-start/pull/33)) - Update taiki-e/install-action action to v2.79.3 ([#​32](https://redirect.github.com/oxc-project/unicode-id-start/pull/32)) - Update github actions ([#​31](https://redirect.github.com/oxc-project/unicode-id-start/pull/31)) - Update github actions ([#​30](https://redirect.github.com/oxc-project/unicode-id-start/pull/30)) - Update Rust crate rand to 0.10.0 ([#​28](https://redirect.github.com/oxc-project/unicode-id-start/pull/28)) - Update github actions ([#​29](https://redirect.github.com/oxc-project/unicode-id-start/pull/29)) - Update github-actions ([#​27](https://redirect.github.com/oxc-project/unicode-id-start/pull/27)) - Update Rust crate rand to 0.9.3 \[SECURITY] ([#​20](https://redirect.github.com/oxc-project/unicode-id-start/pull/20)) - Add release workflow ([#​25](https://redirect.github.com/oxc-project/unicode-id-start/pull/25)) - make security analysis required-check friendly ([#​24](https://redirect.github.com/oxc-project/unicode-id-start/pull/24)) - Update github-actions ([#​23](https://redirect.github.com/oxc-project/unicode-id-start/pull/23)) - add security analysis workflow ([#​22](https://redirect.github.com/oxc-project/unicode-id-start/pull/22)) - replace OXC_BOT_PAT with GitHub App tokens ([#​21](https://redirect.github.com/oxc-project/unicode-id-start/pull/21)) - Fix rand dev-dependency version ([#​19](https://redirect.github.com/oxc-project/unicode-id-start/pull/19)) - Update rust crates ([#​17](https://redirect.github.com/oxc-project/unicode-id-start/pull/17)) - Update peter-evans/create-pull-request action to v8 ([#​18](https://redirect.github.com/oxc-project/unicode-id-start/pull/18)) - Update github-actions ([#​16](https://redirect.github.com/oxc-project/unicode-id-start/pull/16)) - Update Rust crate rand to 0.9.3 \[SECURITY] ([#​15](https://redirect.github.com/oxc-project/unicode-id-start/pull/15)) - Move Renovate config to repository root ([#​14](https://redirect.github.com/oxc-project/unicode-id-start/pull/14)) - enable renovatebot ([#​13](https://redirect.github.com/oxc-project/unicode-id-start/pull/13)) - apply cargo shear --fix ([#​12](https://redirect.github.com/oxc-project/unicode-id-start/pull/12)) - add SECURITY.md - replace wrapping_shr with direct bit shift ([#​10](https://redirect.github.com/oxc-project/unicode-id-start/pull/10)) - pin dtolnay/rust-toolchain - update - Fix readme badges ([#​9](https://redirect.github.com/oxc-project/unicode-id-start/pull/9)) - update permissions - add renovatebot - Add manual workflow for Unicode update ([#​7](https://redirect.github.com/oxc-project/unicode-id-start/pull/7)) </details> <details> <summary>unicode-rs/unicode-width (unicode-width)</summary> ### [`v0.2.3`](https://redirect.github.com/unicode-rs/unicode-width/compare/v0.2.2...v0.2.3) [Compare Source](https://redirect.github.com/unicode-rs/unicode-width/compare/v0.2.2...v0.2.3) </details> <details> <summary>algesten/ureq (ureq)</summary> ### [`v3.5.0`](https://redirect.github.com/algesten/ureq/blob/HEAD/CHANGELOG.md#350) [Compare Source](https://redirect.github.com/algesten/ureq/compare/3.4.3...3.5.0) - Prepare 3.5.0 and fix dependency advisories and warnings - [#​1217](https://redirect.github.com/algesten/ureq/issues/1217) - Add Agent::shutdown() to interrupt requests in flight and close all connections [#​1211](https://redirect.github.com/algesten/ureq/issues/1211) - Preserve validated request header casing with RequestBuilder::header_raw [#​1214](https://redirect.github.com/algesten/ureq/issues/1214) - Decode proxy URL credentials once; literal percent signs must be escaped as %25 [#​1215](https://redirect.github.com/algesten/ureq/issues/1215) - Encode ProxyBuilder credentials and preserve colons in proxy passwords [#​1215](https://redirect.github.com/algesten/ureq/issues/1215) - Apply remaining timeout budgets to SOCKS setup and drop the socks dependency [#​1209](https://redirect.github.com/algesten/ureq/issues/1209) - Check NO_PROXY before resolving a SOCKS proxy, so excluded hosts connect directly [#​1209](https://redirect.github.com/algesten/ureq/issues/1209) - Clarify timeout budgets, phase boundaries, and proxy DNS [#​1213](https://redirect.github.com/algesten/ureq/issues/1213) - Bound TLS handshake I/O by the remaining connect/global timeout [#​1208](https://redirect.github.com/algesten/ureq/issues/1208) - Retry socket reads interrupted by EINTR when timeout (technically breaking) [#​1205](https://redirect.github.com/algesten/ureq/issues/1205) - Fix native-tls-no-default enabling dependencies without enabling the TLS connector - Add timeout_per_read and timeout_per_write independently of total phase budgets ### [`v3.4.3`](https://redirect.github.com/algesten/ureq/blob/HEAD/CHANGELOG.md#343) [Compare Source](https://redirect.github.com/algesten/ureq/compare/3.4.2...3.4.3) - Update TLS dependencies for security fixes [#​1218](https://redirect.github.com/algesten/ureq/issues/1218) ### [`v3.4.2`](https://redirect.github.com/algesten/ureq/blob/HEAD/CHANGELOG.md#342) [Compare Source](https://redirect.github.com/algesten/ureq/compare/3.4.1...3.4.2) - Bump ureq-proto to 0.6.3 (fixes network-path references in redirects) - Bypass pooling for request connection settings incompatible with the Agent [#​1201](https://redirect.github.com/algesten/ureq/issues/1201) - Try the next resolved address on unreachable/unavailable connect errors [#​1195](https://redirect.github.com/algesten/ureq/issues/1195) </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:eyJjcmVhdGVkSW5WZXIiOiI0NC4xODguMiIsInVwZGF0ZWRJblZlciI6IjQ0LjE4OC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> |
||
|
|
d14dbd1e13 |
chore(deps): update rust crate napi to v3.16.1 (#28570)
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [napi](https://redirect.github.com/napi-rs/napi-rs) | workspace.dependencies | patch | `3.16.0` → `3.16.1` | --- ### Release Notes <details> <summary>napi-rs/napi-rs (napi)</summary> ### [`v3.16.1`](https://redirect.github.com/napi-rs/napi-rs/releases/tag/napi-v3.16.1) [Compare Source](https://redirect.github.com/napi-rs/napi-rs/compare/napi-v3.16.0...napi-v3.16.1) ##### Fixed - *(napi)* avoid a deadlock when a worker loads the addon during `block_on` ([#​3670](https://redirect.github.com/napi-rs/napi-rs/pull/3670)) </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:eyJjcmVhdGVkSW5WZXIiOiI0NC4xODguMiIsInVwZGF0ZWRJblZlciI6IjQ0LjE4OC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |
||
|
|
004647a4fa |
feat(track_memory_allocs): add allocation tracking for linter rules (#28470)
As an alternative to https://github.com/oxc-project/oxc/pull/27477, this requires minimal changes in the linter in order to add allocation tracking for individual rules. We run each rule individually and then compare the diff in heap size before and after as well as the number of system and arena allocations. Additionally, this runs as a local-only opt-in feature so that we don't check this in CI automatically, since linter allocations are likely quite noisy. |
||
|
|
211126a771 |
test(formatter_tests): own options parsing in the harness (#28532)
Cleaned up the code now that Prettier conformance is gone and each formatter crate just runs fixture tests. |
||
|
|
b6f6f3fd20 |
test(formatter_tests): remove each crate's prettier conformance (#28530)
Remove each crate side Prettier conformance, already tested by Oxfmt side. |
||
|
|
c8cfcc9ab8 |
refactor(formatter_htmlish): simplify attribute, sibling and sensitivity printing (#28378)
Update HTML attributes list and simplify printing. |
||
|
|
296623d868 |
feat(oxfmt)!: format parser:html files by oxc_formatter_htmlish (#28273)
Fixes #28263 - Before this PR: `.html` and also html-in-{js,md,etc} are formatted by Prettier. - Because of that, we had to run JS, which became an overhead. - After this PR: All of them are formatted natively by `oxc_formatter_htmlish`. - No overhead. At the same time, since we are fixing Prettier bugs and inconsistent behavior, please refer to DIVERGENCES.md for the differences. |
||
|
|
44d8c2b824 |
feat(formatter_htmlish): Implement HTML-ish formatter Html variant (#28272)
Part of #28263 |
||
|
|
c62fbbb088 |
chore(deps): update napi to v3.16.0 (#28519)
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [napi](https://redirect.github.com/napi-rs/napi-rs) | workspace.dependencies | minor | `3.15.0` → `3.16.0` | | [napi-derive](https://redirect.github.com/napi-rs/napi-rs) | workspace.dependencies | minor | `3.6.13` → `3.7.0` | --- ### Release Notes <details> <summary>napi-rs/napi-rs (napi)</summary> ### [`v3.16.0`](https://redirect.github.com/napi-rs/napi-rs/releases/tag/napi-v3.16.0) [Compare Source](https://redirect.github.com/napi-rs/napi-rs/compare/napi-v3.15.0...napi-v3.16.0) ##### Added - *(napi)* support well-known symbol keys for class members ([#​3665](https://redirect.github.com/napi-rs/napi-rs/pull/3665)) - *(napi)* support symbol_for keys for class members ([#​3661](https://redirect.github.com/napi-rs/napi-rs/pull/3661)) ##### Fixed - *(napi)* compact class identity metadata ([#​3667](https://redirect.github.com/napi-rs/napi-rs/pull/3667)) - *(napi)* keep the registered classes when a later load fails ([#​3666](https://redirect.github.com/napi-rs/napi-rs/pull/3666)) - *(napi)* free define_class closures, honour static flags, avoid TS1016 in constructors ([#​3662](https://redirect.github.com/napi-rs/napi-rs/pull/3662)) - *(napi)* free threadsafe function call data when the call fails ([#​3656](https://redirect.github.com/napi-rs/napi-rs/pull/3656)) </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 these updates 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:eyJjcmVhdGVkSW5WZXIiOiI0NC4xODguMiIsInVwZGF0ZWRJblZlciI6IjQ0LjE4OC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |
||
|
|
419c1b0fd0 |
feat(linter): add allow and allowPattern options to react/capitalized-calls
Original PR: #25960 |
||
|
|
8239daca6e |
perf(parser): replace dragonbox_ecma with zmij_ecma (#28282)
Use `zmij_ecma` to reduce float-formatting time while preserving ECMAScript output. Local Apple M4 Pro measurements showed 21–66% less conversion time and about 18% less time generating synthetic numeric-heavy JavaScript; real-world bundles were roughly unchanged. AI-assisted with Codex. |
||
|
|
9b6fff42fa |
release(apps): oxlint v1.90.0 && oxfmt v0.75.0 (#28191)
# Oxlint ### 🚀 Features - |
||
|
|
75efdca474 |
release(crates): oxc v0.156.0 (#28190)
### 💥 BREAKING CHANGES - |
||
|
|
2b5a3fd678 |
chore(formatter_css): bump oxc-css-parser to 0.0.18 (#28161)
Fixes #28102 |
||
|
|
014e3d2676 |
chore(deps): bump tokio to 1.54.1 (#28163)
This fixes RUSTSEC-2026-0386 which makes `cargo deny` fail. [v1.53.3](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.53.3) seems enough to fix, but for sure. |
||
|
|
8d6923b921 |
chore(deps): update napi to v3.15.0 (#28092)
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [napi](https://redirect.github.com/napi-rs/napi-rs) | workspace.dependencies | minor | `3.14.2` → `3.15.0` | | [napi-derive](https://redirect.github.com/napi-rs/napi-rs) | workspace.dependencies | patch | `3.6.12` → `3.6.13` | --- ### Release Notes <details> <summary>napi-rs/napi-rs (napi)</summary> ### [`v3.15.0`](https://redirect.github.com/napi-rs/napi-rs/releases/tag/napi-v3.15.0) [Compare Source](https://redirect.github.com/napi-rs/napi-rs/compare/napi-v3.14.2...napi-v3.15.0) ##### Added - *(napi)* cancel a ReadableStream through its Reader, and fix ReadableStream::cancel ([#​3623](https://redirect.github.com/napi-rs/napi-rs/pull/3623)) ##### Fixed - *(napi)* set the custom GC aborted flag before Node closes its tsfn ([#​3626](https://redirect.github.com/napi-rs/napi-rs/pull/3626)) - *(napi)* TypedArray input leaks and compat buffer copies on wasm ([#​3612](https://redirect.github.com/napi-rs/napi-rs/pull/3612)) - *(napi)* copy managed array inputs ([#​3607](https://redirect.github.com/napi-rs/napi-rs/pull/3607)) - *(napi)* reject a value of another class on builds without type tags ([#​3610](https://redirect.github.com/napi-rs/napi-rs/pull/3610)) - *(napi)* drop unadopted class value and reset factory flag on failed conversion ([#​3603](https://redirect.github.com/napi-rs/napi-rs/pull/3603)) - *(napi)* join the Tokio runtime threads at env teardown ([#​3592](https://redirect.github.com/napi-rs/napi-rs/pull/3592)) - *(napi)* keep borrowed class args alive across AsyncTask/AsyncBlock ([#​3584](https://redirect.github.com/napi-rs/napi-rs/pull/3584)) ##### Other - *(cli)* cover FreeBSD arm64 ([#​3620](https://redirect.github.com/napi-rs/napi-rs/pull/3620)) - *(cli)* record the design behind the threaded WASI heap sync ([#​3581](https://redirect.github.com/napi-rs/napi-rs/pull/3581)) </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 these updates 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:eyJjcmVhdGVkSW5WZXIiOiI0NC4xNzEuMiIsInVwZGF0ZWRJblZlciI6IjQ0LjE3MS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |
||
|
|
9ce5ee4556 |
chore(deps): update rustls webpki crates for security advisories (#28112)
Updates `webpki-roots` 1.0.8 -> 1.0.10, `webpki-root-certs` 1.0.8 -> 1.0.10, and `rustls-webpki` 0.103.15 -> 0.103.16 to resolve RUSTSEC-2026-0381, RUSTSEC-2026-0382, and RUSTSEC-2026-0383. |
||
|
|
cf8296fb8e |
feat(ecmascript)!: fold surrogate strings with JSStr constants (#27098)
String constant evaluation used `Cow<str>`, so folds stopped at any string with a lone surrogate. `ConstantValue::String` now holds a `JSStr`, so these strings fold too, and results are built with `JSStrBuilder`, which joins surrogate halves the way the runtime does.
`indexOf`, `lastIndexOf`, `substring` and `slice` now share one UTF-16 code-unit implementation for every string. This also fixes miscompiles on main: `'éx'.indexOf('x')` folded to 2, `'abc'.indexOf('a', 4294967296)` to 0, `'abab'.lastIndexOf('b', NaN)` to -1, and `'abc'.substring(1, void 0)` to `''`. It includes #27097, which is closed.
String `concat` calls and chains fold into a template only when no argument with side effects follows one that may be an object, so `''.concat(a, (a.push(1), 'x'))` no longer becomes `` `${a}${(a.push(1), 'x')}` ``.
## Breaking changes
- `ConstantValue::String` holds `JSStr<'a>`, and `ConstantValue::into_string`, `evaluate_value_to_string` and `get_side_free_string_value` return `JSStr<'a>`.
- `StringIndexOf` and `StringLastIndexOf` take the search value as `JSStr` and use UTF-16 code unit positions.
- `StringSubstring` is removed.
Closes #15524. Closes #25158. Closes #26053. Based on #27096. Part of #26242. Continues #26759.
Implemented with AI assistance.
|
||
|
|
07ed78f4ab |
release(apps): oxlint v1.89.0 && oxfmt v0.74.0 (#27961)
# Oxlint ### 💥 BREAKING CHANGES - |
||
|
|
73e6b56473 |
release(crates): oxc v0.155.0 (#27962)
### 💥 BREAKING CHANGES - |
||
|
|
782ab6e2cd |
fix(linter): search string values without UTF-8 conversion (#26716)
A lone surrogate anywhere in a string made `as_str()` return `None`, so rules skipped checks on ordinary text elsewhere in the value. For example, `test(" \uD800 my title ", () => {})` got no leading/trailing-space diagnostic.
This adds `contains`, `starts_with`, `ends_with`, `find` and `rfind` to `JSStr`. They take a `&str`, a `char` or a predicate, search the WTF-8 bytes without converting or allocating, and never match a lone surrogate with a character pattern. Seven linter rules and the formatter's JSX attribute checks use them. Lowercase-title fixes now check the source spelling, so an escaped first letter is reported without a fix.
Based on #26712. Part of #26242.
Implemented with AI assistance.
|
||
|
|
03d6f656d9 |
perf(linter): disable papaya's fast-barrier to avoid a membarrier wait on Linux (#27954)
## Summary On Linux, every `oxlint` run waits 20–40 ms when it creates its first papaya map. This PR removes the wait for both the CLI and the npm package by disabling `fast-barrier` feature of the papaya crate. It also adds a `cargo deny` rule that fails if any crate enables the feature again so we can notice it. ## Why it waits With `fast-barrier`, `seize::Collector::new()` calls `membarrier(MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED)`. If the process already has more than one thread, the kernel waits for an RCU grace period before it returns ([kernel/sched/membarrier.c](https://github.com/torvalds/linux/blob/v6.12/kernel/sched/membarrier.c#L442-L470)). `oxc_linter` has one papaya map: [`modules_by_path`](https://github.com/oxc-project/oxc/blob/faa75d8a8dff299eb9607ae65d04dfb163c28a8c/crates/oxc_linter/src/service/runtime.rs#L59-L66), the module graph that the import plugin uses for rules across files, such as `import/no-cycle`. The map is a field of [`Runtime`](https://github.com/oxc-project/oxc/blob/faa75d8a8dff299eb9607ae65d04dfb163c28a8c/crates/oxc_linter/src/service/runtime.rs#L45), which holds the state of one lint run. [`LintService::new()`](https://github.com/oxc-project/oxc/blob/faa75d8a8dff299eb9607ae65d04dfb163c28a8c/crates/oxc_linter/src/service/mod.rs#L68-L71) creates the `Runtime` once per run. [`Runtime::new()`](https://github.com/oxc-project/oxc/blob/faa75d8a8dff299eb9607ae65d04dfb163c28a8c/crates/oxc_linter/src/service/runtime.rs#L208) first starts the rayon thread pool ([#L227](https://github.com/oxc-project/oxc/blob/faa75d8a8dff299eb9607ae65d04dfb163c28a8c/crates/oxc_linter/src/service/runtime.rs#L227)), and then it creates the map ([#L268](https://github.com/oxc-project/oxc/blob/faa75d8a8dff299eb9607ae65d04dfb163c28a8c/crates/oxc_linter/src/service/runtime.rs#L268)). So the main thread waits on every run. This happens even with the default config, which does not use the import plugin. The npm package waits too. Creating the map earlier would not fix it: the binding does not run `main()`, and Node.js already runs several threads when it loads the binding. ## Results I measured `oxlint` with its default rules on three inputs: - 3 files: a project with three files of 1–4 lines each, so a run is almost only fixed cost. - excalidraw: 590 files from [excalidraw](https://github.com/excalidraw/excalidraw/tree/f6d85bc80fe328e8f472636eb0d541f7bb891aa0) (`excalidraw-app` and `packages`). - vscode `src`: 4,662 files from [vscode 1.100.0](https://github.com/microsoft/vscode/tree/19e0f9e681ecb8e5c09d8784acaa601316ca4571). Each input ran with 1 and 8 threads, with the CLI and with the npm package, so there are 12 cases. The machine is Linux x86_64 (AMD Zen 4, 8 vCPUs), and each bar is the mean of 30 runs. <img width="2300" height="1520" alt="image" src="https://github.com/user-attachments/assets/943b9ac4-9335-4ea2-b94d-498373042fae" /> ## Is anything slower? With `fast-barrier`, the registration at startup lets every `pin()` (one per map call) use a `Relaxed` store. This is the fast path. Without `fast-barrier`, seize uses its portable barriers, which `oxlint` already uses on macOS: each pin does a `SeqCst` store (`xchg` on x86_64), and nothing has to register at startup. To find how much time the fast path saves, I ran three builds on vscode `src` with 8 threads (mean of 30 runs per build, in turn): | Build | `fast-barrier` | Waits at startup | Wall time | |---|---|---|---| | Before this PR | on | yes | 219.6 ms | | Early registration\* | on | no | 191.8 ms | | This PR | off | no | 191.9 ms | \* Before this PR, plus one map created at the start of `main()`, so the registration happens before the thread pool starts. - Before this PR → Early registration: the startup wait, 27.9 ms. - Early registration → This PR: the time that the fast path saves, 0.2 ms, too small to measure. - With `--import-plugin` (9,317 map calls per run), the same difference is 1.8 ms. Windows also loses its fast path, but Windows has no startup wait to remove. I did not measure Windows. --- AI disclosure: I used an AI coding assistant to run the measurements and to draft this description. I reviewed the change, the data, and this text. |
||
|
|
acf8eb0487 |
chore(deps): update rust crates (#27928)
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [bitflags](https://redirect.github.com/bitflags/bitflags) | workspace.dependencies | patch | `2.13.1` → `2.13.2` | | [bpaf](https://redirect.github.com/pacak/bpaf) | workspace.dependencies | patch | `0.9.27` → `0.9.28` | | [console](https://redirect.github.com/console-rs/console) | workspace.dependencies | patch | `0.16.4` → `0.16.6` | | [encoding_rs](https://docs.rs/encoding_rs/) ([source](https://redirect.github.com/hsivonen/encoding_rs)) | workspace.dependencies | patch | `0.8.35` → `0.8.42` | | [fast-glob](https://redirect.github.com/oxc-project/fast-glob) | workspace.dependencies | patch | `1.1.1` → `1.1.2` | | [hmac-sha1-compact](https://redirect.github.com/jedisct1/rust-hmac-sha1) | workspace.dependencies | patch | `1.1.7` → `1.1.8` | | [insta](https://insta.rs/) ([source](https://redirect.github.com/mitsuhiko/insta)) | workspace.dependencies | minor | `1.48.0` → `1.49.0` | | [lazy-regex](https://redirect.github.com/Canop/lazy-regex) | workspace.dependencies | patch | `3.6.1` → `3.6.2` | | [mimalloc-safe](https://redirect.github.com/napi-rs/mimalloc-safe) | workspace.dependencies | patch | `0.1.66` → `0.1.67` | | [rand](https://rust-random.github.io/book) ([source](https://redirect.github.com/rust-random/rand)) | workspace.dependencies | patch | `0.10.2` → `0.10.3` | | [saphyr](https://redirect.github.com/saphyr-rs/saphyr) | workspace.dependencies | minor | `0.1.0` → `0.2.0` | | [serde_json](https://redirect.github.com/serde-rs/json) | workspace.dependencies | patch | `1.0.151` → `1.0.154` | | [smallvec](https://redirect.github.com/servo/rust-smallvec) | workspace.dependencies | patch | `1.16.0` → `1.16.3` | | [syn](https://redirect.github.com/dtolnay/syn) | workspace.dependencies | patch | `3.0.5` → `3.0.9` | | [textwrap](https://redirect.github.com/mgeisler/textwrap) | workspace.dependencies | patch | `0.16.2` → `0.16.4` | | [tokio](https://tokio.rs) ([source](https://redirect.github.com/tokio-rs/tokio)) | workspace.dependencies | patch | `1.53.1` → `1.53.3` | | [toml](https://redirect.github.com/toml-rs/toml) | workspace.dependencies | patch | `1.1.5+spec-1.1.0` → `1.1.8` | | [unicode-id-start](https://redirect.github.com/Boshen/unicode-id-start) | workspace.dependencies | minor | `1.4.0` → `1.5.0` | | [ureq](https://redirect.github.com/algesten/ureq) | workspace.dependencies | patch | `3.4.1` → `3.4.2` | --- ### Release Notes <details> <summary>bitflags/bitflags (bitflags)</summary> ### [`v2.13.2`](https://redirect.github.com/bitflags/bitflags/blob/HEAD/CHANGELOG.md#2132) [Compare Source](https://redirect.github.com/bitflags/bitflags/compare/2.13.1...2.13.2) #### What's Changed - Flags: adjust order of elements in manual implementation example by [@​DanielEScherzer](https://redirect.github.com/DanielEScherzer) in [#​494](https://redirect.github.com/bitflags/bitflags/pull/494) - Re-pull const declarations outside of nested const by [@​KodrAus](https://redirect.github.com/KodrAus) in [#​496](https://redirect.github.com/bitflags/bitflags/pull/496) **Full Changelog**: <https://github.com/bitflags/bitflags/compare/2.13.1...2.13.2> </details> <details> <summary>pacak/bpaf (bpaf)</summary> ### [`v0.9.28`](https://redirect.github.com/pacak/bpaf/blob/HEAD/Changelog.md#bpaf-0928---2026-09-17) [Compare Source](https://redirect.github.com/pacak/bpaf/compare/v0.9.27...v0.9.28) - more consistent formatting for .adjacent() items ([#​461](https://redirect.github.com/pacak/bpaf/issues/461)) - try harder not to corrupt completion output with very long help </details> <details> <summary>console-rs/console (console)</summary> ### [`v0.16.6`](https://redirect.github.com/console-rs/console/releases/tag/0.16.6) [Compare Source](https://redirect.github.com/console-rs/console/compare/0.16.4...0.16.6) #### What's Changed - Fix truncate_str panicking mid-character without ansi-parsing by [@​lenamonj](https://redirect.github.com/lenamonj) in [#​296](https://redirect.github.com/console-rs/console/pull/296) - perf: accelerate printable ASCII text width by [@​dexhunter](https://redirect.github.com/dexhunter) in [#​297](https://redirect.github.com/console-rs/console/pull/297) - fix: measure the truncation tail in visible columns, not raw width by [@​youdie006](https://redirect.github.com/youdie006) in [#​298](https://redirect.github.com/console-rs/console/pull/298) - Prepare 0.16.6 by [@​djc](https://redirect.github.com/djc) in [#​299](https://redirect.github.com/console-rs/console/pull/299) </details> <details> <summary>hsivonen/encoding_rs (encoding_rs)</summary> ### [`v0.8.42`](https://redirect.github.com/hsivonen/encoding_rs/compare/v0.8.41...v0.8.42) [Compare Source](https://redirect.github.com/hsivonen/encoding_rs/compare/v0.8.41...v0.8.42) ### [`v0.8.41`](https://redirect.github.com/hsivonen/encoding_rs/compare/v0.8.40...v0.8.41) [Compare Source](https://redirect.github.com/hsivonen/encoding_rs/compare/v0.8.40...v0.8.41) ### [`v0.8.40`](https://redirect.github.com/hsivonen/encoding_rs/compare/v0.8.35...v0.8.40) [Compare Source](https://redirect.github.com/hsivonen/encoding_rs/compare/v0.8.35...v0.8.40) </details> <details> <summary>oxc-project/fast-glob (fast-glob)</summary> ### [`v1.1.2`](https://redirect.github.com/oxc-project/fast-glob/blob/HEAD/CHANGELOG.md#112---2026-09-21) [Compare Source](https://redirect.github.com/oxc-project/fast-glob/compare/v1.1.1...v1.1.2) ##### Fixed - recognize globstars in brace branches ([#​181](https://redirect.github.com/oxc-project/fast-glob/pull/181)) - keep character classes within path segments ([#​179](https://redirect.github.com/oxc-project/fast-glob/pull/179)) - validate the brace group limit ([#​178](https://redirect.github.com/oxc-project/fast-glob/pull/178)) - track syntactic brace depth ([#​177](https://redirect.github.com/oxc-project/fast-glob/pull/177)) </details> <details> <summary>jedisct1/rust-hmac-sha1 (hmac-sha1-compact)</summary> ### [`v1.1.8`](https://redirect.github.com/jedisct1/rust-hmac-sha1/compare/1.1.7...1.1.8) [Compare Source](https://redirect.github.com/jedisct1/rust-hmac-sha1/compare/1.1.7...1.1.8) </details> <details> <summary>mitsuhiko/insta (insta)</summary> ### [`v1.49.0`](https://redirect.github.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#1490) [Compare Source](https://redirect.github.com/mitsuhiko/insta/compare/1.48.0...1.49.0) - Allow `Option<&OsStr>` snapshot names, such as `Path::file_name()`, without explicit string conversion. [#​929](https://redirect.github.com/mitsuhiko/insta/issues/929) ([@​dislogical](https://redirect.github.com/dislogical)) - Add prebuilt `cargo-insta` binaries for ARM64 Linux (`aarch64-unknown-linux-gnu`). [#​942](https://redirect.github.com/mitsuhiko/insta/issues/942) ([@​aljohri](https://redirect.github.com/aljohri)) - Fix JSON serialization of maps keyed by unit enum variants. Keys use the serialized variant name, including serde renames. [#​934](https://redirect.github.com/mitsuhiko/insta/issues/934) ([@​teddytennant](https://redirect.github.com/teddytennant)) - Remove trailing semicolons from serialization macro bodies to avoid compiler warnings when used in expression position. [#​940](https://redirect.github.com/mitsuhiko/insta/issues/940) ([@​Tiwalun](https://redirect.github.com/Tiwalun)) - Mention `INSTA_UPDATE=always` in snapshot mismatch hints for file snapshots. [#​927](https://redirect.github.com/mitsuhiko/insta/issues/927) ([@​hiro-nikaitou](https://redirect.github.com/hiro-nikaitou)) - Update the lockfile's `tempfile` and `rustix` dependencies to fix builds with newer Rust toolchains. [#​939](https://redirect.github.com/mitsuhiko/insta/issues/939) - Fix `cargo insta test --all-targets --test-runner nextest` failing with "Can't mix --doc with other target selecting options". Like `cargo test --all-targets`, it no longer runs doctests. [#​460](https://redirect.github.com/mitsuhiko/insta/issues/460) </details> <details> <summary>Canop/lazy-regex (lazy-regex)</summary> ### [`v3.6.2`](https://redirect.github.com/Canop/lazy-regex/blob/HEAD/CHANGELOG.md#v362---2026-10-03) - `syn` dependency updated to 3.0. Lighten compilation for programs already importing syn 3 (serde, this_error, etc.) - Thanks [@​hwright](https://redirect.github.com/hwright) - fix "unreachable_code" warning in regex_switch still emitted by rustc < 1.83 - explicit compilation error when neither a regex feature nor "lite" is enabled </details> <details> <summary>napi-rs/mimalloc-safe (mimalloc-safe)</summary> ### [`v0.1.67`](https://redirect.github.com/napi-rs/mimalloc-safe/blob/HEAD/CHANGELOG.md#0167---2026-09-14) [Compare Source](https://redirect.github.com/napi-rs/mimalloc-safe/compare/mimalloc-safe-v0.1.66...mimalloc-safe-v0.1.67) ##### Chore - *(deps)* Update mimalloc to v2.5.2 and mimalloc3 to v3.5.2 + init fix ([#​104](https://redirect.github.com/napi-rs/mimalloc-safe/pull/104)) - *(deps)* Update [@​napi-rs/cli](https://redirect.github.com/napi-rs/cli) and emnapi, group emnapi in renovate ([#​106](https://redirect.github.com/napi-rs/mimalloc-safe/pull/106)) </details> <details> <summary>rust-random/rand (rand)</summary> ### [`v0.10.3`](https://redirect.github.com/rust-random/rand/blob/HEAD/CHANGELOG.md#0103--2026-09-20) [Compare Source](https://redirect.github.com/rust-random/rand/compare/0.10.2...0.10.3) ##### Fixes - Fix `WeightedIndex` panic when the sum of float weights is infinite; return `Error::Overflow` instead ([#​1808]) - Fix spurious `Error::NonFinite` from `Uniform::new_inclusive` on large finite float ranges such as `0.0..=f64::MAX` ([#​1821]) - Fix possible panic due to sampling a deserialized `Uniform<char>` ([#​1831]) ##### Changes - Report exact remaining lengths from `WeightedIndex::weights()` and reduce overhead when reading weights ([#​1838]) [#​1808]: https://redirect.github.com/rust-random/rand/pull/1808 [#​1821]: https://redirect.github.com/rust-random/rand/pull/1821 [#​1831]: https://redirect.github.com/rust-random/rand/pull/1831 [#​1838]: https://redirect.github.com/rust-random/rand/pull/1838 </details> <details> <summary>saphyr-rs/saphyr (saphyr)</summary> ### [`v0.2.2`](https://redirect.github.com/saphyr-rs/saphyr/compare/v0.2.1...v0.2.2) [Compare Source](https://redirect.github.com/saphyr-rs/saphyr/compare/v0.2.1...v0.2.2) ### [`v0.2.1`](https://redirect.github.com/saphyr-rs/saphyr/compare/v0.2.0...v0.2.1) [Compare Source](https://redirect.github.com/saphyr-rs/saphyr/compare/v0.2.0...v0.2.1) ### [`v0.2.0`](https://redirect.github.com/saphyr-rs/saphyr/compare/v0.1.2...v0.2.0) [Compare Source](https://redirect.github.com/saphyr-rs/saphyr/compare/v0.1.2...v0.2.0) ### [`v0.1.2`](https://redirect.github.com/saphyr-rs/saphyr/compare/v0.1.1...v0.1.2) [Compare Source](https://redirect.github.com/saphyr-rs/saphyr/compare/v0.1.1...v0.1.2) ### [`v0.1.1`](https://redirect.github.com/saphyr-rs/saphyr/compare/v0.1.0...v0.1.1) [Compare Source](https://redirect.github.com/saphyr-rs/saphyr/compare/v0.1.0...v0.1.1) </details> <details> <summary>serde-rs/json (serde_json)</summary> ### [`v1.0.154`](https://redirect.github.com/serde-rs/json/releases/tag/v1.0.154) [Compare Source](https://redirect.github.com/serde-rs/json/compare/v1.0.153...v1.0.154) - Support preserve_order in no_std builds ([#​1333](https://redirect.github.com/serde-rs/json/issues/1333), thanks [@​razmser](https://redirect.github.com/razmser)) ### [`v1.0.153`](https://redirect.github.com/serde-rs/json/releases/tag/v1.0.153) [Compare Source](https://redirect.github.com/serde-rs/json/compare/v1.0.152...v1.0.153) - Report invalid UTF-8 at the first bad byte ([#​1345](https://redirect.github.com/serde-rs/json/issues/1345), thanks [@​00200200](https://redirect.github.com/00200200)) ### [`v1.0.152`](https://redirect.github.com/serde-rs/json/releases/tag/v1.0.152) [Compare Source](https://redirect.github.com/serde-rs/json/compare/v1.0.151...v1.0.152) - Preserve sign of `-0` in arbitrary_precision mode ([#​1346](https://redirect.github.com/serde-rs/json/issues/1346), thanks [@​yuxi-liu-wired](https://redirect.github.com/yuxi-liu-wired)) - Fix comparison of large non-integer values with f32::INFINITY ([#​1347](https://redirect.github.com/serde-rs/json/issues/1347), thanks [@​yuxi-liu-wired](https://redirect.github.com/yuxi-liu-wired)) </details> <details> <summary>servo/rust-smallvec (smallvec)</summary> ### [`v1.16.3`](https://redirect.github.com/servo/rust-smallvec/releases/tag/v1.16.3) [Compare Source](https://redirect.github.com/servo/rust-smallvec/compare/v1.16.2...v1.16.3) #### What's Changed - Port new fuzzer to v1 by [@​bolshoytoster](https://redirect.github.com/bolshoytoster) in [#​678](https://redirect.github.com/servo/rust-smallvec/pull/678) - fix: overflow during fuzzy check by [@​GauravPawar101](https://redirect.github.com/GauravPawar101) in [#​693](https://redirect.github.com/servo/rust-smallvec/pull/693) - chore: bump version by [@​alejandro-vaz](https://redirect.github.com/alejandro-vaz) in [#​723](https://redirect.github.com/servo/rust-smallvec/pull/723) **Full Changelog**: <https://github.com/servo/rust-smallvec/compare/v1.16.2...v1.16.3> ### [`v1.16.2`](https://redirect.github.com/servo/rust-smallvec/releases/tag/v1.16.2) [Compare Source](https://redirect.github.com/servo/rust-smallvec/compare/v1.16.1...v1.16.2) #### What's Changed - Backport v2’s retain implementation to v1 by [@​charliermarsh](https://redirect.github.com/charliermarsh) in [#​596](https://redirect.github.com/servo/rust-smallvec/pull/596) - Fix element ownership tracking with may_dangle by [@​charliermarsh](https://redirect.github.com/charliermarsh) in [#​594](https://redirect.github.com/servo/rust-smallvec/pull/594) - Fix Cargo manual_readme warning by [@​Rayan-and-beyond](https://redirect.github.com/Rayan-and-beyond) in [#​608](https://redirect.github.com/servo/rust-smallvec/pull/608) - chore: bump version by [@​alejandro-vaz](https://redirect.github.com/alejandro-vaz) in [#​617](https://redirect.github.com/servo/rust-smallvec/pull/617) #### New Contributors - [@​Rayan-and-beyond](https://redirect.github.com/Rayan-and-beyond) made their first contribution in [#​608](https://redirect.github.com/servo/rust-smallvec/pull/608) **Full Changelog**: <https://github.com/servo/rust-smallvec/compare/v1.16.1...v1.16.2> ### [`v1.16.1`](https://redirect.github.com/servo/rust-smallvec/releases/tag/v1.16.1) [Compare Source](https://redirect.github.com/servo/rust-smallvec/compare/v1.16.0...v1.16.1) #### What's Changed - Speed up push by expanding triple_mut by [@​bolshoytoster](https://redirect.github.com/bolshoytoster) in [#​557](https://redirect.github.com/servo/rust-smallvec/pull/557) - chore: bump version to 1.16.1 by [@​ryux1](https://redirect.github.com/ryux1) in [#​585](https://redirect.github.com/servo/rust-smallvec/pull/585) - fix: doc warning by [@​alejandro-vaz](https://redirect.github.com/alejandro-vaz) in [#​582](https://redirect.github.com/servo/rust-smallvec/pull/582) - fix: cargo warnings by [@​alejandro-vaz](https://redirect.github.com/alejandro-vaz) in [#​581](https://redirect.github.com/servo/rust-smallvec/pull/581) #### New Contributors - [@​ryux1](https://redirect.github.com/ryux1) made their first contribution in [#​585](https://redirect.github.com/servo/rust-smallvec/pull/585) **Full Changelog**: <https://github.com/servo/rust-smallvec/compare/v1.16.0...v1.16.1> </details> <details> <summary>dtolnay/syn (syn)</summary> ### [`v3.0.9`](https://redirect.github.com/dtolnay/syn/releases/tag/3.0.9) [Compare Source](https://redirect.github.com/dtolnay/syn/compare/3.0.8...3.0.9) - Add Punctuated::retain ([#​2088](https://redirect.github.com/dtolnay/syn/issues/2088)) ### [`v3.0.8`](https://redirect.github.com/dtolnay/syn/releases/tag/3.0.8) [Compare Source](https://redirect.github.com/dtolnay/syn/compare/3.0.7...3.0.8) - Fix parsing of `<-` and `->` tokens in expressions ([#​2086](https://redirect.github.com/dtolnay/syn/issues/2086), [#​2087](https://redirect.github.com/dtolnay/syn/issues/2087)) ### [`v3.0.7`](https://redirect.github.com/dtolnay/syn/releases/tag/3.0.7) [Compare Source](https://redirect.github.com/dtolnay/syn/compare/3.0.6...3.0.7) - Fix parsing absolute path expr in labeled break ([#​2085](https://redirect.github.com/dtolnay/syn/issues/2085), thanks [@​A4-Tacks](https://redirect.github.com/A4-Tacks)) ### [`v3.0.6`](https://redirect.github.com/dtolnay/syn/releases/tag/3.0.6) [Compare Source](https://redirect.github.com/dtolnay/syn/compare/3.0.5...3.0.6) - Fix parsing interpolated lifetime at statement start ([#​2082](https://redirect.github.com/dtolnay/syn/issues/2082)) </details> <details> <summary>mgeisler/textwrap (textwrap)</summary> ### [`v0.16.4`](https://redirect.github.com/mgeisler/textwrap/blob/HEAD/CHANGELOG.md#Version-0164-2026-09-13) [Compare Source](https://redirect.github.com/mgeisler/textwrap/compare/0.16.3...0.16.4) - [#​628](https://redirect.github.com/mgeisler/textwrap/pull/628): Reduce MSRV to 1.88. ### [`v0.16.3`](https://redirect.github.com/mgeisler/textwrap/blob/HEAD/CHANGELOG.md#Version-0163-2026-09-10) [Compare Source](https://redirect.github.com/mgeisler/textwrap/compare/0.16.2...0.16.3) This release adds `no_std` support as well as optional support for wrapping complex Unicode scripts such as Khmer, Lao, Myanmar, and Thai. The minimum supported Rust version is now 1.90. - [#​586](https://redirect.github.com/mgeisler/textwrap/pull/586): Make `Word::width` public so it can be used without `Word::from`. - [#​587](https://redirect.github.com/mgeisler/textwrap/pull/587): Add `Options::preserve_trailing_space` to keep trailing whitespace when wrapping text. - [#​594](https://redirect.github.com/mgeisler/textwrap/pull/594): Add example showing how one can use owned `Options`. - [#​597](https://redirect.github.com/mgeisler/textwrap/pull/597): Add GitHub Sponsors configuration. - [#​608](https://redirect.github.com/mgeisler/textwrap/pull/608): Switch from `unicode-linebreak` to `icu_segmenter`. - [#​623](https://redirect.github.com/mgeisler/textwrap/pull/623): Avoid arithmetic overflow in `wrap_columns`. - [#​626](https://redirect.github.com/mgeisler/textwrap/pull/626): Add `no_std` support. </details> <details> <summary>tokio-rs/tokio (tokio)</summary> ### [`v1.53.3`](https://redirect.github.com/tokio-rs/tokio/releases/tag/tokio-1.53.3): Tokio v1.53.3 [Compare Source](https://redirect.github.com/tokio-rs/tokio/compare/tokio-1.53.2...tokio-1.53.3) ### 1.53.3 (October 13th, 2026) ##### Added - io: add `AsyncFd::register` and `AsyncFd::register_with_interest` ([#​8587]) ##### Changed - io: deprecate `AsyncFd::{new, with_interest, try_new, try_with_interest}` ([#​8587]) ##### Fixed - io: wake and drop `DuplexStream` wakers outside the lock ([#​8618]) - macros: avoid `unreachable_code` in `join!` and `try_join!` for `Infallible` ([#​8518]) - runtime: fix paused time auto-advancing when I/O wakes a task on `current_thread` ([#​8595]) - sync: wake waiters outside the lock when closing a semaphore ([#​8529]) - test: fix several flaky tests ([#​8196], [#​8427], [#​8609]) ##### Fixed (unstable) - rt: keep `io_uring` op alive when submission fails after push ([#​8185]) [#​8185]: https://redirect.github.com/tokio-rs/tokio/pull/8185 [#​8196]: https://redirect.github.com/tokio-rs/tokio/pull/8196 [#​8427]: https://redirect.github.com/tokio-rs/tokio/pull/8427 [#​8518]: https://redirect.github.com/tokio-rs/tokio/pull/8518 [#​8529]: https://redirect.github.com/tokio-rs/tokio/pull/8529 [#​8587]: https://redirect.github.com/tokio-rs/tokio/pull/8587 [#​8595]: https://redirect.github.com/tokio-rs/tokio/pull/8595 [#​8609]: https://redirect.github.com/tokio-rs/tokio/pull/8609 [#​8618]: https://redirect.github.com/tokio-rs/tokio/pull/8618 ### [`v1.53.2`](https://redirect.github.com/tokio-rs/tokio/releases/tag/tokio-1.53.2): Tokio v1.53.2 [Compare Source](https://redirect.github.com/tokio-rs/tokio/compare/tokio-1.53.1...tokio-1.53.2) ##### 1.53.2 (October 3rd, 2026) ##### Fixed - fs: handle integer overflow in buffered relative seek ([#​8574]) - io: revert "always cleanup `AsyncFd` registration list on deregister" ([#​8540]) - process: unregister Windows wait before closing child handle ([#​8564]) - rt: drop blocking pool mutex before shutting down rejected task ([#​8562]) - sync: fix mpsc index wraparound in block reclamation ([#​8546]) - sync: forget mpsc `Permit` before sending value ([#​8560]) - sync: validate `MAX_PERMITS` in `Semaphore::acquire` ([#​8548]) - sync: wake broadcast `Sender::closed` outside mutex ([#​8558]) - task: drop replaced waker outside lock in `JoinSet` ([#​8554]) - time: drop timer lock before dropping waker in `clear_entry` ([#​8552]) - time: expire timers directly on shutdown without rotating wheel ([#​8570]) ##### Fixed (unstable) - fs: clamp `io_uring` read length to `u32::MAX` ([#​8572]) - rt: ignore `current_thread` task dumps from other runtimes ([#​8544]) - rt: preserve `io_uring` context if a completion waker panics ([#​8566]) - sync: fix semaphore use-after-free and permit leak on tracing panic ([#​8542]) - taskdump: restore deferred leaf wakes during capture ([#​8445]) - time: drop stored waker when cancelling alt timer entry ([#​8550]) [#​8445]: https://redirect.github.com/tokio-rs/tokio/pull/8445 [#​8572]: https://redirect.github.com/tokio-rs/tokio/pull/8572 [#​8540]: https://redirect.github.com/tokio-rs/tokio/pull/8540 [#​8542]: https://redirect.github.com/tokio-rs/tokio/pull/8542 [#​8544]: https://redirect.github.com/tokio-rs/tokio/pull/8544 [#​8546]: https://redirect.github.com/tokio-rs/tokio/pull/8546 [#​8548]: https://redirect.github.com/tokio-rs/tokio/pull/8548 [#​8550]: https://redirect.github.com/tokio-rs/tokio/pull/8550 [#​8552]: https://redirect.github.com/tokio-rs/tokio/pull/8552 [#​8554]: https://redirect.github.com/tokio-rs/tokio/pull/8554 [#​8558]: https://redirect.github.com/tokio-rs/tokio/pull/8558 [#​8560]: https://redirect.github.com/tokio-rs/tokio/pull/8560 [#​8562]: https://redirect.github.com/tokio-rs/tokio/pull/8562 [#​8564]: https://redirect.github.com/tokio-rs/tokio/pull/8564 [#​8566]: https://redirect.github.com/tokio-rs/tokio/pull/8566 [#​8570]: https://redirect.github.com/tokio-rs/tokio/pull/8570 [#​8574]: https://redirect.github.com/tokio-rs/tokio/pull/8574 </details> <details> <summary>toml-rs/toml (toml)</summary> ### [`v1.1.8`](https://redirect.github.com/toml-rs/toml/compare/toml-v1.1.7...toml-v1.1.8) [Compare Source](https://redirect.github.com/toml-rs/toml/compare/toml-v1.1.7...toml-v1.1.8) ### [`v1.1.7`](https://redirect.github.com/toml-rs/toml/compare/toml-v1.1.6...toml-v1.1.7) [Compare Source](https://redirect.github.com/toml-rs/toml/compare/toml-v1.1.6...toml-v1.1.7) ### [`v1.1.6`](https://redirect.github.com/toml-rs/toml/compare/toml-v1.1.5...toml-v1.1.6) [Compare Source](https://redirect.github.com/toml-rs/toml/compare/toml-v1.1.5...toml-v1.1.6) </details> <details> <summary>Boshen/unicode-id-start (unicode-id-start)</summary> ### [`v1.5.0`](https://redirect.github.com/Boshen/unicode-id-start/blob/HEAD/CHANGELOG.md#150---2026-09-19) ##### Fixed - fix clippy ##### Other - *(unicode-id-start)* exclude extraneous files from published package ([#​47](https://redirect.github.com/oxc-project/unicode-id-start/pull/47)) - Upgrade to Unicode 18.0.0 ([#​55](https://redirect.github.com/oxc-project/unicode-id-start/pull/55)) - Update github actions ([#​54](https://redirect.github.com/oxc-project/unicode-id-start/pull/54)) - Update github actions ([#​53](https://redirect.github.com/oxc-project/unicode-id-start/pull/53)) - Update github actions ([#​52](https://redirect.github.com/oxc-project/unicode-id-start/pull/52)) - Update github actions ([#​51](https://redirect.github.com/oxc-project/unicode-id-start/pull/51)) - reduce Rust dev debug info ([#​50](https://redirect.github.com/oxc-project/unicode-id-start/pull/50)) - Update github actions ([#​49](https://redirect.github.com/oxc-project/unicode-id-start/pull/49)) - Update github actions ([#​48](https://redirect.github.com/oxc-project/unicode-id-start/pull/48)) - *(semgrep)* add scan workflow ([#​46](https://redirect.github.com/oxc-project/unicode-id-start/pull/46)) - Update taiki-e/install-action action to v2.83.3 ([#​45](https://redirect.github.com/oxc-project/unicode-id-start/pull/45)) - update sponsor section - Update taiki-e/install-action action to v2.83.0 ([#​43](https://redirect.github.com/oxc-project/unicode-id-start/pull/43)) - Update github actions ([#​37](https://redirect.github.com/oxc-project/unicode-id-start/pull/37)) - standardize rustfmt config ([#​42](https://redirect.github.com/oxc-project/unicode-id-start/pull/42)) - normalize README sponsor section - configure clippy exported api lint ([#​39](https://redirect.github.com/oxc-project/unicode-id-start/pull/39)) - add crates environment to release workflow - Update github actions to v2.82.0 ([#​36](https://redirect.github.com/oxc-project/unicode-id-start/pull/36)) - Update github actions to v2.81.10 ([#​35](https://redirect.github.com/oxc-project/unicode-id-start/pull/35)) - Update github actions to v2.81.4 ([#​34](https://redirect.github.com/oxc-project/unicode-id-start/pull/34)) - Update github actions ([#​33](https://redirect.github.com/oxc-project/unicode-id-start/pull/33)) - Update taiki-e/install-action action to v2.79.3 ([#​32](https://redirect.github.com/oxc-project/unicode-id-start/pull/32)) - Update github actions ([#​31](https://redirect.github.com/oxc-project/unicode-id-start/pull/31)) - Update github actions ([#​30](https://redirect.github.com/oxc-project/unicode-id-start/pull/30)) - Update Rust crate rand to 0.10.0 ([#​28](https://redirect.github.com/oxc-project/unicode-id-start/pull/28)) - Update github actions ([#​29](https://redirect.github.com/oxc-project/unicode-id-start/pull/29)) - Update github-actions ([#​27](https://redirect.github.com/oxc-project/unicode-id-start/pull/27)) - Update Rust crate rand to 0.9.3 \[SECURITY] ([#​20](https://redirect.github.com/oxc-project/unicode-id-start/pull/20)) - Add release workflow ([#​25](https://redirect.github.com/oxc-project/unicode-id-start/pull/25)) - make security analysis required-check friendly ([#​24](https://redirect.github.com/oxc-project/unicode-id-start/pull/24)) - Update github-actions ([#​23](https://redirect.github.com/oxc-project/unicode-id-start/pull/23)) - add security analysis workflow ([#​22](https://redirect.github.com/oxc-project/unicode-id-start/pull/22)) - replace OXC_BOT_PAT with GitHub App tokens ([#​21](https://redirect.github.com/oxc-project/unicode-id-start/pull/21)) - Fix rand dev-dependency version ([#​19](https://redirect.github.com/oxc-project/unicode-id-start/pull/19)) - Update rust crates ([#​17](https://redirect.github.com/oxc-project/unicode-id-start/pull/17)) - Update peter-evans/create-pull-request action to v8 ([#​18](https://redirect.github.com/oxc-project/unicode-id-start/pull/18)) - Update github-actions ([#​16](https://redirect.github.com/oxc-project/unicode-id-start/pull/16)) - Update Rust crate rand to 0.9.3 \[SECURITY] ([#​15](https://redirect.github.com/oxc-project/unicode-id-start/pull/15)) - Move Renovate config to repository root ([#​14](https://redirect.github.com/oxc-project/unicode-id-start/pull/14)) - enable renovatebot ([#​13](https://redirect.github.com/oxc-project/unicode-id-start/pull/13)) - apply cargo shear --fix ([#​12](https://redirect.github.com/oxc-project/unicode-id-start/pull/12)) - add SECURITY.md - replace wrapping_shr with direct bit shift ([#​10](https://redirect.github.com/oxc-project/unicode-id-start/pull/10)) - pin dtolnay/rust-toolchain - update - Fix readme badges ([#​9](https://redirect.github.com/oxc-project/unicode-id-start/pull/9)) - update permissions - add renovatebot - Add manual workflow for Unicode update ([#​7](https://redirect.github.com/oxc-project/unicode-id-start/pull/7)) </details> <details> <summary>algesten/ureq (ureq)</summary> ### [`v3.4.2`](https://redirect.github.com/algesten/ureq/blob/HEAD/CHANGELOG.md#342) [Compare Source](https://redirect.github.com/algesten/ureq/compare/3.4.1...3.4.2) - Bump ureq-proto to 0.6.3 (fixes network-path references in redirects) - Bypass pooling for request connection settings incompatible with the Agent [#​1201](https://redirect.github.com/algesten/ureq/issues/1201) - Try the next resolved address on unreachable/unavailable connect errors [#​1195](https://redirect.github.com/algesten/ureq/issues/1195) </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:eyJjcmVhdGVkSW5WZXIiOiI0NC4xNjQuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjE2NC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> |
||
|
|
7e40ffc372 |
feat(lexer): cpu_versions macro work on methods (#27907)
`cpu_versions` macro (introduced in #27712) could only be put on free functions, not methods. Add support for methods to the macro. |
||
|
|
775a84ba0c |
feat(lexer): add types for runtime feature detection (#27712)
This PR is the start of the transition from compile-time CPU features detection to runtime detection. It introduces: - `DynCpu`: Enum representing any of the CPU feature sets available on the current platform. - `Avx2`, `Neon`, `Generic`: Zero-sized types which each represent a single CPU feature set. - `Cpu`: Trait which is implemented for all the above types. - `cpu_select!`: Macro to dispatch to a different implementation depending on CPU capabilities, given an `impl Cpu`. - `cpu_versions!`: Macro to generate multiple versions of a function for all CPU feature sets available on current platform, with an entry point that dispatches to the appropriate one depending on what `impl Cpu` is passed to it. `DynCpu` and the feature set types (`Avx2`, `Neon`, `Generic`) are unforgeable. `DynCpu` can only be created with `DynCpu::detect()`, which returns a definitive answer. `Avx2` etc types can only be obtained from `DynCpu`, so they act as tokens guaranteeing that feature set _is_ supported on current CPU. Therefore, it's statically impossible to call a function which takes `Avx2` as a parameter when the CPU does not support AVX2. This invariant is a type system-level guarantee, meaning that some functions which would otherwise be unsafe purely because they rely on a specific CPU feature set can become safe functions. This PR only introduces these primitives, it does not use them anywhere in `oxc_lexer` yet. Migrating over to them can happen incrementally. Later PRs in this stack start that process. `DynCpu::detect()` at present does _not_ do runtime feature detection. It still requires building with `-C target-feature=+avx2,+bmi2,+popcnt` to enable AVX2 on x86_64. It can be switched over to doing runtime feature detection once the whole crate has migrated to the new primitives. |
||
|
|
52ee29d1be |
fix(formatter_yaml): never start col-0 line with document marker or BOM (#27818)
- Bump `oxc-yaml-parser` to 0.0.7 - handles NUL as content, BOM only outside a document, markers only at column 0 - Keep `---`/`...` content on the `---` line, keep `?` on a root key starting with a marker, and indent a flow scalar continuation line starting with a marker - Add `---` before a document whose first text is U+FEFF |
||
|
|
814eaeb2c6 |
fix(formatter_toml): bump oxc-toml to keep commented inline table (#27782)
https://github.com/oxc-project/oxc-toml/releases/tag/v0.15.1 |
||
|
|
fddf422904 |
fix(deps): update rustls to 0.23.46 (#27810)
- Update the locked `rustls` version from 0.23.45 to 0.23.46. - Address RUSTSEC-2026-0346, RUSTSEC-2026-0347, RUSTSEC-2026-0348, and RUSTSEC-2026-0349 reported by Security Analysis CI. - https://github.com/oxc-project/oxc/actions/runs/38845387708/job/116794625241 |
||
|
|
e3c1b11531 |
fix(ast)!: preserve lone surrogates in static property names (#27095)
`PropertyKey::static_name()` and `ClassElement::static_name()` returned `None` for a key such as `{ "\uD800": 1 }`, so rules treated it as dynamic and missed duplicate keys, duplicate class members, accessor pairs and overloads with these names.
They now return `StaticPropertyName`, which borrows the key's `JSStr` from the AST or owns the text of a numeric key. Regex keys use their canonical name, so `[/a/ig]` is `/a/gi`. `sort-keys` now sorts lone-surrogate keys too, with the comparator from #27579. async-to-generator no longer emits an invalid function name such as `1` for a key like `"\uD8001"`. `JSStr::display()` is added for diagnostics; it writes a lone surrogate as `\uXXXX`.
## Breaking changes
- `PropertyKey::static_name`, `PropertyKey::name` and `ClassElement::static_name` return `Option<StaticPropertyName<'a>>` instead of `Option<Cow<'a, str>>`.
- `oxc_semantic::class::table::Element.name` is `StaticPropertyName<'a>`.
Based on #26677. Part of #26242. Continues #26720.
Implemented with AI assistance.
|
||
|
|
1c393c0289 |
perf(formatter_core): skip scanning texts with nothing to rewrite (#27561)
Most texts have no byte that `normalize_string` or `normalize_newlines` rewrites, so find the first candidate with `memchr` and return the text borrowed when there is none. `is_all_printable_ascii` drops its early exit so that it vectorizes. JSON benefited the most, and instructions tested locally showed a 12% reduction. |
||
|
|
1d3ef102fe |
perf(formatter_core): keep the embedded IR when nothing in it is rewritten (#27673)
`map_text_in_ir` now takes the IR by value and returns it as is when the callback rewrites nothing; a rebuild starts at the first change. Markdown code blocks no longer pre-scan their IR (`scan_texts`), the fence character is found by the same walk. |
||
|
|
3b07d0d52d |
refactor(ast)!: migrate string literals and templates to JSStr (#26548)
JavaScript strings can contain lone surrogates, which Rust's `str` cannot hold. String literal values and template cooked values stored them in a private U+FFFD escape encoding behind a `lone_surrogates` flag that every consumer had to check. This migrates `StringLiteral::value` and `TemplateElementValue::cooked` to `JSStr`, which keeps the exact UTF-16 value through parsing, AST consumers, codegen and ESTree/raw transfer. Code that needs Rust text calls `JSStr::as_str()`, which returns `None` for a value with a lone surrogate. Surrogate halves written as separate escapes or concatenated from separate parts are joined. Enum members whose name or value contains a lone surrogate keep their string kind, so lowering no longer emits a reverse mapping for a string alias that could overwrite another member. Some lint and declaration checks skip lone-surrogate names until #26677, #27095, #26716 and #26717. ## Breaking changes - `StringLiteral::value` is `JSStr<'a>`, and `TemplateElementValue::cooked` is `Option<JSStr<'a>>`. - Removed: the `lone_surrogates` fields, the `*_with_lone_surrogates` builder methods, `oxc_parser::Token::lone_surrogates`, and `impl Display for StringLiteral`. - `ImportAttributeKey::as_arena_str` is renamed to `as_js_str`. `TSEnumMemberName::static_name`, `TemplateLiteral::single_quasi` and `ModuleRunnerTransform::transform` return `JSStr`. - `oxc_estree::LoneSurrogatesString` wraps an iterator of code points. - `ModuleExportName::name` panics on a string name with a lone surrogate, which only a built AST can contain. Part of #26242. Implemented with AI assistance. |
||
|
|
6941b4ed45 |
release(apps): oxlint v1.88.0 && oxfmt v0.73.0 (#27643)
# Oxlint ### 💥 BREAKING CHANGES - |
||
|
|
d47efe5cb8 |
release(crates): oxc v0.154.0 (#27644)
### 💥 BREAKING CHANGES - |
||
|
|
76ec31b031 |
fix(formatter_css): support css-in-js placeholders in property names and conditions (#27640)
Fixes #27635, fixes #27572. With bumping `oxc-css-parser`. |
||
|
|
80840acdb9 |
chore(deps): update napi (#27374)
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.10.7` → `3.10.8`](https://renovatebot.com/diffs/npm/@napi-rs%2fcli/3.10.7/3.10.8) |  |  |  |  | pnpm.catalog.default | patch | | [napi](https://redirect.github.com/napi-rs/napi-rs) | `3.14.1` → `3.14.2` |  |  |  |  | workspace.dependencies | patch | | [napi-derive](https://redirect.github.com/napi-rs/napi-rs) | `3.6.11` → `3.6.12` |  |  |  |  | workspace.dependencies | patch | --- ### Release Notes <details> <summary>napi-rs/napi-rs (@​napi-rs/cli)</summary> ### [`v3.10.8`](https://redirect.github.com/napi-rs/napi-rs/releases/tag/%40napi-rs/cli%403.10.8) [Compare Source](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.10.7...@napi-rs/cli@3.10.8) #### What's Changed - chore(deps): update dependency oxc-parser to ^0.153.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​3569](https://redirect.github.com/napi-rs/napi-rs/pull/3569) - fix(napi): bound serde_json::Value conversion depth at 128 levels by [@​Brooooooklyn](https://redirect.github.com/Brooooooklyn) in [#​3568](https://redirect.github.com/napi-rs/napi-rs/pull/3568) - fix(napi): own NativeBorrowScope storage via NonNull to fix aliasing violation by [@​Brooooooklyn](https://redirect.github.com/Brooooooklyn) in [#​3573](https://redirect.github.com/napi-rs/napi-rs/pull/3573) - fix(napi): register the wasm cleanup through the env cleanup hook by [@​Brooooooklyn](https://redirect.github.com/Brooooooklyn) in [#​3571](https://redirect.github.com/napi-rs/napi-rs/pull/3571) - chore(deps): update dependency webdriverio to v10 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​3566](https://redirect.github.com/napi-rs/napi-rs/pull/3566) - fix(cli): keep WASI-managed root entry that differs from package main by [@​Brooooooklyn](https://redirect.github.com/Brooooooklyn) in [#​3572](https://redirect.github.com/napi-rs/napi-rs/pull/3572) - chore(deps): update dependency [@​oxc-node/core](https://redirect.github.com/oxc-node/core) to v0.1.3 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​3564](https://redirect.github.com/napi-rs/napi-rs/pull/3564) - chore(cli): recognize the aarch64-unknown-freebsd target by [@​samm-git](https://redirect.github.com/samm-git) in [#​3574](https://redirect.github.com/napi-rs/napi-rs/pull/3574) #### New Contributors - [@​samm-git](https://redirect.github.com/samm-git) made their first contribution in [#​3574](https://redirect.github.com/napi-rs/napi-rs/pull/3574) **Full Changelog**: <https://github.com/napi-rs/napi-rs/compare/napi-async-runtime-v0.2.5...@napi-rs/cli@3.10.8> </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:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMzQuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjEzNC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |
||
|
|
c2e6d5fad2 |
feat(formatter_toml)!: add oxc_formatter_toml crate wrapping oxc-toml (#27365)
- Before: Oxfmt directly calls `oxc-toml` - After: Oxfmt calls `oxc_formatter_toml` as like others - `oxc_formatter_toml` is wrapper for `oxc-toml` but aligned behavior with other formatters - Also embedded TOML (frontmatter, toml-in-markdown) are now formatted - Formatting logic still lives in `oxc-toml` side, not yet ported And by bumping `oxc-toml`, TOML 1.1 syntax is supported. |
||
|
|
2bd08ebe8f |
release(apps): oxlint v1.87.0 && oxfmt v0.72.0 (#27341)
# Oxlint ### 🚀 Features - |
||
|
|
2d5310df24 |
chore(deps): update napi to v3.14.1 (#27345)
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [napi](https://redirect.github.com/napi-rs/napi-rs) | workspace.dependencies | patch | `3.14.0` → `3.14.1` | | [napi-derive](https://redirect.github.com/napi-rs/napi-rs) | workspace.dependencies | patch | `3.6.10` → `3.6.11` | --- ### Release Notes <details> <summary>napi-rs/napi-rs (napi)</summary> ### [`v3.14.1`](https://redirect.github.com/napi-rs/napi-rs/releases/tag/napi-v3.14.1) [Compare Source](https://redirect.github.com/napi-rs/napi-rs/compare/napi-v3.14.0...napi-v3.14.1) ##### Fixed - *(napi)* create objects with napi\_define\_properties on every Node version ([#​3560](https://redirect.github.com/napi-rs/napi-rs/pull/3560)) </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 these updates 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:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMjUuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjEyNS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |