Boshen
9dd33b080c
release(crates): oxc v0.122.0 ( #20648 )
2026-03-23 17:59:21 +08:00
Boshen
6cd513ffae
release(crates): oxc v0.121.0 ( #20515 )
...
### 🚀 Features
- 7215d9e transformer: Support lowering `accessor` with legacy
decorators (#20348 ) (Dunqing)
### 🐛 Bug Fixes
- 3bbd0cd transformer: Emit `Object` instead of `void 0` for untyped
getter/setter `design:type` metadata (#20488 ) (Dunqing)
- 4ae3f3f ecmascript: Apply coercion-is-pure assumption to constructor
side-effect detection (#20420 ) (Dunqing)
- 11f9695 transformer: Legacy decorator on computed property key leaves
variable unassigned (#20430 ) (bab)
- efeba28 ecmascript: Add argument validation for NewExpression
side-effect detection (#20395 ) (Dunqing)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-03-19 14:31:00 +08:00
Boshen
8741e6532a
release(crates): oxc v0.120.0 ( #20422 )
...
### 🐛 Bug Fixes
- edb8677 ecmascript: Treat collection constructor with variable arg as side-effectful (#20383 ) (Dunqing)
- 1f65c3f transformer: Emit design:paramtypes when class has static anonymous class expression (#20382 ) (bab)
- fa70d5c transformer: Use implementation signature for design:paramtypes when constructor is overloaded (#20394 ) (bab)
- ed5a7fb parser: Report syntax error for `new super()` (#20384 ) (Boshen)
- e62524d minifier: Treat object spread of getters as having side effects (#20380 ) (Boshen)
- f8fbd6e linter/plugins: Remove `hashbang` property from AST (#20365 ) (overlookmotel)
### ⚡ Performance
- 30a2b0f minifier: Use atom_from_strs_array for template literal concat (#20386 ) (Boshen)
- 690ce17 minifier: Use Vec::with_capacity for inline template expressions (#20389 ) (Boshen)
- 9cd612f linter/plugins: Recycle comment objects (#20362 ) (overlookmotel)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-03-16 10:28:35 +00:00
renovate
c27263ad61
chore(deps): update dependency oxlint-tsgolint to v0.17.0 ( #20405 )
...
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/ ) |
|---|---|---|---|---|---|
| [oxlint-tsgolint](https://redirect.github.com/oxc-project/tsgolint ) | [`0.16.0` → `0.17.0`](https://renovatebot.com/diffs/npm/oxlint-tsgolint/0.16.0/0.17.0 ) |  |  |  |  |
---
### Release Notes
<details>
<summary>oxc-project/tsgolint (oxlint-tsgolint)</summary>
### [`v0.17.0`](https://redirect.github.com/oxc-project/tsgolint/releases/tag/v0.17.0 )
[Compare Source](https://redirect.github.com/oxc-project/tsgolint/compare/v0.16.0...v0.17.0 )
#### What's Changed
- refactor: make E2E benchmark more realistic by [@​camchenry](https://redirect.github.com/camchenry ) in [#​763](https://redirect.github.com/oxc-project/tsgolint/pull/763 )
- docs: improve README positioning by [@​Boshen](https://redirect.github.com/Boshen ) in [#​767](https://redirect.github.com/oxc-project/tsgolint/pull/767 )
- Revise oxlint command examples in README by [@​connorshea](https://redirect.github.com/connorshea ) in [#​768](https://redirect.github.com/oxc-project/tsgolint/pull/768 )
- chore(deps): update dependency vitest>vite to v8.0.0-beta.16 by [@​renovate](https://redirect.github.com/renovate )\[bot] in [#​770](https://redirect.github.com/oxc-project/tsgolint/pull/770 )
- chore(deps): update github-actions by [@​renovate](https://redirect.github.com/renovate )\[bot] in [#​771](https://redirect.github.com/oxc-project/tsgolint/pull/771 )
- chore(deps): update module golang.org/x/sys to v0.42.0 by [@​renovate](https://redirect.github.com/renovate )\[bot] in [#​772](https://redirect.github.com/oxc-project/tsgolint/pull/772 )
- chore(deps): update taiki-e/install-action action to v2.68.25 by [@​renovate](https://redirect.github.com/renovate )\[bot] in [#​773](https://redirect.github.com/oxc-project/tsgolint/pull/773 )
- fix(dot-notation): optional chaining autofix by [@​camc314](https://redirect.github.com/camc314 ) in [#​775](https://redirect.github.com/oxc-project/tsgolint/pull/775 )
- fix(no-unnecessary-condition): avoid false positive for unresolved conditional null checks by [@​camc314](https://redirect.github.com/camc314 ) in [#​776](https://redirect.github.com/oxc-project/tsgolint/pull/776 )
- fix(prefer-optional-chain): false positive on unrelated comparisons by [@​camc314](https://redirect.github.com/camc314 ) in [#​778](https://redirect.github.com/oxc-project/tsgolint/pull/778 )
- chore(justfile): add alias `r` for `ready` by [@​younggglcy](https://redirect.github.com/younggglcy ) in [#​782](https://redirect.github.com/oxc-project/tsgolint/pull/782 )
- chore(justfile): add pnpm install steps to init recipe by [@​younggglcy](https://redirect.github.com/younggglcy ) in [#​783](https://redirect.github.com/oxc-project/tsgolint/pull/783 )
- fix(no-base-to-string): handle overloaded toString declarations by [@​camc314](https://redirect.github.com/camc314 ) in [#​779](https://redirect.github.com/oxc-project/tsgolint/pull/779 )
- chore: update typescript-go submodule by [@​camc314](https://redirect.github.com/camc314 ) in [#​785](https://redirect.github.com/oxc-project/tsgolint/pull/785 )
- fix(restrict-plus-operands): report actual type instead of always reporting RegExp by [@​younggglcy](https://redirect.github.com/younggglcy ) in [#​786](https://redirect.github.com/oxc-project/tsgolint/pull/786 )
- fix(no-unnecessary-condition): handle IndexedAccess types in ?? and ??= paths by [@​younggglcy](https://redirect.github.com/younggglcy ) in [#​784](https://redirect.github.com/oxc-project/tsgolint/pull/784 )
- fix(no-unnecessary-type-assertion): handle JSDoc autofix ranges by [@​Jkker](https://redirect.github.com/Jkker ) in [#​781](https://redirect.github.com/oxc-project/tsgolint/pull/781 )
- fix(no-unnecessary-condition): handle branded record keys in nullish checks by [@​camc314](https://redirect.github.com/camc314 ) in [#​791](https://redirect.github.com/oxc-project/tsgolint/pull/791 )
- chore: update typescript-go submodule by [@​camc314](https://redirect.github.com/camc314 ) in [#​788](https://redirect.github.com/oxc-project/tsgolint/pull/788 )
- fix(no-unnecessary-condition): use resolved call types for optional chains by [@​camc314](https://redirect.github.com/camc314 ) in [#​792](https://redirect.github.com/oxc-project/tsgolint/pull/792 )
#### New Contributors
- [@​younggglcy](https://redirect.github.com/younggglcy ) made their first contribution in [#​782](https://redirect.github.com/oxc-project/tsgolint/pull/782 )
- [@​Jkker](https://redirect.github.com/Jkker ) made their first contribution in [#​781](https://redirect.github.com/oxc-project/tsgolint/pull/781 )
**Full Changelog**: <https://github.com/oxc-project/tsgolint/compare/v0.16.0...v0.17.0 >
</details>
---
### Configuration
📅 **Schedule**: 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:eyJjcmVhdGVkSW5WZXIiOiI0My42Ni40IiwidXBkYXRlZEluVmVyIjoiNDMuNjYuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
2026-03-16 09:55:10 +00:00
Boshen
e9b5546ed2
release(crates): oxc v0.119.0 ( #20371 )
...
### 🚀 Features
- e7163b6 ecmascript: Add known-globals to side-effect-free property
reads (#20212 ) (Dunqing)
- 139ab68 ecmascript: Add `property_write_side_effects` to
`MayHaveSideEffectsContext` (#20217 ) (Dunqing)
### 🐛 Bug Fixes
- 78c264a parser: Fix conditional expressions with arrow-function
alternates in TS (#20356 ) (camc314)
- 5c97b14 minifier: Recognize object spread of object literals as
side-effect-free (#20299 ) (Boshen)
- 1ff5c1d transformer/typescript: Rewrite extensions in dynamic
`import()` expressions (#20121 ) (Sverre Johansen)
- 1c07b3b diagnostics: Handle `WouldBlock` in stdout writes to prevent
panic (#20295 ) (Boshen)
- ade14d4 ecmascript: Enhance side-effect detection for classes,
TypedArrays, computed members, and spread (#20213 ) (Dunqing)
### ⚡ Performance
- 5474d0a semantic: V8-style walk-up reference resolution (#20292 )
(Boshen)
### 📚 Documentation
- e4aa5b5 parser/napi, linter/plugins: Add JSDoc comments to raw
transfer constants (#20286 ) (overlookmotel)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-03-14 17:23:27 +08:00
Boshen
ce4ecb0ffe
release(crates): oxc v0.118.0 ( #20266 )
...
Co-authored-by: leaysgur <6259812+leaysgur@users.noreply.github.com >
2026-03-12 14:31:12 +09:00
overlookmotel
1606bd1feb
refactor(apps, napi, tasks): remove noUnusedLocals from tsconfigs ( #20155 )
...
Remove `noUnusedLocals` option from `tsconfig.json` files. It's redundant, as Oxlint `no-unused-vars` covers this for us.
It's an annoyance to have `noUnusedLocals` enabled, as in VS Code TypeScript complains about unused vars, even if they're prefixed with `_`.
Removing this option allows simplifying type tests added in #20066 . Only reason these types had to be exported was to stop TS complaining that they were unused.
2026-03-09 13:42:12 +00:00
Boshen
dafe4ad8cc
release(crates): oxc v0.117.0 ( #20142 )
...
### 🚀 Features
- e8547cc parser: Report error for using declarations in ambient
contexts (#19934 ) (camc314)
- 8345318 allocator: Add methods for boxed slices `ArenaBox<[T]>`
(#19968 ) (overlookmotel)
- f83be30 allocator: Add `Vec::push_fast` method (#19959 )
(overlookmotel)
### 🐛 Bug Fixes
- 291d867 transformer_plugins: Unwrap ChainExpression after define
replacement removes optional markers (#20058 ) (IWANABETHATGUY)
- 36b2e56 codegen: Print type for TSImportEqualsDeclaration (#20128 )
(camc314)
- 5a246ec codegen: Print type arguments for JSXOpeningElement (#20127 )
(camc314)
- a40870e codegen: Preserve parens for TSNonNullExpression (#20125 )
(camc314)
- ae830b2 codegen: Print `declare` for `TSInterfaceDeclaration` (#20124 )
(camc314)
- 92cfb14 linter/plugins: Fix types for `walkProgram` and
`walkProgramWithCfg` (#20081 ) (overlookmotel)
- ee0491e apps,napi: Explicitly specify libs in tsconfigs (#20071 )
(camc314)
- 588009e codegen: Print `static` keyword for TSIndexSignature (#19755 )
(Dunqing)
- 5a8799c codegen: Print `with_clause` for `ExportNamedDeclaration`
(#20002 ) (Dunqing)
- 7502afe parser: Correct capacity for tokens `Vec` (#19967 )
(overlookmotel)
### ⚡ Performance
- 4ea8f9a napi: Remove `napi_build::setup()` from `oxc_napi` to avoid
redundant rebuilds (#20094 ) (Boshen)
- 2baa5fb napi: Unify build-test profile to coverage for cache sharing
(#20090 ) (Boshen)
- 8ba61dd parser: Make pushing tokens faster (#19960 ) (overlookmotel)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-03-09 10:49:21 +00:00
Boshen
2baa5fbb77
perf(napi): unify build-test profile to coverage for cache sharing ( #20090 )
2026-03-07 13:02:35 +08:00
camc314
ee0491e937
fix(apps,napi): explicitly specify libs in tsconfigs ( #20071 )
...
Replaces #20064
The `dom` lib was implicitly being injected, this means stuff like `Token` and `Comment` were in the global scope, which was incorrect.
cc @overlookmotel
2026-03-06 14:46:23 +00:00
Boshen
3a8c4a4cad
release(crates): oxc v0.116.0 ( #19911 )
...
### 🚀 Features
- 733d6dc parser: Report error on `infer` outside conditional type
(#19879 ) (camc314)
- c2a42f6 allocator: Add `Vec::into_bump_slice_mut` (#19895 )
(overlookmotel)
- ee4982b parser: Add `VARIANTS` const to `Kind` via `fieldless_enum!`
macro (#19877 ) (overlookmotel)
- b3dceae data_structures: Add `fieldless_enum!` macro (#19876 )
(overlookmotel)
- 12b841e parser: Make all `Kind::is_*` methods `const` (#19874 )
(overlookmotel)
- 25c2e25 estree/tokens: Add function to update tokens in place (#19856 )
(overlookmotel)
- f78e6df parser: Add `mutate_tokens` Cargo feature (#19853 )
(overlookmotel)
- 5036bb6 parser: Report error on `for await` in static blocks (#19844 )
(camc314)
- 42bd431 parser: Report error for missing initializer in using decl
(#19824 ) (camc314)
- a2f58e5 parser: Report error for `implements` clause in non-ts files
(#19820 ) (Cameron)
- b25228a estree: Add `IS_COMPACT` const to `Formatter` trait (#19787 )
(overlookmotel)
- e2a1b79 estree: Expose buffer and formatter of serializers (#19773 )
(overlookmotel)
- 4699498 data_structures: Add `CodeBuffer::print_strs_array` (#19760 )
(overlookmotel)
- 233f947 estree: `oxc_estree` crate export config and formatter types
(#19724 ) (overlookmotel)
- 5937a32 semantic: Introduce `symbol_declarations` method (#19609 )
(camc314)
- ea6b796 parser: Add `LexerConfig::TOKENS_METHOD_IS_STATIC` const
(#19683 ) (overlookmotel)
- 655c38f semantic: Add "did you mean?" suggestions to undefined name
errors (#19102 ) (copilot-swe-agent)
- 9e11dc6 parser,estree,coverage: Collect tokens in parser and convert
to ESTree format (#19497 ) (camc314)
- c4a3677 parser: Report error for initializer in ambient context
(#19187 ) (camc314)
### 🐛 Bug Fixes
- abc7e19 codegen: Improve parenthesised checks when printing types
(#19880 ) (camc314)
- 017de5d parser: Update error code for type annotation in `for...in`
statement (#19882 ) (camc314)
- 7682e5a linter/plugins: Decode escapes in identifier tokens (#19838 )
(overlookmotel)
- 06767ed estree/tokens: Convert `this` tokens in `TSTypeName` (#19815 )
(overlookmotel)
- ef798af parser: Use TS8037 for satisfies expression in JS files
diagnostic (#19819 ) (camc314)
- 98ea5c5 parser: Use TS8016 for type assertions in JS files diagnostic
(#19818 ) (camc314)
- 1710f56 codegen: Remove double indentation for enum inside namespace
(#19775 ) (Dunqing)
- 9e4995c codegen: Print type annotation on `CatchParameter` (#19790 )
(camc314)
- 297b2bb codegen: Wrap `TSConditionalType` in parens when necessary
(#19788 ) (camc314)
- cec7878 codegen: Print `definite` property on AccessorProperty
(#19786 ) (camc314)
- 6f395cf codegen: Print `definite` property on PropertyDefinition
(#19785 ) (camc314)
- b749373 codegen: Correctly parenthesise TSArrayType (#19784 ) (camc314)
- 876dc1b codegen: Print object property `this` param (#19783 ) (camc314)
- 93bb861 formatter: Trim trailing whitespace before breaking line
(#19740 ) (leaysgur)
- ed17bbf codegen: Print `override` keyword for method and property
definitions (#19753 ) (Dunqing)
- 6a59a76 parser: Improve error recovery for private identifiers in
property names (#19710 ) (Boshen)
- 3b96f41 codegen: Print comments in JSX expression containers and
spread attributes (#19701 ) (Boshen)
- f5694ce estree/tokens: Reverse field order of `regex` object in tokens
(#19679 ) (overlookmotel)
- b2b7a55 estree/tokens: Generate tokens for files with BOM (#19535 )
(overlookmotel)
- 50a7514 estree: Fix tokens for JSX (#19524 ) (overlookmotel)
- a35063e minifier: Preserve side effects for meta property url reads
(#19668 ) (Boshen)
- 8ad3430 semantic/jsdoc: Handle even-numbered backtick sequences in
JSDoc parsing (#19664 ) (Boshen)
### ⚡ Performance
- 05ccf9f linter/plugins: Transfer tokens via raw transfer (#19893 )
(overlookmotel)
- c1bfdcf estree/tokens: Preallocate sufficient space for tokens JSON
(#19851 ) (overlookmotel)
- 4b0611a estree/tokens: Introduce `ESTreeTokenConfig` trait (#19842 )
(overlookmotel)
- 81bab90 estree/tokens: Do not JSON-encode keyword, punctuator, etc
tokens (#19814 ) (overlookmotel)
- 6260ddd estree/tokens: Do not JSON-encode `this` identifiers (#19813 )
(overlookmotel)
- b378f4a estree/tokens: Do not JSON-encode JSX identifiers (#19812 )
(overlookmotel)
- 5016d92 estree/tokens: Handle regex tokens separately (#19796 )
(overlookmotel)
- 780a68e estree/tokens: Use strings from AST for identifier tokens
(#19744 ) (overlookmotel)
- dc9c2e3 estree: Use `CodeBuffer::print_strs_array` to reduce bounds
checks (#19766 ) (overlookmotel)
- 845da35 estree: Use `CodeBuffer::print_indent` (#19727 )
(overlookmotel)
- ec88f6a estree/tokens: Serialize tokens while visiting AST (#19726 )
(overlookmotel)
- bc6507f estree/tokens: Serialize with `ESTree` not `serde` (#19725 )
(overlookmotel)
- ec24859 estree/tokens: Do not branch on presence of override twice
(#19721 ) (overlookmotel)
- dac14be estree/tokens: Replace hash map with `Vec` (#19718 )
(overlookmotel)
- b9d2443 estree/tokens: Replace multiple hash sets into a single hash
map (#19716 ) (overlookmotel)
- 7233548 parser: Remove branches from `finish_next_inner` (#19695 )
(overlookmotel)
- b5d9845 parser: Remove const generic param from `finish_next_inner`
(#19684 ) (overlookmotel)
- 8940f66 estree/tokens: Serialize tokens to compact JSON (#19572 )
(overlookmotel)
- 136e39b parser/tokens: Pre-allocate capacity for tokens (#19543 )
(overlookmotel)
- 6a6513c linter/plugins: Use Oxc tokens in plugins (#19498 ) (camc314)
- b3b2d30 parser: Introduce `ParserConfig` (#19637 ) (overlookmotel)
### 📚 Documentation
- b2b7a64 estree/tokens: Correct comment (#19873 ) (overlookmotel)
- 0399311 estree/tokens: Improve comments (#19836 ) (overlookmotel)
- 1b392de minifier: Add `Function.prototype.toString` assumption
(#19758 ) (sapphi-red)
- 75c9cd8 parser: Improve doc comments for `ParserConfig` and
`LexerConfig` (#19682 ) (overlookmotel)
- 2fa936f README.md: Map npm package links to npmx.dev (#19666 ) (Boshen)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-03-02 11:21:50 +00:00
Boshen
7675bc43e7
release(crates): oxc v0.115.0 ( #19626 )
...
### 🚀 Features
- e814049 oxc_data_structure/rope: Add `get_offset_from_line_and_column`
(#18133 ) (Sysix)
### 🐛 Bug Fixes
- 7958b56 linter: Fix syntax error reporting in some output formatters.
(#19590 ) (connorshea)
- e316694 codegen: Avoid sourcemap panic on `U+2028`/`U+2029` (#19548 )
(camc314)
- 933ff72 semantic: Emit correct error code for reserved type name
(#19545 ) (camc314)
### ⚡ Performance
- b5fa195 codegen: Remove bounds check from `SourcemapBuilder` (#19578 )
(overlookmotel)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-02-23 10:07:11 +00:00
Boshen
704c109d6d
release(crates): oxc v0.114.0 ( #19429 )
...
### 🚀 Features
- 429d876 semantic: Assign ast node ids during semantic build (#19263 )
(Boshen)
- ebb80b3 ast: Add `node_id` field to all AST struct nodes (#18138 )
(Boshen)
### 🐛 Bug Fixes
- bfb15a3 semantic: Make multi_index_vec clone panic-safe (#19299 )
(Boshen)
- 41c50a5 transformer: Ignore invalid JSX pragma identifiers (#19296 )
(Boshen)
- deed3d8 transformer: Remove unnecessary trailing expression in object
rest spread assignment (#19259 ) (Boshen)
- 5bdaacc transformer: Propagate source spans for sourcemap correctness
(#19258 ) (Boshen)
- 3e0e5ba isolated-declarations: Align readonly class array initializer
diagnostics with tsc (#19218 ) (camc314)
### ⚡ Performance
- c169c77 syntax: Optimize `is_identifier_name_patched` (#19386 )
(sapphi-red)
- aa1e1a8 allocator: Inline BitSet accessors (#19331 ) (Boshen)
- 5b90d46 semantic: Improve SoA with multi index vec (#19138 ) (Boshen)
- 99ce2a6 isolated_declarations: Mark all diagnostic functions as
`#[cold]` (#19279 ) (camc314)
- dd0220f transformer: Remove TS-only nodes earlier in
`enter_statements` (#19166 ) (Dunqing)
- e5baf60 isolated-declarations: Replace hash collections with
index-based Vec (#19221 ) (Dunqing)
### 📚 Documentation
- 569aa61 rust: Add missing rustdocs and remove missing_docs lint attrs
(#19306 ) (Boshen)
2026-02-16 13:03:46 +00:00
Cameron
bcd0f6430f
fix(napi): disable mimalloc global allocator on android targets ( #19214 )
2026-02-10 19:06:06 +08:00
Boshen
acdb40ed42
release(crates): oxc v0.113.0 ( #19210 )
...
### 💥 BREAKING CHANGES
- 2bf7293 mangler: [**BREAKING**] Enable `top_level` by default for
modules and commonjs (#18278 ) (sapphi-red)
- 48b0542 span: [**BREAKING**] SourceType::ts should set module to
unambigious (#18873 ) (Boshen)
### 🚀 Features
- 500d071 minifier: Local traverse ctx and generated minifier traverse
(#19106 ) (Boshen)
- 142a1be parser: Detect binary files with TS1490 error (#19047 )
(Boshen)
- e316857 allocator/bitset: Add `Ones` iterator to `BitSet` (#19027 )
(sapphi-red)
- 742ad3f minifier: Default `invalid_import_side_effects` to `false`
(#18916 ) (sapphi-red)
- 0eff6be parser: Error JSX-like type assertions and generics in
`.mts`/`.cts` (#18910 ) (Boshen)
- 18320c6 span: Store file extension in `SourceType` (#18893 ) (Boshen)
### 🐛 Bug Fixes
- a7514e4 isolated-declarations: Preserve const context in literal type
inference (#19178 ) (camc314)
- 312e756 isolated-declarations: Preserve readonly literal initializers
(#19177 ) (camc314)
- d0ca8d0 isolated-declarations: Skip parenthesis when inferring type
(#19176 ) (camc314)
- 110c300 oxc_ecmascript: `+[false]` and `+[true]` should evaluate to
`NaN` (#19174 ) (copilot-swe-agent)
- f32ea19 semantic: Report redeclaration error for import bindings
conflicting with value declarations (#19068 ) (Boshen)
- 3aeba7a semantic: Report redeclaration error for `function a() {} var
a` in module mode (#19041 ) (Boshen)
- 35e32c6 coverage: Match Babel's options.json inheritance for test
fixtures (#19002 ) (Boshen)
- 463d60d semantic: Skip TS2391 for standalone computed-name class
methods (#19025 ) (Boshen)
- 56c086b parser: Add modifier ordering validation (TS1029) (#19024 )
(Boshen)
- 6067a49 linter/jsdoc: False positive in `check-tag-names` for `@` in
email addresses and npm scopes (#19021 ) (Boshen)
- b13bb70 semantic/jsdoc: Inline tags like `{@link}` break jsdoc parsing
(#19019 ) (Boshen)
- e3609e3 regular_expression: Preserve UnicodeEscape CharacterKind in
string literals (#18998 ) (Boshen)
- 57917ee parser: Parse decorators on rest parameters (#18938 ) (Boshen)
- 487601b napi: Disable mimalloc on Windows to fix worker_threads crash
(#18923 ) (Boshen)
- 1f6b193 parser: Validate TypeScript import type options (#18889 )
(Boshen)
- 1663184 parser: Allow conditional types in function type parameters
(#18886 ) (Boshen)
- 5758046 parser: Error on property access after instantiation
expression (#18887 ) (Boshen)
- 5eb4a94 parser: Handle `<<` as two `<` tokens in type argument
contexts (#18885 ) (Boshen)
### ⚡ Performance
- ed8c054 oxc_str: Add precomputed hash to Ident for fast HashMap
lookups (#19143 ) (Boshen)
- d4a0867 transformer_plugins: Switch ReplaceGlobalDefines from Traverse
to VisitMut (#19146 ) (Boshen)
- 9eb16b3 syntax: Pack ASCII identifier tables into single bitflag table
(#19088 ) (Boshen)
- e7595d1 mangler: Use BitSet for exported symbols set (#19023 )
(sapphi-red)
- 2537924 semantic: Optimize scope resolution with fast paths and
inlining (#19029 ) (Boshen)
- 69a8d85 mangler: Use BitSet for keep_names symbols set (#19028 )
(sapphi-red)
- f78c525 parser: Try hybrid parsing for jsx children and closing
element/fragments (#18789 ) (camchenry)
Co-authored-by: camc314 <18101008+camc314@users.noreply.github.com >
2026-02-10 09:57:59 +00:00
Boshen
487601baca
fix(napi): disable mimalloc on Windows to fix worker_threads crash ( #18923 )
...
## Summary
- Disable mimalloc as the global allocator on Windows for all NAPI packages (`oxc-parser`, `oxc-minify`, `oxc-transform`)
- On Windows, packages now use the system allocator instead
Fixes #15518
## Root Cause
mimalloc has known issues with DLL unloading on Windows when the DLL is loaded by the main thread but unloaded by a worker thread ([mimalloc issue #288 ](https://github.com/microsoft/mimalloc/issues/288 )). The cleanup code has `_mi_is_main_thread()` checks that prevent proper memory cleanup when called from a non-main thread, causing `STATUS_ACCESS_VIOLATION` crashes.
## Platforms with mimalloc enabled
| Platform | mimalloc |
|----------|----------|
| macOS | ✅ |
| Linux x86_64 | ✅ |
| Linux aarch64 | ✅ |
| Windows | ❌ (disabled) |
| FreeBSD | ❌ |
| ARM 32-bit | ❌ |
| WASM | ❌ |
🤖 Generated with [Claude Code](https://claude.ai/code )
2026-02-04 07:44:37 +00:00
Boshen
6114a1335e
release(crates): oxc v0.112.0 ( #18842 )
...
### 💥 BREAKING CHANGES
- 445cb1a oxc_allocator: [**BREAKING**] Remove dangerous `Allocator`
methods (#18715 ) (overlookmotel)
### 🚀 Features
- 8670b18 parser: Error on ambient class accessor implementations
(#18592 ) (camc314)
### 🐛 Bug Fixes
- 2e34461 minifier: Prevent expression inlining into block-scoped for-in
declarations (#18651 ) (copilot-swe-agent)
### 📚 Documentation
- 3d01fa1 transformer: Update links to use Oxc docs (#18722 )
(sapphi-red)
Co-authored-by: camc314 <18101008+camc314@users.noreply.github.com >
2026-02-02 09:44:24 +00:00
sapphi-red
3d01fa1219
docs(transformer): update links to use Oxc docs ( #18722 )
...
Updated the links to Oxc docs instead of babel and esbuild.
2026-02-01 15:21:18 +00:00
Boshen
9951f16184
release(crates): oxc v0.111.0 ( #18572 )
...
### 💥 BREAKING CHANGES
- 22dec6a semantic: [**BREAKING**] Remove
`Scoping::scope_build_child_ids` and all related APIs (#18362 ) (Dunqing)
- 30a4899 oxc: [**BREAKING**] Remove
`CompilerInterface::semantic_child_scope_ids` (#18361 ) (Dunqing)
- 777fc40 ast: [**BREAKING**] Add `Ident` type (#18354 ) (Boshen)
- af0ca46 span: [**BREAKING**] Use `ModuleKind::CommonJS` for
`SourceType::cjs()` (#18276 ) (sapphi-red)
### 🚀 Features
- 0a02026 semantic: Add TS1499 code to diagnostic (#18557 ) (camc314)
- 8b4618f parser: Add TS1500 code to diagnostic (#18547 ) (camc314)
- 866b6b3 parser: Add TS1048 code to diagnostic (#18546 ) (camc314)
- 1117c44 parser: Add TS1054 code to diagnostic (#18541 ) (camc314)
- e4fcdde semantic: Add TS1053 code to diagnostic (#18539 ) (camc314)
- bcbf396 semantic: Add TS1052 code to diagnostic (#18538 ) (camc314)
- 8155edf semantic: Add TS1049 code to diagnostic (#18535 ) (camc314)
- 51d3b3f parser: Add TS1502 code to diagnostic (#18534 ) (camc314)
- 00854e8 semantic: Add TS2337 error code to super call diagnostic
(#18531 ) (camc314)
- 993fd2b parser: Parse unambiguous await with better error messages
(#18480 ) (Boshen)
- 8db0e78 linter/plugins: Handle BOMs (#18376 ) (overlookmotel)
- 6ac09e2 linter/plugins: Support source text not being at start of
buffer (#18375 ) (overlookmotel)
- 2ef5647 ast: Add escape_raw parameter to template_element builders
(#18121 ) (Boshen)
### 🐛 Bug Fixes
- 74d0998 semantic: Update error msg for multiple `default` cases in
switch stmt (#18526 ) (camc314)
- c205b0d ast: Remove `ThisExpression` from `TSModuleReference` (#18489 )
(Boshen)
- aed3669 parser: Parse HTML-like comments in unambiguous mode (#18442 )
(Boshen)
- c4132fb parser: Validate accessor parameters in interface method
signatures (#18391 ) (Boshen)
- b0cd74d semantic: Allow `var` and `function` with same name in static
blocks (#18358 ) (Boshen)
- 6037995 semantic: Allow `new.target` in class field initializers
(#18349 ) (Boshen)
- 9a15c6a semantic: Do not rely on spans for node comparison in
`Function::bind` (#18296 ) (overlookmotel)
### ⚡ Performance
- 6b600c4 semantic: Skip parent lookup for function declarations in
`Function::bind` (#18293 ) (overlookmotel)
- c27ad2d semantic: Move check for function declaration out of
`is_function_part_of_if_statement` (#18292 ) (overlookmotel)
- 63eb89e semantic: Skip checking redeclarations for function
expressions (#18291 ) (overlookmotel)
- 7c12743 semantic: Skip checking unresolved exports in CommonJS files
(#18250 ) (overlookmotel)
- 2349031 allocator: Increase initial chunk size from 512B to 16KB
(#18234 ) (Boshen)
### 📚 Documentation
- 8ccd853 npm: Update package homepage URLs and add keywords (#18509 )
(Boshen)
- 9b3165f napi/parser: Clarify when to use `parseAsync` vs `parseSync`
(#18486 ) (Boshen)
- 1b59f63 napi/parser: Correct typo in README (#18251 ) (overlookmotel)
- 00ff75f mangler: Fix `top_level` option in example (#18233 )
(overlookmotel)
- 2ddc073 semantic: Fix typo in comment (#18238 ) (overlookmotel)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-01-26 10:49:55 +00:00
Boshen
8ccd853d91
docs(npm): update package homepage URLs and add keywords ( #18509 )
...
## Summary
- Update homepage links to point to specific documentation pages (e.g., `https://oxc.rs/docs/guide/usage/linter `)
- Add usage instruction links to napi package READMEs
- Add relevant keywords for better npm discoverability
🤖 Generated with [Claude Code](https://claude.com/claude-code )
2026-01-25 07:02:08 +00:00
sapphi-red
ba832b8680
refactor(napi/transform)!: remove useBuiltIns / useSpread options ( #18432 )
...
These options does not change the behavior so I think it's better not to expose these to users.
https://github.com/oxc-project/oxc/blob/671c2fc96d767eed91e19c3cec0986394d75c282/crates/oxc_transformer/src/jsx/options.rs#L96-L104
2026-01-23 05:42:53 +00:00
Boshen
89de3a146b
release(crates): oxc v0.110.0 ( #18240 )
...
### 🐛 Bug Fixes
- f1e2dc0 semantic: No error in `check_function_redeclaration` for
CommonJS files (#18231 ) (overlookmotel)
- 645c3f0 transformer: Use `require` not `import` in CommonJS files
(#18226 ) (overlookmotel)
- ee9f6a4 mangler: Use `retain` instead of `truncate` to remove empty
frequency slots (#18225 ) (Dunqing)
### ⚡ Performance
- 52073d9 semantic: Use cheaper test for source type (#18235 )
(overlookmotel)
Co-authored-by: overlookmotel <557937+overlookmotel@users.noreply.github.com >
2026-01-19 13:42:45 +00:00
Boshen
7282e9c564
release(crates): oxc v0.109.0 ( #18222 )
2026-01-19 18:42:47 +08:00
overlookmotel
6e8fa809f5
feat(napi/parser, napi/transform): accept sourceType: "commonjs" ( #18197 )
...
#18089 added support in parser for `commonjs` source type.
Extend this support to the NAPI packages - accept `sourceType: 'commonjs'` in options for `oxc-parser` and `oxc-transform`.
2026-01-19 04:39:04 +00:00
Boshen
66b8c022ab
feat(parser): implement unambiguous module parsing for JS/TS files ( #18124 )
...
## Summary
- Implements speculative/unambiguous parsing for `.js`, `.jsx`, `.ts`, and `.tsx` files
- Instead of assuming module or script upfront, parses with `ModuleKind::Unambiguous` and upgrades to module mode when ESM syntax is detected
- ESM indicators: `import`, `export`, `import.meta` (NOT top-level await alone)
- Defers top-level await errors until module type is resolved
- Vue loader upgrades unambiguous scripts to module mode
- Updates linter tests to use explicit ESM extensions (`.mjs`/`.mts`) where needed
## Test plan
- [x] All parser tests pass
- [x] All linter tests pass
- [x] All semantic tests pass
- [x] Coverage conformance tests updated
🤖 Generated with [Claude Code](https://claude.com/claude-code )
2026-01-17 13:40:28 +00:00
Boshen
140cb1f405
release(crates): oxc v0.108.0 ( #17920 )
...
### 🚀 Features
- 10426af codegen: Print soft space between inline block comments on the
same line (#17799 ) (camc314)
- 2261e6e semantic: Improve error message to add `#` for private
identifiers (#17779 ) (Dunqing)
### 🐛 Bug Fixes
- 7422b7e parser/trivia: Correctly mark whether a block comment is on a
newline (#17754 ) (camc314)
- c32e8d5 codegen: Wrap `TSAsExpression` in parens when used with
in/instanceof operators (#17752 ) (camc314)
- 5755b2d semantic: Report duplicate private identifier for static and
instance elements (#17591 ) (camc314)
- 0600df3 isolated_declarations: Only print jsdoc comments (#17748 )
(camc314)
- ef7e014 parser: Preserve `@__NO_SIDE_EFFECTS__` annotation with
parenthesized expressions (#17711 ) (camc314)
- 59a6228 parser: Detect TS1363 error for type-only imports with mixed
default and named/namespace bindings (#17712 ) (Copilot)
### ⚡ Performance
- 864f1fa semantic: Mark duplicate class element error reporting as cold
(#17746 ) (camc314)
- 3a452b8 semantic: Use smallvec for storing reference IDs (#17731 )
(camchenry)
- d5979dc minifier: Do not allocate when checking to convert `const` to
`let` (#17730 ) (camchenry)
- 3f4429c parser: Do not re-allocate TS interface heritage (#17692 )
(camchenry)
### 📚 Documentation
- 120a27c minifier: Add prettier-ignore for js-in-md part (#17687 )
(leaysgur)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-01-12 17:51:21 +08:00
camc314
6c1f690fe8
chore(napi/transform): remove alpha note in readme ( #17828 )
...
I think it makes sense to remove this line so that AI doesn't pick this up, thinking it's still alpha software
2026-01-09 15:32:51 +00:00
renovate
5ac8a3e98a
chore(deps): update dependency oxfmt to ^0.22.0 ( #17679 )
...
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/ ) |
|---|---|---|---|---|---|
| [oxfmt](https://oxc.rs ) ([source](https://redirect.github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt )) | [`^0.21.0` → `^0.22.0`](https://renovatebot.com/diffs/npm/oxfmt/0.21.0/0.22.0 ) |  |  |  |  |
---
### Release Notes
<details>
<summary>oxc-project/oxc (oxfmt)</summary>
### [`v0.22.0`](https://redirect.github.com/oxc-project/oxc/blob/HEAD/npm/oxfmt/CHANGELOG.md#0220---2026-01-05 )
[Compare Source](https://redirect.github.com/oxc-project/oxc/compare/oxfmt_v0.21.0...oxfmt_v0.22.0 )
##### 💥 BREAKING CHANGES
- [`f7da875`](https://redirect.github.com/oxc-project/oxc/commit/f7da875 ) oxlint: \[**BREAKING**] Remove oxc\_language\_server binary ([#​17457](https://redirect.github.com/oxc-project/oxc/issues/17457 )) (Boshen)
##### 🚀 Features
- [`8fd4ea9`](https://redirect.github.com/oxc-project/oxc/commit/8fd4ea9 ) oxfmt: `options.embeddedLanguageFormatting` is now `"auto"` by default ([#​17649](https://redirect.github.com/oxc-project/oxc/issues/17649 )) (leaysgur)
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR becomes conflicted, 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:eyJjcmVhdGVkSW5WZXIiOiI0Mi42OS4xIiwidXBkYXRlZEluVmVyIjoiNDIuNjkuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
2026-01-06 01:39:42 +00:00
Boshen
811b2a753c
release(crates): oxc v0.107.0 ( #17661 )
...
### 🚀 Features
- 659c23e linter: Init note field boilerplate (#17589 ) (Shrey Sudhir)
- 6870b64 parser: Add TS1363 error code (#17609 ) (Sysix)
- 23680a3 mangler: Skip mangling only in scopes affected by direct eval (#17612 ) (camc314)
- a7e1643 parser: Add TS2528 error code to duplicate_default_export diagnostic (#17558 ) (camc314)
### 🐛 Bug Fixes
- 1044116 ecmascript: Mark `new Symbol` as non side-effect free (#17568 ) (camc314)
- ab5e4ca isolated-declarations: Strip default values from rest parameter binding patterns (#17602 ) (camc314)
- 68b2e54 minifier: Prevent incorrect ??= transformation when member base is mutated (#17472 ) (copilot-swe-agent)
### ⚡ Performance
- 6067143 semantic: Remove hash when checking identifier (#17564 ) (camchenry)
- a28ab3d semantic: Avoid bounds check when checking string literal (#17545 ) (camc314)
- 04809d1 semantic: Use SIMD for finding backslashes in `check_string_literal` (#17534 ) (camchenry)
- 49ad2f0 semantic: Mark all diagnostic functions as `#[cold]` (#17487 ) (camc314)
- ea82b50 transformer: Mark all diagnostic functions as `#[cold]` (#17486 ) (camc314)
- d968e51 semantic: Mark `checker::check` as `inline(always)` (#17459 ) (camc314)
2026-01-05 13:45:22 +00:00
Sysix
e8e42ebc9c
chore(all): enable tsconfig noUnusedLocals compiler option ( #17541 )
...
Unused local variables did not get reported by `@typescript-eslint/no-unused-vars`.
Added `noUnusedLocals` check for every tsconfig, so `pnpm lint` will report them.
Example of failed CI: https://github.com/oxc-project/oxc/actions/runs/20626453016/job/59237769046?pr=17541
2025-12-31 20:31:35 +00:00
renovate
3741b8171c
chore(deps): update napi ( #17481 )
...
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.5.0` → `3.5.1`](https://renovatebot.com/diffs/npm/@napi-rs%2fcli/3.5.0/3.5.1 ) |  |  |  |  | pnpm.catalog.default | patch |
| [napi](https://redirect.github.com/napi-rs/napi-rs ) | `3.7.1` → `3.8.1` |  |  |  |  | workspace.dependencies | minor |
| [napi-derive](https://redirect.github.com/napi-rs/napi-rs ) | `3.4.1` → `3.5.0` |  |  |  |  | workspace.dependencies | minor |
---
### Release Notes
<details>
<summary>napi-rs/napi-rs (@​napi-rs/cli)</summary>
### [`v3.5.1`](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.5.0...@napi-rs/cli@3.5.1 )
[Compare Source](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.5.0...@napi-rs/cli@3.5.1 )
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR becomes conflicted, 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:eyJjcmVhdGVkSW5WZXIiOiI0Mi41OS4wIiwidXBkYXRlZEluVmVyIjoiNDIuNjYuMTQiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->
2025-12-31 12:52:40 +00:00
Boshen
9ec93401a3
release(crates): oxc v0.106.0 ( #17447 )
2025-12-29 17:16:30 +08:00
Boshen
a7f385237f
build(napi): Align NAPI targets to 20 platforms across all packages ( #17203 )
2025-12-24 15:36:45 +08:00
renovate
6cf7173c29
chore(deps): update dependency oxfmt to ^0.20.0 ( #17263 )
...
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/ ) |
|---|---|---|---|---|---|
| [oxfmt](https://oxc.rs ) ([source](https://redirect.github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt )) | [`^0.19.0` -> `^0.20.0`](https://renovatebot.com/diffs/npm/oxfmt/0.19.0/0.20.0 ) |  |  |  |  |
---
### Release Notes
<details>
<summary>oxc-project/oxc (oxfmt)</summary>
### [`v0.20.0`](https://redirect.github.com/oxc-project/oxc/blob/HEAD/npm/oxfmt/CHANGELOG.md#0200---2025-12-22 )
[Compare Source](https://redirect.github.com/oxc-project/oxc/compare/oxfmt_v0.19.0...oxfmt_v0.20.0 )
##### 🚀 Features
- [`97a02d1`](https://redirect.github.com/oxc-project/oxc/commit/97a02d1 ) oxfmt: Add `insertFinalNewline` option ([#​17251](https://redirect.github.com/oxc-project/oxc/issues/17251 )) (leaysgur)
</details>
---
### Configuration
📅 **Schedule**: 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:eyJjcmVhdGVkSW5WZXIiOiI0Mi41OS4wIiwidXBkYXRlZEluVmVyIjoiNDIuNTkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
2025-12-22 12:52:43 +00:00
Boshen
06370495a0
release(crates): oxc v0.105.0 ( #17259 )
2025-12-22 17:32:08 +08:00
renovate[bot]
86298e8234
chore(deps): update dependency oxfmt to ^0.19.0 ( #16602 )
2025-12-19 12:32:14 +08:00
Boshen
c90ab786d0
release(crates): oxc v0.104.0 ( #17096 )
...
### 🚀 Features
- d209c21 allocator: Add cap to FixedSizeAllocatorPool and block when
exhausted (#17023 ) (Cameron)
- fb2af91 allocator: Add bitset utils (#17042 ) (zhaoting zhou)
- c16082c tasks/compat_data: Integrate `node-compat-table` (#16831 )
(Boshen)
- 5586823 span: Extract TS declaration file check to its own function
(#17037 ) (camchenry)
- 3d2b492 minifier: Fold iife arrow functions in call expressions
(#16477 ) (Armano)
- 67e9f9e codegen: Keep comments on the export specifiers (#16943 )
(夕舞八弦)
- cb515fa parser: Improve error message for `yield` as identifier usage
(#16950 ) (sapphi-red)
- dcc856b parser: Add help for `new_dynamic_import` error (#16949 )
(sapphi-red)
- c3c79f8 parser: Improve import attribute value error message (#16948 )
(sapphi-red)
- 291b57b ast_tools: Generate TS declaration files for deserializer and
walk files (#16912 ) (camc314)
- 74eae13 minifier: Remove unused import specifiers (#16797 ) (camc314)
### 🐛 Bug Fixes
- fb9e193 linter: OOM problems with custom plugins (#17082 )
(overlookmotel)
- e59132b parser/napi: Fix lazy deser (#17069 ) (overlookmotel)
- a92faf0 ast_tools: Support `u128` in `assert_layouts` generator
(#17050 ) (overlookmotel)
- 47b4c2f minifier/docs: Correct hyperlink path in OPTIMIZATIONS.md
(#16986 ) (GRK)
- 3002649 transformer/typescript: Remove unused import equals
declaration (#16776 ) (Dunqing)
- 5a2af88 regular_expression: Correct named capture group reference
error (#16952 ) (sapphi-red)
### ⚡ Performance
- b657bb6 allocator: Reduce time `Mutex` lock is held in
`FixedSizeAllocatorPool::get` (#17079 ) (overlookmotel)
- 1f3b19b ast: `#[ast]` macro use `#[repr(transparent)]` for
single-field structs (#17052 ) (overlookmotel)
- 225f229 parser: Use SmallVec for duplicate default export detection
(#16801 ) (camc314)
### 📚 Documentation
- a9c419f traverse: Update safety comments (#16944 ) (overlookmotel)
Co-authored-by: overlookmotel <557937+overlookmotel@users.noreply.github.com >
2025-12-19 02:14:06 +00:00
Boshen
aa9f46f6fa
chore(js): remove tsc from package scripts as we use oxlint --type-check ( #16985 )
2025-12-17 16:18:14 +08:00
Boshen
c8281dd0bb
chore(pnpm): move workspace devDependencies to used packages ( #16982 )
...
To ensure monorepo dependencies are only visible to where they are used.
2025-12-17 15:09:08 +08:00
Boshen
6fca2f7f60
chore(infra): use oxfmt for all files, remove dprint ( #16599 )
...
Toml formatting is missing but there's only a few toml files, can wait
for oxfmt plugins.
- [x] Something is slow, can't figure out why, need #16607
2025-12-15 12:06:24 +00:00
Boshen
e6ad960231
release(crates): oxc v0.103.0 ( #16887 )
2025-12-15 18:17:19 +08:00
Boshen
745873e4cd
release(crates): oxc v0.102.0 ( #16595 )
...
### 💥 BREAKING CHANGES
- 083fea9 napi/parser: [**BREAKING**] Represent empty optional fields on
JS side as `null` (#16411 ) (overlookmotel)
### 🚀 Features
- 7a2afee parser: Add TS1174 error for classes extending multiple base
classes (#15993 ) (sapphi-red)
- da87812 semantic: Add TS2309 error for export assignment with other
exports (#15992 ) (sapphi-red)
- d6d2bcd minifier: Remove unused function calls that are marked by
`manual_pure_functions` (#16534 ) (sapphi-red)
- c90f053 minifier: Support `.` separated values for
`compress.treeshake.manualPureFunctions` (#16529 ) (sapphi-red)
- a607cc4 codegen: Preserve comments between CatchClause's param and
body (#16167 ) (copilot-swe-agent)
- 8c10694 semantic: Expose get_comment_at method (#16439 ) (camc314)
- 3981e7a ast: Add get_comment_at to lookup a comment by span (#16438 )
(camc314)
### 🐛 Bug Fixes
- 699406a napi/parser: Move `ExportEntry::module_request` field to first
(#16412 ) (overlookmotel)
- 12bd794 napi/parser: Move `ExportEntry::module_request` field to last
(#16403 ) (overlookmotel)
### ⚡ Performance
- 790beeb napi/parser: Do not remove extraneous options on JS side
(#16447 ) (overlookmotel)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2025-12-08 11:47:22 +00:00
overlookmotel
3459f8a548
ci(lint): enable prefer-destructuring lint rule ( #16449 )
...
Enable `prefer-destructuring` rule in our linting setup.
Not related to JS plugins, I just like this rule, and it's useful not to make nitty comments on PRs, when linter can do it for me...
2025-12-03 22:10:54 +00:00
overlookmotel
083fea9fa6
feat(napi/parser)!: represent empty optional fields on JS side as null ( #16411 )
...
Follow-on after #16383 and #16403 .
While working on those I discovered an option NAPI-RS has to represent `Option::None` as `null`, instead of omitting the field entirely.
Use that option on the structs used for transferring errors and module record over to JS.
I think this is likely more performant because:
1. NAPI-RS can create all properties of the objects using only the faster `node_api_create_object_with_properties` API.
2. It produces consistent object shapes, so JS engine can better optimize code using these objects.
It also brings the shape of the data perfectly into line between standard transfer and raw transfer, and is consistent with how empty fields in the AST are represented as `null`.
I would have used this option before if I'd known it existed.
### Breaking change
I've marked this as a breaking change because code consuming these objects would now need to check for empty fields with `value === null` instead of `value === undefined`.
However in practice, most people probably use `!value` or `value ?? ...`, so it's unlikely to affect many users. This only affects module record and errors anyway, not the AST itself, as we transfer that as JSON, not via NAPI.
2025-12-02 23:30:56 +00:00
Boshen
701ab87e3e
release(crates): oxc v0.101.0 ( #16381 )
2025-12-02 17:19:30 +08:00
Boshen
08727586bc
release(crates): oxc v0.100.0 ( #16331 )
...
### 💥 BREAKING CHANGES
- 74cf572 ast: [**BREAKING**] Make `source` field of `TSImportType` a
`StringLiteral` (#16114 ) (copilot-swe-agent)
- 43156ae ast: [**BREAKING**] Rename `TSImportType` `argument` field to
`source` (#16110 ) (overlookmotel)
- 934d873 napi: [**BREAKING**] Drop `armv7-unknown-linux-musleabihf`
support (#16105 ) (Boshen)
### 🚀 Features
- 669afe0 ast: Add `Expression::is_jsx` method (#16154 ) (Dunqing)
- 17a8caa parser: Add diagnostic for JSX identifiers with hyphens
(#16133 ) (camchenry)
- 0549ae5 parser: Add diagnostic for expected ident after optional chain
(#16132 ) (camchenry)
- db839ae parser: Improve diagnostic for unexpected optional
declarations (#16131 ) (camchenry)
- bab4bc8 napi/parser: Add type annotations to parse-raw-worker test
(#15998 ) (camc314)
### 🐛 Bug Fixes
- 35ed36c traverse: Fix panic when truncating non-ASCII variable names
(#16265 ) (peter)
- 9149a26 linter/plugins, napi/parser: Deep freeze visitor keys (#16293 )
(overlookmotel)
- 6b54dab minifier: Incorrect non-null object condition simplification
with `&&` and `||` (#16161 ) (sapphi-red)
- 9cc20a1 minifier: Avoid merging side effectful expressions to next
assignment statement if the side effect may change the left hand side
reference (#16165 ) (sapphi-red)
- 91eb3f2 ast/estree: Convert `TSImportType` `argument` field to
`Literal` (#16109 ) (overlookmotel)
- 1199cee parser: Reject invalid modifiers on parameter properties with
binding patterns (#16083 ) (camc314)
- f376325 traverse: Remove `console.log` from build script (#16049 )
(overlookmotel)
### ⚡ Performance
- 82d784f lexer: Reduce bounds checks in `Lexer::get_string` (#16317 )
(overlookmotel)
- cc2f352 span: Add `#[inline]` to `Atom` methods (#16311 )
(overlookmotel)
- ffca070 span: Add `#[repr(transparent)]` to `Atom` (#16310 )
(overlookmotel)
- 02bdf90 linter/plugins, napi/parser: Reuse arrays in visitor keys
(#16294 ) (overlookmotel)
### 📚 Documentation
- 891e0b4 parser: Add note about falling back to parse TSType in
TSImportType (#16119 ) (camc314)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2025-12-01 15:01:33 +00:00
Boshen
934d873eb0
feat(napi)!: drop armv7-unknown-linux-musleabihf support ( #16105 )
...
Also add `aarch64-unknown-linux-ohos` support.
`armv7-unknown-linux-musleabihf` target is broken for a while (https://github.com/nodejs/node/issues/53489 ) and is a legacy target.
part of #16094
2025-11-25 13:03:14 +00:00
Boshen
523a30a016
style(all): apply oxfmt default options ( #16091 )
...
Embrace the defaults!
---------
Co-authored-by: Yuji Sugiura <y.sugiura.0316@gmail.com >
2025-11-25 15:56:24 +09:00
overlookmotel
d2c97404c1
refactor(napi): prefer oxlint-disable over eslint-disable ( #16054 )
...
Nit. Use `// oxlint-disable` comments in our own code, instead of `// eslint-disable`.
2025-11-24 12:12:12 +00:00
Boshen
7252123e5e
release(crates): oxc v0.99.0 ( #16037 )
...
### 💥 BREAKING CHANGES
- cbb27fd ast: [**BREAKING**] Add `TSGlobalDeclaration` type (#15712 )
(overlookmotel)
### 🚀 Features
- 0c1f82b linter/plugins: Add `tokens` property to `Program` (#16020 )
(overlookmotel)
- 6cff132 span: Add `Span::merge_within` method (#15869 ) (sapphi-red)
- 102365d allocator/vec: Add `Vec::into_bump_slice` method (#15770 )
(Dunqing)
### 🐛 Bug Fixes
- e2ca770 codegen: Add support for printing type arguments in new
expressions (#15963 ) (Ives van Hoorne)
- 2bd3cb6 apps, editors, napi: Fix `oxlint-disable` comments (#16014 )
(overlookmotel)
- 622cb5e parser: Preserve legal comments with @preserve/@license when
preceded by other annotations (#15929 ) (copilot-swe-agent)
- 7c46a9e transformer/tagged-template-transform: Handle `\n` escape
sequences (#15830 ) (Dunqing)
- f386efc minifier: Avoid generating invalid spans (#15778 ) (sapphi-red)
- d4ff004 parser: Forbid invalid modifiers on `module` and `global`
(#15723 ) (overlookmotel)
- 2191ae9 semantic: Allow reserved keywords in typescript ambient
contexts (#15495 ) (sapphi-red)
- 7d1ebad isolated-declarations: Incorrect nested namespace output in
isolated declarations (#15800 ) (copilot-swe-agent)
### ⚡ Performance
- b4b0ed8 transformer/typescript: Reverse order of checks (#15722 )
(overlookmotel)
### 📚 Documentation
- c81a331 data_structures: Doc comments on fields of `Stack` (#15793 )
(overlookmotel)
- cfae31d allocator: Use `allocator` as var name in examples (#15781 )
(overlookmotel)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2025-11-24 10:06:24 +00:00