Skip to content

Releases: oxc-project/oxc

oxc crates_v0.126.0

16 Apr 01:49
836fe9d

Choose a tag to compare

💥 BREAKING CHANGES

  • 24fb7eb allocator: [BREAKING] Rename Box and Vec methods (#21395) (overlookmotel)

🚀 Features

  • ce5072d parser: Support turbopack magic comments (#20803) (Kane Wang)
  • f5deb55 napi/transform: Expose optimizeConstEnums and optimizeEnums options (#21388) (Dunqing)
  • 24b03de data_structures: Introduce NonNullConst and NonNullMut pointer types (#21425) (overlookmotel)

🐛 Bug Fixes

  • d7a359a ecmascript: Treat update expressions as unconditionally side-effectful (#21456) (Dunqing)
  • 56af2f4 transformer/async-to-generator: Correct scope of inferred named FE in async-to-generator (#21458) (Dunqing)
  • b3ed467 minifier: Avoid illegal var; when folding unused arguments copy loop (#21421) (fazba)
  • b0e8f13 minifier: Preserve var inside catch with same-named parameter (#21366) (Dunqing)
  • 4fb73a7 transformer/typescript: Preserve execution order for accessor with useDefineForClassFields: false (#21369) (Dunqing)

⚡ Performance

  • c22cba6 allocator: Simplify pointer calculation when creating Arena chunks (#21475) (overlookmotel)
  • da3cc16 parser: Refactor out LexerContext (#21275) (Ulrich Stark)

📚 Documentation

  • c5b19bb allocator: Reformat comments in Arena (#21448) (overlookmotel)
  • 091e88e lexer: Update doc comment about perf benefit of reading through references (#21423) (overlookmotel)
  • 922cbee allocator: Remove references to "bump" from comments (#21397) (overlookmotel)

oxc crates_v0.125.0

13 Apr 10:34
fb6b1b0

Choose a tag to compare

💥 BREAKING CHANGES

  • 36cdc31 str: [BREAKING] Remove identity FromIn impl for Ident (#21251) (overlookmotel)
  • 382958a span: [BREAKING] Remove re-exports of string types from oxc_span crate (#21246) (overlookmotel)
  • c4aedfa str: [BREAKING] Add static_ident! macro (#21245) (overlookmotel)

🚀 Features

  • e7e1aea transformer/typescript: Add optimize_enums option for regular enum inlining (#20539) (Dunqing)
  • 679f57f transformer/typescript: Implement const enum inlining and declaration removal (#20508) (Dunqing)
  • 6dd061c semantic: Extend MemberWriteTarget to cover all property modification patterns (#21205) (Dunqing)
  • f134e24 minifier: Support property_write_side_effects option to drop unused property assignments (#20773) (Dunqing)
  • 75663c0 semantic: Add enum member value evaluation for const enum support (#20602) (Dunqing)
  • 3cfe8ed semantic: Add MemberWriteTarget flag to ReferenceFlags (#20772) (Dunqing)

🐛 Bug Fixes

  • af1a586 transformer/class-properties: Use correct property name when converting parameter properties (#21268) (Amal Jossy)
  • b43250a allocator: Move allocation tracking into Bump (#21342) (overlookmotel)
  • 36f505f allocator: StringBuilder use Allocator::alloc_layout (#21340) (overlookmotel)
  • 7a08a6f allocator: Fix allocation counting in Allocator::alloc_concat_strs_array (#21336) (overlookmotel)
  • 2338e28 ecmascript: Treat this as potentially having side effects (#21297) (sapphi-red)
  • bd8bd39 allocator: Remove unsafe hacks from from_raw_parts methods (#21283) (overlookmotel)
  • 8f4c340 allocator: Remove dangerous pointer const to mut cast (#21279) (overlookmotel)
  • aa9259f parser: Add missing error code for optional param diagnostic (#21258) (camc314)
  • 04b3c2f str: Fix unsound casting const pointers to mut pointers (#21242) (overlookmotel)
  • ceadf6c str: Make Ident::from_raw an unsafe function (#21241) (overlookmotel)
  • eab13b3 transformer/decorators: Avoid accessor storage name collisions (#21106) (Dunqing)
  • 07e8a30 transformer/react-refresh: Handle parenthesized variable initializers (#21047) (camc314)

⚡ Performance

  • c3ca6f6 allocator: StringBuilder::from_strs_array_in check for 0 length earlier (#21338) (overlookmotel)
  • c2422bb allocator: Allocator::alloc_concat_strs_array check for 0 length earlier (#21337) (overlookmotel)
  • 04b0fdc allocator: Mark Allocator::alloc_layout as #[inline(always)] (#21335) (overlookmotel)
  • 17aee9e allocator: Use offset_from_unsigned in ChunkFooter::as_raw_parts (#21280) (overlookmotel)
  • 61adedd minifier: Fix O(n²) perf on very many var decls (#21062) (Gunnlaugur Thor Briem)
  • addcd02 napi/parser, linter/plugins: Raw transfer deserializer for 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 uint32 buffer view (#21140) (overlookmotel)
  • 2675085 napi/parser: Lazy deserialization use only Int32Array (#21139) (overlookmotel)
  • 5b35a53 napi/parser: Deserializing tokens use only int32 array (#21138) (overlookmotel)
  • f163d10 parser: Tokens raw deserialization use Int32Array (#21137) (overlookmotel)
  • 7a86613 linter/plugins: Use Int32Arrays for tokens and comments buffers (#21136) (overlookmotel)
  • 8c51121 napi/parser, linter/plugins: Raw transfer deserialize Span fields as i32s (#21135) (overlookmotel)
  • bc1bcdd napi/parser, linter/plugins: Inline trivial raw transfer field deserializers into node object definitions (#21134) (overlookmotel)
  • c0278ab napi/parser, linter/plugins: Use Int32Array in raw transfer deserializer (#21132) (overlookmotel)
  • 43482c7 linter/plugins: Use >> not >>> in binary search loops (#21129) (overlookmotel)

📚 Documentation

  • f5e1845 allocator: Upgrade headers in doc comments for Bump (#21263) (overlookmotel)
  • 2870174 allocator: Upper case SAFETY in comments (#21253) (overlookmotel)
  • 01bc269 str: Reformat Ident doc comments (#21240) (overlookmotel)
  • dd47359 allocator: Add doc comments for panics and errors (#21230) (overlookmotel)

oxlint v1.60.0 & oxfmt v0.45.0

13 Apr 11:16
e16848e

Choose a tag to compare

Table of Contents

Oxlint v1.60.0

💥 BREAKING CHANGES

  • 382958a span: [BREAKING] Remove re-exports of string types from oxc_span crate (#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-expect rule (#21372) (Said Atrahouch)
  • 91f2c79 linter/eslint-jest-plugin: Implemented prefer-importing-jest-globals rule (#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.ts recognition behind VP_VERSION env var (#21298) (leaysgur)
  • cf459d3 linter: Implement suggestion for no-empty-function rule (#21347) (Mikhail Baev)
  • 7213d61 linter: Adding pending suggestions fix to valid_expect rules. (#21249) (Said Atrahouch)
  • ae45312 linter: Introduce --type-check-only flag (#21184) (camc314)
  • 1ce8b90 linter: Implemented valid-expect-in-promise vitest 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-flat and no-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_error to .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/v in prefer-string-replace-all (#21203) (bab)
  • f21d3aa linter/unicorn: Report on optional in require-number-to-fixed-digits-argument rule (#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?.postMessage in require-post-message-target-origin rule (#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 uint32 buffer view (#21140) (overlookmotel)
  • 7a86613 linter/plugins: Use Int32Arrays for tokens and comments buffers (#21136) (overlookmotel)
  • 8c51121 napi/parser, linter/plugins: Raw transfer deserialize Span fields as i32s (#21135) (overlookmotel)
  • bc1bcdd napi/parser, linter/plugins: Inline trivial raw transfer field deserializers into node object definitions (#21134) (overlookmotel)
  • c0278ab napi/parser, linter/plugins: Use Int32Array in raw transfer deserializer (#21132) (overlookmotel)
  • 43482c7 linter/plugins: Use >> not >>> in binary search loops (#21129) (overlookmotel)

📚 Documentation

  • 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 react plugin (#21289) (camchenry)
  • 60eaf47 linter: Add missing docs for config options in unicorn plugin (#21288) (camchenry)
  • c3c2055 linter: jsx-a11y/label-has-associated-control: document the assert options (#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-this config (#21278) (camchenry)
  • 6ffe7a5 linter: Move docs for Target variant 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_span crate (#21246) (overlookmotel)

🚀 Features

  • e3081e1 oxfmt: Gate vite.config.ts recognition behind VP_VERSION env 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_error to .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 .editorconfig quote_type (#20989) (leaysgur)

⚡ Performance

  • 0ce619f formatter: Use Allocator::alloc_concat_strs_array instead of StringBuilder::from_strs_array_in (#21339) (overlookmotel)

oxc crates_v0.124.0

07 Apr 00:43
38aea54

Choose a tag to compare

🐛 Bug Fixes

  • fc7f60c allocator: Revert changes to get_current_chunk_footer_field_offset (#20964) (overlookmotel)
  • 31316c8 semantic: Rebind class expressions before identifier checks (#20916) (camc314)

⚡ Performance

  • fb52383 napi/parser, linter/plugins: Clear buffers and source texts earlier (#21025) (overlookmotel)
  • 3b7dec4 napi/parser, linter/plugins: Use utf8Slice for decoding UTF-8 strings (#21022) (overlookmotel)
  • 012c924 napi/parser, linter/plugins: Speed up decoding strings in raw transfer (#21021) (overlookmotel)
  • 55e1e9b napi/parser, linter/plugins: Initialize vars as 0 (#21020) (overlookmotel)
  • c25ef02 napi/parser, linter/plugins: Simplify branch condition in deserializeStr (#21019) (overlookmotel)
  • 9f494c3 napi/parser, linter/plugins: Raw transfer use String.fromCharCode in string decoding (#21018) (overlookmotel)
  • 91cf105 allocator: Increase initial chunk size from 512B to 16KB (#20968) (overlookmotel)
  • cbc0c21 allocator: Add #[cold] to to error handling functions (#20967) (overlookmotel)
  • 0503a78 napi/parser, linter/plugins: Faster deserialization of raw fields (#20923) (overlookmotel)
  • a24f75e napi/parser: Optimize string deserialization for non-ASCII sources (#20834) (Joshua Tuddenham)

📚 Documentation

  • c78a57a syntax: Fix typo (#21044) (camc314)
  • f5e228f allocator: Fix typo in comment (#20972) (overlookmotel)
  • 7159d51 allocator: Improve doc comment examples for vec2::Vec (#20969) (overlookmotel)
  • b1da750 allocator, data_structures: Correct comments (#20966) (overlookmotel)

oxlint v1.59.0 & oxfmt v0.44.0

07 Apr 01:35
a69e707

Choose a tag to compare

Table of Contents

Oxlint v1.59.0

💥 BREAKING CHANGES

  • 22ce6af oxlint/lsp: [BREAKING] Show/fix safe suggestions by default (#19816) (Sysix)

🚀 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-exports rule (#20592) (Nicolas Le Cam)
  • 0f12bcd linter/react: Implement hook-use-state rule (#20986) (Khaled Labeb)
  • 1513a9f oxlint/lsp: Show note field for lsp diagnostic (#20983) (Sysix)
  • 7fdf722 linter/unicorn: Implement no-useless-iterator-to-array rule (#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-hint rule 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 this used as member expression object (#20961) (bab)
  • 9446dcc oxlint/lsp: Skip node_modules in 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.createElement calls (#21008) (Said Atrahouch)
  • 8c36070 linter/unicorn: Add support for Array.from() for prefer-set-size rule (#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 key property (#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 utf8Slice for decoding UTF-8 strings (#21022) (overlookmotel)
  • 012c924 napi/parser, linter/plugins: Speed up decoding strings in raw transfer (#21021) (overlookmotel)
  • 55e1e9b napi/parser, linter/plugins: Initialize vars as 0 (#21020) (overlookmotel)
  • c25ef02 napi/parser, linter/plugins: Simplify branch condition in deserializeStr (#21019) (overlookmotel)
  • 9f494c3 napi/parser, linter/plugins: Raw transfer use String.fromCharCode in string decoding (#21018) (overlookmotel)
  • 0503a78 napi/parser, linter/plugins: Faster deserialization of raw fields (#20923) (overlookmotel)
  • a24f75e napi/parser: Optimize string deserialization for non-ASCII sources (#20834) (Joshua Tuddenham)

📚 Documentation

  • 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 .editorconfig tab_width fallback (#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

30 Mar 10:09
9907634

Choose a tag to compare

🚀 Features

  • 59fd797 parser: Mark pure comments that cannot be applied (#20687) (Boshen)
  • 2917bb2 minifier: Minify x ? 1 : 0 to +x or +!!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 ConditionalExpression alternate and between SwitchCases (#20718) (Boshen)
  • c09a5ab diagnostics: Skip minified fallback for single-line reporters (#20716) (camc314)
  • 3375627 transformer: Remove false positive duplicate __source/__self prop error (#20678) (Dunqing)
  • 3931b98 transformer: Ignore @jsxImportSource inside inline code spans in comments (#20674) (Dunqing)

⚡ Performance

  • f72f108 parser: Move kinds field of Modifiers to first (#20833) (overlookmotel)
  • 2a06835 parser: Add Modifiers::contains_accessibility (#20832) (overlookmotel)
  • 5995339 parser: Make Modifiers::accessibility branchless (#20827) (overlookmotel)
  • 2208114 parser: Add #[inline] to trivial modifier methods (#20826) (overlookmotel)
  • 055a7ac parser: Defer calculation of Modifier spans (#20823) (overlookmotel)
  • 2e7e6bd parser: Remove branch from parse_modifiers (#20821) (overlookmotel)
  • eb02c88 parser: Reduce Kind to ModifierKind conversions in eat_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 Modifiers on stack (#20742) (overlookmotel)
  • 511d5e5 parser: Add Modifiers::get method (#20741) (overlookmotel)
  • bd10021 transformer: Only scan comments before first statement for JSX pragmas (#20675) (Dunqing)
  • 611fca5 parser: Pre-allocate extends vec with 1 cap (#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

31 Mar 09:34
0384f4b

Choose a tag to compare

Table of Contents

Oxlint v1.58.0

💥 BREAKING CHANGES

  • c0ebbce linter: [BREAKING] Report error on unknown builtin rule (#20464) (camc314)

🚀 Features

  • 04f85e5 linter/no-unused-vars: Add safe-fix option for import fixes (#20839) (Marcell Toth)
  • 32a3706 linter/eslint-vitest-plugin: Implements require-test-timeout rule (#20806) (Said Atrahouch)
  • ae03653 linter: Implement suggestion for eslint/no-useless-computed-key rule (#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-times compatible 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-keys in 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_COLOR env for format=stylish (#20804) (Sysix)
  • d89ae8f linter/plugins: Patch WeakMap to emulate WeakMaps keyed by sourceCode (#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 after hook is always called in ESLint compat mode (#20721) (overlookmotel)
  • 31145a9 linter/plugins: Fire after hook after CFG events in ESLint compat (#20720) (overlookmotel)
  • c09a5ab diagnostics: Skip minified fallback for single-line reporters (#20716) (camc314)
  • e4dc9a1 linter: Isolate --init config 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

  • 6ef440a oxfmt: Support bool for object style options (#20853) (leaysgur)
  • 23050fa oxfmt: Support markdown-in-js substitution (#20683) (leaysgur)
  • 4087295 oxfmt: Support angular-in-js substitution (#20676) (leaysgur)

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)