Skip to content

Releases: oxc-project/oxc

oxlint v1.57.0 & oxfmt v0.42.0

24 Mar 11:03
8b0f61d

Choose a tag to compare

Table of Contents

Oxlint v1.57.0

🚀 Features

  • 2244984 linter: Implement vitest/prefer-strict-boolean-matchers rule (#20603) (Mikhail Baev)
  • c5f0ed3 linter/array-callback-return: Use CFG for analysis (#20498) (camc314)
  • f9a63ca linter: Implement unicorn/custom-error-definition rule (#20520) (Mikhail Baev)

🐛 Bug Fixes

  • 5e893d7 jsdoc: Parse tags after interval notation in descriptions (#20046) (camc314)
  • 532c921 linter/plugins: Include loc when call JSON.stringify on Tokens and Comments (#20512) (overlookmotel)
  • c3d9e91 linter/plugins: Fix memory leak in tokens and comments (#20477) (overlookmotel)
  • 525c398 linter: Detect no-cycle with auto-discovered tsconfig paths (#20566) (camc314)
  • 9519380 linter/no-noninteractive-tabindex: Handle numeric tabIndex values on non-interactive elements (#20538) (camc314)
  • 04c84bb linter: Fix cloning on Windows by reducing the size of a problematic snapshot filename. (#20511) (connorshea)
  • 65a7c3c linter/hex-escape: False positive for String.raw (#20497) (camc314)
  • d3cdc82 linter/escape-case: False positive for String.raw (#20496) (camc314)
  • 50d59e9 linter/explicit-function-return-type: False negative with HOF detection (#20495) (camc314)
  • d78c55d linter/no-unused-vars: Handle loop-carried self-reassignments (#20457) (camc314)
  • 6a307d1 linter/explicit-module-boundary-types: Fix false positives for satisfies-wrapped members (#20439) (camc314)
  • 0c57312 tsgolint: Use primary span for the disable directive (#20436) (camc314)
  • 4791b2e linter: Add summary output to GitHub formatter (#20404) (Hideyasu-Ozawa)

⚡ Performance

  • 30891bd linter/plugins: Share empty Uint32Array across multiple places (#20509) (overlookmotel)
  • 336f7f7 linter/plugins: Faster conversion of span to Location (#20507) (overlookmotel)
  • a187333 linter/plugins: Reuse descriptor objects for Object.defineProperty calls (#20505) (overlookmotel)
  • 5984a66 linter/plugins: Recycle Location objects (#20491) (overlookmotel)
  • 8729614 linter/plugins: Reduce operations in binary search (#20490) (overlookmotel)
  • 9cfc312 linter/plugins: Reduce allocations for tokens and comments with accessed loc (#20480) (overlookmotel)
  • 9c7a267 linter/plugins: Reduce allocations for regex tokens (#20479) (overlookmotel)
  • 4ee80ac linter/plugins: Remove bounds checks on regex tokens (#20478) (overlookmotel)
  • 4a22f60 linter/plugins: Remove regex from getCommentsBefore + getCommentsAfter (#20475) (overlookmotel)
  • 9a622c7 linter/plugins: Lazy deserialize tokens and comments (#20474) (overlookmotel)
  • c6ea0a0 ast: Place NodeId field after Span in structs (#20584) (overlookmotel)
  • d176ecc napi/parser, oxlint/plugins: Shorten deserializer for WithClause (#20575) (overlookmotel)
  • 57b2e82 linter/no-required-prop-with-default: Restructure so lintgen works (#20537) (camc314)
  • 9ddfb42 linter/no-const-assign: Use BindingPattern::get_symbol_ids (#20533) (camc314)

📚 Documentation

  • f064f80 linter/plugins: Correct comment about offset to line-column conversion (#20506) (overlookmotel)
  • 4047e71 linter/plugins: Improve docs for conformance tests (#20528) (overlookmotel)
  • 6022ddb linter: Add note about options to react/jsx_key (#20484) (connorshea)
  • 5c104ff linter/curly: Fix incorrect examples code (#20421) (KUAI)

Oxfmt v0.42.0

🚀 Features

  • 416865a formatter,oxfmt: Add doc comments for JsdocConfig (#20644) (leaysgur)
  • 4fec907 formatter: Add JSDoc comment formatting support (#19828) (Dunqing)
  • c21c5a7 oxfmt: Support html-in-js substitution (#20193) (leaysgur)
  • c5aeae4 formatter,oxfmt: Support /* LANG */ comment for gql|html-in-js (#20224) (leaysgur)

🐛 Bug Fixes

  • 399e629 formatter: Align more trailing comment cases with prettier (#20636) (#20643) (Andreas Lubbe)
  • 909fb4d formatter: Remove unnecessary parens around TSConstructorType in arrow function return type (#20573) (bab)
  • 828b56a oxfmt: Re-export all nested types (#20636) (leaysgur)
  • c1b461b oxfmt/lsp: Revert #19977, prefer file extension over languageId for format strategy (#20623) (Sysix)
  • d35b25f formatter,oxfmt: Remove redundant space after soft_line_break_or_space (#20562) (leaysgur)
  • f8c452a formatter,oxfmt: Handle css-in-js comment inside template (#20452) (leaysgur)
  • 7c233f4 formatter,oxfmt: Handle nested BinaryExpression for tailwind trailing spaces (#20450) (leaysgur)
  • 71628e6 formatter,oxfmt: Sort imports should not flush Empty line (#20443) (leaysgur)

oxc crates_v0.122.0

23 Mar 10:07
9dd33b0

Choose a tag to compare

🚀 Features

  • 4fec907 formatter: Add JSDoc comment formatting support (#19828) (Dunqing)
  • 07128b0 semantic: Report error for await using in class static block (#20535) (camc314)
  • 728fc8d semantic: Improve diagnostic for await in static block (#20534) (camc314)
  • 76cd0b1 ast: Add method to retrieve SymbolIds from BindingPattern (#20532) (camc314)

🐛 Bug Fixes

  • 3d76121 transformer: Incorrect output with multiple JSX spread children in automatic mode (#20647) (Dunqing)
  • 5e893d7 jsdoc: Parse tags after interval notation in descriptions (#20046) (camc314)

⚡ Performance

  • 9a622c7 linter/plugins: Lazy deserialize tokens and comments (#20474) (overlookmotel)
  • 89946e1 ast: Mark AstKind::address as #[inline] (#20586) (overlookmotel)
  • 3420abb ast: Mark AstKind::span as #[inline] (#20585) (overlookmotel)
  • c6ea0a0 ast: Place NodeId field after Span in structs (#20584) (overlookmotel)
  • d176ecc napi/parser, oxlint/plugins: Shorten deserializer for WithClause (#20575) (overlookmotel)

oxc crates_v0.121.0

19 Mar 06:39
6cd513f

Choose a tag to compare

🚀 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)

oxc crates_v0.120.0

16 Mar 10:36
8741e65

Choose a tag to compare

🐛 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)

oxlint v1.56.0 & oxfmt v0.41.0

16 Mar 11:01
5446ebd

Choose a tag to compare

Table of Contents

Oxlint v1.56.0

🚀 Features

  • c95951f linter/plugins: Implement sourceCode.markVariableAsUsed (#20357) (overlookmotel)
  • 7a2a7d0 linter: Implement n/handle-callback-err rule (#19616) (Mikhail Baev)

🐛 Bug Fixes

  • 89ce30b oxlint,oxfmt: Redirect JS stdout to stderr for LSP (#20321) (leaysgur)
  • f8fbd6e linter/plugins: Remove hashbang property from AST (#20365) (overlookmotel)
  • 6eb5b01 linter/prefer-await-to-then: Ignore Promise static methods (#20347) (camc314)
  • a4b61f7 linter: Remove defineConfig check (#20308) (camc314)
  • 3ad7f53 linter/explicit-module-boundary-types: False positive with satisfies expr (#20309) (camc314)
  • f547401 linter/no-unused-private-class-members: Treat switch discriminants as read (#20307) (camc314)
  • 1c07b3b diagnostics: Handle WouldBlock in stdout writes to prevent panic (#20295) (Boshen)

⚡ Performance

  • e4f7248 linter: Remove unnecessary clone of owned String in drain loop (#20388) (Boshen)
  • 4a67f1d linter: Eliminate Vec allocation in disable directive matching (#20387) (Boshen)
  • 618a598 linter/plugins: Add fast path for files with no comments (#20366) (overlookmotel)
  • b0125c5 linter/plugins: Deserialize comments without AST (#20364) (overlookmotel)
  • 9cd612f linter/plugins: Recycle comment objects (#20362) (overlookmotel)
  • bf442f8 linter/plugins: Cheaper Token creation (#20360) (overlookmotel)
  • 5474d0a semantic: V8-style walk-up reference resolution (#20292) (Boshen)
  • 7946eba linter/plugins: Avoid arguments spread and temp array when merging (#20318) (overlookmotel)
  • fc7cf8a linter/plugins: Pre-define less CFG merger functions (#20317) (overlookmotel)
  • 3b9eb28 linter/plugins: Streamline getting/creating visit fn mergers (#20319) (overlookmotel)
  • f04e850 linter/plugins: Inline binary search functions into call sites (#20312) (overlookmotel)
  • fe24afe linter/plugins: Apply replace globals TSDown plugin to JS files (#20305) (overlookmotel)
  • 77cdacc linter/plugins: Use array buffer views for tokens (#20301) (overlookmotel)
  • 910c941 linter/plugins: Reorder branches in getTokenByRangeStart (#20296) (overlookmotel)
  • af7674c linter/tokens: Avoid extra token value allocation (#20013) (camc314)

📚 Documentation

  • 24490b5 linter: Improve formatting for 80ish rules' docs. (#20411) (connorshea)
  • 3383523 linter: Improve --tsconfig flag docs (#20342) (camc314)

Oxfmt v0.41.0

🚀 Features

  • d22c443 oxfmt: Export OxfmtConfig type (#20275) (leaysgur)
  • a11ecff oxfmt/lsp: Respect angular language id as .component.html file (#20242) (Sysix)

🐛 Bug Fixes

  • 89ce30b oxlint,oxfmt: Redirect JS stdout to stderr for LSP (#20321) (leaysgur)
  • ce65099 formatter: Preserve parentheses around as expression before private field access (#20419) (bab)
  • f908742 oxfmt: Revert #20326 partially (#20413) (leaysgur)
  • 4ef93ea formatter: Honor trailing ignore comments after list separators (#19925) (Andreas Lubbe)
  • 68fb0d0 oxfmt: Skip vite.config.ts which fails to import (#20326) (leaysgur)
  • 88ee826 oxfmt: Handle literalline for script-in-vue (#20130) (leaysgur)
  • 1c07b3b diagnostics: Handle WouldBlock in stdout writes to prevent panic (#20295) (Boshen)

oxc crates_v0.119.0

14 Mar 09:32
e9b5546

Choose a tag to compare

🚀 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)

oxc crates_v0.118.0

12 Mar 05:39
ce4ecb0

Choose a tag to compare

release(crates): oxc v0.118.0 (#20266)

Co-authored-by: leaysgur <6259812+leaysgur@users.noreply.github.com>

oxlint v1.55.0 & oxfmt v0.40.0

12 Mar 15:38
6a26b93

Choose a tag to compare

Table of Contents

Oxlint v1.55.0

🐛 Bug Fixes

  • 6b46ce8 oxlint: Ignore inherited root-only options in nested configs (#20291) (camc314)
  • bc20217 oxlint,oxfmt: Omit useless | null for Option<T> field from schema (#20273) (leaysgur)
  • f26e6ab linter: Make generate-plugin-eslint script work on windows (#20246) (camc314)

📚 Documentation

  • e4aa5b5 parser/napi, linter/plugins: Add JSDoc comments to raw transfer constants (#20286) (overlookmotel)
  • f339f10 linter/plugins: Promote JS plugins to alpha status (#20281) (overlookmotel)

Oxfmt v0.40.0

🐛 Bug Fixes

  • 96f761f oxfmt: Ensure stdin blocking mode is set for non-TTY environments (#20289) (camc314)
  • bc20217 oxlint,oxfmt: Omit useless | null for Option<T> field from schema (#20273) (leaysgur)

oxlint v1.54.0 & oxfmt v0.39.0

12 Mar 06:30
36e7d29

Choose a tag to compare

Table of Contents

Oxlint v1.54.0

🐛 Bug Fixes

  • 4ea67de oxlint,oxfmt: Skip vite.config.ts exports defineConfig(fn) (#20260) (leaysgur)
  • cc89dbf oxlint: Skip vite.config.ts w/o .lint field in auto-discovery (#20255) (leaysgur)
  • 89b7ca9 linter/no-duplicate-imports: Only check aggregated exports (#20178) (kennytm)
  • 691f556 linter/explicit-module-boundary-types: Ignore constructor callbacks (#20221) (camc314)

⚡ Performance

  • d160dca linter/plugins: Reduce array lookups in visitor compilation (#20249) (overlookmotel)

📚 Documentation

  • 0c7da4f linter: Fix extra closing brace in example config. (#20253) (connorshea)
  • 13606c3 linter/plugins: Update conformance README (#20234) (overlookmotel)

Oxfmt v0.39.0

🐛 Bug Fixes

  • 4ea67de oxlint,oxfmt: Skip vite.config.ts exports defineConfig(fn) (#20260) (leaysgur)
  • 11a2b45 oxfmt: Skip vite.config.ts w/o .fmt field in auto-discovery (#20254) (leaysgur)

oxlint v1.53.0 & oxfmt v0.38.0

11 Mar 12:16
856781f

Choose a tag to compare

Table of Contents

Oxlint v1.53.0

🚀 Features

  • 04a5ce0 oxlint: Support vite.config.ts .lint field (#20214) (leaysgur)
  • 1735215 linter: Implement react/no-clone-element rule. (#20129) (connorshea)
  • 68e6f6f linter: Implement react/no-react-children rule. (#20104) (connorshea)
  • fe3b32e linter/plugins: Add oxlint-plugin-eslint package (#20009) (overlookmotel)

🐛 Bug Fixes

  • 05f6a09 linter/no-inline-comments: Deserialize rule options with serde (#20207) (camc314)
  • c7eb09d linter/default-case: Deserialize rule options with serde (#20206) (camc314)
  • f85e16c linter/plugins: Fix types for visitor compilation (#20203) (overlookmotel)
  • 44e24e0 linter/exhaustive-deps: Ignore type-only typeof deps (#20201) (camc314)
  • 0b04998 linter/no-fallthrough: Deserialize rule options with serde (#20192) (camc314)
  • a1031cb linter/new-cap: Deserialize rule options with serde (#20161) (camc314)
  • ad27fd6 linter: Add help messages to import plugin diagnostics (#20158) (John Costa)
  • 1340307 linter/plugins: Ensure after hooks always run (#20167) (overlookmotel)
  • c4812ec linter/plugins: Reset visitor compilation state if error during compilation (#20166) (overlookmotel)
  • 887eecc linter/plugins: Add license notice to oxlint-plugin-eslint package (#20164) (overlookmotel)
  • e1713a4 linter/plugins: Include common chunks in oxlint-plugin-eslint package (#20163) (overlookmotel)
  • a9acb2b linter: Check globals entry for no-undef, only check es2026 globals for no-extend-native and no-constant-binary-expression (#20089) (Sysix)
  • 5559f0d linter/no-unused-vars: reportUsedIgnorePattern should not report used rest siblings (#20108) (Don Isaac)
  • de7c0e2 linter/plugins: Correct error message for markVariableAsUsed (#20152) (overlookmotel)

⚡ Performance

  • 3a86427 linter/plugins: Pre-populate cache of EnterExit objects at startup (#20194) (overlookmotel)
  • d243391 linter/plugins: Replace arrays with Uint8Arrays (#20190) (overlookmotel)
  • 8742f8b linter/plugins: Pre-populate cache of VisitProp objects (#20189) (overlookmotel)
  • 3061acb linter/plugins: Pre-populate cache of EnterExit objects (#20187) (overlookmotel)
  • c73912b linter/plugins: Free visit functions earlier (#20186) (overlookmotel)
  • d9f8ff4 linter/plugins: Faster reset of visitor state (#20185) (overlookmotel)
  • 42aff15 oxlint/lsp: Avoid computing diagnostics for non invoked code actions requests (#20080) (Sysix)

📚 Documentation

  • a080650 linter/plugins: Fix documentation of visitor compilation (#20202) (overlookmotel)
  • 542a04a linter: Add a link to the cyclomatic complexity Wikipedia article in eslint/complexity (#20174) (connorshea)

Oxfmt v0.38.0

🚀 Features

  • 95943aa oxfmt: Support vite.config.* .fmt field (#20197) (leaysgur)
  • 172fc07 oxfmt: .js/.ts config file support (#20135) (leaysgur)

🐛 Bug Fixes

  • e483569 oxfmt: Avoid double-escaping in css-in-js (#20211) (leaysgur)

Notes

No binaries are included in this release due to problems with the release workflow.

Binaries will be included in next scheduled release on Monday 16th March.