Repository navigation
Releases
Releases · oxc-project/oxc
oxlint v1.93.0
Immutable
release. Only release title and notes can be modified.
🚀 Features
- 6195265 linter/promise/prefer-catch: Implement suggestion (#28919) (Mikhail Baev)
🐛 Bug Fixes
- 866664e linter/unicorn/no-useless-undefined: Skip var initializers (#29007) (camc314)
- 30603cb linter/react/exhaustive-deps: Preserve comments in dependency removals (#29047) (camc314)
- 4630fe4 linter/unicorn/no-useless-undefined: Narrow return type exemptions (#29000) (camc314)
- b63870a linter/vitest/expect-expect: Recognize benchmark fixtures (#29044) (camc314)
- 9c62d2a linter/eslint/no-unreachable-loop: Ignore enclosing finalizers for continues (#29004) (camc314)
- 6303df1 jsdoc: Preserve param tags after unmatched description delimiters (#28923) (Vishal Punjabi)
- fe66fa7 linter/eslint/no-lone-blocks: Report redundant blocks in function bodies (#29043) (camc314)
- e1694bd linter/unicorn/no-useless-undefined: Preserve shadowed bindings (#29046) (camc314)
- 791b5f5 linter/unicorn/prefer-regexp-test: Restrict automatic argument swaps (#29045) (camc314)
- e7654f6 linter/react/display-name: Ignore unrelated memo and forwardRef calls (#29005) (camc314)
- 2487360 linter/unicorn/no-useless-undefined: Report guarded indexed access (#29014) (camc314)
- a791a5b cfg: Resolve continues through stacked loop labels (#29016) (camc314)
- 287ba19 linter/eslint/id-length: Ignore TypeScript qualified references (#29037) (camc314)
- b71234f cfg: Skip labeled contexts for unlabeled jumps (#29001) (camc314)
- bb21a3c linter/import/no-anonymous-default-export: Report parenthesized exports (#29002) (camc314)
- f38f738 linter/eslint/prefer-destructuring: Skip fixes that remove comments (#29003) (camc314)
- bf11006 linter/react/exhaustive-deps: Suggest dependency removals (#28925) (camc314)
- 6bbb92a linter: Remove unused
oxlint-disabledirectives with--fix(#27698) (Ryan Tsao) - 3b35cb6 linter/disable-directives: Preserve separators and disable spans (#28921) (camc314)
- 1253445 linter/eslint/no-restricted-imports: Report re-exported imports once (#28920) (Ramy Akin Saidi)
⚡ Performance
oxfmt v0.78.0
Immutable
release. Only release title and notes can be modified.
🐛 Bug Fixes
- ab78621 formatter_css/less: Print
~escape consistently (#29089) (Yuji Sugiura) - 91721d2 formatter_css/less: Print Less % selectors (#29088) (Yuji Sugiura)
- 449e91f oxfmt: Format ts-in-astro as TSX (#29080) (leaysgur)
- 8d8845e formatter/jsdoc: Strip
*prefixes from multiline default value (#28910) (leaysgur) - cdb1501 formatter/jsdoc: Handle every line terminator in multi-line JSDoc types (#28909) (leaysgur)
- fd51bff jsdoc: Handle every line terminators as newline (#28902) (leaysgur)
- 2f80765 formatter_toml: Format whitespace-only document to empty (#28899) (leaysgur)
- 5e1e02c formatter_graphql: Allow empty document (#28898) (leaysgur)
- 06e72c0 formatter/tailwind: Normalize CR in Tailwind template with
preserveWhitespace(#28896) (leaysgur)
⚡ Performance
- 934ca98 formatter: Use
Arcfor tailwind options across embedding (#29079) (leaysgur) - dde9c5c formatter_htmlish: Skip
</scriptescape if possible (#29078) (leaysgur) - dc4d918 formatter: Format embedded expr of one name without parsing (#29077) (leaysgur)
📚 Documentation
oxc crates_v0.158.0
Immutable
release. Only release title and notes can be modified.
🐛 Bug Fixes
- de6ac92 isolated-declarations: Preserve object accessor mutability (#29039) (camc314)
- 3729ce1 transformer/typescript: Merge exported enums across namespace blocks (#28999) (camc314)
- 7243594 minifier: Preserve throwing ArrayBuffer and URI calls (#29012) (camc314)
- 67ac6be isolated-declarations: Evaluate enum template literal initializers (#28997) (camc314)
- f05b30e isolated-declarations: Infer auto-accessor initializer types (#29038) (camc314)
- 030d410 isolated-declarations: Preserve computed ambient enum members (#29040) (camc314)
- 6303df1 jsdoc: Preserve param tags after unmatched description delimiters (#28923) (Vishal Punjabi)
- 99e67d3 transformer: Preserve static private brands with shadowed class names (#28894) (Dunqing)
- 595f3c2 minifier: Preserve left-hand side effects in instanceof checks (#29011) (camc314)
- a791a5b cfg: Resolve continues through stacked loop labels (#29016) (camc314)
- 9e3b3d1 ecmascript: Reject signs after nondecimal prefixes (#29034) (camc314)
- 43c5273 ecmascript: Round nondecimal strings to numbers once (#29026) (camc314)
- b71234f cfg: Skip labeled contexts for unlabeled jumps (#29001) (camc314)
- fd51bff jsdoc: Handle every line terminators as newline (#28902) (leaysgur)
- c00dc61 codegen: Keep one source map mapping per generated position (#28844) (YT)
- 52f3e3d jsdoc: Do not treat
@wordcontaining/as tag (#28834) (leaysgur) - 0b48483 minifier: Preserve UTF-16 boundaries in empty-search replaceAll folding (#28807) (huuya)
- 1e57a4e codegen: Print infinite numeric literals as
1e400instead ofInfinity(#28812) (Dominic Elm) - 28a44b7 transformer/class-properties: Preserve private accessor assignment receivers (#28790) (Dunqing)
- ea76490 transformer/class-properties: Preserve private method values in assignments (#28788) (Dunqing)
- 8432de6 transformer/class-properties: Apply a compound assignment to a static private field once (#28606) (YT)
- 3dbf140 parser: Treat escaped contextual keywords as names, not modifiers (#28748) (Dominic Elm)
- e3b1bb4 transformer/class-properties: Keep the value of a private accessor assignment (#28716) (YT)
- ae7474e minifier: Keep array concat chain reads before later side effects (#28261) (Dunqing)
- ec327aa semantic: Keep block type bindings separate from hoisted vars (#28601) (YT)
- 3fd78d7 codegen: Preserve names in duplicate source mappings (#26051) (camc314)
⚡ Performance
- 7761a39 codegen: Remove redundant sourcemap buffer shrinks (#28893) (Dunqing)
- bee25de regular_expression: Check only the latest group per name in duplicate prescan (#29083) (Yuji Sugiura)
- 4da1752 codegen: Use SWAR scanning and shared column tables (#28939) (Dunqing)
- cc84126 mangler: Inline candidate checks during slot assignment (#28881) (Dunqing)
- 6611cf9 parser: Specialize quoted string value access (#28965) (Boshen)
- 5038ba6 parser: Avoid repeated await-using lookahead (#28960) (Boshen)
- ecc807b parser: Skip discarded arrow diagnostics (#28940) (Boshen)
- c880368 parser: Fast-path absent TypeScript type lists (#28959) (Boshen)
- dee6cf4 parser: Skip repeated optional call lookahead (#28876) (Boshen)
- a524e17 parser: Reuse successful parenthesized arrow heads (#28862) (Boshen)
- 296b12a parser: Accelerate line comment scanning (#28878) (Boshen)
- c4fc21e parser: Accelerate escaped string scanning (#28907) (Boshen)
- f7726b6 parser: Accelerate regex literal scanning (#28911) (Boshen)
- a8aff38 parser: Scan whitespace in runs (#28953) (Boshen)
- b1c137c parser: Avoid lookahead for TypeScript keyword types (#28954) (Boshen)
- 6a8a2a7 parser: Fast-path plain identifiers (#28955) (Boshen)
- 00deb87 parser: Initialize declaration lists with their first item (#28956) (Boshen)
- 71dd877 parser: Specialize binary operator associativity (#28957) (Boshen)
- 732a8e4 codegen: Skip repeated word scans for sourcemap tails (#28869) (Dunqing)
- 6972243 codegen: Accelerate sourcemap line scanning (#28400) (codspeed)
- 027eb7e parser: Combine async arrow lookahead (#28431) (Boshen)
- 7b933d5 lexer: Directly dispatch common punctuation (#28792) (Boshen)
- 45d86c3 lexer: Combine per-token annotation resets (#28492) (Boshen)
- d497fbf lexer: Match keywords with byte patterns (#28494) (Boshen)
📚 Documentation
- 167e78a oxc-types: Correct TypeScript spelling in README (#29092) (camc314)
- 844c28c syntax: Correct crate capabilities and module records (#29075) (camc314)
- 8d30d9b traverse: Clarify ancestor access during traversal (#29074) (camc314)
- a74b7cd ecmascript: Clarify test locations (#29072) (camc314)
- 7acaa4e mangler: Correct naming strategy and pipeline order (#29073) (camc314)
- ed28291 ast: Clarify which AST nodes use arena allocation (#29070) (camc314)
- d5832ab oxc: Correct README APIs and feature requirements (#29068) (camc314)
- 261c4a2 allocator: Clarify arena storage and memory reclamation (#29066) (camc314)
- 6448a54 napi/parser: Correct parser options and usage guidance (#29065) (camc314)
- 157fc5a napi/minify: Correct minifier capabilities and caveats (#29064) (camc314)
- 6989796 parser: Update TS-ESTree import differences (#29061) (camc314)
oxlint v1.92.0
Immutable
release. Only release title and notes can be modified.
🚀 Features
- 4a52ba2 oxlint: Discover tsrs for type-aware linting (#28751) (camc314)
- b7d2c75 linter/eslint/no-redeclare: Add
ignoreDeclarationMergeoption (#28816) (Cam McHenry)
🐛 Bug Fixes
- fa66fde oxlint,oxfmt: Resolve Vite+ config root from the config file directory (#28801) (MK (fengmk2))
- 2091564 linter/jsdoc/require-param: Ignore enclosing function JSDoc (#28866) (camc314)
- c6ec50b linter/react/only-export-components: Classify JSX values as non-components (#28761) (camc314)
- 3c051ab linter/vitest/prefer-called-exactly-once-with: Preserve neighboring code in autofix (#28864) (camc314)
- 674b962 linter/eslint/no-misleading-character-class: Use lazy regex for combining marks (#28822) (Sysix)
- 838d339 linter/vitest/prefer-called-exactly-once-with: Avoid panic on non-ASCII text (#28850) (YT)
- 8d24c26 linter/jsx-a11y/aria-role: Allow role={undefined} (#28804) (Abhay Godavarthy)
- a7143bf linter/eslint/no-restricted-imports: Respect allowTypeImports correctly for empty patterns (#28842) (Cam McHenry)
- 3d3a6f4 react-compiler: Ignore callback-local reassignments (#28820) (camc314)
- 0cc6515 linter/unicorn/prefer-type-error: Report throws in unbraced if branches (#28819) (camc314)
- ae43c80 linter/unicorn/prefer-single-call: Remove duplicate fix status (#28763) (Mikhail Baev)
- a8a621a linter/eslint/no-fallthrough: Ignore unreachable exits from infinite loops (#28755) (camc314)
- 7a17a80 linter/eslint/prefer-spread: Report calls on non-member expressions (#28753) (camc314)
- 28442f7 oxlint: Prevent --init from overwriting existing configs (#28754) (camc314)
- 0ae350d linter/unicorn/no-zero-fractions: Preserve exponent case (#28752) (camc314)
- b5b3f3f linter/eslint/no-misleading-character-class: Detect more combining characters (#28733) (Sysix)
⚡ Performance
oxfmt v0.77.0
Immutable
release. Only release title and notes can be modified.
💥 BREAKING CHANGES
- 00d1a67 oxfmt: [BREAKING] Format
parser:vuefiles byoxc_formatter_htmlish(#28848) (leaysgur)
🚀 Features
- 9a81e58 formatter_htmlish: Format Vue templates (#28847) (leaysgur)
- 119d82f formatter: Format a template's expressions and handlers as
JsRoot(#28846) (leaysgur)
🐛 Bug Fixes
- fa66fde oxlint,oxfmt: Resolve Vite+ config root from the config file directory (#28801) (MK (fengmk2))
- 4d4104d formatter_htmlish: Preserve
doctypecase in embedded (#28797) (leaysgur) - ebfd40a formatter: Sort Tailwind calls printed as member chains (#28800) (Yuji Sugiura)
- e62e5cb formatter: Decide quotes of a Tailwind key printed as one class (#28798) (Yuji Sugiura)
- 959edc1 formatter: Don't sort templates in nested non-Tailwind calls (#28794) (Yuji Sugiura)
- 6ffbe32 formatter/jsdoc: Prevent
@tagfrom being moved to the line start (#28835) (leaysgur) - 94fbef5 formatter_css: Treat comments in
styleattr as fill items (#28832) (leaysgur) - e4a80f7 formatter_css: Normalize selectors inside
:deep,:slottedand:local(#28805) (leaysgur) - 255c5cc formatter: Measure Tailwind class argument after collapsing whitespace (#28745) (Lee Jaeha / Adam)
- e6c4fef formatter: Decide template and object key layouts from collapsed Tailwind classes (#28791) (Yuji Sugiura)
- 0b44164 formatter: Decide JSX opening element layout from collapsed Tailwind class string (#28744) (Lee Jaeha / Adam)
- b8ba9ae formatter: Print decorators on rest parameters (#28731) (YT)
⚡ Performance
oxlint v1.91.0
Immutable
release. Only release title and notes can be modified.
🚀 Features
- 004647a track_memory_allocs: Add allocation tracking for linter rules (#28470) (Cam McHenry)
- 419c1b0 linter: Add allow and allowPattern options to react/capitalized-calls (Christian Vuerings)
🐛 Bug Fixes
- a205cd3 linter/eslint/no-control-regex: Detect raw control characters (#28548) (camc314)
- 7c65777 linter/unicorn/prefer-global-this: Align typeof and worker API handling (#28549) (camc314)
- 987d5f1 linter/unicorn/no-invalid-fetch-options: Avoid treating unknown methods as GET (#28547) (camc314)
- e234dc8 linter/unicorn/no-useless-error-capture-stack-trace: Move to suspicious category (#28545) (camc314)
- b3dc411 linter/typescript/no-non-null-asserted-nullish-coalescing: Move to suspicious category (#28546) (camc314)
- cb64638 regular_expression: Reject incomplete Unicode atom escapes (#28448) (Boshen)
- c67167e linter: Only run React Compiler rules on files with top-level components or hooks (Boshen)
- 4c9d5aa linter: Treat Reanimated shared values as ref-like in React Compiler rules (Boshen)
- 61fe2af linter/react: Ignore impure calls in async components in react/purity (Rahul Kashyap)
- ed7df7d ast/estree: Include comments in TS Program span (#28326) (camc314)
- 31cbe37 linter: Make gitlab fingerprints unique per diagnostic (#28307) (camc314)
⚡ Performance
- 564559d linter/prefer-const: Avoid collecting resolved references (#28732) (Dunqing)
- bb947dc linter: Skip numeric separator formatting for short integers (#28485) (Cam McHenry)
- 1043dfa linter: Avoid collecting prefer-const binding identifiers (#28484) (Cam McHenry)
- 7c93eef linter: Reduce branches-sharing-code scratch allocations (#28483) (Cam McHenry)
- c0065fd linter: Allocate escape-case replacements only when needed (#28482) (Cam McHenry)
- d837414 linter: Lazily normalize capitalized-comments text (#28481) (Cam McHenry)
- 6baaad6 linter: Avoid no-var binding identifier allocations (#28480) (Cam McHenry)
- 882053b linter: Skip read-only parameters in no-param-reassign (#28479) (Cam McHenry)
- 92deebf linter: Reduce no-unmodified-loop-condition allocations (#28478) (Cam McHenry)
- f01d52d linter: Reduce no-duplicate-case allocations (#28477) (Cam McHenry)
- 6a72d84 linter: Reduce no-dupe-class-members allocations (#28476) (Cam McHenry)
- 77599ef linter: Reduce no-this-before-super allocations (#28475) (Cam McHenry)
- 2ea9f58 linter/no-dupe-else-if: Use smallvec to reduce allocs (#28474) (Cam McHenry)
- 69f0204 linter/react/rules-of-hooks: Reduce allocs (#28473) (Cam McHenry)
- b138c20 linter: Reduce allocs in no-dupe-keys (#28472) (Cam McHenry)
- 6f3e982 linter: Avoid operator allocations in no-useless-length-check (#28471) (Cam McHenry)
- fd68928 react-compiler: Skip passes lint does not need (Yagiz Nizipli)
- 224f4dd linter/eslint/sort-keys: Reserve initial capacity for string (#27624) (Cam McHenry)
- e4e01a3 linter/import/no-cycle: Compare visited modules by absolute resolved path (#27517) (Cam McHenry)
- 741b29b linter/import/no-cycle: Cache sorted module record snapshots (#27516) (Cam McHenry)
- 20022bb linter/import/no-cycle: Reuse traversal buffers between imports (#27481) (Cam McHenry)
- fd5edb7 linter/import/no-cycle: Reuse module records in diagnostic stack (#27480) (Cam McHenry)
- 73e877c linter/import/no-cycle: Don't allocate paths already seen (#27478) (Cam McHenry)
- 1515d53 linter/react/forward-ref-uses-ref: Narrow forward-ref-uses-ref dispatch (#28367) (Cam McHenry)
- ee51c01 linter/react/no-string-refs: Narrow AST dispatch (#28366) (Cam McHenry)
- bbfd692 linter/react/no-children-pop: Narrow AST dispatch (#28365) (Cam McHenry)
- a86158b linter/unicorn/prefer-set-size: Narrow AST dispatch (#28364) (Cam McHenry)
- a777fa6 linter/eslint/no-iterator: Narrow member dispatch (#28363) (Cam McHenry)
- bc5e94d linter/eslint/no-extra-boolean-cast: Narrow AST dispatch (#28362) (Cam McHenry)
- 93c6e6d linter/unicorn/no-useless-fallback-in-spread: Narrow AST dispatch (#28361) (Cam McHenry)
- 1a1f66e linter/typescript/no-this-alias: Narrow AST dispatch (#28360) (Cam McHenry)
- b102a91 linter/typescript/no-wrapper-object-types: Index references (#28359) (Cam McHenry)
- dbd8a0b linter/eslint/no-unassigned-vars: Batch by declaration (#28358) (Cam McHenry)
- 1108352 linter/typescript/prefer-as-const: Narrow AST dispatch (#28357) (Cam McHenry)
- d65531f linter/eslint/no-const-assign: Batch by declaration (#28356) (Cam McHenry)
- 1ec9991 linter/oxc/number-arg-out-of-range: Narrow AST dispatch (#28355) (Cam McHenry)
- 7a1243e linter/unicorn/no-invalid-fetch-options: Narrow AST dispatch (#28354) (Cam McHenry)
- 2ab73cc linter/unicorn/no-single-promise-in-promise-methods: Narrow AST dispatch (#28353) (Cam McHenry)
- 483c4c9 linter/eslint/no-compare-neg-zero: Narrow no-compare-neg-zero dispatch (#28352) (Cam McHenry)
- 56c99c6 linter/eslint/no-unsafe-negation: Narrow AST dispatch (#28351) (Cam McHenry)
- 84d974b linter/unicorn/prefer-string-starts-ends-with: Narrow AST dispatch (#28350) (Cam McHenry)
- 142ef4f unicorn: Narrow no-await-in-promise-methods dispatch (#28349) (Cam McHenry)
- a3dc7a2 linter/unicorn/no-await-expression-member: Optimize AST dispatch (#28348) (Cam McHenry)
- 481b638 linter/plugins: Create AST nodes with
Object.createinstead of__proto__literals (#27816) (Charles Wang)
oxfmt v0.76.0
Immutable
release. Only release title and notes can be modified.
💥 BREAKING CHANGES
🚀 Features
- 336b2c1 oxfmt: Support html-in-js templates closing a dynamic tag name (#28389) (Yuji Sugiura)
- 0a42af6 formatter_htmlish: Format end tags of omitted
html,headandbody(#28388) (Yuji Sugiura) - 44d8c2b formatter_htmlish: Implement HTML-ish formatter
Htmlvariant (#28272) (Yuji Sugiura) - 36e5ddb oxfmt: Add debug span for reading files (#28204) (leaysgur)
🐛 Bug Fixes
- dbcc358 formatter: Keep arrow conditional body parens before a leading
function/class(#28710) (Yuji Sugiura) - fef809a formatter_htmlish: Handle XHTML (#28703) (leaysgur)
- f3dd201 formatter_htmlish: Keep SVG text under
xml:space="preserve"as written (#28382) (Yuji Sugiura) - fb3aefa formatter: Keep source parens around html-in-js placeholders past comments (#28381) (Yuji Sugiura)
- e738dae formatter: Quote keys added in an HTML event handler with single quotes (#28380) (Yuji Sugiura)
- 2e7a629 oxfmt: Format HTML in a
<script>body as an embedded part (#28379) (Yuji Sugiura) - f00862b formatter: Keep parens around a generic function type in a type assertion (#28173) (vidigoat)
- 9ead5c4 formatter: Handle
this.bandsuper.blikefoo.b(#28200) (leaysgur) - 72a54cf formatter: Break parens of
(a + b)[c]like(a + b).c(#28199) (leaysgur) - b8f4f34 formatter: Print
x.bandx.#bsamely (#28193) (leaysgur) - 9ddccb7 formatter: Keep parens for private field (#28188) (leaysgur)
⚡ Performance
- b6f1ac9 formatter_markdown: Bump parser to 0.0.4 and skip unread work (#28713) (leaysgur)
- 633ee96 formatter_css: Use
u32spans (#28708) (leaysgur) - f680ee1 formatter_yaml: Use
multilineflag for flow scalars (#28707) (leaysgur) - ff7c203 formatter_css: Avoid repeated scans and allocations in values (#28706) (leaysgur)
- 7cd46cb formatter_htmlish: Search script end tags by
<in embedded (#28704) (leaysgur) - 46f8efd formatter_graphql: Print block string lines borrowed from the source (#28701) (leaysgur)
- dce1485 formatter_htmlish: Skip escaping attr values without the chosen quote (#28700) (leaysgur)
- e9392c8 formatter_core: Search line terminators with memchr (#28699) (leaysgur)
- ceb26be formatter_htmlish: Use
charto escape attr quotes (#28697) (leaysgur) - 8239dac parser: Replace dragonbox_ecma with zmij_ecma (#28282) (Boshen)
📚 Documentation
- 303d9e8 formatter: Strengthen
start-token-no-double-parensrationale (#28711) (Yuji Sugiura) - a82ce83 oxfmt: Update unclassified divergence (#28685) (Yuji Sugiura)
- 7f18c20 formatter_htmlish: Note
classandsrcsetare formatted withembeddedLanguageFormatting: off(#28465) (Yuji Sugiura) - 01ed68a oxfmt,formatter_htmlish,formatter: Clean up behavior comments (#28384) (Yuji Sugiura)
- a363c27 formatter_css,formatter_yaml: Point parser citations at AGENTS.md (#28466) (Yuji Sugiura)
- 6586050 formatter_core: Document tab width in text width policy (#28393) (leaysgur)
- 49fbffb formatter_core: Tighten FORMATTER_POLICY (#28206) (leaysgur)
oxc crates_v0.157.0
Immutable
release. Only release title and notes can be modified.
🚀 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!andstatic_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)
oxlint v1.90.0
Immutable
release. Only release title and notes can be modified.
🚀 Features
- cf34678 oxlint: Export
Oxlintrctype (#28132) (Sysix) - 831cdf1 oxlint: Require mininum oxlint-tsgolint version v7.0.2005 (#28118) (camc314)
- d1b00f4 linter/typescript: Implement no-unsafe-enum-assignment rule (#28117) (camc314)
- 165c91f linter/typescript/await-thenable: Support
allowMixedPromiseArraysoption (#28116) (camc314)
🐛 Bug Fixes
- 7f3c908 linter/eslint/array-callback-return: Check callbacks passed with extra arguments (#28133) (sarankumar)
- 53be530 linter: Filter by type aware rules when looking up tsgolint rule severity (#28138) (NavpreetSSidhu)
- e0f8937 react-compiler: Compile a
trywhosecatchis unreachable instead of panicking (#28066) (Dunqing) - f5b625f linter/eslint/no-useless-concat: See through parenthesized expressions (#27984) (Rahul Kashyap)
- 4629bb2 linter/jest/no-conditional-expect: Check function expression callbacks (#28055) (camc314)
- 5c84098 semantic,linter: Report names with lone surrogates in enum and lint checks (#27991) (Dunqing)
- f3705a9 linter/eslint/prefer-const: Skip fixers if any declarator is reassigned (#28008) (Prince Jain)
- 4c0fa90 minifier,linter: Keep
deleteof constant members and later JSX keys (#27990) (Dunqing) - 0298062 linter/arrow-body-style: Keep type assertions when adding a block body (#27978) (Yan Almeida)
oxfmt v0.75.0
Immutable
release. Only release title and notes can be modified.
🐛 Bug Fixes
- 5042019 formatter: Keep fill layout for array with comment after [ (#28170) (leaysgur)
- 9d37ff6 formatter: Use position-based comment checks for concise arrays (#28169) (leaysgur)
- 016c4a2 formatter: Keep a comment before
}inside a JSX spread child (#28103) (vidigoat) - 190bb1e formatter: Keep parens around an instantiation expression ending an operand through any tight parent (#28168) (leaysgur)
- a5314a1 formatter: Keep
;beforeinandinstanceofclass members (#28166) (leaysgur) - 3a56e7c formatter: Keep closing HTML comments at the start of a line (#28064) (Cameron)
- 23d23d6 formatter_markdown: Honor range ignore inside directives (#28164) (leaysgur)
- 5f1fd3d formatter: Measure width heuristics by display width (#28098) (leaysgur)
- a5a52cf formatter: Keep parens around private
inexpressions (#28096) (leaysgur) - 999496e formatter: Measure a short key by its display width (#28026) (vidigoat)
- 7e9aa44 formatter: Keep parens around a looser operand of an instantiation expression (#28025) (vidigoat)
- 6912d1f formatter: Keep an arrow signature that exactly fills the line for any body (#27989) (leaysgur)
- eb1d9f9 formatter_core: Count a flat
linespace infitsonly when text follows (#27987) (leaysgur)
⚡ Performance
- 1ed93af data_structures: Copy short strings without a memcpy call (#27953) (leaysgur)
- 7948f0b formatter_core: Shrink
FormatElementto 16B (#28012) (leaysgur) - 788af22 formatter: Keep
AstNodes on the stack, and only chain links in the arena (#27963) (leaysgur)