Releases: oxc-project/oxc
Releases · oxc-project/oxc
oxc crates_v0.126.0
💥 BREAKING CHANGES
🚀 Features
- ce5072d parser: Support
turbopackmagic comments (#20803) (Kane Wang) - f5deb55 napi/transform: Expose
optimizeConstEnumsandoptimizeEnumsoptions (#21388) (Dunqing) - 24b03de data_structures: Introduce
NonNullConstandNonNullMutpointer 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
varinsidecatchwith same-named parameter (#21366) (Dunqing) - 4fb73a7 transformer/typescript: Preserve execution order for accessor with
useDefineForClassFields: false(#21369) (Dunqing)
⚡ Performance
- c22cba6 allocator: Simplify pointer calculation when creating
Arenachunks (#21475) (overlookmotel) - da3cc16 parser: Refactor out
LexerContext(#21275) (Ulrich Stark)
📚 Documentation
oxc crates_v0.125.0
💥 BREAKING CHANGES
- 36cdc31 str: [BREAKING] Remove identity
FromInimpl forIdent(#21251) (overlookmotel) - 382958a span: [BREAKING] Remove re-exports of string types from
oxc_spancrate (#21246) (overlookmotel) - c4aedfa str: [BREAKING] Add
static_ident!macro (#21245) (overlookmotel)
🚀 Features
- e7e1aea transformer/typescript: Add
optimize_enumsoption for regular enum inlining (#20539) (Dunqing) - 679f57f transformer/typescript: Implement const enum inlining and declaration removal (#20508) (Dunqing)
- 6dd061c semantic: Extend
MemberWriteTargetto cover all property modification patterns (#21205) (Dunqing) - f134e24 minifier: Support
property_write_side_effectsoption to drop unused property assignments (#20773) (Dunqing) - 75663c0 semantic: Add enum member value evaluation for const enum support (#20602) (Dunqing)
- 3cfe8ed semantic: Add
MemberWriteTargetflag toReferenceFlags(#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:
StringBuilderuseAllocator::alloc_layout(#21340) (overlookmotel) - 7a08a6f allocator: Fix allocation counting in
Allocator::alloc_concat_strs_array(#21336) (overlookmotel) - 2338e28 ecmascript: Treat
thisas potentially having side effects (#21297) (sapphi-red) - bd8bd39 allocator: Remove unsafe hacks from
from_raw_partsmethods (#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_rawan 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_incheck for 0 length earlier (#21338) (overlookmotel) - c2422bb allocator:
Allocator::alloc_concat_strs_arraycheck for 0 length earlier (#21337) (overlookmotel) - 04b0fdc allocator: Mark
Allocator::alloc_layoutas#[inline(always)](#21335) (overlookmotel) - 17aee9e allocator: Use
offset_from_unsignedinChunkFooter::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
Vecs 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
uint32buffer view (#21140) (overlookmotel) - 2675085 napi/parser: Lazy deserialization use only
Int32Array(#21139) (overlookmotel) - 5b35a53 napi/parser: Deserializing tokens use only
int32array (#21138) (overlookmotel) - f163d10 parser: Tokens raw deserialization use
Int32Array(#21137) (overlookmotel) - 7a86613 linter/plugins: Use
Int32Arrays for tokens and comments buffers (#21136) (overlookmotel) - 8c51121 napi/parser, linter/plugins: Raw transfer deserialize
Spanfields asi32s (#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
Int32Arrayin 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
SAFETYin comments (#21253) (overlookmotel) - 01bc269 str: Reformat
Identdoc comments (#21240) (overlookmotel) - dd47359 allocator: Add doc comments for panics and errors (#21230) (overlookmotel)
oxlint v1.60.0 & oxfmt v0.45.0
Table of Contents
Oxlint v1.60.0
💥 BREAKING CHANGES
- 382958a span: [BREAKING] Remove re-exports of string types from
oxc_spancrate (#21246) (overlookmotel) - c4aedfa str: [BREAKING] Add
static_ident!macro (#21245) (overlookmotel) - 7354f3c linter: [BREAKING] Error on no matched files (#21144) (camc314)
🚀 Features
- 94a32b9 linter/jest: Share common pattern expect functions (#21376) (Said Atrahouch)
- bab5c31 linter/jest: Implement
prefer-ending-with-an-expectrule (#21372) (Said Atrahouch) - 91f2c79 linter/eslint-jest-plugin: Implemented
prefer-importing-jest-globalsrule (#21303) (Said Atrahouch) - a02f32c linter: Add release version for existing rules (#21363) (camchenry)
- b9e93da linter: Allow tagging rules with release version (#21362) (camchenry)
- f99ecda oxlint: Gate
vite.config.tsrecognition behindVP_VERSIONenv var (#21298) (leaysgur) - cf459d3 linter: Implement suggestion for
no-empty-functionrule (#21347) (Mikhail Baev) - 7213d61 linter: Adding pending suggestions fix to
valid_expectrules. (#21249) (Said Atrahouch) - ae45312 linter: Introduce
--type-check-onlyflag (#21184) (camc314) - 1ce8b90 linter: Implemented
valid-expect-in-promisevitest and jest rule (#21170) (Said Atrahouch) - 39f7fda linter: Add auto-fix to
unicorn/prefer-default-parameters(#21166) (yefan) - 15574bc linter/unicorn: Implement consistent-template-literal-escape (#21126) (AliceLanniste)
- c5c8c03 linter/prefer-readonly-parameter-types: Move rule from nursery to pedantic (#21114) (camc314)
- 1893be1 linter/no-useless-default-assignment: Move rule from nursery to correctness (#21113) (camc314)
- 5462ff9 linter/strict-void-return: Move rule from nursery to pedantic (#21115) (camc314)
- c2989bd linter/no-unnecessary-type-parameters: Move rule from nursery to suspicious (#21112) (camc314)
- 79d339a linter/no-unnecessary-qualifier: Move rule from nursery to style (#21111) (camc314)
🐛 Bug Fixes
- b577efc linter/unicorn: Handle optional chaining in
prefer-array-flatandno-invalid-remove-event-listener(#21299) (Mikhail Baev) - 5e55735 oxlint/lsp: Skip .git directories in LSP walkers (#21316) (camc314)
- ec7f6ed oxlint, oxfmt: Apply
check_for_writer_errorto.flush()(#21343) (Craig Morrison) - a17a08a linter/no-useless-assignment: Handle continue edges in loop analysis (#21358) (camc314)
- a0eac12 linter/array-type: Move match to first stmt (#21357) (camc314)
- 1b3abc3 linter: Exclude boundary tokens from JSXText whitespace check in isSpaceBetweenTokens (#21313) (bab)
- ecbcf5e linter: More info to summary output for GitHub formatter (#21330) (Théo LUDWIG)
- a0a8c62 linter/no-fallthrough: Check from start of switch case for empty lines (#21324) (Josh Cartmell)
- 36f0bc4 linter/no-cycle: Report all cyclic dependencies inside a file (#21259) (camc314)
- 3f80536 linter: Ignore regex flags other than
g/u/vinprefer-string-replace-all(#21203) (bab) - f21d3aa linter/unicorn: Report on optional in
require-number-to-fixed-digits-argumentrule (#21207) (Mikhail Baev) - af8e122 linter: Render each config error as a separate diagnostic (#21120) (bab)
- a950f55 linter/unicorn: Do not report on optionals in
no-single-promise-in-promise-methods(#21157) (Mikhail Baev) - 472f8ee linter: Mark complete comment for unused disable directives + lsp fix (#21092) (copilot-swe-agent)
- edd0865 linter/no-array-index-key: False positive when index is inside an expression within a template literal (#21123) (bab)
- 7e8d520 linter/unicorn: Report on optional
foo?.postMessageinrequire-post-message-target-originrule (#21104) (Mikhail Baev)
⚡ Performance
- addcd02 napi/parser, linter/plugins: Raw transfer deserializer for
Vecs 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
uint32buffer view (#21140) (overlookmotel) - 7a86613 linter/plugins: Use
Int32Arrays for tokens and comments buffers (#21136) (overlookmotel) - 8c51121 napi/parser, linter/plugins: Raw transfer deserialize
Spanfields asi32s (#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
Int32Arrayin raw transfer deserializer (#21132) (overlookmotel) - 43482c7 linter/plugins: Use
>>not>>>in binary search loops (#21129) (overlookmotel)
📚 Documentation
- 7888280 linter: Move config docs for
no-restricted-exports(#21360) (camchenry) - 162d26c linter: Improve docs for
typescript/array-type(#21356) (camchenry) - a2dbaec linter: Add missing docs for options for
typescript/class-literal-property-style(#21355) (camchenry) - 79593eb linter: Improve docs for
typescript/consistent-type-assertions(#21353) (camchenry) - f9d20d2 linter: Move config option docs for
typescript/no-empty-object-type(#21352) (camchenry) - a8f650d linter: Add missing config option docs for
prefer-string-start-ends-with(#21332) (camchenry) - cfd8a4f linter: Don't rely on old eslint doc for available globals (#21334) (Nicolas Le Cam)
- 03865fa linter: Jest/prefer-snapshot-hint: add doc comment for snapshot hint mode (#21290) (camchenry)
- a6fe09b linter: Add missing docs for config options in
reactplugin (#21289) (camchenry) - 60eaf47 linter: Add missing docs for config options in unicorn plugin (#21288) (camchenry)
- c3c2055 linter:
jsx-a11y/label-has-associated-control: document theassertoptions (#21287) (camchenry) - a928ed9 linter: Add missing config docs for vitest plugin rules (#21285) (camchenry)
- 7e07c7c linter:
id-length: move enum docs to doc comments (#21281) (camchenry) - 9746bdf linter: Add missing docs for
class-methods-use-thisconfig (#21278) (camchenry) - 6ffe7a5 linter: Move docs for
Targetvariant onto enum (#21277) (camchenry) - 305350d linter/plugins: Correct comments (#21130) (overlookmotel)
Oxfmt v0.45.0
💥 BREAKING CHANGES
- 382958a span: [BREAKING] Remove re-exports of string types from
oxc_spancrate (#21246) (overlookmotel)
🚀 Features
- e3081e1 oxfmt: Gate
vite.config.tsrecognition behindVP_VERSIONenv var (#21295) (leaysgur) - 5b0b573 oxfmt: Update prettier to 3.8.2 (#21294) (leaysgur)
- 0d67834 oxfmt: Show hint for all files are ignored case (#21154) (leaysgur)
🐛 Bug Fixes
- 2871fc2 oxfmt: Non idempotent formatting on comments in TS (#20449) (Cat Chen)
- ec7f6ed oxlint, oxfmt: Apply
check_for_writer_errorto.flush()(#21343) (Craig Morrison) - 1a8c225 formatter: Preserve newline between self-closing JSX element and single-char text (#21149) (Justin Mecham)
- 407b725 oxfmt: Indent dangling comments in empty enum with block indent (#21163) (Leonabcd123)
- d13fd37 formatter: Remove extra outer parentheses on return with JSDoc type cast (#21109) (bab)
- 22babde oxfmt: Fix unicode char escaping (#21162) (leaysgur)
- 4da53e5 formatter: Preserve trailing comma in TSX arrow functions with default type params (#21151) (Justin Mecham)
- 94fe774 oxfmt: Handle paths with consecutive leading slashes (#21155) (leaysgur)
- 50c389b oxfmt: Support
.editorconfigquote_type(#20989) (leaysgur)
⚡ Performance
- 0ce619f formatter: Use
Allocator::alloc_concat_strs_arrayinstead ofStringBuilder::from_strs_array_in(#21339) (overlookmotel)
oxc crates_v0.124.0
🐛 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
utf8Slicefor 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.fromCharCodein 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
rawfields (#20923) (overlookmotel) - a24f75e napi/parser: Optimize string deserialization for non-ASCII sources (#20834) (Joshua Tuddenham)
📚 Documentation
oxlint v1.59.0 & oxfmt v0.44.0
Table of Contents
Oxlint v1.59.0
💥 BREAKING CHANGES
🚀 Features
- 7a7b7b8 oxlint/lsp: Add source.fixAllDangerous.oxc code action kind (#20526) (bab)
- 9cfe57e linter/unicorn: Implement prefer-import-meta-properties rule (#20662) (Irfan - ئىرفان)
- 1edb391 linter/eslint: Implement
no-restricted-exportsrule (#20592) (Nicolas Le Cam) - 0f12bcd linter/react: Implement
hook-use-staterule (#20986) (Khaled Labeb) - 1513a9f oxlint/lsp: Show note field for lsp diagnostic (#20983) (Sysix)
- 7fdf722 linter/unicorn: Implement
no-useless-iterator-to-arrayrule (#20945) (Mikhail Baev) - 39c8f2c linter/jest: Implement padding-around-after-all-blocks (#21034) (Sapphire)
- ac39e51 linter/eslint-vitest-plugin: Prefer importing vitest globals (#20960) (Said Atrahouch)
- 0b84de1 oxlint: Support allow option for prefer-promise-reject-errors (#20934) (camc314)
- 23db851 linter/consistent-return: Move rule from nursery to suspicious (#20920) (camc314)
- 9a27e32 linter/no-unnecessary-type-conversion: Move rule from nursery to suspicious (#20919) (camc314)
- 1ca7b58 linter/dot-notation: Move rule from nursery to style (#20918) (camc314)
- 73ba81a linter/consistent-type-exports: Move rule from nursery to style (#20917) (camc314)
- b9199b1 linter/unicorn: Implement switch-case-break-position (#20872) (Mikhail Baev)
- 3435ff8 linter: Implements
prefer-snapshot-hintrule in Jest and Vitest (#20870) (Said Atrahouch) - 98510d2 linter: Implement react/prefer-function-component (#19652) (Connor Shea)
- 871f9d9 linter: Implement no-useless-assignment (#15466) (Zhaoting Zhou)
- 0f01fbd linter: Implement eslint/object-shorthand (#17688) (yue)
🐛 Bug Fixes
- 8be4de7 linter/unicorn: Do not report on optionals in
prefer-array-flat-map(#21082) (Mikhail Baev) - dd2df87 npm: Export package.json for oxlint and oxfmt (#20784) (kazuya kawaguchi)
- 9bc77dd linter/no-unused-private-class-members: False positive with await expr (#21067) (camc314)
- 60a57cd linter/const-comparisons: Detect equality contradictions (#21065) (camc314)
- 2bb2be2 linter/no-array-index-key: False positive when index is passed as function argument (#21012) (bab)
- 6492953 linter/no-this-in-sfc: Only flag
thisused as member expression object (#20961) (bab) - 9446dcc oxlint/lsp: Skip
node_modulesin oxlint config walker (#21004) (copilot-swe-agent) - af89923 linter/no-namespace: Support glob pattern matching against basename (#21031) (bab)
- 64a1a7e oxlint: Don't search for nested config outside base config (#21051) (Sysix)
- 3b953bc linter/button-has-type: Ignore
document.createElementcalls (#21008) (Said Atrahouch) - 8c36070 linter/unicorn: Add support for
Array.from()forprefer-set-sizerule (#21016) (Mikhail Baev) - c1a48f0 linter: Detect vitest import from vite-plus/test (#20976) (Said Atrahouch)
- 5c32fd1 lsp: Prevent corrupted autofix output from overlapping text edits (#19793) (Peter Wagenet)
- ca79960 linter/no-array-index-key: Move span to
keyproperty (#20947) (camc314) - 2098274 linter: Add suggestion for
jest/prefer-equality-matcher(#20925) (eryue0220) - 6eb77ec linter: Allow default-import barrels in import/named (#20757) (Bazyli Brzóska)
- 9c218ef linter/eslint-vitest-plugin: Remove pending fix status for require-local-test-context-for-concurrent-snapshot (#20890) (Said Atrahouch)
⚡ Performance
- fb52383 napi/parser, linter/plugins: Clear buffers and source texts earlier (#21025) (overlookmotel)
- 3b7dec4 napi/parser, linter/plugins: Use
utf8Slicefor 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.fromCharCodein string decoding (#21018) (overlookmotel) - 0503a78 napi/parser, linter/plugins: Faster deserialization of
rawfields (#20923) (overlookmotel) - a24f75e napi/parser: Optimize string deserialization for non-ASCII sources (#20834) (Joshua Tuddenham)
📚 Documentation
- af72b80 oxlint: Fix typo for --tsconfig (#20889) (leaysgur)
- 70c53b1 linter: Highlight that tsconfig is not respected in type aware linting (#20884) (camc314)
Oxfmt v0.44.0
🚀 Features
- 35cf6e8 oxfmt: Add node version hint for ts config import failures (#21046) (camc314)
🐛 Bug Fixes
- dd2df87 npm: Export package.json for oxlint and oxfmt (#20784) (kazuya kawaguchi)
- 9d45511 oxfmt: Propagate file write errors instead of panicking (#20997) (leaysgur)
- 139ddd9 formatter: Handle leading comment after array elision (#20987) (leaysgur)
- 4216380 oxfmt: Support
.editorconfigtab_widthfallback (#20988) (leaysgur) - d10df39 formatter: Resolve pending space in fits measurer before expanded-mode early exit (#20954) (Dunqing)
- f9ef1bd formatter: Avoid breaking after
=>when arrow body has JSDoc type cast (#20857) (bab)
oxc crates_v0.123.0
🚀 Features
- 59fd797 parser: Mark pure comments that cannot be applied (#20687) (Boshen)
- 2917bb2 minifier: Minify
x ? 1 : 0to+xor+!!x(#20594) (John Costa)
🐛 Bug Fixes
- 1a370a6 minifier: Inline single-use vars past non-computed object keys (#20810) (Ulrich Stark)
- ffacf99 semantic: Report error on await inside block inside static block (#20750) (camc314)
- ccf9301 semantic: Report error on for-await inside block inside static block (#20749) (camc314)
- 9a5ff73 semantic: Hoist Annex B block-scoped function declarations to var scope (#20728) (Dunqing)
- 2bad7f5 semantic: Report error on await-using inside nested static block (#20746) (camc314)
- 77abf54 codegen: Preserve coverage comments before
ConditionalExpressionalternate and betweenSwitchCases (#20718) (Boshen) - c09a5ab diagnostics: Skip minified fallback for single-line reporters (#20716) (camc314)
- 3375627 transformer: Remove false positive duplicate
__source/__selfprop error (#20678) (Dunqing) - 3931b98 transformer: Ignore
@jsxImportSourceinside inline code spans in comments (#20674) (Dunqing)
⚡ Performance
- f72f108 parser: Move
kindsfield ofModifiersto first (#20833) (overlookmotel) - 2a06835 parser: Add
Modifiers::contains_accessibility(#20832) (overlookmotel) - 5995339 parser: Make
Modifiers::accessibilitybranchless (#20827) (overlookmotel) - 2208114 parser: Add
#[inline]to trivial modifier methods (#20826) (overlookmotel) - 055a7ac parser: Defer calculation of
Modifierspans (#20823) (overlookmotel) - 2e7e6bd parser: Remove branch from
parse_modifiers(#20821) (overlookmotel) - eb02c88 parser: Reduce
KindtoModifierKindconversions ineat_modifiers_before_declaration(#20820) (overlookmotel) - 1f57448 parser: Fast path for no syntax errors when checking modifiers (#20748) (overlookmotel)
- 4e8b817 parser: Remove a lookahead from
eat_modifiers_before_declaration(#20755) (overlookmotel) - 5f9bee5 parser: Store
Modifierson stack (#20742) (overlookmotel) - 511d5e5 parser: Add
Modifiers::getmethod (#20741) (overlookmotel) - bd10021 transformer: Only scan comments before first statement for JSX pragmas (#20675) (Dunqing)
- 611fca5 parser: Pre-allocate
extendsvec with1cap (#20667) (camc314) - ad58dd7 parser: Avoid re-allocating when parsing import stmt (#20666) (camc314)
- 2b2794b parser: Avoid vec clone in
parse_heritage_clause(#20665) (camc314) - 89a5374 allocator: Remove op from
StringBuilder::grow_one(#20650) (overlookmotel)
📚 Documentation
oxlint v1.58.0 & oxfmt v0.43.0
Table of Contents
Oxlint v1.58.0
💥 BREAKING CHANGES
🚀 Features
- 04f85e5 linter/no-unused-vars: Add safe-fix option for import fixes (#20839) (Marcell Toth)
- 32a3706 linter/eslint-vitest-plugin: Implements
require-test-timeoutrule (#20806) (Said Atrahouch) - ae03653 linter: Implement suggestion for
eslint/no-useless-computed-keyrule (#20805) (Mikhail Baev) - 6624513 linter/prefer-string-starts-ends-with: Move rule from nursery to style (#20797) (camc314)
- 58941f8 linter/prefer-readonly: Move rule from nursery to style (#20796) (camc314)
- 8837ffd linter/prefer-regexp-exec: Move rule from nursery to style (#20795) (camc314)
- 7e88871 linter/prefer-find: Move rule out of nursery (#20794) (camc314)
- ca6e5bc linter/vitest: Implement prefer-called-exactly-once-with (#17562) (Said Atrahouch)
- e80c0bf linter/eslint-plugin-vitest: Implement
require-mock-type-parameters(#20785) (Said Atrahouch) - cec8b8f linter/vitest: Implement require-awaited-expect-poll rule (#20702) (Said Atrahouch)
- d8e9d01 linter/eslint-plugin-vitest: Set
prefer-to-have-been-called-timescompatible with jest (#20703) (Said Atrahouch) - caf8231 linter: Enhance import plugin diagnostics with help messages (#20766) (离谱)
- f44adfa linter: Improve the oxlint config generated by
--init. (#20632) (connorshea) - 43f4827 linter: Add help text to jest and promise diagnostics (#20640) (kszongic)
- 16516de linter: Enhance types for
DummyRule(#20751) (camc314) - 27374e8 linter: Add hint about node version when ts config fail to import (#20570) (camc314)
- 8e34150 linter/eslint-plugin-vitest: Sync rule with JS implementation (#20679) (Said Atrahouch)
🐛 Bug Fixes
- df057d5 linter/no-noninteractive-tabindex: Add missing composite widget … (#20860) (bab)
- bb34073 linter: Mark vitest/valid-title as a compatible jest rules (#20463) (Nicolas Le Cam)
- bd2c76b linter: Handle shadowed locals in no-restricted-globals (#20811) (Ulrich Stark)
- 62e39be linter: Sort nested object keys in fix of
eslint/sort-keysin one pass (#20838) (Ulrich Stark) - 3ef37da oxlint/lsp: Error on unknown command (#20841) (Sysix)
- ab1070d oxlint/cli: Skip parsing base config again for nested config search (#20809) (Sysix)
- 2be3728 oxlint/lsp: Skip parsing base config again for nested config search (#20808) (Sysix)
- 6171217 oxlint: Respect
NO_COLORenv forformat=stylish(#20804) (Sysix) - d89ae8f linter/plugins: Patch
WeakMapto emulateWeakMaps keyed bysourceCode(#20799) (overlookmotel) - c610666 linter/no-shadow: Respect env settings when builtinGlobals is enabled (#20429) (vvnikita74)
- 6bb502f linter/no-invalid-void-type: Allow void generic args in heritage clauses (#20780) (camc314)
- 365bb7d linter: Skip typed nested literals in explicit-module-boundary-types (#20776) (camc314)
- 0aa1ff0 linter/plugins: Ensure
afterhook is always called in ESLint compat mode (#20721) (overlookmotel) - 31145a9 linter/plugins: Fire
afterhook after CFG events in ESLint compat (#20720) (overlookmotel) - c09a5ab diagnostics: Skip minified fallback for single-line reporters (#20716) (camc314)
- e4dc9a1 linter: Isolate
--initconfig writes from parallel tests (#20717) (camc314) - 7e394ec linter: Clarify empty replacement fixer help text (#20698) (camc314)
- d15a99c linter/jsx-curly-brace-presence: Flag empty string literals (#20690) (camc314)
📚 Documentation
- c722495 linter: Update JS Plugins + LS references (#20843) (camc314)
- e1f9748 linter/jsdoc/require-property: Fix typo (#20792) (Benjaming61001)
- be3dcc1 linter: Add note about node version + custom TS plugin (#19381) (camc314)
Oxfmt v0.43.0
🚀 Features
oxlint v1.57.0 & oxfmt v0.42.0
Table of Contents
Oxlint v1.57.0
🚀 Features
- 2244984 linter: Implement
vitest/prefer-strict-boolean-matchersrule (#20603) (Mikhail Baev) - c5f0ed3 linter/array-callback-return: Use CFG for analysis (#20498) (camc314)
- f9a63ca linter: Implement
unicorn/custom-error-definitionrule (#20520) (Mikhail Baev)
🐛 Bug Fixes
- 5e893d7 jsdoc: Parse tags after interval notation in descriptions (#20046) (camc314)
- 532c921 linter/plugins: Include
locwhen callJSON.stringifyonTokens andComments (#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
Uint32Arrayacross multiple places (#20509) (overlookmotel) - 336f7f7 linter/plugins: Faster conversion of span to
Location(#20507) (overlookmotel) - a187333 linter/plugins: Reuse descriptor objects for
Object.definePropertycalls (#20505) (overlookmotel) - 5984a66 linter/plugins: Recycle
Locationobjects (#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
NodeIdfield afterSpanin 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
BinaryExpressionfor tailwind trailing spaces (#20450) (leaysgur) - 71628e6 formatter,oxfmt: Sort imports should not flush Empty line (#20443) (leaysgur)
oxc crates_v0.122.0
🚀 Features
- 4fec907 formatter: Add JSDoc comment formatting support (#19828) (Dunqing)
- 07128b0 semantic: Report error for
await usingin class static block (#20535) (camc314) - 728fc8d semantic: Improve diagnostic for
awaitin 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::addressas#[inline](#20586) (overlookmotel) - 3420abb ast: Mark
AstKind::spanas#[inline](#20585) (overlookmotel) - c6ea0a0 ast: Place
NodeIdfield afterSpanin structs (#20584) (overlookmotel) - d176ecc napi/parser, oxlint/plugins: Shorten deserializer for
WithClause(#20575) (overlookmotel)
oxc crates_v0.121.0
🚀 Features
🐛 Bug Fixes
- 3bbd0cd transformer: Emit
Objectinstead ofvoid 0for untyped getter/setterdesign:typemetadata (#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)