Repository navigation
Releases: oxc-project/oxc
Releases · oxc-project/oxc
Release list
oxlint v1.89.0
Immutable
release. Only release title and notes can be modified.
💥 BREAKING CHANGES
- 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
- 770ada4 linter: Mark vue 3 rules as recommended (#27717) (Cam McHenry)
- ba38c1d linter: Mark react/react-hooks rules as recommended (#27701) (Cam McHenry)
- d85a3ba linter: Mark promise rules as recommended (#27693) (Cam McHenry)
- e71c88a linter: Mark node rule as recommended (#27692) (Cam McHenry)
- 7213f61 linter: Mark nextjs rules as recommended (#27691) (Cam McHenry)
- d7c6b26 linter: Mark jsx-a11y rules as recommended (#27690) (Cam McHenry)
- 199dfdc linter: Mark jsdoc rules as recommended (#27689) (Cam McHenry)
- 780bff3 linter: Mark jest/vitest rules as recommended (#27672) (Cam McHenry)
- 6ae6859 linter: Mark import rules as recommended (#27671) (Cam McHenry)
- b7a1df3 linter: Mark unicorn rules as recommended (#27670) (Cam McHenry)
- c44a355 linter: Mark typescript rules as recommended from upstream (#27634) (Cam McHenry)
- 6b49dba linter: Mark eslint rules as recommended from upstream (#27632) (Cam McHenry)
🐛 Bug Fixes
- 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)
- 326904f linter/unicorn/no-useless-undefined: Allow
undefinedinReact.useRef(#25027) (Chris Dokurno) - f9cf165 linter/unicorn/prefer-spread: Ignore super method calls (#27868) (camc314)
- 00484e1 linter/eslint/prefer-const: Report destructuring assignments inside blocks (#27856) (camc314)
- 9c35461 linter/eslint/sort-vars: Report every out-of-order declaration (#27767) (camc314)
- 01e1c5e linter/unicorn/prefer-string-replace-all: Resolve regex variables (#27769) (camc314)
- 7f474d5 linter/eslint/no-loop-func: Detect writes after the loop (#27754) (camc314)
- 4b7fea6 linter/eslint/block-scoped-var: Ignore declarations without writes (#27760) (camc314)
- 2947917 linter/eslint/no-lonely-if: Check final else blocks in else-if chains (#27759) (camc314)
- fc039b5 linter/eslint/sort-imports: Check imports after other statements (#27749) (camc314)
- 1acba97 linter/unicorn/prefer-at: Report slice index reads once (#27762) (camc314)
- 6190e26 linter/eslint/prefer-arrow-callback: Ignore functions used as conditional tests (#27533) (Anzal Husain Abidi)
- b3cdaaf linter/eslint/sort-keys: Check computed identifier names (#27748) (camc314)
- 170e608 linter/unicorn/prefer-native-coercion-functions: Check object methods and function properties (#27750) (camc314)
- 9261df7 linter/unicorn/prefer-string-raw: Check object property values (#27758) (camc314)
- ddea86b linter/eslint/prefer-template: Report separate nested concatenations (#27764) (camc314)
- 2c67197 linter/eslint/no-unused-vars: Count conditional calls in sequences as uses (#27755) (camc314)
- 7f22fa0 linter/unicorn/prefer-regexp-test: Check logical operands in boolean contexts (#27761) (camc314)
- 3c44398 linter/eslint/class-methods-use-this: Count this in parameter defaults (#27756) (camc314)
- d85923f linter/eslint/no-param-reassign: Report rest parameter writes (#27765) (camc314)
- 8ea47bb linter/unicorn/prefer-type-error: Handle parenthesized type checks (#27766) (camc314)
- e96856c linter/unicorn/catch-error-name: Check unused underscore-prefixed names (#27751) (camc314)
- d8ca399 linter/unicorn/no-array-callback-reference: Ignore callback factory calls (#27763) (camc314)
- 1267ab8 linter/eslint/max-params: Count rest parameters (#27757) (camc314)
- 9ff25c3 linter/eslint/no-useless-assignment: Report dead stores to function parameters (#27735) (camc314)
- ee5e730 linter/eslint/no-setter-return: Check setters in property descriptors (#27731) (camc314)
- edbb5ed linter/eslint/id-length: Check destructuring assignment targets (#27724) (Yunus Ozen)
- 0e40acb linter/eslint/no-magic-numbers: Restrict unary exemptions to numeric signs (#27723) (Yunus Ozen)
- ae7e44b linter/eslint/no-div-regex: Report quantified leading equals (#27722) (Yunus Ozen)
- eb461f8 linter/unicorn/consistent-function-scoping: Count self-referencing variables as captures (#27726) (camc314)
- 5c8e731 linter/unicorn/catch-error-name: Avoid fix symbol name collisions (#27702) (camc314)
- 9a424c2 oxlint,oxfmt: Correct Node.js TypeScript support range (#27699) (camc314)
- 5dc0152 linter/eslint/no-var: Avoid fixes for redeclared bindings (#27697) (camc314)
⚡ Performance
📚 Documentation
oxfmt v0.74.0
Immutable
release. Only release title and notes can be modified.
🐛 Bug Fixes
- e236de0 formatter_tests: Skip conformance spec calls with non-literal options (#27957) (leaysgur)
- 782ab6e linter: Search string values without UTF-8 conversion (#26716) (Dunqing)
- a5d8184 jsdoc: Parse code spans after quotes in descriptions (#27955) (leaysgur)
- 2645d2c formatter_markdown: Treat link destinations and footnote references as opaque to code span fences (#27948) (leaysgur)
- 4d8195c formatter_yaml: Keep a root plain scalar starting with a document marker verbatim (#27947) (leaysgur)
- 529b057 formatter_core: Keep front matter verbatim when body starts with indented delimiter (#27946) (leaysgur)
- c22a9b2 formatter: Treat static block with only empty statements as empty (#27945) (leaysgur)
- d3ff3f6 formatter/jsdoc: Write descriptions as written to not close the comment (#27823) (leaysgur)
- c4c1727 formatter/sort_imports: Keep comments after the last import (#27822) (leaysgur)
- a64677e formatter: Print JSDoc embedded snippets with LF (#27821) (leaysgur)
- 2c1cc20 formatter: Keep comment only Vue bindings as-is (#27820) (leaysgur)
- 1bf236d formatter/sort_imports: Do not use comments as import source (#27819) (leaysgur)
- 52ee29d formatter_yaml: Never start col-0 line with document marker or BOM (#27818) (leaysgur)
- 81c75e7 formatter/css: Keep glued css-in-js statement placeholders glued (#27814) (leaysgur)
- a1ef7f4 formatter: Keep typecast parens in same-operator binary and arrow chain (#27812) (leaysgur)
- de110ce formatter: Keep more parens around
TSInstantiationExpression(#27811) (leaysgur) - 8b02e90 formatter_json: Reject invalid JSON instead of dropping them (#27785) (leaysgur)
- 6fe4c1b formatter: Treat lone CR in JSX text and argument blank lines (#27780) (leaysgur)
- 5605362 oxfmt: Validate editorconfig as like oxfmtrc (#27778) (leaysgur)
- 5b2acb0 formatter_core: Report error position releative to CRLF source (#27777) (leaysgur)
- c78e80e formatter_core: Report parse error positions relative to the BOM-headed source (#27776) (leaysgur)
- 3a980c9 formatter_toml: Handle BOM like other languages (#27775) (leaysgur)
- 97c9fc4 oxfmt: Handle BOM in config JSON (#27774) (leaysgur)
- 28eb4a7 oxfmt: Print trailing newline for
--list-different(#27773) (leaysgur) - d2bea21 formatter: Glue comments to an opener in empty for-head slots and array holes (#27737) (leaysgur)
- 6a95ec1 formatter: Keep comment position on holey array (#27730) (leaysgur)
- 54769da formatter: Break after dangling line comment in holey array (#27729) (leaysgur)
- 99077ef formatter_json: Reject unary expressions other than signed numbers (#27728) (leaysgur)
- 22cd4cd formatter_json: Handle holey array and comments (#27727) (leaysgur)
- 644ca1c formatter: Do not indent logical chains whose right sides all inline (#27667) (leaysgur)
- a07a0fb formatter: Wrap comment-only JSX expression container in a group (#27666) (leaysgur)
⚡ Performance
- e220293 formatter: Check only the operator suppression mark in
is_quiet(#27952) (leaysgur) - e5fdc9c formatter_core: Write into one element stack through a concrete
Formatter(#27559) (leaysgur) - a342f7e formatter: Skip comment handling for nodes with no comment near them (#27557) (leaysgur)
- d8ce750 formatter: Write string literals with swapped quotes into the arena (#27558) (Yuji Sugiura)
- 1c393c0 formatter_core: Skip scanning texts with nothing to rewrite (#27561) (leaysgur)
- 1d3ef10 formatter_core: Keep the embedded IR when nothing in it is rewritten (#27673) (leaysgur)
📚 Documentation
oxc crates_v0.155.0
Immutable
release. Only release title and notes can be modified.
💥 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.cbrtof a negative number toNaN(#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
printSpaceBeforeIdentifierandlastupdates inprintParams(#27652) (overlookmotel) - e533278 codegen: Reduce writes in
printDecorators(#27651) (overlookmotel)
📚 Documentation
oxlint v1.88.0
Immutable
release. Only release title and notes can be modified.
💥 BREAKING CHANGES
- 7730e14 ast: [BREAKING] Refactor comment attachment storage (#27512) (camc314)
- c904b61 ast: [BREAKING] Add comment attachment storage (#27393) (camc314)
🚀 Features
- bde9f69 oxlint/lsp: Show config errors to LSP client (#25486) (Sysix)
- 3c361a7 linter/unicorn/prefer-query-selector: Add
allowWithVariablesoption (#27346) (Mikhail Baev)
🐛 Bug Fixes
- 82ecc43 linter/sort-keys: Compare natural order like ESLint (#27579) (Dunqing)
- 598ac03 linter/unicorn/prefer-bigint-literals: Unwrap redundant constructor call; don't auto-fix for lost precision (#25690) (Jacob Bandes-Storch)
- 2512213 linter: Prevent conflicting type import fixes (#27409) (camc314)
- 2349a31 oxfmt: Follow symlinked configs in discovery (#27389) (leaysgur)
- 6e573f9 oxlint,oxfmt: Set stderr blocking (#27363) (leaysgur)
⚡ Performance
- 91b588c linter/oxc/bad-array-method-on-arguments: Check arguments references once (#26930) (camc314)
- c5f47ed linter/plugins: Inline
firstCommentAtOrAfterinto call sites (#27539) (overlookmotel) - c5f9235 linter/plugins: Use shift over multiply for powers of 2 (#27536) (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)
📚 Documentation
oxfmt v0.73.0
Immutable
release. Only release title and notes can be modified.
💥 BREAKING CHANGES
- 1ef2888 oxfmt: [BREAKING] Improve
--migrate prettier(#27444) (leaysgur) - c2e6d5f formatter_toml: [BREAKING] Add
oxc_formatter_tomlcrate wrappingoxc-toml(#27365) (leaysgur)
🚀 Features
- ce4e8dc oxfmt: Support
overrides[].parser->associations[].languagemigration (#27475) (leaysgur) - a495e82 oxfmt: Support
associationsconfig to specify language over filepath (#27437) (leaysgur) - 77f8156 oxfmt/lsp: Show root config errors to LSP client (#26014) (Sysix)
- c1adce3 oxfmt/lsp: Support astro language (#27388) (leaysgur)
- 4f024a1 oxfmt: Support astro plugin in
--migrate prettier(#27387) (leaysgur) - 5db28fa oxfmt: Support Astro via
prettier-plugin-astro@1.x(#27386) (leaysgur)
🐛 Bug Fixes
- 76ec31b formatter_css: Support css-in-js placeholders in property names and conditions (#27640) (leaysgur)
- 99bb268 formatter_css: Keep css-in-js placeholder as media type (#27639) (leaysgur)
- 372849e formatter: Fix crash on css-in-js comment containing interpolation (#27638) (leaysgur)
- da692b8 formatter: Wrap
export default class|functionconsistently (#27628) (leaysgur) - 21dee96 formatter: Keep parens around
TSInstantiationExpressionbefore ! and export (#27626) (leaysgur) - b6eb914 oxfmt: Normalize symlink targets in CLI snapshots (#27498) (camc314)
- 5dae56f oxfmt/lsp: Return error on config resolving error (#26003) (Sysix)
- 676cc60 formatter/jsdoc: Preserve paragraphs by checking
@descriptiontag width (#27439) (leaysgur) - 2349a31 oxfmt: Follow symlinked configs in discovery (#27389) (leaysgur)
- db360de oxfmt: Load svelte plugin for svelte-in-mdx-in-md (#27369) (leaysgur)
- 6e573f9 oxlint,oxfmt: Set stderr blocking (#27363) (leaysgur)
- d730fdd formatter_core: Leave blank frontmatter without dispatcher (#27359) (leaysgur)
📚 Documentation
- 4a28c91 formatter_css: Clarify
missed-semicolon-accepteddivergence (#27433) (leaysgur) - 408d87f oxfmt: Simplify oxfmtrc docs (#27432) (leaysgur)
- 902e188 oxfmt: Update how
embeddedLanguageFormattingoption works (#27362) (leaysgur) - 37b3c48 formatter_markdown: Fix DIVERGENCES.md examples and slug to match behavior (#27358) (leaysgur)
oxc crates_v0.154.0
Immutable
release. Only release title and notes can be modified.
💥 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
🐛 Bug Fixes
- 760b60b codegen, packages/codegen: Remove extraneous space before
RestElementinArrayPattern(#27613) (overlookmotel) - 0353d37 packages/codegen: Support printing
V8IntrinsicExpressions (#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
BigIntLiteralafter-(#27378) (overlookmotel) - 5461c1a packages/codegen: Fix printing negative
BigIntLiteralafter-(#27377) (overlookmotel) - bebef88 packages/codegen: Fix debug assert fail printing
TSJSDocNonNullableType(#27373) (overlookmotel) - 7e6a050 semantic: Visit
TSMethodSignaturecomputed method keys in enclosing scope (#27357) (camc314)
⚡ Performance
- e1c97f8 packages/codegen: Remove all
printSpaceBeforeIdentifiercalls (#27620) (overlookmotel) - 70ecfdd packages/codegen: Skip redundant
printSpaceBeforeIdentifiercall (#27619) (overlookmotel) - 3c289f3 packages/codegen: Remove branches from loops printing arrays (#27614) (overlookmotel)
- 27f5b45 packages/codegen: Remove branch printing
RestElementinArrayPattern(#27608) (overlookmotel) - adc90ed packages/codegen: Reduce branches in
printArguments(#27607) (overlookmotel) - 262dd21 packages/codegen: Remove unnecessary
printSpaceBeforeIdentifiercalls (#27606) (overlookmotel) - 4bb9722 packages/codegen: Print
SpreadElementarguments viaprintExpression(#27599) (overlookmotel) - 0c98dc5 packages/codegen: Reduce megamorphic
typereads inprintParams(#27595) (overlookmotel) - e3780b5 packages/codegen: Reduce writes in
printForOfStatement(#27594) (overlookmotel) - 8d0ba20 packages/codegen: Reduce megamorphic
typereads inprintForOfStatement(#27593) (overlookmotel) - b29f35e packages/codegen: Reduce megamorphic
typereads inprintDirectivesAndStatements(#27592) (overlookmotel) - 256259d packages/codegen: Reduce megamorphic
typereads inprintConditionalExpression(#27591) (overlookmotel) - a9bd942 packages/codegen: Reduce megamorphic
typereads inprintObjectProperty(#27590) (overlookmotel) - 0a386ff packages/codegen: Ensure
shorthandvar is always a boolean (#27589) (overlookmotel) - 8d4c633 packages/codegen: Reduce branches in
printObjectProperty(#27588) (overlookmotel) - b4c8c04 packages/codegen: Reduce megamorphic
typereads inprintMemberExpression(#27587) (overlookmotel) - ff5eae8 packages/codegen: Reduce megamorphic
typereads (#27586) (overlookmotel) - 5487247 ast: Generate derive for
CloneInonComment(#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
typereads inbinCheckAndPrepare(#27460) (overlookmotel) - 3d2f93f packages/codegen: Reduce megamorphic property accesses for
BinaryExpressions (#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
MemberExpressions (#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
@params to JSDoc comments which had none (#27601) (overlookmotel) - 5ee0fc9 packages/codegen: Complete
@paramlists 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)
oxlint v1.87.0
Immutable
release. Only release title and notes can be modified.
🚀 Features
- 42dcfd2 linter/react/no-unescaped-entities: Implement suggestion (#27292) (Mikhail Baev)
- cd4510d linter/unicorn/no-useless-switch-case: Implement suggestion (#27245) (Mikhail Baev)
- 1a7c902 linter/react/jsx-no-target-blank: Implement suggestion (#27181) (Mikhail Baev)
🐛 Bug Fixes
- 176b4b9 linter/jsx-a11y/label-has-associated-control: Validate label attribute values (#27302) (sama Pyb)
- 7d381c3 linter/jsx-a11y/mouse-events-have-key-events: Handle nullish event handlers (#27306) (sama Pyb)
- 4e09837 linter/jsx-a11y/lang: Validate lang expression strings (#27304) (sama Pyb)
- 7d28a66 linter/unicorn/numeric-separators-style: Report misgrouped BigInt literals (#27207) (breken)
- e928322 linter/unicorn/no-zero-fractions: Parenthesize separator and large integers in fixer (#27206) (breken)
- 3d61a59 parser: Validate TypeScript type member separators (#27222) (camc314)
- f08236b linter/eslint/prefer-exponentiation-operator: Preserve autofix precedence (#27150) (camc314)
- 7d60ae3 linter/valid-title: Continue checks after allowed words (#27146) (Cameron)
- ad5dd5d linter/eslint/no-unused-vars: Respect disabled argument checks for used ignore patterns (#26925) (camc314)
oxfmt v0.72.0
Immutable
release. Only release title and notes can be modified.
💥 BREAKING CHANGES
- e2c68b1 oxfmt: [BREAKING] Format
parser:markdownfiles byoxc_formatter_markdown(#27256) (leaysgur)
🚀 Features
- b538e3c formatter_css: Parse embedded CSS as a block's contents (#27284) (leaysgur)
🐛 Bug Fixes
- 71e400b formatter_markdown: Fixed remaining issues found by fuzz (#27334) (leaysgur)
- 7d0e54d formatter_markdown: Preserve line breaks around Chinese/Japanese characters in all
proseWrap(#27331) (leaysgur) - e9ae2d8 formatter_css: Fix layouts found in mdn-content repo (css-in-md) (#27326) (leaysgur)
- df85b4c oxfmt: Keep blank lines after a line break in Prettier Doc to IR (#27325) (leaysgur)
- 7f65b75 formatter: Format assignment target property as assignment-like (#27289) (leaysgur)
- 6c08f2a formatter_css: Apply the
url()import exception to a lone comma group (#27288) (leaysgur) - 1967302 formatter_css: Hug a spaced
ident (only at the at-rule prelude head (#27283) (leaysgur) - 2445064 formatter_markdown: Keep a preserved line break before a delimiter row that opens no table (#27278) (leaysgur)
- dd72fbf formatter_markdown: Keep container columns as spaces under
useTabs(#27277) (leaysgur) - 1686018 oxfmt: Make one state
conditionalGroupfit up to firsthardline(#27275) (leaysgur) - fd4ddce formatter_json: Flatten block comment only array|object (#27274) (leaysgur)
- 267557c formatter,oxfmt: Embed only original JSDoc plugin supported languages (#27241) (leaysgur)
- 2606c60 oxfmt: Do not re-include a file below an excluded directory with a negated pattern (#27237) (Nicolas Le Cam)
- c2de02b formatter: Decide embedded template layout from AST, not source shape (#27218) (leaysgur)
- c9e1224 formatter: Handle
quoteProps: consistentfor patterns and computed keys (#27216) (leaysgur) - 36e14df formatter: Keep comments between callee and its opener on the callee side (#27172) (leaysgur)
- 6da7657 oxfmt: Render diagnostics with source in Stdin mode (#27130) (leaysgur)
- e9b2ec5 oxfmt/lsp: Reload
.prettierignoreon watched file change (#27129) (leaysgur) - 30eb463 oxfmt: Check global ignores before resolving nested config in Stdin mode (#27128) (leaysgur)
⚡ Performance
- 72f42a3 formatter_markdown: Pre-allocate the IR buffer (#27333) (leaysgur)
- cea47e3 formatter_core: Avoid exponential
will_breakcheck on nested interned (#27211) (leaysgur) - 0aba566 oxfmt: Do not resolve root js config from nested context (#27147) (leaysgur)
📚 Documentation
- 51506c6 formatter_css: Record divergences found in mdn-content (css-in-md) (#27327) (leaysgur)
- 656b81c formatter_markdown: Record unclosed fences closing at a directive's closer (#27279) (leaysgur)
- 66545bf formatter_markdown: Record setext heading wrap divergence (#27221) (leaysgur)
- af4b269 oxfmt: Document why
format()API does not take cwd (#27131) (leaysgur)
oxc crates_v0.153.0
Immutable
release. Only release title and notes can be modified.
🚀 Features
- 61003c7 minifier: Fold undefined argument in non delegating yield (#27324) (Armano)
- 07833c0 ast: Tie
debug_namereturn 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
TS1243for abstract async methods (#27192) (camc314) - c6c6e5e parser: Report
TS1242for interfaces withabstractmodifier (#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
oxlint v1.86.0
Immutable
release. Only release title and notes can be modified.
🚀 Features
- 9d80eed linter/react/only-export-components: Support
allowCompoundComponents(#27117) (Kuroda Kayn) - e05b155 linter: Add typescript/no-generated-empty-object-type (#26958) (camc314)
🐛 Bug Fixes
- 8306aa4 linter/typescript/no-unnecessary-parameter-property-assignment: Account for parameter property reassignment (#26955) (camc314)
- 42dfbb5 linter/eslint/one-var: Keep
declarewhen splitting declarations (#27081) (Cheolhee Lee) - 2ba7e33 linter/eslint/require-await: Count
await usingas an await (#27080) (Cheolhee Lee) - 611e4ed linter/plugins: Include executing selectors in JS plugin rule timings (#27111) (overlookmotel)
- 2cac66f react-compiler: Handle recursive function expressions (#26796) (Brennan Butler)
- e996e6c react-compiler: Treat zero-argument new Date as impure (#26894) (Boshen)
- 571cfa3 oxlint: Skip type-aware lint rules in type-check-only mode (#27076) (camc314)
- d0b2462 oxlint: Skip undefined children in CFG walker (#27075) (camc314)
- 5186328 parser: Handle HTML comment values (#22933) (Boshen)
- 0b630e8 linter/typescript/unified-signatures: Align rule with upstream (#26956) (camc314)
- ebb22f1 linter/node/no-exports-assign: Change category from style to suspicious (#26555) (Bartok)
- cce28a0 linter/import/no-duplicates: Distinguish import attributes (#26936) (camc314)
- feb733b linter/unicorn/prefer-spread: Stop checking string split calls (#26935) (camc314)
- 929e154 linter/eslint/no-unused-vars: Honor ignore patterns inside array rest bindings (#26923) (camc314)
- 5bdb9b8 linter/eslint/no-unused-vars: Recognize consumed update expressions (#26782) (camc314)
- 5c05bef linter/eslint/prefer-const: Ignore embedded assignments (#26920) (camc314)
⚡ Performance
- ded4c29 linter/eslint/no-unused-vars: Skip sequence checks when absent (#26921) (camc314)