oxc-guard
f799f174b5
release(crates): oxc v0.157.0 ( #28719 )
...
### 🚀 Features
- 8dd67a6 transform-react: Expose TypeScript transform options (Tomas Särnhammar)
- deed7dc parser: More friendly error for duplicate import attribute key (#28262 ) (sapphi-red)
### 🐛 Bug Fixes
- eaa8e90 ecmascript: Avoid numeric `+` folding when an operand may be a string (#28544 ) (camc314)
- b03c7b8 regular_expression: Allow incomplete oversized legacy quantifiers (#28449 ) (Boshen)
- 128c67d semantic: Check strict eval and arguments writes by reference flags (#28445 ) (Boshen)
- c97c43c parser: Reject TypeScript default exports in JavaScript (#28440 ) (Boshen)
- fdd119f span: Count Unicode characters when filtering typo suggestions (#28452 ) (Boshen)
- cb64638 regular_expression: Reject incomplete Unicode atom escapes (#28448 ) (Boshen)
- fc0eed3 semantic: Stop let-binding scans at arrow functions (#28444 ) (Boshen)
- 3421516 parser: Preserve default import names in reexports (#28442 ) (Boshen)
- a1e7e5f parser: Reject optional class members in JavaScript (#28439 ) (Boshen)
- 5b9a7bc parser: Parse sloppy let expressions and labels (#28438 ) (Boshen)
- 8e61652 regex: Reject templates without cooked values (#28345 ) (Boshen)
- 3b36543 parser: Preserve in-context after TypeScript type arguments (#28300 ) (Boshen)
- 2e3126c regex: Decode constructor patterns and flags consistently (#28298 ) (Boshen)
- 8a90be2 regex: Track capture groups and disjunction identity (#28297 ) (Boshen)
- 3dc2cb0 regex: Preserve escape values and boundaries (#28296 ) (Boshen)
- fc8acbc parser: Handle leading-zero numeric exponents (#28295 ) (Boshen)
- 91a638d parser: Normalize raw template line endings with invalid escapes (#28285 ) (Boshen)
- 2ac9a42 parser: Allow parenthesized private-in expressions (#28284 ) (Boshen)
- 052bca9 ast: Prevent greyed out fields in AST types in IDEs (#28335 ) (overlookmotel)
- ed7df7d ast/estree: Include comments in TS Program span (#28326 ) (camc314)
### ⚡ Performance
- 9b6b7bf regular_expression: Advance validated Unicode escapes directly (#28514 ) (Boshen)
- 82e1982 regular_expression: Share Unicode property name prefixes (#28513 ) (Boshen)
- 5395a40 regular_expression: Parse class set character prefixes once (#28512 ) (Boshen)
- 3708934 regular_expression: Defer literal range dash allocation (#28511 ) (Boshen)
- d85ee3d semantic: Skip arguments ancestry checks outside classes (#28510 ) (Boshen)
- cf81d07 semantic: Reuse private reference resolution (#28509 ) (Boshen)
- a79eebc semantic: Avoid duplicate maps for public JavaScript members (#28508 ) (Boshen)
- 235ca3b semantic: Skip escape checks for unescaped strings (#28507 ) (Boshen)
- babf44c parser: Reuse shorthand assignment target identifiers (#28504 ) (Boshen)
- 444f24a ecmascript: Short-circuit simple parameter checks for rest (#28503 ) (Boshen)
- 04b20c0 semantic: Compute duplicate parameter policy once per list (#28446 ) (Boshen)
- dbf8482 parser: Use token lookahead for simple function types (#28489 ) (Boshen)
- bca1275 parser: Avoid unused destructuring rest capacity (#28499 ) (Boshen)
- 691be5c parser: Compact cover initialized name storage (#28495 ) (Boshen)
- b3b5444 parser: Build simple arrow bindings directly (#28493 ) (Boshen)
- e1c9baf parser: Disambiguate single-identifier arrow heads (#28491 ) (Boshen)
- 550e98a regular_expression: Avoid rescanning unique capture names (#28450 ) (Boshen)
- 10e9fc7 parser: Skip duplicate lookup for singleton import attributes (#28441 ) (Boshen)
- 5238839 parser: Use a stack buffer for float separators (#28435 ) (Boshen)
- 6e35e3c parser: Fast-path leaf expressions before delimiters (#28432 ) (Boshen)
- 3d7512c parser: Decode Unicode identifiers once (#28414 ) (Boshen)
- 30f59f4 parser: Factor object type opening brace (#28430 ) (Boshen)
- 028a267 parser: Always inline postfix update parsing (#28429 ) (Boshen)
- 1b5a171 parser: Reuse export kind classification (#28424 ) (Boshen)
- 179a432 parser: Factor return type identifier parsing (#28416 ) (Boshen)
- 553dd1d parser: Inline hot paths and fold function dispatch (#28404 ) (Boshen)
- de75d56 parser: Combine parenthesized arrow lookahead (#28412 ) (Boshen)
- a768a0c parser: Reuse comment annotations after rewind (#28408 ) (Boshen)
- 563d92a parser: Skip redundant source cursor updates (#28409 ) (Boshen)
- 7941ca9 parser: Factor tuple identifier parsing (#28398 ) (Boshen)
- 426c151 parser: Construct completed tokens without intermediate writes (#28291 ) (Boshen)
- df42953 minifier: Don't request another pass for block unwrapping (#28315 ) (Dunqing)
- c2d663d parser: Avoid vectors for single parenthesized expressions (#28374 ) (Boshen)
- 50bd0a9 parser: Size delimited lists after the first element (#28373 ) (Boshen)
- bd869b5 parser: Bypass redundant operand parsing (#28372 ) (Boshen)
- 455fc09 parser: Skip keyword checks for plain identifier expressions (#28371 ) (Boshen)
- 61303fb parser: Fast-path identifier operands (#28306 ) (Boshen)
- 6cf5b1a parser: Guard arrow and conditional parsing (#28305 ) (Boshen)
- 3666939 parser: Specialize identifier reference parsing (#28303 ) (Boshen)
- 0d6641a parser: Skip inapplicable expression parsing paths (#28294 ) (Boshen)
- 3be7997 parser: Reduce lexer search batch size (#28292 ) (Boshen)
- ab5655a regex: Remove redundant character-class and quantifier checks (#28288 ) (Boshen)
- ec8e8d4 parser: Remove redundant grammar and lexer checks (#28287 ) (Boshen)
- c903f5c parser: Specialize known-token parsing (#28286 ) (Boshen)
- 2683225 str: `static_ident!` and `static_str!` macros guarantee const evaluation (#28340 ) (overlookmotel)
- df90836 ast: Reduce compile time of `#[ast]` macro (#28336 ) (overlookmotel)
- 8239dac parser: Replace dragonbox_ecma with zmij_ecma (#28282 ) (Boshen)
2026-11-02 19:40:44 +00:00
oxc-guard[bot] and Dunqing
75efdca474
release(crates): oxc v0.156.0 ( #28190 )
...
### 💥 BREAKING CHANGES
- cf8296f ecmascript: [**BREAKING**] Fold surrogate strings with JSStr
constants (#27098 ) (Dunqing)
### 🚀 Features
- dd6cb2b minifier: Fold out-of-bounds string indices to `void 0`
(#28004 ) (Dunqing)
### 🐛 Bug Fixes
- f4dac9e semantic: Separate hoisted vars from block type bindings
(#27936 ) (limadog9)
- 9ec6617 minifier: Keep brackets on negative and non-finite numeric
keys (#27855 ) (Yunus Ozen)
- 520a26e minifier: Keep the default in shorthand assignment targets
(#28183 ) (waltu)
- def47b8 react-compiler: Keep manual memoization as written when its
dependencies can't be honoured (#28101 ) (Dunqing)
- 704d8cf transformer_plugins: Keep the bare inject when references to
it remain (#26965 ) (Bharadwaj Pendyala)
- 6d7b372 minifier: Handle sequence exprs when folding if to expr
statement (#27939 ) (Armano)
- e3eca41 runtime: Align async iterator throw with Babel (#28059 )
(camc314)
- af0258d parser: Parse source imports named type (#28062 ) (camc314)
- 83633a7 parser: Parse escaped class field names after initializers
(#28061 ) (camc314)
- 90c58ac parser: Parse postfix updates of sloppy `let` identifiers
(#28060 ) (camc314)
- 0e2934f codegen: Preserve default import names in source maps (#28058 )
(camc314)
- 09bdb80 minifier: Allow argument rewrite with with leading var
assignments (#28056 ) (Armano)
- ebcdcd9 minifier: Preserve rest destructuring side effects (#27981 )
(camc314)
- 5c84098 semantic,linter: Report names with lone surrogates in enum and
lint checks (#27991 ) (Dunqing)
- bd70a9b ecmascript: Use ECMAScript whitespace when folding
`parseFloat`/`parseInt`/`trim` (#27719 ) (Dunqing)
- 4c0fa90 minifier,linter: Keep `delete` of constant members and later
JSX keys (#27990 ) (Dunqing)
### ⚡ Performance
- 3493ce3 minifier: Reuse is_error_constructor and simplify
substitute_global_new_expression (#28149 ) (Armano)
- a22c9f2 parser: Move annotation comment handling out of hot paths
(#28139 ) (camc314)
- 1ed93af data_structures: Copy short strings without a memcpy call
(#27953 ) (leaysgur)
### 🛡️ Security
- b93e169 deps: Bump .node-version to 26.12.1 (#28090 ) (leaysgur)
Co-authored-by: Dunqing <29533304+Dunqing@users.noreply.github.com >
2026-10-27 11:19:24 +08:00
oxc-guard
73e6b56473
release(crates): oxc v0.155.0 ( #27962 )
...
### 💥 BREAKING CHANGES
- c7d229b transformer: [**BREAKING**] Decode JSX entities to lone surrogates (#26712 ) (Dunqing)
- e3c1b11 ast: [**BREAKING**] Preserve lone surrogates in static property names (#27095 ) (Dunqing)
- a0a987c ast: [**BREAKING**] Preserve lone surrogates in static member names (#26677 ) (Dunqing)
### 🚀 Features
- 7bb2697 minifier: Minimize array join expression (#27905 ) (Armano)
- 5d91db8 ast: Generate node ID setters for enums (#27500 ) (camc314)
- 6b5057b minifier: Add de morgan optimization for void expressions (#27375 ) (Armano)
### 🐛 Bug Fixes
- ce6a088 minifier: Fold string indices by UTF-16 code unit (#27096 ) (Dunqing)
- 7c47246 linter: Check module specifiers and string values that contain lone surrogates (#26717 ) (Dunqing)
- 782ab6e linter: Search string values without UTF-8 conversion (#26716 ) (Dunqing)
- a5d8184 jsdoc: Parse code spans after quotes in descriptions (#27955 ) (leaysgur)
- bd37e78 ecmascript: Look through sequence expressions in `to_primitive` (#27837 ) (baltasarblanco)
- d92789d minifier: Drop debugger statements in unbraced bodies (#27867 ) (camc314)
- 863b359 ecmascript: Correct parseFloat decimal prefix scanning (#27695 ) (camc314)
- a2534c6 minifier: Preserve lexical initializers in dead for loops (#27676 ) (camc314)
- 3543672 ecmascript: Do not fold Number.isInteger / isSafeInteger of tiny non-integers to true (#27622 ) (Baltasar Blanco)
- 6987a61 ecmascript: BigInt loose equality folding (unknown operands and `StringToBigInt`) (#27656 ) (Baltasar Blanco)
- 40e5644 minifier: Preserve indirect access when folding into call targets (#27082 ) (waltu)
- 022306f ecmascript: Do not fold `Math.cbrt` of a negative number to `NaN` (#27621 ) (Baltasar Blanco)
### ⚡ Performance
- faa75d8 transformer: Remove redundant scratch vectors (#27922 ) (camc314)
- 88b5c35 minifier: Reduce code branches when evaluating roots (#27906 ) (Armano)
- fe1d367 codegen: Remove branches from loops printing arrays (#27840 ) (overlookmotel)
- 7bb6b62 codegen: Reduce hashmap lookups in `print_annotation_comment` (#27845 ) (overlookmotel)
- 31ffd08 codegen: Avoid unnecessary comment clone (#27843 ) (overlookmotel)
- a6456b7 codegen: Remove branch from `print_space_before_identifier` (#27842 ) (overlookmotel)
- eeff416 codegen: Simplify `print_space_before_identifier` (#27841 ) (overlookmotel)
- 5d877b8 diagnostics: Speed up zero-context span lookups (#27770 ) (camc314)
- 2ab6b63 packages/codegen: Remove redundant `printSpaceBeforeIdentifier` and `last` updates in `printParams` (#27652 ) (overlookmotel)
- e533278 codegen: Reduce writes in `printDecorators` (#27651 ) (overlookmotel)
### 📚 Documentation
- 29caafd codegen: Format table in doc comment (#27839 ) (overlookmotel)
- 3de03c1 packages/codegen: Correct outdated comments (#27838 ) (overlookmotel)
2026-10-19 14:20:38 +00:00
oxc-guard[bot] and leaysgur
d47efe5cb8
release(crates): oxc v0.154.0 ( #27644 )
...
### 💥 BREAKING CHANGES
- 7730e14 ast: [**BREAKING**] Refactor comment attachment storage
(#27512 ) (camc314)
- c904b61 ast: [**BREAKING**] Add comment attachment storage (#27393 )
(camc314)
- b5e8eff parser: [**BREAKING**] Assign node IDs during parsing (#27411 )
(camc314)
### 🚀 Features
- 3d00bbd minifier: Add folding of delete expression (#27522 ) (Armano)
### 🐛 Bug Fixes
- 760b60b codegen, packages/codegen: Remove extraneous space before
`RestElement` in `ArrayPattern` (#27613 ) (overlookmotel)
- 0353d37 packages/codegen: Support printing `V8IntrinsicExpression`s
(#27597 ) (overlookmotel)
- 1e4c6ee minifier: Preserve parameter writes through mapped arguments
(#27494 ) (Dunqing)
- f8e9a50 semantic: Stop arguments resolution at ordinary functions
(#26929 ) (camc314)
- 4b75662 transformer_plugins: Preserve optional chains through non-null
assertions (#27526 ) (Dunqing)
- 72bf06f crates/oxc_semantic: Decline to evaluate unary ops on strings
in enum initializers (#27447 ) (Brooooooklyn)
- c57d9c7 parser: Apply no-side-effects annotations after export
(#27504 ) (camc314)
- 02577b1 minifier: Preserve delete semantic when folding non-finite
numbers (#27466 ) (Armano)
- f14ead5 minifier: Eliminate unused IIFE calls with constant arguments
(#27434 ) (Dunqing)
- aec14bc transformer: Avoid synthetic private fields for static blocks
(#27300 ) (Kuroda Kayn)
- 558a890 semantic: Mark delete of optional members as MemberWriteTarget
(#27430 ) (Bartok)
- f50257e codegen: Avoid extra indent before empty do-while bodies
(#27407 ) (camc314)
- 82bfc5f codegen: Fix printing negative `BigIntLiteral` after `-`
(#27378 ) (overlookmotel)
- 5461c1a packages/codegen: Fix printing negative `BigIntLiteral` after
`-` (#27377 ) (overlookmotel)
- bebef88 packages/codegen: Fix debug assert fail printing
`TSJSDocNonNullableType` (#27373 ) (overlookmotel)
- 7e6a050 semantic: Visit `TSMethodSignature` computed method keys in
enclosing scope (#27357 ) (camc314)
### ⚡ Performance
- e1c97f8 packages/codegen: Remove all `printSpaceBeforeIdentifier`
calls (#27620 ) (overlookmotel)
- 70ecfdd packages/codegen: Skip redundant `printSpaceBeforeIdentifier`
call (#27619 ) (overlookmotel)
- 3c289f3 packages/codegen: Remove branches from loops printing arrays
(#27614 ) (overlookmotel)
- 27f5b45 packages/codegen: Remove branch printing `RestElement` in
`ArrayPattern` (#27608 ) (overlookmotel)
- adc90ed packages/codegen: Reduce branches in `printArguments` (#27607 )
(overlookmotel)
- 262dd21 packages/codegen: Remove unnecessary
`printSpaceBeforeIdentifier` calls (#27606 ) (overlookmotel)
- 4bb9722 packages/codegen: Print `SpreadElement` arguments via
`printExpression` (#27599 ) (overlookmotel)
- 0c98dc5 packages/codegen: Reduce megamorphic `type` reads in
`printParams` (#27595 ) (overlookmotel)
- e3780b5 packages/codegen: Reduce writes in `printForOfStatement`
(#27594 ) (overlookmotel)
- 8d0ba20 packages/codegen: Reduce megamorphic `type` reads in
`printForOfStatement` (#27593 ) (overlookmotel)
- b29f35e packages/codegen: Reduce megamorphic `type` reads in
`printDirectivesAndStatements` (#27592 ) (overlookmotel)
- 256259d packages/codegen: Reduce megamorphic `type` reads in
`printConditionalExpression` (#27591 ) (overlookmotel)
- a9bd942 packages/codegen: Reduce megamorphic `type` reads in
`printObjectProperty` (#27590 ) (overlookmotel)
- 0a386ff packages/codegen: Ensure `shorthand` var is always a boolean
(#27589 ) (overlookmotel)
- 8d4c633 packages/codegen: Reduce branches in `printObjectProperty`
(#27588 ) (overlookmotel)
- b4c8c04 packages/codegen: Reduce megamorphic `type` reads in
`printMemberExpression` (#27587 ) (overlookmotel)
- ff5eae8 packages/codegen: Reduce megamorphic `type` reads (#27586 )
(overlookmotel)
- 5487247 ast: Generate derive for `CloneIn` on `Comment` (#27542 )
(overlookmotel)
- cd1c192 minifier: Optimize unused expression removal in minimize_if
(#27545 ) (Armano)
- 14a92ba transformer: Skip expression exit pipeline for unaffected
nodes (#27492 ) (camc314)
- cd9a62f transformer: Skip static block dispatch for ordinary
statements (#27491 ) (camc314)
- 135dd04 transformer: Skip ES2022 exits for non-class expressions
(#27489 ) (camc314)
- 961f318 packages/codegen: Reduce megamorphic `type` reads in
`binCheckAndPrepare` (#27460 ) (overlookmotel)
- 3d2f93f packages/codegen: Reduce megamorphic property accesses for
`BinaryExpression`s (#27459 ) (overlookmotel)
- 675ec5e packages/codegen: Reduce megamorphic property accesses in
`printBinaryish` (#27458 ) (overlookmotel)
- b0dbfff packages/codegen: Reduce writes and branches printing
functions (#27455 ) (overlookmotel)
- 5f3865c packages/codegen: Reduce writes for optional
`MemberExpression`s (#27454 ) (overlookmotel)
- 8c57c5e linter: Share one source per file across type-aware
diagnostics (#27462 ) (Max Schwenk)
- 19c227d minifier: Use ident when checking specific id names (#27208 )
(Armano)
- 180d4e7 minifier: Avoid unecessary import/export merging for
cjs/scripts (#27291 ) (Armano)
### 📚 Documentation
- c993555 minifier: Align guides with current implementation (#27584 )
(Cameron)
- 59472c5 packages/codegen: Add `@param`s to JSDoc comments which had
none (#27601 ) (overlookmotel)
- 5ee0fc9 packages/codegen: Complete `@param` lists in partly documented
JSDoc comments (#27600 ) (overlookmotel)
- 12dfa25 packages/codegen: Correct doc comment for `printBinaryish`
(#27456 ) (overlookmotel)
- add0443 mangler: Clarify node ID renumbering in build (#27448 )
(camc314)
Co-authored-by: leaysgur <6259812+leaysgur@users.noreply.github.com >
2026-10-13 10:10:49 +01:00
oxc-guard
7f56ec9301
release(crates): oxc v0.153.0 ( #27342 )
...
### 🚀 Features
- 61003c7 minifier: Fold undefined argument in non delegating yield (#27324 ) (Armano)
- 07833c0 ast: Tie `debug_name` return lifetime to the underlying AST node (#27295 ) (sadan)
- adb1139 minifier: Merge import statements against the same module (#25534 ) (翠)
- cc82598 minifier: Merge import and export statements against the same module (#25533 ) (翠)
- 1c352ce minifier: Minimize bitwise binary expressions (#27107 ) (Armano)
- d1a0bcc minifier: Merge statements after terminating if block branches (#26667 ) (Armano)
- 7a95376 minifier: Merge adjucent if stmt with the same content (#26445 ) (Armano)
### 🐛 Bug Fixes
- 6a7d48b parser: Report abstract private field error on modifier (#27314 ) (camc314)
- 2ff6fb5 parser: Include generator marker in overload diagnostic span (#27313 ) (camc314)
- 4359a66 parser: Reject TypeScript class modifiers in JavaScript (#27312 ) (camc314)
- 565d75d minifier: Correct indopedency when processing nested sequences (#27273 ) (Armano)
- d0b9372 parser: Remove type-dependent tuple rest diagnostics (#27234 ) (camc314)
- 3d61a59 parser: Validate TypeScript type member separators (#27222 ) (camc314)
- b2793fa parser: Reject module syntax in script (#27220 ) (leaysgur)
- 5914a24 parser: Report `TS1243` for abstract async methods (#27192 ) (camc314)
- c6c6e5e parser: Report `TS1242` for interfaces with `abstract` modifier (#27191 ) (camc314)
- dd0bbb9 parser: Avoid duplicate index signature modifier diagnostic (#27190 ) (camc314)
- 8f61129 regex: Decode escaped capturing group names (#27156 ) (camc314)
- da1fed2 minifier: Fold conditional expressions with long sequences (#27083 ) (Armano)
- 0c601f4 isolated-declarations: Allow adding undefined to keyof parameter types (#27173 ) (Dunqing)
- 4896287 isolated-declarations: Support readonly parameter types (#27009 ) (sama Pyb)
- 72d62a1 transformer/explicit-resource-management: Transform classic for loop using declarations (#27148 ) (camc314)
- 4cf9ae2 minifier: Preserve sibling declarations in arguments copy rewrite (#27140 ) (camc314)
- 24b7015 transformer/explicit-resource-management: Lower using in catch and finally (#27142 ) (camc314)
### ⚡ Performance
- 99e3c15 minifier: Small performance improvement when merging imports (#27238 ) (Armano)
- d37d1db codegen: Pre-allocate sourcemap builder vectors (#27230 ) (codspeed)
- 466ef10 minifier: Update expressions in place in `merge_import_export` (#27226 ) (Armano)
- 028ffb8 minifier: Update nodes in place in `wrap_to_avoid_ambiguous_else` (#27194 ) (Armano)
- 6fcd135 minifier: Avoid conversion from ident to str when for substitute symbols (#27209 ) (Armano)
- 0b9799d minifier: Reduce usage of minimize_conditional (#26028 ) (Armano)
- 3ca3ded minifier: Short-circuit IfStatement termination on alternate (#25198 ) (Armano)
### 📚 Documentation
- 335ce79 agents: Scope verification for local and stacked work (#27299 ) (Dunqing)
2026-10-05 10:09:39 +00:00
oxc-guard
dfbc0d1ea7
release(crates): oxc v0.152.0 ( #27133 )
...
### 🚀 Features
- 02331c8 str: Add `JSStr`, `JSChar` and `JSStrBuilder` types (#26435 ) (Dunqing)
- 52ae63f regular_expression: Support buffer boundary assertions (#27048 ) (Boshen)
- 3255b89 transform-react: Add `reportDiagnostics` option to expose recoverable React Compiler diagnostics (#26624 ) (Jack)
- f585cb4 napi: Add threadless WASI builds (#26898 ) (Boshen)
### 🐛 Bug Fixes
- c380c85 minifier: Preserve iife with directives (#27060 ) (Armano)
- c55b35d str: Correct clippy reason (#27013 ) (overlookmotel)
- 8fbddb1 formatter/jsdoc: More alignment with original plugin (#27039 ) (leaysgur)
- 5186328 parser: Handle HTML comment values (#22933 ) (Boshen)
- 01ff33e parser: Reject module export names containing a lone surrogate (#26953 ) (Dunqing)
- d79ad19 codegen: Remove redundant dollar escapes in minified templates (#26924 ) (camc314)
### ⚡ Performance
- 0afbf85 minifier: Fold logical expressions in place (#26768 ) (Armano)
- 3471f29 minifier: Avoid creation of empty block when folding try finally (#26971 ) (Armano)
- 3893d64 minifier: Update boolean context expressions in place (#26823 ) (Armano)
- de8af47 minifier: Take return argument directly when converting arrow fn (#26830 ) (Armano)
- fc37ba0 minifier: Reduce allocations when minimizing assignments (#26609 ) (Armano)
- dce64f6 minifier: Use ident hashes for catch var and arguments (#26907 ) (Armano)
- 57610b3 minifier: Use ident hashes in label comparison (#26887 ) (Armano)
### 📚 Documentation
- dfa6cf9 str: Reformat and simplify comments (#27011 ) (overlookmotel)
- d775315 parser: Document AST property order (#27038 ) (Boshen)
- cd80e3f ast: Correct `JSXExpressionContainer` example (#26975 ) (camc314)
- 8cb05e3 ast: Simplify `JSXAttribute` value description (#26974 ) (camc314)
- fda7fbb ast: Correct `TSNumberKeyword` example (#26973 ) (camc314)
- e63c439 ast: Clarify `RegExpFlags::V` flag features (#26972 ) (camc314)
- 278288e ast: Correct `JSXText` example (#26970 ) (camc314)
- e9ff529 ast: Correct `TSIntrinsicKeyword` example (#26967 ) (camc314)
- c643ce4 ast: Fix `TSTupleType` example syntax (#26966 ) (camc314)
- 895b1a7 ast: Correct `TSPropertySignature` usage example (#26964 ) (camc314)
- 8d8cc7c ast: Correct `Class` abstract example values (#26963 ) (camc314)
- f7ef2e2 ast: Use valid variance example for `TSTypeParameter` (#26962 ) (camc314)
- 145fcdb ast: Attach `pure` comment to `NewExpression` field (#26961 ) (camc314)
- 06dfd9f ast: Clarify `TSNonNullExpression` docs (#26960 ) (camc314)
- d5f92b5 ast: Add docs for TSNonNullExpression (#26910 ) (camchenry)
- 4a76723 ast: Add docs for TSNamespaceExportDeclaration (#26909 ) (camchenry)
- de41927 ast: Add docs for `TSInstantiationExpression` (#26908 ) (camchenry)
2026-09-28 09:39:56 +00:00
oxc-guard
bec650f15b
release(crates): oxc v0.151.0 ( #26875 )
...
### 🚀 Features
- 1fac655 coverage: Support new TypeScript fixture layout (#26226 ) (camc314)
### 🐛 Bug Fixes
- cd7228f minifier: Add missing negation for boolean literal (#26847 ) (Armano)
- 32305e2 transformer: Skip enum reverse mappings for syntactic string initializers (#26724 ) (Dunqing)
- 7811f0a parser: Preserve reparsed `await` tokens (#26619 ) (camc314)
- 9220158 transformer: Skip recovered using loop patterns (#26722 ) (camc314)
- 3130405 parser: Recover await using object binding patterns (#26721 ) (camc314)
- 827fdbd parser: Reject invalid modifiers on import aliases (#26622 ) (camc314)
### ⚡ Performance
- 3f1e3aa minifier: Preallocate stmts vec size to avoid excesive reallocs (#26856 ) (Armano)
- bd3f69e semantic: Reuse identifier hashes in enum member lookups (#26773 ) (camc314)
- 5f72954 minifier: Reduce allocations when processing if statements (#26666 ) (Armano)
2026-09-21 12:15:01 +00:00
oxc-guard
5a6e37e5cf
release(crates): oxc v0.150.0 ( #26632 )
...
### 🚀 Features
- ca649e0 ecma: Define math constants as known globals and resolve their types (#26585 ) (Armano)
- 9ef028c codegen: Add `ascii_only` option (#25994 ) (Samuel Attard)
- 80a76a0 minifier: Negate binary comparison for `typeof x < 'u'` (#26367 ) (Armano)
### 🐛 Bug Fixes
- 8ca76da parser: Reject `accessor` modifiers on methods (#26617 ) (camc314)
- 1916f31 parser: Reject `readonly` modifier on constructors (#26612 ) (camc314)
- 1c42008 parser: Handle escaped let in for loops (#26583 ) (camc314)
- d21d5cf parser: Recognize annotated empty arrows in conditionals (#26537 ) (camc314)
- d7713ad parser: Classify Unicode line breaks in block comments (#26536 ) (camc314)
- 75cd919 transformer: Preserve receivers in private optional chains (#26535 ) (camc314)
- b32d25d parser: Reject escaped import-phase keywords (#26534 ) (camc314)
- 47b8311 parser: Recognize contextual binding names in type lookaheads (#26532 ) (camc314)
- d6b6705 parser: Require arrow separator in TypeScript function types (#26529 ) (camc314)
- e98beef parser: Disambiguate await using in for initializers (#26527 ) (camc314)
- 92afee6 parser: Allow parenthesized JSX comma expressions with preserve_parens=false (#26524 ) (camc314)
- 31508b1 parser: Reject return types on constructor overloads (#26523 ) (camc314)
- a091fc4 parser: Validate await context for await using declarations (#26495 ) (camc314)
- 5501e86 parser: Disallow in expressions in using for-loop initializers (#26490 ) (camc314)
- c8e5fa7 parser: Allow escaped type names in import and export specifiers (#26487 ) (camc314)
- 2dcee2f parser: Reject async modifiers on class fields (#26486 ) (camc314)
- 973d58e parser: Require comma after TypeScript this parameter (#26480 ) (camc314)
- 32d00c5 codegen: Preserve instantiation expression precedence (#26424 ) (camc314)
- cfa47ab parser: Allow `in` expressions in class static blocks (#26423 ) (camc314)
- 5986187 packages/codegen: Preserve private-in right operand precedence (#26420 ) (camc314)
- f8e6c6c packages/codegen: Preserve in restriction through yield arguments (#26421 ) (camc314)
- d61e3bf parser: Validate TS named tuple rest elements (#26419 ) (camc314)
- ae6c386 codegen: Preserve in restriction through yield arguments (#26413 ) (camc314)
- 42ac916 codegen: Preserve private-in right operand precedence (#26411 ) (camc314)
- 10521b2 parser: Allow escaped type default import bindings (#26409 ) (camc314)
- 72cb5e3 parser: Reject rest parameters in getters (#26400 ) (camc314)
- 6e15ad5 packages/codegen: Print matching quoted import names as identifiers (#26404 ) (camc314)
- bbbb4bc packages/codegen: Preserve private-in left operand precedence (#26403 ) (camc314)
- a111b5b packages/codegen: Print accessibility modifiers before abstract (#26402 ) (camc314)
- 4e76602 parser: Allow `in` in arrow block bodies within `for` initializers (#26395 ) (camc314)
- b20fc19 parser: Reject partially parenthesized mixed coalesce expressions (#26394 ) (camc314)
### ⚡ Performance
- 1f902a6 isolated_declarations: Key scope maps by `Ident` (#26380 ) (Dunqing)
- a242469 minfiier: Reduce allocs when creating indirect access (#26601 ) (Armano)
- 5b4787f minifier: Update chain expressions in place (#26544 ) (Armano)
- 0bc1661 minifier: Try merging before creating new expression statements (#26556 ) (Armano)
- c78d707 minifier: Process newly created stmt in handle_if_statement (#26541 ) (Armano)
- 029c84b minfier: Update expressions in place when substituting alternate syntax (#26460 ) (Armano)
- d198982 codegen: Outline postfix source mapping work (#26450 ) (camc314)
- 53f006e ecmascript: Format small integer literals with itoa (#26446 ) (camc314)
- 8bfb8c0 codegen: Avoid duplicate sourcemap name lookups (#26441 ) (camc314)
### 📚 Documentation
- 38533ac ast: Move type annotation span comment to span field (#26522 ) (camc314)
2026-09-14 11:25:40 +00:00
oxc-guard
60fa13878c
release(crates): oxc v0.149.0 ( #26397 )
...
### 💥 BREAKING CHANGES
- 66744f0 parser: [**BREAKING**] Rename `panicked` to `fatal_error` in `ParserReturn` (#26382 ) (overlookmotel)
- 2c9a947 parser: [**BREAKING**] Reduce `MAX_LEN` to 256 bytes below `u32::MAX` (#26352 ) (overlookmotel)
### 🚀 Features
- 32bdc5b allocator: Construct `ArenaHashSet` with any `Default` hasher (#26372 ) (Dunqing)
- a17de58 minifier: Process of return/throw in non last position and fix async * inlining (#26214 ) (Armano)
- bfb4c57 parser: Distinguish unapplied no-side-effects comments (#26120 ) (碳苯 Carbon)
- 1d9b9d3 ast: Add `GetNodeId` trait (#26145 ) (camc314)
### 🐛 Bug Fixes
- b156333 codegen: Order accessibility before abstract on accessors (#26392 ) (camc314)
- 116c8b8 transformer/class-properties: Keep private methods in class-expression scope (#26308 ) (Changsu Seong)
- 1400a0f parser: Require a string source after `export ... from` (#26389 ) (camc314)
- 2da73b7 codegen: Print matching quoted import names as identifiers (#26386 ) (camc314)
- 0a81d29 codegen: Preserve private-in left operand precedence (#26383 ) (camc314)
- 9a02337 parser: Correctly round large nondecimal literals (#26379 ) (camc314)
- 3d95477 transformer: Gate async-only rewrites by owning transform (#26326 ) (Dunqing)
- f45a9ee transformer: Limit arguments capture to lowered async functions (#26317 ) (Dunqing)
- 789969f transformer: Gate this capture by owning async transform (#26227 ) (Dunqing)
- affeb14 minifier: Mangle class private members in Node API (#26118 ) (碳苯 Carbon)
- 8b35abd semantic: Detect duplicate private class elements (#26361 ) (camc314)
- 457ed57 semantic: Reject await and yield in rest parameter defaults (#26359 ) (camc314)
- 4b89c7b semantic: Reject jumps across arrow functions (#26357 ) (camc314)
- c966aca parser: Do not omit `<` token opening type argument list (#26328 ) (overlookmotel)
- f07dca5 ast_visit: Add the trimmed prefix length to translation table offsets (#26173 ) (Bharadwaj Pendyala)
- 3ab9bd1 parser: Do not re-lex template substitution tail after fatal error (#26230 ) (overlookmotel)
- 07851b9 parser: Fix debug assert failure when lexer error with tokens enabled (#26229 ) (overlookmotel)
- 00dea7a allocator: Gate `Allocator::data_end_ptr` behind fixed_size feature (#26248 ) (camc314)
- 853ffab ecmascript: Avoid `charAt` panic on 32-bit (#26244 ) (camc314)
- 34feccb runtime: Remove stale regenerator exports (#26243 ) (camc314)
### ⚡ Performance
- 34a242e minifier: Use `Ident` for property mangler (#26334 ) (sapphi-red)
- 5303f5c minifier: Unify merging of last expression into target sequence (#26264 ) (Armano)
- 2ca7d29 minifier: Consume nodes in minimize_statements in reverse order (#26258 ) (Armano)
- d2354b4 mangler: Use `Ident` for variable names to keep (#26333 ) (sapphi-red)
- 5b3e335 minifier: Use `Ident` instead of `Str` in `KeepVar` (#26332 ) (sapphi-red)
- 51366fb minifier: Use `IdentHashSet` in `PrivateMemberUsageStack` (#26331 ) (sapphi-red)
- d19c42a minifier: Merge nested if stmt in place instead of creating dummies (#26351 ) (Armano)
- 356def6 parser: Shrink annotation comment ranges (#26356 ) (overlookmotel)
- a5be474 parser: Shave instruction off `parse_jsx_element_name` (#26355 ) (overlookmotel)
- 9780663 parser: Remove fatal error guard from `parse_jsx_element_name` (#26354 ) (overlookmotel)
- 766e12f parser: Remove `token` field from `LexerCheckpoint` (#26350 ) (overlookmotel)
### 📚 Documentation
- d4b4e61 transformer: Document ES2015 target floor (#26378 ) (Dunqing)
- 67dd054 ast_visit: Correct out-of-date comments on `Utf8ToUtf16` converter (#26285 ) (overlookmotel)
- a8ed2a7 minifier: Fix stale validation instructions (#26251 ) (camc314)
2026-09-07 14:29:34 +00:00
oxc-guard
894c8f9cd8
release(crates): oxc v0.148.0 ( #26198 )
...
### 💥 BREAKING CHANGES
- a31567a allocator: [**BREAKING**] Make `Allocator::cursor_ptr` and `data_end_ptr` private (#26081 ) (overlookmotel)
### 🚀 Features
- 784e9fa minifier: Invert `!0` and `!1` in place for boolean context to `1` and `0` (#26050 ) (Armano)
- 1e902cc minifier: Expand fold leading assignments into the var decl (#26142 ) (Armano)
- 3ed4f6a minifier: Expand de morgan's optimization to allow move of `!` (#25930 ) (Armano)
- 5672585 parser: Attach all comments to nodes (#25944 ) (camc314)
### 🐛 Bug Fixes
- 4adfb4c semantic: Validate chained continue labels (#26157 ) (camc314)
- b874f48 ecmascript: `Math.round` only exact half ties (#26150 ) (camc314)
- a625378 minifier: Coerce omitted `indexOf` search argument (#26149 ) (camc314)
- dc7398b ecmascript: Trim trailing whitespace in string to number (#26148 ) (camc314)
- 243b685 transformer/object-rest: Lower multiple declarators correctly (#26147 ) (camc314)
- dc09a3a parser: Avoid panic on escaped string export names (#26146 ) (camc314)
- e412cf2 linter: Clamp invalid JS plugin locations (#26144 ) (camc314)
- c3dedc9 semantic: Skip function body bindings in parameters (#26099 ) (Dunqing)
- e74de61 transform-react: Match Babel diagnostic reporting (#26128 ) (Boshen)
- d5163d0 parser: Correctly classify unapplied pure annotations (#26084 ) (camc314)
- 8531b9b linter/plugins: Alter method for obtaining mutable `Program` when sending AST to JS plugins (#26077 ) (overlookmotel)
- 9b51658 regular_expression: Allow oversized decimal escape for Annex B (#26070 ) (leaysgur)
- c8de4df regular_expression: Reject oversized backreferences (#26055 ) (camc314)
### ⚡ Performance
- ac4785a diagnostics: Use fixed ANSI styles (#26130 ) (Boshen)
- 07a0793 packages/codegen: Flatten output in chunks (#26109 ) (overlookmotel)
- 487427a packages/codegen: Faster string flattening (#26108 ) (overlookmotel)
- 7785583 packages/codegen: Ensure indent strings are flattened (#26107 ) (overlookmotel)
- 0dd4db3 packages/codegen: Store mapping positions in an `Int32Array` (#26085 ) (overlookmotel)
2026-09-01 08:15:07 +00:00
oxc-guard
4e258430cd
release(crates): oxc v0.147.0 ( #26046 )
...
### 🚀 Features
- b6e9e5e minifier: Fold switch stmt whose parent is not block stmt (#25403 ) (Armano)
### 🐛 Bug Fixes
- 8a9bdbd estree: Include decorators in `FormalParameterRest ` spans (#26021 ) (camc314)
- 6f0c7cf minifier: Avoid merging `if` to `for` in sloppy mode when containing function declaration (#25638 ) (sapphi-red)
- 2cde1f6 rust: Address nightly deprecations (#25998 ) (Boshen)
- 6c5ad1b codegen: Only add mapping names for `PrivateIdentifier`s which have changed (#25958 ) (overlookmotel)
- 2dad1e0 parser: Track irregular line terminators in trivia (#25947 ) (camc314)
- 58ba651 minifier: Avoid merging `if` to `for` when the body contains a function declaration (#25637 ) (sapphi-red)
- a185ac3 codegen: Print `#` before private identifier in TS signature key (#25938 ) (overlookmotel)
- af82a07 minifier: Keep unary `+` when the other operand has side effects (#25645 ) (Kotaro Chikuba)
### ⚡ Performance
- 53f6270 packages/codegen: Eagerly initialize `mapNames` (#25979 ) (overlookmotel)
- 5b43c60 packages/codegen: Split recording mappings into multiple functions (#25978 ) (overlookmotel)
- cc947b5 packages/codegen: Reduce property lookups (#25977 ) (overlookmotel)
- c22a9cc packages/codegen: Combine condition checks (#25976 ) (overlookmotel)
- 215a6a5 packages/codegen: Add functions for writing/marking unnamed mappings (#25975 ) (overlookmotel)
- fe444cc codegen: Avoid allocations for single comment anchors (#25598 ) (camc314)
- a0aee81 minifier: Do not rebuild expression when substituting void to null (#25964 ) (Armano)
- 1004439 packages/codegen: Merge `mark` and `write` calls in `printImportAttributes` (#25972 ) (overlookmotel)
- 94c8a34 packages/codegen: Remove `node` param from `printString` and `printNonNegativeFloat` (#25971 ) (overlookmotel)
- 7e2b4b3 packages/codegen: `printNonNegativeFloat` write mapping directly (#25968 ) (overlookmotel)
- f09c8ab minifier: Avoid creation of unnecessary conditional expressions (#25931 ) (Armano)
- 53ff080 packages/codegen: Remove `lastWasPostfixClose` (#25888 ) (overlookmotel)
### 📚 Documentation
- 07de646 packages/codegen: Fix JSDoc comments on `write*` methods (#25966 ) (overlookmotel)
- 3b09c04 packages/codegen: Clarify comment (#25959 ) (overlookmotel)
2026-08-24 11:19:12 +00:00
oxc-guard
0389c4010e
release(crates): oxc v0.146.0 ( #25912 )
...
### 🚀 Features
- 83cb516 minifier: Improve negation of expressions in boolean context (#25755 ) (Armano)
### 🐛 Bug Fixes
- 134fb22 isolated-declarations: Preserve unresolved parameter types (#25909 ) (Dunqing)
- 526c2b3 codegen: Remove deprecated test APIs (#25889 ) (camc314)
- 344a9b2 codegen: Align enum template sourcemaps (#25872 ) (camc314)
### ⚡ Performance
- 5ef0c93 minifier: Unwrap all unary exprs without creating dummy expressions (#25891 ) (Armano)
- 8783524 packages/codegen: Remove loop from `growMappingBuffer` (#25886 ) (overlookmotel)
- b6b14c0 packages/codegen: Remove redundant branch (#25885 ) (overlookmotel)
- be6adf0 packages/sourcemap: Make `location` passed to `recordSourceMapping` always a number (#25884 ) (overlookmotel)
- f720f15 packages/codegen: Take named-mapping only code off hot path in `recordSourceMapping` (#25883 ) (overlookmotel)
- a734af5 packages/codegen: Remove redundant setting of `last` in `printImportAttributes` and `printIf` (#25882 ) (overlookmotel)
- c6e44c6 packages/codegen: Combine 2 writes in `printJSXElement` (#25881 ) (overlookmotel)
- 8801662 packages/codegen: Remove redundant mapping from `printParams` (#25880 ) (overlookmotel)
### 📚 Documentation
- 5ad330e packages/codegen: Reformat comments (#25876 ) (overlookmotel)
2026-08-19 08:29:51 +00:00
oxc-guard[bot] and Boshen
4a4a1fb2e7
release(crates): oxc v0.145.0 ( #25865 )
...
### 💥 BREAKING CHANGES
- 365274e packages/codegen: [**BREAKING**] `printSync` return an object
(#25720 ) (overlookmotel)
### 🚀 Features
- 6a7eb60 packages/codegen: Alter capitalization of `sourceFilename`
option (#25854 ) (overlookmotel)
- 300763f packages/codegen: Add full source map support (#25585 )
(camc314)
- a169e4a napi/minify: Expose property name mangling options (#24741 )
(Dunqing)
- 2f5cdb1 minifier: Add property name mangling (#24740 ) (Dunqing)
- 4922141 mangler: Deduplicate private accessor names (#25601 ) (camc314)
- 1c4f519 napi: Add Relay transform plugin (#25503 ) (Boshen)
- a4478e9 codegen: Add `oxc-codegen` package (#25488 ) (overlookmotel)
### 🐛 Bug Fixes
- 0fbcf64 codegen: Validate sourcemap options (#25860 ) (camc314)
- 345f981 react_compiler: Skip node_modules by default (#25859 ) (Boshen)
- ab81f3f minifier: Drop side-effect-free additions (#25639 ) (Dunqing)
- 241c559 napi/minify: Accept RegExp for property filters (#25827 )
(Dunqing)
- 4cc7ea4 codegen: Reject invalid indent options (#25807 ) (camc314)
- 53f9295 isolated-declarations: Preserve undefined for defaulted any
(#25292 ) (camc314)
- 8ab883a codegen: Preserve property key annotations (#25766 ) (Dunqing)
- b13fd48 minifier: Model uninitialized module vars as undefined
(#25497 ) (Dunqing)
- f6000ac ecmascript: Fold `**` with `Number::exponentiate`, not IEEE
`pow` (#25644 ) (Kotaro Chikuba)
- b846abc isolated-declarations: Handle ambient expando properties
(#25655 ) (camc314)
- dec0a86 react-compiler: Standardize diagnostics (#25702 ) (Boshen)
- fca2e0c parser: Reject initialized lexical declarations in for-in
(#25700 ) (Boshen)
- ae9be8f parser: Forbid type parameters on quoted constructors (#25696 )
(Boshen)
- c5f188a react-compiler: Use Babel v1 validation defaults (#25676 )
(Boshen)
- db44651 napi: Disable reuseWorker in browser bindings (#25640 )
(leaysgur)
- ce35d47 react_compiler: Preserve JSX import source pragmas (#25592 )
(Boshen)
- 059784d semantic: Respect shadowed `Infinity` and `NaN` in enum
evaluation (#25604 ) (camc314)
- bb5a232 minifier: Keep variable declaration initilized with class when
keepNames is enabled (#25584 ) (sapphi-red)
- f49229d minifier: Keep side effects when rotating bitwise operands
(#25596 ) (Kotaro Chikuba)
- e82495b ecmascript: Derive `ToNumber` of `!x` from `ToBoolean`
(#25595 ) (Kotaro Chikuba)
- 509931b semantic: Classify global references per identifier (#25608 )
(camc314)
- 80484ce mangler: Correct base54 safety comment (#25606 ) (camc314)
- c1369a7 codegen: Resolve private names in class heritage (#25588 )
(camc314)
- c002f29 codegen: Escape sources for empty import specifiers (#25586 )
(camc314)
- 0c68b7f estree: Emit `decorators` on `FormalParameterRest` (#25582 )
(camc314)
- cdf1846 semantic: Allow legacy escapes in JSX attributes (#25576 )
(Boshen)
- e75e102 minifier: Preserve block statement in labeled iteration
statements (#25162 ) (Armano)
- 771d79a mangler: Exclude non-manglable symbols from slot assignment
(#25539 ) (sapphi-red)
- 76b19f5 minifier: Avoid duplicating large folded strings (#25532 )
(Dunqing)
- 59e8895 codegen: Validate starting indent level (#25550 ) (camc314)
- 88b34f2 clippy: Remove unneeded `unsafe` (#25551 ) (camc314)
- 23a7ad0 parser: Stop delimited lists at end of file (#25542 ) (Boshen)
- 73acba9 parser: Preserve fatal errors during await reparse (#25541 )
(Boshen)
- c3e99d1 minifier: Avoid invalid octal escapes in template folds
(#25495 ) (Dunqing)
- b4e6a9e codegen: Output newline after `export default interface`
(#25487 ) (overlookmotel)
- 5fcf683 minifier: Correct issue with try finally termination (#25185 )
(Armano)
- 1645d93 react_compiler: Preserve source spans (#25462 ) (Boshen)
- 8d7f9cf react_compiler: Honor eslint suppressions (#25394 ) (Boshen)
### ⚡ Performance
- 568203e ecmascript: Use binary search for known globals (#25817 )
(Boshen)
- c84ede3 estree_tokens: Share JS token update entry point (#25826 )
(Boshen)
- 9a6e862 minifier: Move owned statements directly (#25835 ) (Dunqing)
- 61b2aef minifier: Move owned AST nodes directly (#25837 ) (Dunqing)
- 673b04b minifier: Replace expressions without take_in dummies (#25836 )
(Dunqing)
- 63ff8ef linter: Outline diagnostic construction (#25762 ) (Boshen)
- 621808e diagnostics: Measure graphemes lazily (#25723 ) (Boshen)
- f62ed0e diagnostics: Optimize graphical number rendering (#25715 )
(Boshen)
- 7152834 diagnostics: Reduce graphical formatting overhead (#25714 )
(Boshen)
- 10fc4b7 diagnostics: Reduce graphical rendering allocations (#25711 )
(Boshen)
- 9c8abab diagnostics: Batch graphical reports (#25710 ) (Boshen)
- 757f3d4 mangler: Share allocated names across reused slots (#25605 )
(camc314)
- 5444cbf codegen: Skip escaping harmless `<` tokens (#25564 ) (camc314)
### 📚 Documentation
- 58f7ab9 packages/codegen: Reformat docs and comments (#25848 )
(overlookmotel)
- 627466e transform-react: Document all options (#25800 ) (Boshen)
- ce03ac1 packages/codegen: Fix JSDoc comments for `printSync` (#25722 )
(overlookmotel)
- 386a699 packages/codegen: Correct JSDoc comment (#25716 )
(overlookmotel)
- 31e571d mangler: Update code example (#25599 ) (camc314)
- fd62354 codegen: Revamp package readme (#25560 ) (camc314)
- ffa3153 codegen: Clarify raw transfer Node requirement (#25565 )
(camc314)
- c5d4063 codegen: Clarify binary walk allocations (#25562 ) (camc314)
- 5703d7a codegen: Correct stale printer comments (#25561 ) (camc314)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-08-18 22:26:40 +08:00
oxc-guard
b6f1458dec
release(crates): oxc v0.144.0 ( #25474 )
...
### 💥 BREAKING CHANGES
- a33788e ast: [**BREAKING**] Group class heritage into `ClassHeritage` (#25360 ) (camc314)
- 5c5cdcd ast: [**BREAKING**] Narrow `TSInterfaceHeritage::expression` to TSTypeName (#24360 ) (camc314)
- 6be314f ast: [**BREAKING**] Remove duplicated `VariableDeclarator::kind` (#25319 ) (camc314)
- 44fd320 ast: [**BREAKING**] Split TS external modules & Namespace Declarations (#25284 ) (camc314)
### 🚀 Features
- 9a37c41 napi: Restructure React transform options (#25326 ) (Boshen)
- b3c1b30 allocator: Add `ArenaVec::push_mut` (#25338 ) (overlookmotel)
### 🐛 Bug Fixes
- bbd6ed3 codegen: Wrap string literal in parens after directives (#25435 ) (overlookmotel)
- d07a293 codegen: Preserve cast parentheses in conditional tests (#25115 ) (camc314)
- 8b7d441 codegen: Preserve satisfies parentheses before bitwise operators (#25113 ) (camc314)
- e0fb2d7 minifier: Avoid unsafe return removal in labeled blocks (#25406 ) (Armano)
- c49f4ce parser: Preserve terminal license comments (#25400 ) (camc314)
- 9d19ab3 transform_react: Downgrade nonfatal compiler diagnostics (#25418 ) (Boshen)
- 937825c react_compiler: Disable exhaustive memo validation by default (#25417 ) (Boshen)
- 12937b3 parser: Reject comma expressions in class fields (#25385 ) (Cameron)
- 7d8a9b5 react_compiler: Preserve hook spans for React Refresh (#25393 ) (Boshen)
- 9e93ba6 parser: Reset auto-accessor initializer context (#25384 ) (camc314)
- cc2e28d parser: Reject trailing tokens in `Parser::parse_expression` (#25371 ) (camc314)
- 697c629 minifier: Preserve Annex B labeled-function bindings in implicit-return rewrite (#25349 ) (Armano)
- 4d723ca parser: Report TS1035 for quoted module names (#25305 ) (camc314)
- 0c9b980 semantic: Report module declaration diagnostics (#25285 ) (camc314)
- 2a1058a napi: Omit parser header from WASI declarations (#25254 ) (camc314)
### ⚡ Performance
- dd1430b semantic: Avoid allocation in class overload check (#25440 ) (camc314)
- e420816 parser: Optimize trailing comma tracking (#25376 ) (camc314)
- 6529d1a minifier: Short-circuit scope check when alternate already determines result (#25318 ) (Armano)
### 📚 Documentation
- fe111eb allocator: Improve doc comments for `Arena` methods (#24922 ) (overlookmotel)
2026-08-10 09:57:10 +00:00
oxc-guard
45a17c25d1
release(crates): oxc v0.143.0 ( #25250 )
...
### 💥 BREAKING CHANGES
- 4120da0 semantic: [**BREAKING**] Return borrowed JSDoc so the parse cache works (#25186 ) (Connor Shea)
- f0a41c8 allocator: [**BREAKING**] Remove `ArenaBox::dangling` method (#25236 ) (overlookmotel)
- 067da8c ast: [**BREAKING**] Store single parameter in `TSIndexSignature::parameter` (#25154 ) (camc314)
- a0c7788 ast: [**BREAKING**] Change `TSIndexSignatureName::name` to `Ident` (#25150 ) (camc314)
- 1bdedd1 ast: [**BREAKING**] Introduce `ExportDeclaration`, `ExportFromDeclaration` (#25095 ) (camc314)
- c917f20 ast: [**BREAKING**] Introduce `ArrowFunctionBody` enum (#24987 ) (camc314)
- 7e1199c ast: [**BREAKING**] Remove conversion to `Box` from AST builder methods (#25038 ) (overlookmotel)
### 🚀 Features
- 3c8312e allocator: Make `Box` `Send` + `Sync` when the type it contains is (#25242 ) (overlookmotel)
- cb5bc08 ast: Derive `GetSpan` for `Comment` (#25147 ) (leaysgur)
- 8541e18 ast_tools: Generate minifier scope collector (#25088 ) (camc314)
- 5acdae2 ecmascript: Skip transparent TS expressions (#25072 ) (camc314)
- 85d0f4d napi: Add React Compiler transform binding (#24934 ) (Boshen)
- 70d6ece minifier: Fold safe integer exponentiation (#25009 ) (Dunqing)
- 73fc747 minifier: Enable termination statement optimization for do while (#24921 ) (Armano)
- 5eadfdb minifier: Fold safe integer division and remainder (#24981 ) (Dunqing)
### 🐛 Bug Fixes
- 6c9ee14 minifier: Preserve if-chain idempotency and correct side effects when alternate should not be moved (#25041 ) (Armano)
- 8a47ff3 ecmascript: Do not treat lone-surrogate strings as constants (#25084 ) (Dunqing)
- 468b970 isolated-declarations: Strip re-export attributes (#25090 ) (camc314)
- a70035d parser: Report export imports in namespaces (#25086 ) (camc314)
- 5d8ccf5 react_compiler: Preserve nonfatal diagnostics (#25066 ) (Boshen)
- d349e4a react_compiler: Match eslint suppression gating (#25068 ) (Boshen)
- 0dc16ba react_compiler: Track catch block declarations (#25067 ) (Boshen)
- e6734a5 minifier: Fold typeof comparisons with known object strings (#25017 ) (Dunqing)
- 3a9d5a5 minifier: Keep `typeof foo == ['object']` as-is (#24941 ) (sapphi-red)
- 10ec276 ast: Custom AST builder methods take `IntoIn<ArenaBox>` where child method does (#25033 ) (overlookmotel)
- fbe8d31 minifier: Respect targets when folding RegExp source (#24790 ) (Dunqing)
### ⚡ Performance
- fb402b0 minifier: Stop re-deriving printed numeric spellings (#25103 ) (Dunqing)
- 7251e52 react_compiler: Avoid large types on stack (#25037 ) (overlookmotel)
- e07718f isolated_declarations: Avoid large types on stack (#25036 ) (overlookmotel)
- 9fb1e3e transformer: Avoid large types on stack (#25035 ) (overlookmotel)
- 8b80f8b parser: Avoid large types on stack (#25034 ) (overlookmotel)
### 📚 Documentation
- 2ea0aa9 ast: Correct grammar in AST builder methods doc comments (#25173 ) (overlookmotel)
2026-08-03 11:07:37 +00:00
oxc-guard[bot] and Boshen
fc702c1fa9
release(crates): oxc v0.142.0 ( #24977 )
...
### 💥 BREAKING CHANGES
- 1ac5ac7 ast: [**BREAKING**] Tighten bound on `AstBuild` trait (#24925 )
(overlookmotel)
### 🚀 Features
- c7c5696 minifier: Fold parenthesized boolean ternary tests (#24968 )
(Dunqing)
- 82c5806 minifier: Fold sequence branches in boolean ternaries (#24943 )
(Dunqing)
- cc623d9 ast_visit: Add VisitJsMut visitor (#24828 ) (Boshen)
- b31713a minifier: Add new IsTerminated trait and use it in exit-point
optimization (#24950 ) (Armano)
- e9e0f24 minifier: Shorten integer zero comparisons (#24933 ) (Dunqing)
- 34f5559 minifier: Convert switch with one case to if statement
(#24611 ) (Armano)
- 9107e74 str: Add `static_str!` macro (#24887 ) (overlookmotel)
- 4d6f623 parser: Emit error for type args in JS files (#24896 )
(camc314)
- ec08afc ast: Re-export `Ident` from `oxc_ast` crate (#24861 )
(overlookmotel)
- 73cfdfa oxc: Re-export `oxc_str` types from `oxc` crate (#24860 )
(overlookmotel)
- 11f5d1f ast_visit: Add `Utf8ToUtf16::convert_program_and_comments`
(#24859 ) (overlookmotel)
### 🐛 Bug Fixes
- cb5acfb minifier: Optimize termination statements in labeled
statements (#24813 ) (Armano)
- 4618300 minifier: Avoid longer numeric constant folds (#24875 )
(Dunqing)
- f7971f1 minifier: Keep side effects in typeof comparisons (#24940 )
(sapphi-red)
- 4597d6f minifier: Keep side effects when compressing `== true` to `==
1` (#24939 ) (sapphi-red)
- c3a48df minifier: Keep side effects values in template literals
(#24938 ) (sapphi-red)
- e19f183 minifier: Keep side effects when folding `Number` call
(#24937 ) (sapphi-red)
- 9d7745a react-compiler: Preserve warning bailouts (#24935 ) (Boshen)
- 0126aba codegen: Preserve orphaned file coverage comments (#24815 )
(Dunqing)
- 9fbbaf8 parser: Clarify return in class static blocks (#24899 )
(camc314)
- e7d5c78 str: Fix hygiene of `format_ident!` and `format_str!` macros
(#24886 ) (overlookmotel)
- 07e9acc ecmascript: Keep side effects in parent of `toString` calls
(#24846 ) (sapphi-red)
- 16a40ad ecmascript: Detect side effects in unused arguments to
`charCodeAt` (#24845 ) (sapphi-red)
- 5b4ae54 parser: Use specific for-await diagnostic (#24856 ) (camc314)
- ffcc33a parser: Report for-await in non-async functions (#24855 )
(camc314)
- df230d0 minifier: Avoid reordering this in nested class keys (#24785 )
(Dunqing)
- d24b76b minifier: Isolate derived constructor this state (#24784 )
(Dunqing)
- 582805d parser: Parse unary conditional after satisfies (#24807 )
(Boshen)
- 23b904f minifier: Preserve default parameter side effects (#24791 )
(Dunqing)
- 3048594 parser: Use correct diagnostic for `await using` in bare
switch case (#24798 ) (camc314)
- e80574f estree: Handle empty spans serializing `ImportMeta` and
`NewTarget` (#24775 ) (overlookmotel)
- 4b12840 minifier: Do not fold a `-0` ternary branch to `+a` (loses the
sign) (#23637 ) (Jerry Zhao)
- 133bb35 ecmascript: Detect side effects of `foo().#bar` correctly when
PropertyReadSideEffects::None (#24769 ) (sapphi-red)
### ⚡ Performance
- a086d91 ecmascript: Avoid number literal allocations (#24889 )
(Dunqing)
- 98f2ecb react_compiler: Compare value set pointers before probing in
state merge (#24805 ) (Marius Schulz)
- b287f29 estree: Avoid ident hash calculations when serializing
(#24774 ) (overlookmotel)
### 📚 Documentation
- 4d2e2bf ast: Fix incorrect return value in `common_js_require` docs
(#24945 ) (connorshea)
- b539e74 estree: Document custom serializers for `ImportMeta` and
`NewTarget` (#24777 ) (overlookmotel)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-07-27 23:07:40 +08:00
Boshen
baf022d74d
refactor(ast)!: remove old AstBuilder methods ( #24563 )
...
Closes the migration tracked in #23043 .
The new builder API (methods on the AST types themselves) has been in place for a while, all Oxc crates are migrated, and every crate which uses `AstBuilder` already enables `disable_old_builder` in its tests. The module docs said "after a few weeks, we will remove `AstBuilder`'s own methods entirely" — this does that.
## What's removed
- `crates/oxc_ast/src/generated/ast_builder.rs` and `builder/methods.rs` — `AstBuilder`'s own node and primitive constructors.
- `AstBuilderGenerator`, which produced the former.
- The `disable_old_builder` Cargo feature, plus the dev-dependency hacks it required across 33 manifests. Eight crates depended on `oxc_ast` *purely* to turn the feature on; those deps and their `cargo-shear` ignore entries are gone too.
## One thing worth reviewing
`AstBuilderGenerator` owned the `#[builder(default)]` / `#[builder(skip)]` attr registration that `BuilderMethodsGenerator` only *reads* — its doc comment said as much. Deleting it naively would have silently dropped `skip`/`default` handling for the 12 AST types using those attrs, so `attrs()` and `parse_attr()` move to `BuilderMethodsGenerator`.
The evidence this was faithful: after regenerating, `builder_methods.rs` and every other generated file are **byte-identical**. The only generated change in the diff is the deletion.
## Breaking changes
- `AstBuilder`'s own methods are gone. Use the AST type methods: `Statement::new_expression_statement(span, expr, &builder)` instead of `builder.statement_expression(span, expr)`.
- `AstBuilder` is no longer `Copy`/`Clone`, and its `allocator` field is private — use the `allocator` method from `GetAllocator`.
- `AstBuilder` and `NONE` are no longer re-exported from the crate root; import them from `oxc_ast::builder`. (The `disable_old_builder` feature already gated these off, so nothing in-tree used the root path.)
- The `disable_old_builder` feature no longer exists — remove it from any manifest that sets it.
A migration note covering all of the above is in `crates/oxc_ast/src/builder/mod.rs`.
---
Implemented with AI assistance (Claude Code); design, review, and verification driven by the author per the repo AI-usage policy.
2026-07-21 15:22:46 +00:00
oxc-guard[bot] and Cameron
14533a3dc1
release(crates): oxc v0.141.0 ( #24714 )
...
### 💥 BREAKING CHANGES
- 54cc121 ast: [**BREAKING**] Split `MetaProperty` into `ImportMeta` and
`NewTarget` (#24557 ) (camc314)
### 🚀 Features
- 4c71560 parser: More friendly error for spread element in dynamic
imports (#24705 ) (sapphi-red)
- 7b045cd minfier: Drop last break from last switch case (#24673 )
(Armano)
- 7d3c178 minifier: Remove unreachable recursive functions (#24125 )
(Dunqing)
- 94f99b3 ast: Allow `NONE` to be passed to AST builder methods where
`Option<ArenaVec>` is expected (#24629 ) (overlookmotel)
- 77230c5 ast: Accept arrays for `ArenaVec` params of AST builder
methods (#24621 ) (overlookmotel)
- f08b152 allocator: Implement `FromIn` for array to `Vec` conversion
(#24620 ) (overlookmotel)
- 2338c13 track-memory-allocations: Track heap deallocs, alloc bytes,
and peak growth (#24619 ) (Boshen)
- 7aa4739 syntax,transformer: Move JSX entity decoder to `oxc_syntax`
(#24617 ) (camc314)
- 2b097c4 str: Export `Str` as `ArenaStr` (#24604 ) (overlookmotel)
- 3acf4c1 minifier: Expand switch optimiation to remove empty cases
(#24520 ) (Armano)
- 129b759 parser: Improve diagnostics for unparenthesized LHS on
exponential expr (#24569 ) (camc314)
- 4d0c601 minifier: Fold arithmetic over undefined and null operands
(#24485 ) (Dunqing)
- 91541dd minifier: Drop empty switch statements (#24527 ) (Armano)
- d05224d ast_visit: Generate VisitJs visitor that skips TypeScript
type-space (#24499 ) (Boshen)
- 3d22307 parser: Add `ParseOptions::enable_ident_hashes` (#24491 )
(Boshen)
### 🐛 Bug Fixes
- 64c2241 minifier: Align class heritage removal with assumptions
(#24533 ) (Dunqing)
- 48b59f4 parser: Span ambient generator diagnostics (#24711 ) (camc314)
- e750a82 ecmascript: Fix false negative for may_have_side_effects on
dynamic property access (#24709 ) (sapphi-red)
- f145d73 minifier: Guard reordered identifier reads (#24698 ) (Dunqing)
- a2ef382 isolated-declarations: Reject `window.Symbol` as global symbol
reference (#24689 ) (camc314)
- b1bcf72 minifier: Invalidate facts for redeclared bindings (#24658 )
(Dunqing)
- 921b834 minifier: Don't treat a conditionally-assigned var as
write-once (#24650 ) (Dunqing)
- 061af1f minifier: Avoid stale pure function summaries (#24636 )
(Dunqing)
- 40c2f43 allocator: `Vec::from_array_in` do not allocate zero-length
array (#24628 ) (overlookmotel)
- 70994ae codegen: Preserve comments before expression operands (#24510 )
(Dunqing)
- 7b4baff parser: Reject new import member access (#23459 ) (camc314)
- 128b385 minifier: Clippy warning with no-debug-assertions (#24547 )
(camc314)
- 8421feb parser: Use first `as` span for imported name (#24537 )
(leaysgur)
- c517aa0 parser: Reject invalid accessor assertions (#24504 ) (camc314)
### ⚡ Performance
- 884d9eb parser: Pre-size cover-grammar assignment target buffers
(#24683 ) (Boshen)
- d3f07a0 diagnostics: Box OxcDiagnosticInner to reduce binary size
(#24665 ) (Boshen)
- bcc9de0 parser: Defer diagnostic creation until parse exit (#24663 )
(Boshen)
- c35d8ab allocator: Mark `ReplaceWith` panic path cold (#24515 )
(camc314)
- ba65790 semantic, allocator: Branchless `clone_in` for semantic IDs
(#24564 ) (overlookmotel)
- 747feec parser: Build AST nodes with the AST builder instead of
cloning (#24540 ) (Boshen)
- ba35a0d react_compiler: Use IndexVec for dense id-keyed maps (#24549 )
(Boshen)
- b685062 react_compiler: Keep small hot-path collections inline
(#24514 ) (Marius Schulz)
- a149e95 transformer: Outline rare expression exits (#24512 ) (camc314)
- 7808a6e react_compiler: Make aliasing effects cheap to intern and
clone (#24506 ) (Marius Schulz)
- 3a36f2a react_compiler: Store AbstractValue reasons as a u16 bitmask
(#24480 ) (Boshen)
- 1c96753 react_compiler: Use FxHashMap for the lookup-only aliasing
node map (#24490 ) (Boshen)
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-07-21 16:09:41 +01:00
oxc-guard[bot] and Boshen
8e0ed2ebb9
release(crates): oxc v0.140.0 ( #24453 )
...
### 🚀 Features
- 616bfa2 minifier: Remove unreachable code after terminating statements
(#24441 ) (Dunqing)
- ddab89a data_structures: Add `likely` and `unlikely` functions
(#24368 ) (overlookmotel)
- a3a39f9 react_compiler: Implement enableEmitHookGuards codegen
(#24329 ) (Boshen)
- b79eef7 minifier: Apply De Morgan's law to negated comparison chains
in jump guards and loop tests (#24279 ) (Dunqing)
- 34ff7b4 minifier: Drop write-only property assignments to unused local
bindings by default (#24112 ) (Dunqing)
- 1b829d8 semantic: Record const enums in EnumData (#24268 ) (Dunqing)
- ba0944c semantic: Add `Scoping::set_symbol_span` (#24221 ) (camc314)
### 🐛 Bug Fixes
- 7d33363 minifier: Preserve guaranteed throws from class heritage
evaluation (#24349 ) (Dunqing)
- 058a62f semantic: Track ambient contexts in `SemanticBuilder` (#24327 )
(camc314)
- 721eb0b transformer/decorator: Scope accessor class binding (#24330 )
(camc314)
- 1ebdce3 semantic: Allow reserved keywords in ambient declaration types
(#24325 ) (camc314)
- 460176a track-memory-allocations: Exclude arena chunks from Sys allocs
(#24292 ) (Dunqing)
- af4922b transformer: Clear lowered namespace redeclarations (#24300 )
(camc314)
- ffd2765 semantic: Mark declared computed `MethodDefinition`s as type
references (#24296 ) (camc314)
- f17514b isolated-declarations: Emit const readonly fields as types
(#24288 ) (camc314)
- 40f769d minifier: Make `__proto__` write tracking execution-order
independent (#24280 ) (Dunqing)
- 6371fed transformer: Remove stale enum member bindings (#24272 )
(camc314)
- f05dfab transformer: Correct symbol flags for lowered namespaces
(#24271 ) (Dunqing)
- 84eeb55 transformer: Correct symbol flags for lowered enums (#24269 )
(Dunqing)
- c3057da transformer: Preserve generated class binding spans (#24220 )
(camc314)
- 8260096 transformer: Correct span for lowered namespace symbol
(#24222 ) (camc314)
- 42d00d3 semantic: Mark declared class heritage as type references
(#24237 ) (camc314)
- 588d997 semantic: Mark TS `PropertyDefinition`s computed fields as
type references (#24233 ) (camc314)
- 9b95632 semantic: Mark computed method keys in `TSMethodSignature`s as
type references (#24232 ) (camc314)
### ⚡ Performance
- 5b26643 transformer_plugins: Dispatch global defines by trailing name
(#23666 ) (Boshen)
- dce0f29 react_compiler: Replace all compiled functions in a single AST
walk (#24403 ) (Boshen)
- f85f0d8 ast: Delegate inherited enum variants in clone_in and estree
derives (#23555 ) (Boshen)
- 3ff0234 allocator: Remove `unwrap` from `ReplaceWith` (#24365 )
(overlookmotel)
- ab22e80 transformer: Fix Rust 1.97 performance regression (#24354 )
(camc314)
- b47585c parser: Use `ReplaceWith` instead of `TakeIn` (#24018 )
(overlookmotel)
- b227a06 minifier: Use `ReplaceWith` instead of `TakeIn` (#24017 )
(overlookmotel)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-07-14 15:02:22 +08:00
Boshen
d302b72a00
refactor(parser): use cold_path for pure branch-layout hints ( #24380 )
...
Rust 1.95 stabilized [`std::hint::cold_path`](https://doc.rust-lang.org/std/hint/fn.cold_path.html ), re-exported via `oxc_data_structures::branch_hints` in #24368 . This replaces the `cold_branch` closure trampoline with `cold_path()` at the **14 call sites where the hint only guides branch layout** — straight-line code instead of closure ceremony.
The other **10 sites keep `cold_branch` deliberately**: they build diagnostics, and several document (e.g. `cursor.rs` `asi()`, `punctuation.rs` `<!--`, `string.rs`, `numeric.rs`) that the `#[cold]` trampoline exists to keep the ~232-byte `OxcDiagnostic` return buffer out of the hot function's stack frame. `cold_path` only sets branch weights — it does not outline code or stack usage — so replacing those sites would regress that. `cold_branch`'s doc comment now explains when to use which.
One small unlock while here: the comment in `skip_multi_line_comment` saying we "can't use `return` in a closure" to jump to the faster post-line-break search — that limitation is gone now the closure is gone; left as a possible follow-up since it's a behavior change.
Verified:
- `cargo test -p oxc_parser` and clippy clean.
- Parser conformance (test262 / babel / typescript / misc): **zero snapshot diffs**.
- Codegen-wise the replaced sites were tiny closures that inlined into the trampoline anyway; CodSpeed on this PR is the final perf gate.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
2026-07-12 01:01:09 +00:00
oxc-guard[bot] and Boshen
69b2dfc181
release(crates): oxc v0.139.0 ( #24218 )
...
### 🚀 Features
- 260425f semantic/examples: Include unresolved references (#24214 )
(camc314)
- 2d9b0b3 minifier: Fold boolean-literal ternary branches in value
contexts (#24110 ) (Dunqing)
- 61fbf10 ast: Implement `ReplaceWith` on all AST types (#24013 )
(overlookmotel)
- 7db7a29 allocator: Add `ReplaceWith` trait (#24012 ) (overlookmotel)
- 4eb074e mangler: Add `reserved` option for names that must not be
mangled (#24041 ) (Dunqing)
- 2e62012 data_structures: Add `StringExt` trait (#24006 )
(overlookmotel)
- 60e7160 minifier: Drop side-effect-free IIFEs whose result is unused
(#23967 ) (Dunqing)
- 26dd9e2 ast: Add method to widen inherited enum ref to parent ref
(#23961 ) (overlookmotel)
### 🐛 Bug Fixes
- e8b50ee transformer: Clean up semantics for stripped TypeScript syntax
(#24180 ) (camc314)
- d966d0b react_compiler: Remove clippy allows (#24168 ) (Boshen)
- 854ef8d react_compiler: Compile generic functions instead of
over-bailing on type-param hoisting (#24158 ) (Boshen)
- 093586c react_compiler: Align memoization cache-slot allocation with
Babel (#24157 ) (Boshen)
- 09c8f59 react_compiler: Normalize snapshot fixture paths (#24142 )
(camc314)
- f13df97 react_compiler: Drop stray empty statement from catch bindings
(#24133 ) (Boshen)
- cb2a505 react_compiler: Codegen destructuring reassignment targets
(#24131 ) (Boshen)
- b82c394 react_compiler: Propagate codegen invariants instead of
emitting empty bodies (#24128 ) (Boshen)
- 5771982 react_compiler: Render unchanged programs as source in fixture
snapshots (#24129 ) (Boshen)
- 4b16e1a transformer/async-to-generator: Preserve direct eval scope
flags (#24136 ) (camc314)
- 4e9194f react_compiler: Lower `delete obj.prop` to
Property/ComputedDelete (#24123 ) (Boshen)
- 0b25582 ast: Type binding node `typeAnnotation` as `TSTypeAnnotation |
null` (#23113 ) (Boshen)
- 018c0e5 transformer: Hoist lowered async declarations (#22770 )
(camc314)
- 652fbaf mangler: Keep names of destructured exported bindings (#24036 )
(Dunqing)
- e274415 minifier: Don't drop global calls that throw despite pure
arguments (#23917 ) (Dunqing)
- 59abb30 minifier: Only merge string literals in `try_fold_add` when
the inner operator is `+` (#23622 ) (Jerry Zhao)
### ⚡ Performance
- c5ca77b transformer: Avoid cloning refresh options (#24191 ) (camc314)
- bf1a151 react_compiler: Compile out debug printers (#24184 ) (Boshen)
- abb44a0 transformer: Build fixed object-rest arguments (#24190 )
(camc314)
- a4db731 isolated_declarations: Use `ReplaceWith` instead of `TakeIn`
(#24016 ) (overlookmotel)
- ff10855 transformer: Use `ReplaceWith` instead of `TakeIn` (#24015 )
(overlookmotel)
- bd49aff ecmascript: Avoid heap-allocating Math.min/max/imul operands
(#23941 ) (Lawrence Lin)
- e4b708b react_compiler: Skip compiled files before prefilters (#24171 )
(Boshen)
- c59f2fe rust: Return impl ExactSizeIterator from slice-backed
accessors (#24144 ) (Boshen)
- 5d6d04a codegen: SWAR-skip boring byte runs in sourcemap line/column
scan (#24023 ) (Boshen)
- a55e0be traverse: Reduce string operations in `get_var_name_from_node`
(#24007 ) (overlookmotel)
- e6d48e1 transformer/nullish_coalescing: Move cold path into separate
function (#23989 ) (overlookmotel)
- c4e35b5 transformer/object_rest_spread: Pre-allocate capacity in `Vec`
(#23988 ) (overlookmotel)
- 527b8e5 transformer/decorators: Narrow type earlier (#23987 )
(overlookmotel)
### 📚 Documentation
- 30d17f5 allocator: Clarify docs for `TakeIn::take_in_box` (#24093 )
(overlookmotel)
- 675e6a8 ast: Correct doc comment for `PrivateFieldExpression` (#24008 )
(overlookmotel)
- e4c30e6 minifier: Explain what `dce` mode means (#23994 ) (Dunqing)
- 37cbf88 ast_macros: Document fields of `StructDetails` (#23959 )
(overlookmotel)
- 4de3e54 ast: Correct doc comment (#23948 ) (overlookmotel)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-07-06 23:26:26 +08:00
8bf69a3076
release(crates): oxc v0.138.0 ( #23934 )
...
### 💥 BREAKING CHANGES
- 94fbacb ast: [**BREAKING**] Only export `AstBuilder` and `NONE` in
`builder` module (#23876 ) (overlookmotel)
- 8de5122 ecmascript: [**BREAKING**] Switch to new `AstBuilder` (#23834 )
(overlookmotel)
- dc0ef38 transformer: [**BREAKING**] Switch to new `AstBuilder`
(#23831 ) (overlookmotel)
- 88f4455 str: [**BREAKING**] `Str` and `Ident` methods take
`&GetAllocator` (#23781 ) (overlookmotel)
- 36009dd allocator: [**BREAKING**] `GetAllocator::allocator` take
`&self` (#23676 ) (overlookmotel)
- bd74f9d allocator: [**BREAKING**] Rename `AllocatorAccessor` trait to
`GetAllocator` (#23675 ) (overlookmotel)
### 🚀 Features
- 326fe25 transformer_plugins: Support `typeof` `define` keys (#23605 )
(Alexander Lichter)
- f2091b3 ast: Unify old and new `AstBuilder`s (#23875 ) (overlookmotel)
- cd1fd12 codegen: Expose `Codegen::print_string` API (#23785 ) (camc314)
- 785461b ast: Add custom builder methods to AST types (#23651 )
(overlookmotel)
- 05d1357 ast: Add AST creation methods to AST types (#23650 )
(overlookmotel)
- 2580eda str: Add `Str::from_str_in` and `Ident::from_str_in` methods
(#23767 ) (overlookmotel)
- 6883fcf minifier: Fold write-once falsy var to false in boolean
context (#23540 ) (Dunqing)
- fcbf993 allocator: Add `Vec::from_value_in` method (#23718 )
(overlookmotel)
- 989ddb7 allocator: Add `Vec::from_box_in` method (#23717 )
(overlookmotel)
- 9d1aa7f allocator: Improve `PartialEq` for `Vec` (#23716 )
(overlookmotel)
### 🐛 Bug Fixes
- da0e5bf minifier: Don't reorder a closed-over TDZ read when inlining a
var (#23771 ) (Dunqing)
- 0b3021f allocator: Remove `Vec::from_box_in` (#23873 ) (overlookmotel)
- 0ab64ec ast: Silence deprecation warnings within files defining
deprecated `AstBuilder` methods (#23889 ) (overlookmotel)
- 8c07cad all: Enable `disable_old_builder` Cargo feature for `oxc_ast`
crate in tests (#23888 ) (overlookmotel)
- 3800f01 ast: Legacy `AstBuilder` methods take `self` not `&self`
(#23891 ) (overlookmotel)
- 869ac20 semantic/cfg: Connect for update exit to loop test (#23791 )
(camc314)
- d3e92d5 semantic/cfg: Connect while branches from condition exit
(#23790 ) (camc314)
- 025045d ast: `ExportNamedDeclaration` plain builder methods return
boxed nodes (#23783 ) (overlookmotel)
- 7537c58 ast: Fix name of `AstBuilder` method for
`Expression::V8IntrinsicExpression` (#23766 ) (overlookmotel)
- 3f574f5 traverse: Fix unsoundness in `Traverse` walk functions
(#23745 ) (overlookmotel)
- 585760f parser: String in AST reference arena (#23721 ) (overlookmotel)
- 7231d55 allocator: Fix unsound lifetime extension in `Box::new_in`
(#23685 ) (overlookmotel)
### ⚡ Performance
- d5c916a semantic: Flatten hoisting_variables to avoid per-scope map
allocation (#23927 ) (Lawrence Lin)
- e71609d minifier: Bail member-expr folding before the side-effect walk
(#23924 ) (Lawrence Lin)
- e1f89ab minifier: Reduce string allocations folding addition (#23846 )
(overlookmotel)
- 9f6ee3b isolated-declarations: Pool scope maps to avoid per-scope
alloc/rehash (#23761 ) (Boshen)
- 0b07c4c semantic: Avoid heap alloc for catch-clause binding ids
(#23911 ) (Lawrence Lin)
- c5eef8b regular_expression: Skip capturing-group pre-parse when
pattern has no `(` (#23908 ) (Lawrence Lin)
- b4f5b4b isolated_declarations: Remove redundant clone of formal
parameter pattern (#23912 ) (Lawrence Lin)
- 53d083f isolated_declarations: Use `TakeIn` not `CloneIn` (#23847 )
(overlookmotel)
- 3ea9304 react_compiler: Use faster API to arena allocate strings
(#23849 ) (overlookmotel)
- a6d8e45 parser: Avoid span lookup for arrow expression body (#23788 )
(camc314)
- e1886a0 transformer, minifier: Use `static_ident!` macro to create
static `Ident`s (#23727 ) (overlookmotel)
- 5527bef transformer/object-rest-spread: Reduce iteration (#23720 )
(overlookmotel)
- 680ffbc transformer: Allocate AST nodes in arena directly (#23711 )
(overlookmotel)
- 1c63c66 parser: Allocate AST nodes in arena directly (#23712 )
(overlookmotel)
- 3855f0c minifier: Allocate AST nodes in arena directly (#23710 )
(overlookmotel)
- d025887 isolated_declarations: Allocate AST nodes in arena directly
(#23709 ) (overlookmotel)
- 10b96c6 parser: Remove string search from parsing JSX element name
(#23713 ) (overlookmotel)
### 📚 Documentation
- 3d61dea all: Correct capitalization in comments (#23887 )
(overlookmotel)
- aa1ad74 ast: Add `#[deprecated]` to legacy `AstBuilder` methods
(#23877 ) (overlookmotel)
- a4676db ast: Correct doc comment for `NONE` (#23765 ) (overlookmotel)
- 419ec80 syntax: Fix typo in doc comment (#23674 ) (overlookmotel)
### 🛡️ Security
- 3cdd18f deps: Update npm packages (#23690 ) (renovate[bot])
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-06-29 20:11:00 +01:00
overlookmotel
3d61dea7e2
docs(all): correct capitalization in comments ( #23887 )
...
Just fix capitalization in comments.
2026-06-28 12:13:18 +00:00
overlookmotel
f2091b3846
feat(ast): unify old and new AstBuilders ( #23875 )
...
Part of #23043 .
Recent PRs have introduced a new `AstBuilder` type, and migrated all Oxc's crates over to it.
To allow downstream consumers to incrementally migrate from old `AstBuilder` to new one, unify the two implementations into a single `AstBuilder` type.
Remove the `builder_new` Cargo feature and instead add a new feature `disable_old_builder`. When enabled, this feature removes all the methods from `AstBuilder`, and makes `AstBuilder` non-`Copy`. Consumers should migrate, and then enable this feature to ensure later changes don't use the methods which are slated for removal.
Enable the `disable_old_builder` feature in all Oxc crates which use `AstBuilder` _in tests_. This ensures we don't go back to using the deprecated methods, while not forcing the feature on consumers (e.g. Rolldown) who use e.g. `oxc_transformer` but also use `AstBuilder` directly.
2026-06-27 20:37:38 +00:00
overlookmotel
981a9522f5
refactor(parser): switch parser to new AstBuilder ( #23730 )
...
Part of #23043 .
Switch over `oxc_parser` to use the new `AstBuilder` and builder methods on AST types themselves.
Vast majority performed by an ast-grep codemod generated by Claude (2nd commit - [codemod here](https://github.com/oxc-project/oxc/tree/overlookmotel/ast-builder-codemod )).
The last 2 commits are a few small fixes, and some manual changes to shorten code.
2026-06-25 01:45:22 +00:00
oxc-guard[bot] and Boshen
6d56d57535
release(crates): oxc v0.137.0 ( #23591 )
...
### 💥 BREAKING CHANGES
- 7a76cd3 estree: [**BREAKING**] Make whether to include TS fields a
runtime option (#23574 ) (overlookmotel)
- e7b6b68 estree: [**BREAKING**] `ESTree` config use methods not consts
(#23573 ) (overlookmotel)
### 🚀 Features
- 556cc6d data_structures: Add `CodeBuffer::as_str` method (#23571 )
(overlookmotel)
- 38c4b06 parser: Add friendly error for adjacent JSX elements (#23378 )
(sapphi-red)
- 53509a8 minifier: Treeshake pure typed arrays and Set/Map array
literals (#23469 ) (Dunqing)
- 09762d9 minifier: Inline const value for read-only vars (#22593 )
(Dunqing)
### 🐛 Bug Fixes
- 20375f9 react_compiler: Keep imports referenced only by a computed key
(#23586 ) (Boshen)
- 31bfd9b minifier: Keep Object introspection calls on a possible Proxy
(#23483 ) (Dunqing)
- 837a395 parser: Treat a line comment after ':' as leading, not
trailing (#23515 ) (Dunqing)
- e409fe0 minifier: Keep `new Map`/`WeakSet`/`WeakMap` with a string
argument (#23470 ) (Dunqing)
- ae02b4e ci/parser: Use `minimal` for vitest reporter (#23457 )
(camc314)
### ⚡ Performance
- cf24329 mangler: Compile slot sort once instead of per CAPACITY
(#23577 ) (Boshen)
- 4058a6a parser: Reduce code bloat from verify_modifiers
monomorphization (#23576 ) (Boshen)
- 053b0c1 estree: Remove pointless `mem::take` (#23572 ) (overlookmotel)
- dfb52b6 transformer: Pre-size statement vecs in TS enum & namespace
lowering (#23516 ) (Yunfei He)
- 970e09a minifier: Compute template-literal inline checks in a single
pass (#23467 ) (Yunfei He)
- 3170c0e semantic,mangler,minifier: Fix `Semantic::stats` node count
and reuse stats in mangler builds (#23352 ) (Boshen)
- d1fa6e0 minifier: Evaluate ternary branches once in
minimize_conditional_expression (#23479 ) (Yunfei He)
- 3fa8051 transformer: Pre-size JSX props vec to attribute count
(#23466 ) (Yunfei He)
- 488b382 react_compiler: Borrow binding names in prefilter instead of
allocating (#23471 ) (Yunfei He)
- bcb3894 minifier: Incremental scoping refresh, delete
LiveUsageCollector (#23197 ) (Dunqing)
### 📚 Documentation
- f68641e data_structures: Improve docs on safety contract (#23575 )
(overlookmotel)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-06-18 17:31:57 +08:00
oxc-guard[bot] and Boshen
827248a7fb
release(crates): oxc v0.136.0 ( #23443 )
...
### 💥 BREAKING CHANGES
- 7a24911 codegen: [**BREAKING**] Borrow sourcemaps from codegen
(#23422 ) (Boshen)
- bb0ed44 transformer: [**BREAKING**] Disable styled-components
transpileTemplateLiterals by default (#23171 ) (Boshen)
### 🚀 Features
- 1490a0a linter/react: Implement react-compiler rule (#23202 ) (Boshen)
- 6c0bdf0 transformer/react-refresh: Support `module.property.useHook()`
(#23190 ) (Dunqing)
- 47991bd semantic: Report TS1228 for invalid type predicates (#23174 )
(camc314)
- 1d3af58 parser: Add TS2398 parameter property diagnostic (#23216 )
(camc314)
- 44313da semantic: Add `scope_is_descendant_of` api (#22313 ) (camc314)
- e5050c0 parser: Improve diagnostic for rest initializer (#23205 )
(camc314)
- ec266bb transformer: Run React Compiler as a feature-gated transform
pass (#23201 ) (Boshen)
- e7374fe parser: Report error for `const` modifier on interface type
parameter (#23173 ) (camc314)
- a7c1c9b parser: Report ambient definite variable assertions (#23165 )
(camc314)
- d169fcd parser: Report invalid class definite assertions (#23164 )
(camc314)
- 00244d8 parser: Report definite property initializer errors (#23160 )
(camc314)
### 🐛 Bug Fixes
- 52d0c31 transformer: Replace ambient dot defines (#23231 ) (camc314)
- 2c28748 transformer/class: Parent generated constructors to class
scope (#23222 ) (camc314)
- 8edd234 parser: Report accessor definite assertion on token (#23203 )
(camc314)
- de38a3f react_compiler: Keep imports referenced only by a local
re-export (#23176 ) (Boshen)
- f5721c2 codegen: Preserve parentheses around `intrinsic` type
reference (#23156 ) (Boshen)
- e89f81d parser: Don't emit TS1477 for parenthesized instantiation
expression (#23147 ) (Boshen)
- 8a04149 parser: Reject module-referencing imports/exports in a
namespace body (#22829 ) (Boshen)
### ⚡ Performance
- 2783295 parser: Table-driven operator precedence lookup (#23346 )
(Boshen)
- 231d5de parser: Single-match member expression dispatch (#23347 )
(Boshen)
- e89729b codegen: Accept one-shot wrap closures (#23265 ) (camc314)
- a6c11fa parser: Force-inline read_non_decimal to fold per-digit number
dispatch (#23157 ) (Boshen)
- d74964c parser: Store class definite assertion offset (#23170 )
(camc314)
- f0fda4d parser: Shrink-wrap cold diagnostic tails out of hot frames
(#23159 ) (Boshen)
- a082180 parser: Store definite assertion offset (#23167 ) (camc314)
- 534f9c6 oxc: Conditionally rebuild semantic in compiler pipeline
(#23153 ) (Boshen)
- b435c6a parser: Skip checkpoint for `infer T extends U` constraint in
disallow context (#23128 ) (Boshen)
- 7464dce parser: Peek instead of checkpoint/rewind for `export default`
modifier (#23124 ) (Boshen)
- 80a9a32 parser: Fast-path single-keyword TS declarations (#23083 )
(Boshen)
- da1a6c6 diagnostics: Migrate to allocation-optimized oxc-miette
(#23094 ) (Boshen)
- b7b08ce parser: Peek once for the static modifier disambiguation
(#23079 ) (Boshen)
- e7e07a3 parser: Fold unary dispatch into a single match (#23076 )
(Boshen)
### 📚 Documentation
- d241add semantic: Add `AGENTS.md` test guidance for agents (#23441 )
(camc314)
- 026f1ae parser: Add `AGENTS.md` test guidance for agents (#23440 )
(camc314)
- 09755ac transformer: Add `AGENTS.md` test guidance for agents (#23439 )
(camc314)
- e6bdfd4 lexer: Correct reference link for `byte_handlers!` (#23313 )
(Dunqing)
- 65b6d7a allocator: Fix memory leaks in `Arena` examples (#23257 )
(overlookmotel)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-06-15 20:05:34 +08:00
oxc-guard[bot] and Boshen
e9b8fd595c
release(crates): oxc v0.135.0 ( #23117 )
...
### 💥 BREAKING CHANGES
- ee4dc73 ast: [**BREAKING**] Add `#[non_exhaustive]` to AST nodes
(#23046 ) (overlookmotel)
- 4c35362 ast: [**BREAKING**] Add
`AstBuilder::template_element_escape_raw` and
`template_element_escape_raw_with_lone_surrogates` methods (#23047 )
(overlookmotel)
### 🚀 Features
- b846ab2 react_compiler: Integrate the Rust port of the React Compiler
(#22942 ) (Boshen)
- 5b8dd68 parser: Report TS1255 for invalid class definite assertions
(#22917 ) (camc314)
- 85efabf semantic: Make building the class table optional, off by
default (#22862 ) (Boshen)
### 🐛 Bug Fixes
- 556acdc codegen: Parenthesize TS-cast assignment targets (#23112 )
(Boshen)
- 37169ff codegen: Don't emit space between postfix `--` and `>` when
minifying (#23036 ) (Boshen)
- a4b1bf7 codegen: Drop redundant whitespace in minified TypeScript
output (#23038 ) (Boshen)
- cf53285 parser: Report reserved type-declaration names in the parser
(#23035 ) (Boshen)
- 4e44969 ast: Fix UB in `escape_template_element_raw` (#23052 )
(overlookmotel)
- c543154 parser: Report comma operator in JSX expression in the parser
(#23030 ) (Boshen)
- 325c94f codegen: Tighten conditional-type and constructor-type
whitespace when minifying (#23033 ) (Boshen)
- 95dd3a2 parser: Report `import type` alias to a non-external reference
in the parser (#23032 ) (Boshen)
- 90180b8 codegen: Drop space after `:` in function return type when
minifying (#23028 ) (Boshen)
- 6da876e parser: Report `abstract` private class field in the parser
(#23029 ) (Boshen)
- 28467ce codegen: Don't emit space before a postfix update operand when
minifying (#23027 ) (Boshen)
- cb29926 codegen: Drop redundant space after `export default` when
minifying (#23024 ) (Boshen)
- 62965ae codegen: Drop redundant space after `else` when minifying
(#23025 ) (Boshen)
- 989230a parser: Report compound assignment to non-simple target in the
parser (#23022 ) (Boshen)
- 06f367c parser: Report `super.#field` private access in the parser
(#23014 ) (Boshen)
- 184edef codegen: Print space before `const`/`declare` enum modifier
(#23013 ) (Boshen)
- 4d722e0 parser: Report duplicate switch `default` clause in the parser
(#23012 ) (Boshen)
- 597ed85 codegen: Parenthesize `let`/`async` for-of head target
(#23008 ) (Boshen)
- 8b631bf codegen: Remove stray space before mapped type value colon
(#23010 ) (Boshen)
- c08407e codegen: Don't over-parenthesize `in` inside an arrow in a
for-init (#23009 ) (Boshen)
- 600cd6f codegen: Parenthesize lower-precedence
`TSInstantiationExpression` operand (#23007 ) (Boshen)
- 187e1a5 codegen: Don't leak space after comment-only JSX expression
container (#23006 ) (Boshen)
- 294c473 codegen: Don't over-parenthesize `TSTypeAssertion` operand
(#23004 ) (Boshen)
- 786d96f codegen: Give `TSTypeAssertion` unary precedence (#23002 )
(Boshen)
- 1295882 parser: Report `new.target` and `import.meta` syntax errors in
the parser (#23003 ) (Boshen)
- d727b6b codegen: Parenthesize `await` expression as base of `**`
(#23001 ) (Boshen)
- 67dfa08 codegen: Keep parentheses around `new` callees containing a
call (#22997 ) (Boshen)
- 17e7cf3 parser: Disallow unerasable `as`/`satisfies` assertions
(#22986 ) (Boshen)
- beb46d3 parser: Commit to module goal on decorated exports (#22941 )
(Boshen)
- 49e63f7 isolated-declarations: Require annotations for satisfies
initializers (#22898 ) (camc314)
- 8c93601 isolated-declarations: Allow unknown enum initializer in
non-const enum (#22900 ) (camc314)
### ⚡ Performance
- 7d89909 parser: Peek instead of lookahead for yield disambiguation
(#23071 ) (Boshen)
- bf872f0 parser: Skip arrow lookahead for a parenthesized literal
(#23070 ) (Boshen)
- d19fc54 parser: Guard type-argument speculation behind an angle-token
check (#23069 ) (Boshen)
- 8eb5507 parser: Skip redundant member-rest re-scan on call entry
(#23068 ) (Boshen)
- 883dfc1 parser: Skip parse_call_expression_rest when no call follows
(#23063 ) (Boshen)
- b171153 parser: Peek before the await-using lookahead (#23059 )
(Boshen)
- 56f21bd parser: Use peek_token for the TS `asserts` type predicate
(#23058 ) (Boshen)
- 68805ac parser: Use peek_token instead of checkpoint/rewind for
single-token decisions (#23056 ) (Boshen)
- 1f9d8eb ast: `AstBuilder::template_element_escape_raw` avoid
allocation if no escape required (#23053 ) (overlookmotel)
- 502b04d semantic: Move cold function redeclaration handling into
`#[cold]` function (#22973 ) (overlookmotel)
### 📚 Documentation
- 275d318 napi/minifier: Point `target` to oxc docs (#23102 ) (camc314)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-06-08 22:17:46 +08:00
oxc-guard[bot]
6c30f81eca
release(crates): oxc v0.134.0 ( #22882 )
...
### 🚀 Features
- 9c71f2e ast, codegen, formatter: Add `WithClauseKeyword::as_str`
helper and use it (#22791 ) (camc314)
### 🐛 Bug Fixes
- cf5769c parser: Reject TypeScript declarations in single-statement
context (#22827 ) (Boshen)
- c360fb6 parser: Reject generators in ambient contexts and overload
signatures (TS1221/TS1222) (#22848 ) (Boshen)
- cc60d8d parser: Reject invalid index signature parameter types
(TS1268/TS1337) (#22852 ) (Boshen)
- 3d13e29 parser: Reject `declare` in an already-ambient context
(TS1038) (#22850 ) (Boshen)
- 5152854 parser: Reject statements in ambient contexts (TS1036)
(#22849 ) (Boshen)
- 4f9afc5 parser: Reject `export as namespace` inside a namespace body
(TS1316) (#22846 ) (Boshen)
- 2eafea6 parser: Reject function implementations in ambient contexts
(TS1183) (#22845 ) (Boshen)
- c645615 parser: Reject incompatible class member modifiers (#22843 )
(Boshen)
- 276b78b parser: Reject module-referencing imports/exports in a
namespace body (#22836 ) (Boshen)
- 842ed1c parser: Parse `class implements` with `implements` as the
class name (#22801 ) (Boshen)
### ⚡ Performance
- 7e3a567 parser: Reuse cached token kind in delimited-list loops
(#22841 ) (Boshen)
- 9e741c2 parser: Use peek_token instead of lookahead on the modifier
path (#22842 ) (Boshen)
- 9e496a7 semantic: Defer declare lookup for empty accessors (#22810 )
(camc314)
2026-06-01 17:27:01 +01:00
oxc-guard[bot] and Dunqing
83328b65ce
release(crates): oxc v0.133.0 ( #22734 )
...
### 🚀 Features
- e857b0c napi/minify: Expose legalComments option and result (#20370 )
(Boshen)
- 661132d parser: More friendly error messages for rest assignment
target and rest binding element (#22719 ) (sapphi-red)
- ee659b6 transformer/legacy-decorator: Add `strictNullChecks` option
for nullable-union design:type (#22266 ) (Kyle Cannon)
### 🐛 Bug Fixes
- e1d064e transformer/class-properties: Reparent lifted private method
helpers (#22716 ) (Cameron)
- 4ac0fca minifier: Preserve `0 && (module.exports = { ... })`
cjs-module-lexer hint (#22729 ) (Dunqing)
- 40ff611 minifier: Mark peephole loop changed when dropping
dead-after-throw statement (#22722 ) (Dunqing)
- 2f7b210 codegen: Emit pife-arrow/function leading comments inside the
wrap (#22720 ) (Dunqing)
- e184f74 parser: Improve invalid `import` property access diagnostic
(#22693 ) (camc314)
- 7baed9c transformer/private-method: Clear inherited strict flags
(#22508 ) (camc314)
- a9ad27e parser: Keep annotation comments leading without preceding
newline (#22711 ) (Dunqing)
- 9ea4d64 minifier: Re-evaluate pure/no-side-effects flags after
peephole inlining (#22595 ) (Dunqing)
- 07afbb6 minifier: Drop empty-body IIFE wrapper when called with
arguments (#22589 ) (Dunqing)
- fa7c463 semantic: Correct TS enum member symbol spans (#22689 )
(camc314)
- 26b9396 semantic: Resolve parameter decorators outside parameter scope
(#22623 ) (camc314)
- b284045 parser: Switch to module goal eagerly on `export` (#22684 )
(Boshen)
- dfa931d semantic: Propagate unresolved auto-increment enum value
instead of defaulting to 0 (#22646 ) (Dunqing)
- 69a6ba6 transformer/legacy-decorator: Emit Array for ReadonlyArray<T>
in decorator metadata (#22265 ) (Kyle Cannon)
- e421ef0 transformer/legacy-decorator: Return runtime binding for
design:type (#22640 ) (Dunqing)
- d61e1d7 codegen: Preserve verbatim text of pure/no-side-effects
comments (#22525 ) (Dunqing)
- 702b14e minifier: Preserve IIFE structure in DCE-only mode (#22547 )
(Dunqing)
- 917da24 parser: Apply PURE comment through member-access chains
(#22566 ) (Dunqing)
- a069b1c codegen: Preserve quotes for cjs-module-lexer equality strings
(#22551 ) (Dunqing)
### ⚡ Performance
- 2f623b0 semantic: Skip unresolved checks for re-exports (#22660 )
(camc314)
- 0d9553d semantic: Early-exit `check_object_expression` for objects
with <2 properties (#22668 ) (Dunqing)
- d721ad9 semantic: Use direct grandparent lookup for TS type parameters
(#22658 ) (camc314)
- 0aff288 semantic: Reorder numeric literal strict mode checks (#22657 )
(camc314)
- 4d5ddb1 semantic: Reorder binding identifier checks (#22656 ) (camc314)
- e32acd8 semantic: Reorder identifier ambient binding check (#22653 )
(camc314)
- 09fe178 semantic: Reorder ident reference strict mode check (#22652 )
(camc314)
- 4b6add2 semantic: Avoid duplicate ident clone for bindings (#22663 )
(camc314)
- 82f9662 parser: Check identifier kind before context flag (#22662 )
(camc314)
- d7cd951 parser: Fast path identifier parsing and inline operator
helpers (#22650 ) (Boshen)
- 7b84314 semantic: Use direct byte access for numeric leading-zero
check (#22642 ) (camc314)
- 0345a31 semantic: Pre-size class elements hash map (#22618 ) (camc314)
- 04d3065 minifier: Drop per-call buffers in try_fold_concat (#22596 )
(Dunqing)
- 4f289f1 semantic: Resolve_references_for_current_scope without a temp
Vec (#22599 ) (Dunqing)
- e862c15 semantic: Avoid heap alloc for var hoist scope ids (#22603 )
(Dunqing)
- 8ff8674 semantic: Early return if `excess` is `0` in
`Stats::increase_by` (#22616 ) (camc314)
- 7a4120e semantic: Pre-reserve unresolved_references using
Stats::references (#22580 ) (Dunqing)
Co-authored-by: Dunqing <29533304+Dunqing@users.noreply.github.com >
2026-05-26 14:28:43 +08:00
oxc-guard[bot]
63b129182d
release(crates): oxc v0.132.0 ( #22527 )
...
### 🐛 Bug Fixes
- 0f26de6 ecmascript: Resolve identifier value type via tracked
constants (#22234 ) (Alexander Lichter)
- c27a8cf minifier: Normalize `{ x: x }` shorthand so adjacent-if merge
is idempotent (#22401 ) (Dunqing)
- e431a0e parser: Break extends clause loop on fatal error (#22517 )
(Boshen)
- e9ec7c6 minifier: Fold optional chains by base nullishness (#22236 )
(Alexander Lichter)
- e6090e7 transformer: Keep enum IIFE when a non-inlinable value
reference remains (#22501 ) (Dunqing)
- 931b7d6 transformer: Inline const enum members through type-cast
wrappers (#22500 ) (Dunqing)
- b9615b2 codegen: Preserve string quotes in require() calls during
minification (#22475 ) (zennnnnnn11)
- c73c159 transformer/async-to-generator: Reparent parameter initializer
scopes (#22507 ) (camc314)
- ecfd3ca transformer/async-to-generator: Move only parameter bindings
(#22503 ) (camc314)
- 3ce3431 transformer/explicit-resource-managment: Preserve shadowed
for-head block (#22451 ) (camc314)
### ⚡ Performance
- ce92c6c semantic: `#[inline]` `Scoping::get_binding` (#22414 )
(Dunqing)
- 98be95c regular_expression: Track regex flags via bitflags (#22427 )
(Boshen)
- dbbc059 jsdoc: Skip should_attach_jsdoc when no remaining comments
(#22409 ) (Boshen)
- 217d7d8 minifier: Index `SymbolValues` by `SymbolId` (#22441 )
(Dunqing)
- d782b78 minifier: Use BitSet for LiveUsageCollector live references
(#22425 ) (Boshen)
2026-05-18 12:09:14 +01:00
oxc-guard[bot] and overlookmotel
564ebbf46f
release(crates): oxc v0.131.0 ( #22459 )
...
### 🚀 Features
- bc91a17 codegen: Expose `Codegen::with_source_type` method (#22432 )
(camc314)
### 🐛 Bug Fixes
- 5ac7e79 minifier: Drop unused-var-init pure IIFEs and preserve
annotation for downstream (#22349 ) (Dunqing)
- 4ab57eb allocator: Fixed-size allocators use `VirtualAlloc` on Windows
(#22124 ) (overlookmotel)
- 66d77eb allocator: Fix segfault on Linux MUSL with fixed-size
allocators (#22388 ) (overlookmotel)
- b8fbc1f transformer/object-rest-spread: Correct scope id when moving
bindings (#22419 ) (camc314)
- 18edc2c codegen: Keep `Object.defineProperty` property name as plain
string in minify (#22400 ) (Dunqing)
- dda33de transformer/explicit-resource-management: Align lexical
binding scopes (#22320 ) (camc314)
- 8e79de8 transformer: Preserve for-await statement bodies (#22361 )
(camc314)
- 0cba210 transformer/class: Replace `new.target` in static blocks
(#22360 ) (camc314)
- 67ab1c9 transformer/es2018/for-await: Hoist for-await generated
bindings (#22355 ) (camc314)
- c3ceb4a transformer/object-rest-spread: Use hoisted scope for `for-of`
temp refs (#22347 ) (camc314)
### ⚡ Performance
- 73a9043 allocator/bitset: Avoid temp heap `String` allocation (#22403 )
(camc314)
- 8b2f4f9 transformer/object-rest-spread: Collect `Vec<SymbolId` over
`Vec<BindingIdentifier>` (#22418 ) (camc314)
- 83679ea parser: Split TriviaBuilder::handle_token hot/cold paths
(#22415 ) (Boshen)
- 2c7d781 codegen: Inline identifier-name accessors (#22411 ) (Boshen)
- 618bc76 diagnostics: Inline `OxcDiagnosticInner` to avoid heap
allocation (#22406 ) (Boshen)
- 0b4e158 parser: Reserve cap `2` for sequence expressions vec (#22374 )
(camc314)
- 5f3bdd0 codegen: Add `#[inline]` to `code`, `code_len` (#22373 )
(camc314)
Co-authored-by: overlookmotel <557937+overlookmotel@users.noreply.github.com >
2026-05-15 15:38:24 +01:00
oxc-guard[bot] and Cameron
650417ffd0
release(crates): oxc v0.130.0 ( #22316 )
...
### 🚀 Features
- 66c9b01 transformer/typescript: Debug_assert that `enum_eval` ran in
semantic (#22252 ) (Dunqing)
- ffe6475 minifier: Fold `Array` constructor with safe spreads (#22215 )
(camc314)
### 🐛 Bug Fixes
- d3d0b18 traverse: Handle `ChainElement::TSNonNullExpression` in
`GatherNodeParts` (#22247 ) (leaysgur)
- 4e880de transformer/object-rest-spread: Declare temp vars for computed
keys (#22284 ) (camc314)
- a7c3e22 semantic: Clear member write target for computed keys (#22302 )
(camc314)
- 6a8852d codegen: Emit newline after legal-comment orphan flush
(#22304 ) (Dunqing)
- 5da9fda transformer/explicit-resource-management: Preserve class names
(#22306 ) (Dunqing)
- b5d970f transformer/explicit-resource-management: Preserve class names
(#22290 ) (camc314)
- bc54fd4 minifier: Keep function / class names if direct eval is
present in the scope (#22241 ) (sapphi-red)
- 7a810c0 minifier: Refresh direct eval flags after DCE (#21787 )
(Dunqing)
- dd88726 transformer/legacy-decorator: Preserve accessor type
annotation for emitDecoratorMetadata (#21966 ) (Dunqing)
- 29a3cd7 codegen: Swap mapping/indent order for top-level decls
(#22206 ) (Dunqing)
- 73b4f40 minifier: Preserve catch binding with direct eval (#22221 )
(camc314)
- 0e13d17 minifier: Preserve optional chain base side effects (#22219 )
(camc314)
- 0c7c01c transformer/typescript: Inline optional-chain enum member
access (#21834 ) (Dunqing)
- a6aff7e codegen: Emit block/array/object end mapping at close char
(#22200 ) (Dunqing)
- a099b03 codegen: Emit call end mapping at `)` position, not past it
(#22199 ) (Dunqing)
- 5753774 minifier: Cap if-return ternary collapse for firefox (#21841 )
(Gurupungav Narayanan)
- 2493bdd codegen: Correct sourcemap end mappings for closing delimiters
(#22001 ) (Mark Dalgleish)
- 3b385e2 minifier: Bail optimizing `Array` with unknown arg count
(#22188 ) (camc314)
- 9fa2122 parser: Parse array computed class keys (#22159 ) (camc314)
### 📚 Documentation
- a4a6892 napi/parser: Correct code comment (#22278 ) (overlookmotel)
- 9305373 oxc: Update README (#22178 ) (camc314)
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-05-11 16:02:22 +01:00
ec00055e64
release(crates): oxc v0.129.0 ( #22108 )
...
### 💥 BREAKING CHANGES
- 0ffbe0d allocator: [**BREAKING**] Remove `Allocator::end_ptr` method
(#21871 ) (overlookmotel)
### 🚀 Features
- 9593ec8 transformer/jsx: Add jsxDEV source metadata for fragments
(#21932 ) (Ido Rosenthal)
### 🐛 Bug Fixes
- 429deac napi/parser: Export `visitorKeys` from `wasm` entrypoint
(#21996 ) (NullVoxPopuli)
- e852911 codegen: Preserve legal comments orphaned by upstream passes
(#21575 ) (Dunqing)
- e3399ec transformer/class-properties: Preserve RHS in
logical-assignment to static private field (#21950 ) (Dunqing)
- c59c199 transformer/typescript: Emit class fields for parameter
properties (#21831 ) (Dunqing)
- aaabde4 parser: Attach legal comments to following token (#21670 )
(Dunqing)
### ⚡ Performance
- 0bf0cb9 allocator: Per-platform `Arena::new_fixed_size`
implementations (#22088 ) (overlookmotel)
### 📚 Documentation
- 62ec410 allocator: Correct doc comment for `Allocator::from_raw_parts`
(#22093 ) (overlookmotel)
- 3e152c6 allocator: Correct typos in comments (#22092 ) (overlookmotel)
- e220855 allocator: Correct doc comment for `Allocator::set_cursor_ptr`
(#21866 ) (overlookmotel)
---------
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
Co-authored-by: Cameron Clark <cameron.clark@hey.com >
2026-05-05 09:59:50 +01:00
oxc-guard[bot] and Boshen
9951013ece
release(crates): oxc v0.128.0 ( #21837 )
...
### 💥 BREAKING CHANGES
- 502e804 ast: [**BREAKING**] Reduce size of `TSTypePredicateName`
(#21711 ) (overlookmotel)
- 5651539 ast: [**BREAKING**] Reduce size of `JSXExpression` (#21710 )
(overlookmotel)
- c44e280 ast: [**BREAKING**] Reduce size of `ArrayExpressionElement`
(#21709 ) (overlookmotel)
- c5b3deb syntax: [**BREAKING**] Remove `CommentNodeId` (#21679 )
(overlookmotel)
### 🚀 Features
- b738a39 allocator: Add `Allocator::cursor_ptr` method (#21773 )
(overlookmotel)
- 678767e ast: Generate node_id accessors for AST enum wrappers (#21653 )
(camc314)
- f091d77 minifier: Inline constant spread elements into arrays (#21095 )
(Armano)
### 🐛 Bug Fixes
- 0d608c2 minifier: Preserve raw CR in template literals (#21645 )
(Dunqing)
- a889ea9 minifier: Track pure functions in DCE mode (#21722 ) (Dunqing)
- 674dfac allocator: `Arena` retry allocation when chunk size approaches
maximum (#21777 ) (overlookmotel)
- f130cc0 allocator: Fix arithmetic overflow in
`Arena::new_chunk_memory_details` (#21745 ) (overlookmotel)
- b9bf239 allocator: Fix UB in `Arena::grow_zeroed` (#21739 )
(overlookmotel)
- d2b9389 allocator: Clippy warning when building without `testing`
feature (#21681 ) (camc314)
- 503dc86 codegen: Map sourcemaps from visible output starts (#21662 )
(Dunqing)
- c92bd3b transformer: Use SPAN for synthesized helper calls to prevent
comment misattribution (#21578 ) (Dunqing)
- 0d80441 codegen: Add mapping before printing `#` for private ident
(#21619 ) (camc314)
### ⚡ Performance
- 9fa362e napi/parser: Do not generate tokens except in tests (#21811 )
(overlookmotel)
- 0044392 allocator: Reduce branches when allocating new chunk (#21776 )
(overlookmotel)
- 7896bd0 allocator: `Allocator::used_bytes` do not use chunk iterator
(#21771 ) (overlookmotel)
- a5c562f allocator: Remove check in `Arena::new_chunk_memory_details`
(#21750 ) (overlookmotel)
- 35bbe1f allocator: `Arena` use unchecked size round up where
guaranteed no overflow (#21743 ) (overlookmotel)
- ffe229b allocator: Remove unnecessary check from
`Arena::try_alloc_layout_slow_impl` (#21732 ) (overlookmotel)
- 72fece5 allocator: Use `NonNull::offset_from_unsigned` in
`Arena::chunk_capacity` (#21731 ) (overlookmotel)
- cab32ae ast: Add `#[inline(always)]` to `node_id` methods on enums
with all variants unboxed (#21707 ) (overlookmotel)
- b179688 parser: Allocate `TriviaBuilder` comments in the arena
(#21512 ) (Boshen)
- 2290f31 lexer: Fix perf of `Token::set_*` methods on Rust 1.95.0
(#21659 ) (overlookmotel)
- 1b58029 allocator: Move code into cold path in `Arena::alloc_layout`
(#21622 ) (overlookmotel)
- 3cf7cef allocator: Reduce instructions on allocation hot path (#21510 )
(overlookmotel)
### 📚 Documentation
- ce65070 data_structures: Document why `as_ref` and `as_mut` on
`NonNullConst` and `NonNullMut` take `self` (#21800 ) (overlookmotel)
- 93b7dbd allocator: Improve doc comments for `ChunkFooter` (#21733 )
(overlookmotel)
- 295db8d transformer: Fix comment (#21717 ) (overlookmotel)
- 5c93af8 ast: Add comments explaining `#[inline(always)]` to `node_id`
methods on enums (#21706 ) (overlookmotel)
- e4cea25 transform: Use the `node:` namespace in the example (#19998 )
(루밀LuMir)
### 🛡️ Security
- d8076c9 deps: Update rolldown (#21639 ) (renovate)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-04-27 12:32:32 +01:00
161d6b5583
release(crates): oxc v0.127.0 ( #21572 )
...
### 🐛 Bug Fixes
- 48967e8 isolated_declarations: Drop required type check for private
parameter properties on private constructors (#21515 ) (Dunqing)
- 91e5bde transformer/typescript: Preserve computed-key static block
when class has an empty constructor (#21562 ) (Dunqing)
- 50e9d26 mangler: Assign correct slot to shadowed function-expression
names (#21535 ) (Dunqing)
- 065ce47 isolated_declarations: Collect types from private accessors
for paired inference (#21516 ) (Dunqing)
- 00fc136 codegen: Preserve coverage comments before object properties
(#21312 ) (bab)
- d676e0c minifier: Mark LHS of `??=` as read when converting from `==
null &&` (#21546 ) (Gunnlaugur Thor Briem)
### ⚡ Performance
- e45efc5 parser: Reduce `try_parse` usage in favour of `lookahead`
(#21532 ) (Boshen)
- ddb1bf8 parser: Avoid redundant `IdentifierReference` clone in
shorthand property (#21511 ) (Boshen)
- be2b392 allocator: Store pointers directly in `Arena` (#21483 )
(overlookmotel)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
Co-authored-by: Cameron <cameron.clark@hey.com >
2026-04-20 20:29:50 +01:00
Boshen and Dunqing
836fe9d51c
release(crates): oxc v0.126.0 ( #21471 )
...
### 💥 BREAKING CHANGES
- 24fb7eb allocator: [**BREAKING**] Rename `Box` and `Vec` methods
(#21395 ) (overlookmotel)
### 🚀 Features
- ce5072d parser: Support `turbopack` magic comments (#20803 ) (Kane
Wang)
- f5deb55 napi/transform: Expose `optimizeConstEnums` and
`optimizeEnums` options (#21388 ) (Dunqing)
- 24b03de data_structures: Introduce `NonNullConst` and `NonNullMut`
pointer types (#21425 ) (overlookmotel)
### 🐛 Bug Fixes
- d7a359a ecmascript: Treat update expressions as unconditionally
side-effectful (#21456 ) (Dunqing)
- 56af2f4 transformer/async-to-generator: Correct scope of inferred
named FE in async-to-generator (#21458 ) (Dunqing)
- b3ed467 minifier: Avoid illegal `var;` when folding unused arguments
copy loop (#21421 ) (fazba)
- b0e8f13 minifier: Preserve `var` inside `catch` with same-named
parameter (#21366 ) (Dunqing)
- 4fb73a7 transformer/typescript: Preserve execution order for accessor
with `useDefineForClassFields: false` (#21369 ) (Dunqing)
### ⚡ Performance
- da3cc16 parser: Refactor out `LexerContext` (#21275 ) (Ulrich Stark)
### 📚 Documentation
- c5b19bb allocator: Reformat comments in `Arena` (#21448 )
(overlookmotel)
- 091e88e lexer: Update doc comment about perf benefit of reading
through references (#21423 ) (overlookmotel)
- 922cbee allocator: Remove references to "bump" from comments (#21397 )
(overlookmotel)
Co-authored-by: Dunqing <29533304+Dunqing@users.noreply.github.com >
2026-04-16 09:38:51 +08:00
Boshen
fb6b1b053f
release(crates): oxc v0.125.0 ( #21374 )
...
### 💥 BREAKING CHANGES
- 36cdc31 str: [**BREAKING**] Remove identity `FromIn` impl for `Ident`
(#21251 ) (overlookmotel)
- 382958a span: [**BREAKING**] Remove re-exports of string types from
`oxc_span` crate (#21246 ) (overlookmotel)
- c4aedfa str: [**BREAKING**] Add `static_ident!` macro (#21245 )
(overlookmotel)
### 🚀 Features
- e7e1aea transformer/typescript: Add `optimize_enums` option for
regular enum inlining (#20539 ) (Dunqing)
- 679f57f transformer/typescript: Implement const enum inlining and
declaration removal (#20508 ) (Dunqing)
- 6dd061c semantic: Extend `MemberWriteTarget` to cover all property
modification patterns (#21205 ) (Dunqing)
- f134e24 minifier: Support `property_write_side_effects` option to drop
unused property assignments (#20773 ) (Dunqing)
- 75663c0 semantic: Add enum member value evaluation for const enum
support (#20602 ) (Dunqing)
- 3cfe8ed semantic: Add `MemberWriteTarget` flag to `ReferenceFlags`
(#20772 ) (Dunqing)
### 🐛 Bug Fixes
- af1a586 transformer/class-properties: Use correct property name when
converting parameter properties (#21268 ) (Amal Jossy)
- b43250a allocator: Move allocation tracking into `Bump` (#21342 )
(overlookmotel)
- 36f505f allocator: `StringBuilder` use `Allocator::alloc_layout`
(#21340 ) (overlookmotel)
- 7a08a6f allocator: Fix allocation counting in
`Allocator::alloc_concat_strs_array` (#21336 ) (overlookmotel)
- 2338e28 ecmascript: Treat `this` as potentially having side effects
(#21297 ) (sapphi-red)
- bd8bd39 allocator: Remove unsafe hacks from `from_raw_parts` methods
(#21283 ) (overlookmotel)
- 8f4c340 allocator: Remove dangerous pointer const to mut cast (#21279 )
(overlookmotel)
- aa9259f parser: Add missing error code for optional param diagnostic
(#21258 ) (camc314)
- 04b3c2f str: Fix unsound casting const pointers to mut pointers
(#21242 ) (overlookmotel)
- ceadf6c str: Make `Ident::from_raw` an unsafe function (#21241 )
(overlookmotel)
- eab13b3 transformer/decorators: Avoid accessor storage name collisions
(#21106 ) (Dunqing)
- 07e8a30 transformer/react-refresh: Handle parenthesized variable
initializers (#21047 ) (camc314)
### ⚡ Performance
- c3ca6f6 allocator: `StringBuilder::from_strs_array_in` check for 0
length earlier (#21338 ) (overlookmotel)
- c2422bb allocator: `Allocator::alloc_concat_strs_array` check for 0
length earlier (#21337 ) (overlookmotel)
- 04b0fdc allocator: Mark `Allocator::alloc_layout` as
`#[inline(always)]` (#21335 ) (overlookmotel)
- 17aee9e allocator: Use `offset_from_unsigned` in
`ChunkFooter::as_raw_parts` (#21280 ) (overlookmotel)
- 61adedd minifier: Fix O(n²) perf on very many var decls (#21062 )
(Gunnlaugur Thor Briem)
- addcd02 napi/parser, linter/plugins: Raw transfer deserializer for
`Vec`s use shift instead of multiply where possible (#21142 )
(overlookmotel)
- 3068ded napi/parser, linter/plugins: Shift before add when calculating
positions in raw transfer deserializer (#21141 ) (overlookmotel)
- eb400b8 napi/parser, linter/plugins: Remove `uint32` buffer view
(#21140 ) (overlookmotel)
- 2675085 napi/parser: Lazy deserialization use only `Int32Array`
(#21139 ) (overlookmotel)
- 5b35a53 napi/parser: Deserializing tokens use only `int32` array
(#21138 ) (overlookmotel)
- f163d10 parser: Tokens raw deserialization use `Int32Array` (#21137 )
(overlookmotel)
- 7a86613 linter/plugins: Use `Int32Array`s for tokens and comments
buffers (#21136 ) (overlookmotel)
- 8c51121 napi/parser, linter/plugins: Raw transfer deserialize `Span`
fields as `i32`s (#21135 ) (overlookmotel)
- bc1bcdd napi/parser, linter/plugins: Inline trivial raw transfer field
deserializers into node object definitions (#21134 ) (overlookmotel)
- c0278ab napi/parser, linter/plugins: Use `Int32Array` in raw transfer
deserializer (#21132 ) (overlookmotel)
- 43482c7 linter/plugins: Use `>>` not `>>>` in binary search loops
(#21129 ) (overlookmotel)
### 📚 Documentation
- f5e1845 allocator: Upgrade headers in doc comments for `Bump` (#21263 )
(overlookmotel)
- 2870174 allocator: Upper case `SAFETY` in comments (#21253 )
(overlookmotel)
- 01bc269 str: Reformat `Ident` doc comments (#21240 ) (overlookmotel)
- dd47359 allocator: Add doc comments for panics and errors (#21230 )
(overlookmotel)
2026-04-13 11:25:53 +01:00
overlookmotel
382958afa8
feat(span)!: remove re-exports of string types from oxc_span crate ( #21246 )
...
For historical reasons, `oxc_span` crate was re-exporting string types which now live in `oxc_str` crate.
Remove these re-exports, and import these types directly from `oxc_str`.
Main motivation is just that it makes sense, but it should also have a minor positive effect on compile times - `oxc_span` and `oxc_str` crates can now be compiled in parallel.
2026-04-09 12:06:21 +00:00
Boshen and Boshen
38aea543e4
release(crates): oxc v0.124.0 ( #21084 )
...
### 🐛 Bug Fixes
- fc7f60c allocator: Revert changes to
`get_current_chunk_footer_field_offset` (#20964 ) (overlookmotel)
- 31316c8 semantic: Rebind class expressions before identifier checks
(#20916 ) (camc314)
### ⚡ Performance
- fb52383 napi/parser, linter/plugins: Clear buffers and source texts
earlier (#21025 ) (overlookmotel)
- 3b7dec4 napi/parser, linter/plugins: Use `utf8Slice` for decoding
UTF-8 strings (#21022 ) (overlookmotel)
- 012c924 napi/parser, linter/plugins: Speed up decoding strings in raw
transfer (#21021 ) (overlookmotel)
- 55e1e9b napi/parser, linter/plugins: Initialize vars as 0 (#21020 )
(overlookmotel)
- c25ef02 napi/parser, linter/plugins: Simplify branch condition in
`deserializeStr` (#21019 ) (overlookmotel)
- 9f494c3 napi/parser, linter/plugins: Raw transfer use
`String.fromCharCode` in string decoding (#21018 ) (overlookmotel)
- 91cf105 allocator: Increase initial chunk size from 512B to 16KB
(#20968 ) (overlookmotel)
- cbc0c21 allocator: Add `#[cold]` to to error handling functions
(#20967 ) (overlookmotel)
- 0503a78 napi/parser, linter/plugins: Faster deserialization of `raw`
fields (#20923 ) (overlookmotel)
- a24f75e napi/parser: Optimize string deserialization for non-ASCII
sources (#20834 ) (Joshua Tuddenham)
### 📚 Documentation
- c78a57a syntax: Fix typo (#21044 ) (camc314)
- f5e228f allocator: Fix typo in comment (#20972 ) (overlookmotel)
- 7159d51 allocator: Improve doc comment examples for `vec2::Vec`
(#20969 ) (overlookmotel)
- b1da750 allocator, data_structures: Correct comments (#20966 )
(overlookmotel)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-04-07 09:34:33 +09:00
Boshen
990763453c
release(crates): oxc v0.123.0 ( #20862 )
2026-03-30 18:00:11 +08:00
Boshen
9dd33b080c
release(crates): oxc v0.122.0 ( #20648 )
2026-03-23 17:59:21 +08:00
Boshen and 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 and 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
Boshen and 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 and leaysgur
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
3e54818821
chore(rust): use cargo-shear to toggle Cargo.toml [lib] test = bool ( #20195 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-03-10 22:59:09 +08:00
Boshen and 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 and 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
overlookmotel
ee4982bd2c
feat(parser): add VARIANTS const to Kind via fieldless_enum! macro ( #19877 )
...
Use the `fieldless_enum!` macro introduced in #19876 to add a `VARIANTS` const to `Kind`. This is required for raw transfer of tokens.
2026-03-01 17:40:04 +00:00