Skip to content

Releases: oxc-project/oxc

oxlint v1.38.0 & oxfmt v0.23.0

06 Jan 10:25
f3767ea

Choose a tag to compare

Table of Contents

Oxlint v1.38.0

Oxfmt v0.23.0

🚀 Features

  • a19cc93 oxfmt: Add debug logging to oxfmt LSP to troubleshoot resolved options at runtime (#17695) (Nicholas Rayburn)

🐛 Bug Fixes

  • 3b4aced formatter: Should not treat multi-type arguments of TSTypeReference as a complex type (#17708) (Dunqing)
  • dcfdd41 formatter: Should not set up tailwindcss callback when no tailwindcss configuration is set (#17696) (Dunqing)
  • 6f65901 formatter: Return original classes when there are no tailwindcss classes sort callback (#17689) (Dunqing)

⚡ Performance

  • c6a99fd formatter: Don't call sort_tailwind_classes if no classes need to be sorted (#17698) (Dunqing)

oxc crates_v0.107.0

05 Jan 13:57
811b2a7

Choose a tag to compare

🚀 Features

  • 659c23e linter: Init note field boilerplate (#17589) (Shrey Sudhir)
  • 6870b64 parser: Add TS1363 error code (#17609) (Sysix)
  • 23680a3 mangler: Skip mangling only in scopes affected by direct eval (#17612) (camc314)
  • a7e1643 parser: Add TS2528 error code to duplicate_default_export diagnostic (#17558) (camc314)

🐛 Bug Fixes

  • 1044116 ecmascript: Mark new Symbol as non side-effect free (#17568) (camc314)
  • ab5e4ca isolated-declarations: Strip default values from rest parameter binding patterns (#17602) (camc314)
  • 68b2e54 minifier: Prevent incorrect ??= transformation when member base is mutated (#17472) (copilot-swe-agent)

⚡ Performance

  • 6067143 semantic: Remove hash when checking identifier (#17564) (camchenry)
  • a28ab3d semantic: Avoid bounds check when checking string literal (#17545) (camc314)
  • 04809d1 semantic: Use SIMD for finding backslashes in check_string_literal (#17534) (camchenry)
  • 49ad2f0 semantic: Mark all diagnostic functions as #[cold] (#17487) (camc314)
  • ea82b50 transformer: Mark all diagnostic functions as #[cold] (#17486) (camc314)
  • d968e51 semantic: Mark checker::check as inline(always) (#17459) (camc314)

oxlint v1.37.0 & oxfmt v0.22.0

05 Jan 14:23
186a347

Choose a tag to compare

Table of Contents

Oxlint v1.37.0

💥 BREAKING CHANGES

  • f7da875 oxlint: [BREAKING] Remove oxc_language_server binary (#17457) (Boshen)

🚀 Features

  • 659c23e linter: Init note field boilerplate (#17589) (Shrey Sudhir)
  • 6870b64 parser: Add TS1363 error code (#17609) (Sysix)
  • 6154c8c linter/eslint-plugin-vitest: Implemented vitest/warn-todo rule (#17228) (Said Atrahouch)
  • 0043cd6 linter/eslint-plugin-vitest: Implement consistent-vitest-vi rule (#17389) (Said Atrahouch)
  • a6d773d linter: Add full TS support to eslint/no-useless-constructor (#17592) (camc314)
  • f02c0e7 linter/eslint: Implement complexity (#17569) (Nguyen Tran)
  • bc7aae7 linter/no-unused-vars: Add fixer to remove unused catch bindings (#17567) (Don Isaac)
  • 9e8ec78 linter/only-throw-error rule: Add allowRethrowing option for (#17554) (camc314)
  • b67e819 linter: Add fixer for unicorn/prefer-response-static-json rule (#17559) (Mikhail Baev)
  • 44b0361 linter/vue: Implement no-this-in-before-route-enter (#17525) (yefan)
  • ee34716 linter/react: Implement no-will-update-set-state (#17530) (Kenzo Wada)
  • 3088e1d linter/react: Implement no-this-in-sfc (#17535) (Kenzo Wada)
  • 29a2868 linter/jsx-a11y: Implement no-static-element-interactions (#17538) (Kenzo Wada)
  • eadf057 linter: Enable tsconfig auto discovery by default (#17489) (Boshen)
  • 12a7d6e website_linter: Add a count of rules with fixes available to rules table. (#17476) (Connor Shea)

🐛 Bug Fixes

  • 77ccfe5 linter/no-standalone-expect: Support it.fails and test.fails (#17668) (Copilot)
  • b90243c linter/capitalized-comments: Handle URLs in multiline block comments correctly (#17664) (Copilot)
  • a702f13 oxlint/lsp: Correct position for "disable for this file" with shebang (#17613) (Sysix)
  • 19fdfb6 linter: Panic in sort-keys rule with Unicode numeric characters (#17629) (Adel Rodríguez)
  • 2e8f469 vscode: Search for node_modules/.bin/oxlint.exe too (bun setup) (#17597) (Sysix)
  • be39906 linter/aria-proptypes: Allow template literals with expressions for string-type ARIA props (#17460) (Jökull Sólberg Auðunsson)
  • 529901c linter: Include JS plugin rules when calculating total rule count (#17520) (connorshea)
  • 96ef2cc linter: Print total rule # when using a single nested config (#17517) (connorshea)
  • 9ad0f29 oxlint: Do not enable external plugin store when no external linter is passed (#17498) (Sysix)
  • 174375d oxfmt,oxlint: Disable mimalloc for 32-bit Arm targets (#17473) (Yaksh Bariya)
  • ff70fe9 linter/no-standalone-expect: Allows expect in wrapper functions passed to test blocks (#17427) (Copilot)
  • dab232f linter/catch-or-return: Handle arrow functions with implicit returns correctly (#17440) (Copilot)
  • a38892a linter: Update no-unnecessary-template-expression docs and test case (#17453) (camc314)

⚡ Performance

  • edbfdb9 linter/capitalized-comments: Use trim_start over trim (#17671) (camc314)
  • 605dbf1 vscode: Restrict searching for oxlint/oxfmt binaries only 3 levels deep + 10s timeout (#17345) (Sysix)

📚 Documentation

  • 884fb63 linter/react: Improve docs for jsx-curly-brace-presence (#17579) (connorshea)
  • 1d3ee07 linter: Improve rule explanation for vue/no-this-in-before-route-enter. (#17581) (connorshea)
  • 5f189f8 linter/arrow-body-style: Correctly document default mode option (#17566) (Rägnar O'ock)
  • bb2e8e4 linter: Add a note to the typescript/no-var-requires rule about the missing allow option (#17551) (connorshea)
  • 655afc1 linter: Improve docs for import/extensions and add a few more tests (#17539) (connorshea)
  • 7e5fc90 linter: Update list of plugins that are reserved. (#17516) (connorshea)

Oxfmt v0.22.0

💥 BREAKING CHANGES

  • f7da875 oxlint: [BREAKING] Remove oxc_language_server binary (#17457) (Boshen)

🚀 Features

  • a680d99 formatter: Support migration of prettier-plugin-tailwindcss in --migrate:prettier (#17652) (Dunqing)
  • c20ef0c formatter: Add TailwindCSS support for non-JS/TS files (#17648) (Dunqing)
  • 26ed46b formatter: Add TailwindCSS support for JS/TS files (#16990) (Dunqing)
  • 8fd4ea9 oxfmt: options.embeddedLanguageFormatting is now "auto" by default (#17649) (leaysgur)

🐛 Bug Fixes

  • f60a4d8 formatter: Should not hug the type literal when its parent param has an initialzier (#17660) (Dunqing)
  • c9b5d7d formatter/sort_imports: Handle alignable_comment correctly (#17646) (leaysgur)
  • 453222d formatter: Missing comment handling for end-of-line comments in member chains (#17659) (Dunqing)
  • 0805ff2 formatter: Incorrect inline comment placement in try-catch (#17657) (Dunqing)
  • 3a0c782 formatter: Don't move comments into optional call parentheses (#17582) (magic-akari)
  • 174375d oxfmt,oxlint: Disable mimalloc for 32-bit Arm targets (#17473) (Yaksh Bariya)

⚡ Performance

  • abb28dc oxfmt: Turn of pretty print from sort-package-json (#17452) (Boshen)

oxc crates_v0.106.0

29 Dec 09:21
9ec9340

Choose a tag to compare

🚀 Features

  • 5f963dd allocator/bitset: Add clear method to reset all bits (#17380) (camc314)
  • 289bff7 transformer: Export ESFeature from options (#17347) (shulaoda)
  • e031056 codegen: Add sourcemap feature flag (#17305) (Boshen)
  • 8e4409a minifier: Add invalid_import_side_effects option (#17300) (sapphi-red)
  • 4ac23e1 parser: Produce syntax error for ({ foo(bar) }) (#17267) (Boshen)
  • a15e183 parser: Change span for missing initializer in decleration (#17134) (camc314)
  • 3ee71b0 parser: Add diagnostic for parameters with question mark and initializer (#17132) (camc314)

⚡ Performance

  • 5fa85be semantic: Remove enter_kind (#17439) (camc314)
  • 19b437b semantic: Inline enter_kind for ContinueStatement (#17436) (camc314)
  • d66a691 semantic: Inline enter_kind for BreakStatement (#17435) (camc314)
  • 4a9b302 semantic: Inline enter_kind CFG statement handling (#17433) (camc314)
  • d08356e semantic: Inline enter_kind for TSTypeReference (#17432) (camc314)
  • ea2d639 semantic: Inline enter_kind for TSClassImplements (#17431) (camc314)
  • e862cac semantic: Inline enter_kind for TSInterfaceHeritage (#17430) (camc314)
  • 50bd7de semantic: Inline enter_kind for CallExpression (#17429) (camc314)
  • 7dff312 semantic: Inline enter_kind for YieldExpression (#17428) (camc314)
  • dff229c semantic: Inline enter_kind for IdentifierReference (#17422) (camc314)
  • 3352e6c semantic: Inline enter_kind for TSTypeQuery (#17421) (camc314)
  • 8e803ca semantic: Inline enter_kind for TSPropertySignature (#17420) (camc314)
  • 739ed7c semantic: Inline enter_kind for TSTypeParameter (#17419) (camc314)
  • c4ae687 semantic: Inline enter_kind for TSEnumMember (#17418) (camc314)
  • 4c845a3 semantic: Inline enter_kind for TSEnumDeclaration (#17417) (camc314)
  • 83cc44d semantic: Inline enter_kind for TSInterfaceDeclaration (#17414) (camc314)
  • dc35189 semantic: Inline enter_kind for TSTypeAliasDeclaration (#17413) (camc314)
  • 722fffa codegen: Restructure print_comments to avoid index comparisons in loop (#17402) (camc314)
  • 7ec39d0 codegen: Use print_ascii_byte in more places (#17401) (camc314)
  • 510ec00 codegen: Avoid allocation in PrivateIdentifier gen when not mangling (#17395) (camc314)
  • d2afdcf semantic: Inline enter_kind for TSModuleDeclaration (#17405) (camc314)
  • 1bda570 semantic: Inline enter_kind for CatchParameter (#17404) (camc314)
  • 7284b76 semantic: Inline enter_kind for FormalParameterRest (#17403) (camc314)
  • 585ddf8 semantic: Inline enter_kind for FormalParameter (#17400) (camc314)
  • eacd876 semantic: Inline enter_kind for BindingRestElement (#17399) (camc314)
  • adc657a semantic: Inline enter_kind for PrivateIdentifier (#17398) (camc314)
  • 6e9d26b semantic: Inline enter_kind for ClassBody (#17397) (camc314)
  • d930962 semantic: Inline enter_kind for VariableDeclarator (#17396) (camc314)
  • 900d42d semantic: Inline enter_kind for TSImportEqualsDeclaration (#17394) (camc314)
  • f3afe57 semantic: Inline enter_kind for ImportNamespaceSpecifier (#17393) (camc314)
  • 19392df semantic: Inline enter_kind for ImportDefaultSpecifier (#17392) (camc314)
  • 22d46d0 semantic: Inline enter_kind for ImportSpecifier (#17391) (camc314)
  • e073925 mangler: Early exit in liveness walk when scope already marked live (#17382) (camc314)
  • 50f0ddd mangler: Optimize slot assignment with pre-computed ancestor sets (#17379) (camc314)
  • c3ff642 mangler: Avoid ToString allocations (#17378) (camc314)
  • 3886ddc semantic: Use match_module_declaration! macro instead of match guard (#17184) (camc314)
  • 605a290 semantic: Use swap_remove instead of into_iter().next() in into_root (#17183) (camc314)
  • 315c9ed semantic: Use split_at_mut instead of iterator in current_and_parent_mut (#17182) (camc314)
  • e35049b transformer: Avoid unneccessary vec allocation (#17270) (camc314)

📚 Documentation

  • 1005c0a ast: Fix docs for AssignmentPattern in BindingPattern enum (#17309) (camc314)

oxlint v1.36.0 & oxfmt v0.21.0

29 Dec 09:53
8e83df2

Choose a tag to compare

Table of Contents

Oxlint v1.36.0

🚀 Features

  • 5988dfa vscode: Show language server version inside sidebar status item tooltip (#17360) (Sysix)
  • 71ead34 linter/no-nonoctal-decimal-escape: Implement suggestion (#17319) (GRK)
  • d9aa426 vscode: Support diagnostic pull mode (#17211) (Sysix)
  • 220e8e8 oxlint/lsp: Support textDocument/diagnostic (#17209) (Sysix)
  • 267e255 linter/react: Implement react/no-did-mount-set-state (#17313) (Kenzo Wada)
  • c813582 linter/react: Implement react/jsx-max-depth (#17279) (Kenzo Wada)
  • 94a482b linter/node: Implement n/global-require (#17283) (Mikhail Baev)
  • 5cc7c90 linter/plugins: Pass env from Rust to JS (#17291) (overlookmotel)
  • ed79fca linter/eslint-plugin-vitest: Implement consistent-test-filename (#17284) (Said Atrahouch)
  • e031056 codegen: Add sourcemap feature flag (#17305) (Boshen)
  • b97101a linter: Implement aria/proptypes (#17253) (mehm8128)
  • a5ef127 linter: Auto-fixer for prefer-destructuring (#17235) (Hamir Mahal)

🐛 Bug Fixes

  • 786a505 lsp: Fmt.configPath empty string handling (#17425) (copilot-swe-agent)
  • 97aef58 language_server: Treat empty string config path as None in language server (#17415) (copilot-swe-agent)
  • fec2863 linter: Respect .gitignore regardless of if a git repo is initialized (#17375) (copilot-swe-agent)
  • b7e8bca lsp: Do not sent de-registrations for watched files on shutdown request (#17318) (Sysix)
  • c6690d1 rust: Remove unsupported tokio io-std feature for WASM compatibility (#17311) (Boshen)
  • 7eaa660 linter/plugins: Set up global scope correctly (#17293) (overlookmotel)
  • 79b83b0 linter/no-unused-vars: Handle non-null assertion in update expressions (#17281) (camc314)
  • b547335 linter/import-first: Correctly respect all relative path imports (#17268) (Mohit Karekar)

⚡ Performance

  • c27514c linter/only-used-in-recursion: Improve skip_to_next_char slicing (#17374) (camchenry)
  • eecee5d linter: Inline is_function_node into run functions (#17373) (camchenry)
  • d2abc78 linter: No-multi-str: skip searching strings when in jsx attribute (#17327) (camchenry)
  • 687ffd6 linter: Jest/no-confusing-set-timeout: do not lowercase import name (#17324) (camchenry)

📚 Documentation

  • e8444bf linter: Fix grammar and typos in consistent_test_filename rule (#17359) (camc314)

Oxfmt v0.21.0

🚀 Features

  • 4df8063 oxfmt: Respect .gitignore in sub directries (#17352) (leaysgur)
  • 7c3dae3 formatter: Support Vitest test functions (#17340) (leaysgur)
  • b00da37 formatter: Normalize line break for directive (#17303) (Dunqing)

🐛 Bug Fixes

  • 1bf0ffc formatter: Incorrect JSX text wrapping when the expression container is an arrow function that will break (#17445) (Dunqing)
  • 42ad9d6 formatter: JSXFragment missed a leading semicolon when semicolon is disabled (#17386) (Dunqing)
  • c8c5341 formatter: Complete is_complex_type_arguments() (take2) (#17362) (leaysgur)
  • 745bc5d formatter: Do not consider rest param as simple (#17354) (leaysgur)
  • e836f37 formatter: Fix Deno() to not detect as test functions (#17339) (leaysgur)
  • 09848b3 formatter: Handle more test functions (#17337) (leaysgur)
  • a55bfc1 formatter: Count emoji sequences correctly (#17331) (leaysgur)
  • c6690d1 rust: Remove unsupported tokio io-std feature for WASM compatibility (#17311) (Boshen)
  • 0a39cba oxfmt: Update wrong doc comment (#17288) (leaysgur)
  • 2d556cb formatter: Should treat TSMappedType as a complex type in assignment-like formatting (#17257) (Dunqing)
  • fa5cef3 formatter: Shouldn't treat TaggedTemplateExpression as a simple argument in the member chain (#17256) (Dunqing)
  • 6ad3951 formatter: Trailing comments of JSX in call arguments are moved out the of call (#17255) (Dunqing)

oxc crates_v0.105.0

22 Dec 12:45
Immutable release. Only release title and notes can be modified.
0637049

Choose a tag to compare

🚀 Features

  • d99134d parser: Improve diagnostic message for phase imports (#17092) (camc314)
  • 36e08ef data_structures: Implement conversion traits for stack types (#17141) (overlookmotel)
  • 0e177f4 data_structures: Implement Send and Sync for stack types (#17135) (overlookmotel)
  • cdb6345 minifier: Remove unused import source/defer statements (#17085) (camc314)
  • 3e2ae7b regular_expression: Improve error messages (#16953) (sapphi-red)

🐛 Bug Fixes

  • ab43454 minifier: Preserve sideeffects of destructuring arguments in non-strict mode (#17249) (sapphi-red)
  • 5595642 minifier: Avoid arguments copy loop transformation in arrow functions (#17248) (sapphi-red)
  • f0ad6b7 minifier: Preserve sideeffectful destructing delcaration for array and object destruction (#17074) (Armano)
  • e08fdf1 linter/plugins: Include hashbang in comments (#17231) (overlookmotel)
  • 76b1dc7 minifier: Avoid incorrect logical assignment transformation when base object may be mutated (#16802) (camc314)
  • adb41ba allocator: AllocatorPool do not consume all memory on Windows (#17094) (overlookmotel)
  • b87600a allocator: Fix potential deadlock in FixedSizeAllocatorPool (#17112) (overlookmotel)

⚡ Performance

  • 14e5016 transformer/enum: Avoid cloning HashMap in IdentifierReferenceRename (#17210) (camc314)
  • 5aefb84 linter/plugins: Reduce size of walker code (#17176) (overlookmotel)
  • cee4a6c allocator: Use Stack in AllocatorPools (#17136) (overlookmotel)
  • eeeb53a semantic: Remove leave_kind (#17145) (camc314)
  • 009256e semantic: Inline leave_kind for TSPropertySignature (#17144) (camc314)
  • 2943e4d semantic: Inline leave_kind for TSTypeQuery (#17143) (camc314)
  • 2e65ac0 semantic: Inline leave_kind for CatchParameter (#17142) (camc314)

oxlint v1.35.0 & oxfmt v0.20.0

22 Dec 10:05
Immutable release. Only release title and notes can be modified.
1307b7b

Choose a tag to compare

Table of Contents

Oxlint v1.35.0

🚀 Features

  • d913f87 linter/plugins: Implement code path analysis (CFG) (#17229) (overlookmotel)
  • 33b4e63 linter/plugins: Support more selector classes in visitor (#17219) (overlookmotel)
  • 951a2a2 linter: Implement vue/no-deprecated-destroyed-lifecycle (#17119) (Tu Shaokun)
  • 9348f10 linter: Implement eslint/max-statements (#15804) (Pascal Chorus)
  • b2b87c6 linter/plugins: Add getRange and getLoc methods to SourceCode (#17179) (overlookmotel)
  • 0f63e75 linter: Implement react/no-unsafe (#16532) (Kenzo Wada)
  • 9e624c9 linter/react: Add version to ReactPluginSettings (#17169) (camc314)
  • 563b039 linter/plugins: Add SourceCode#getLines method (#17177) (overlookmotel)
  • ffc1674 linter: Add suggestion fix for unicorn/require-module-attributes (#17168) (camc314)
  • 16d9dc2 linter: Implement vitest/prefer-called-times (#17051) (秦宇航)
  • 30fb206 linter: Add unicorn/require-module-attributes rule (#17166) (Mikhail Baev)
  • 5b5f2fd linter/no-base-to-string: Add checkUnknown option (#17139) (camc314)
  • d03b855 linter/no-unsafe-member-access: Add allowOptionalChaining option (#17138) (camc314)
  • b86a134 linter/no-unnecessary-type-assertion: Add checkLiteralConstAssertions option (#17137) (camc314)
  • 09e8e31 linter: Implement unicorn/no-immediate-mutation rule (#17118) (Tu Shaokun)
  • 3e2ae7b regular_expression: Improve error messages (#16953) (sapphi-red)

🐛 Bug Fixes

  • e08fdf1 linter/plugins: Include hashbang in comments (#17231) (overlookmotel)
  • a3d203b linter/plugins: Make node, token, and comment objects have Object.prototype in prototype chain (#17220) (overlookmotel)
  • 6f753a8 linter/plugins: Fix :function selector class (#17218) (overlookmotel)
  • 4027039 linter/plugins: Reset ancestors if error during AST walk (#17207) (overlookmotel)
  • 376caf1 linter: Improve the error message for when the oxlint config file is invalid. (#17196) (connorshea)
  • c95a0ec linter: valid-title: fix diagnostic quoted in strings (#17180) (camchenry)
  • c08e6df linter/exhaustive-deps: Fix fixer incorrectly adding property chain from destructuring pattern (#17167) (camc314)
  • 5a7fcd1 linter/no-unused-vars: Correctly detect unused symbols in TypeScript namespaces (#17129) (camc314)
  • 2c45017 linter: Resolve import/extensions false positives and align with ESLint behavior (#14602) (Tyler Earls)
  • fc6e715 vscode: Lsp server path in quotes (only windows) (#17126) (Sysix)
  • aba2795 linter/no-single-promise-in-promise-methods: Preserve array structure in fixer for Promise.all (#17128) (camc314)
  • bfd4a1e linter/no-unused-private-class-members: Handle sequence expression correctly (#17127) (camc314)

⚡ Performance

  • b8e321c linter/curly: Remove iterating on all nodes (#17223) (camc314)
  • c48c406 linter/curly: Avoid additional parent AST lookup (#17222) (camc314)
  • 78df915 linter: Avoid multiple to_string_lossy calls in loop (#17212) (overlookmotel)
  • 5aefb84 linter/plugins: Reduce size of walker code (#17176) (overlookmotel)

📚 Documentation

  • c14afd3 editor: Improve description for 'no-unused-disable-directives' settings options (#17236) (connorshea)
  • e14db66 linter: Ensure that the docs render default values for various rules that use enum config options (#17192) (connorshea)
  • 9b10c80 linter: Fix/improve the configuration docs for no-unused-vars (#17188) (connorshea)
  • e7d8c88 linter: Improve the react/no-unsafe rule's config docs. (#17194) (connorshea)
  • 1714719 linter/plugin: Correct doc comment on getNodeLoc function (#17178) (overlookmotel)
  • c7cbe69 linter: Improve the documentation for the import/extensions rule. (#17162) (connorshea)

Oxfmt v0.20.0

🚀 Features

  • 97a02d1 oxfmt: Add insertFinalNewline option (#17251) (leaysgur)
  • a3f3c58 oxfmt: Support TOML(v1.0 only) files (#17113) (leaysgur)

🐛 Bug Fixes

  • c83f90c formatter: Should expand call arguments group when the argument will break (#17254) (Dunqing)
  • def4ec1 formatter: Wrongly added an indentation for an union type when there is a leading line comment (#17252) (Dunqing)
  • 15e2d37 formatter: Diff with Prettier on hook with spread arguments function (#17246) (Dunqing)
  • 1921b85 formatter: Shorthand property broken with consistent quote props (#17245) (Dunqing)
  • 6d03edd formatter: Method signature missed a semicolon when it is on the same line with a property (#17243) (Dunqing)
  • 7b810f4 oxfmt: Use correct root dir with ignore and overrides for nested cwd (#17244) (leaysgur)
  • cdb80d4 oxfmt: Resolve .editorconfig root dir from cwd (#17093) (leaysgur)

oxc crates_v0.104.0

19 Dec 02:19
Immutable release. Only release title and notes can be modified.
c90ab78

Choose a tag to compare

🚀 Features

  • d209c21 allocator: Add cap to FixedSizeAllocatorPool and block when exhausted (#17023) (Cameron)
  • fb2af91 allocator: Add bitset utils (#17042) (zhaoting zhou)
  • c16082c tasks/compat_data: Integrate node-compat-table (#16831) (Boshen)
  • 5586823 span: Extract TS declaration file check to its own function (#17037) (camchenry)
  • 3d2b492 minifier: Fold iife arrow functions in call expressions (#16477) (Armano)
  • 67e9f9e codegen: Keep comments on the export specifiers (#16943) (夕舞八弦)
  • cb515fa parser: Improve error message for yield as identifier usage (#16950) (sapphi-red)
  • dcc856b parser: Add help for new_dynamic_import error (#16949) (sapphi-red)
  • c3c79f8 parser: Improve import attribute value error message (#16948) (sapphi-red)
  • 291b57b ast_tools: Generate TS declaration files for deserializer and walk files (#16912) (camc314)
  • 74eae13 minifier: Remove unused import specifiers (#16797) (camc314)

🐛 Bug Fixes

  • fb9e193 linter: OOM problems with custom plugins (#17082) (overlookmotel)
  • e59132b parser/napi: Fix lazy deser (#17069) (overlookmotel)
  • a92faf0 ast_tools: Support u128 in assert_layouts generator (#17050) (overlookmotel)
  • 47b4c2f minifier/docs: Correct hyperlink path in OPTIMIZATIONS.md (#16986) (GRK)
  • 3002649 transformer/typescript: Remove unused import equals declaration (#16776) (Dunqing)
  • 5a2af88 regular_expression: Correct named capture group reference error (#16952) (sapphi-red)

⚡ Performance

  • 3c39d46 allocator: Hold Mutex lock for shortest possible time in FixedSizeAllocatorPool (#17099) (overlookmotel)
  • b657bb6 allocator: Reduce time Mutex lock is held in FixedSizeAllocatorPool::get (#17079) (overlookmotel)
  • 1f3b19b ast: #[ast] macro use #[repr(transparent)] for single-field structs (#17052) (overlookmotel)
  • 225f229 parser: Use SmallVec for duplicate default export detection (#16801) (camc314)

📚 Documentation

  • a9c419f traverse: Update safety comments (#16944) (overlookmotel)

oxlint v1.34.0 & oxfmt v0.19.0

19 Dec 02:44
Immutable release. Only release title and notes can be modified.
2804276

Choose a tag to compare

Table of Contents

Oxlint v1.34.0

🚀 Features

  • 6cc3fdf linter/no-inferrable-types: Implement fixer (#17090) (camc314)
  • 2067997 linter/no-negation-in-equality-check: Implement suggestion (#17084) (camc314)
  • 552f9ef vscode: Auto-generate VSCode README configuration from package.json (#16970) (Copilot)
  • 9190c4b linter/no-unnecessary-array-flat-depth: Implement fixer (#17057) (camc314)
  • ed789de linter/misrefactored-assign-op: Implement fixer (#17056) (camc314)
  • a0f74a0 linter/config: Allow aliasing plugin names to allow names the same as builtin plugins (#15569) (Cameron)
  • a43d251 linter/plugins: RuleTester support languageOptions.globals (#17009) (overlookmotel)
  • 35070d9 linter/bad-bitwise-operator: Implement fixer (#17006) (camc314)
  • 322d995 linter/prefer-enum-initializers: Implement fixer (#17004) (camc314)
  • ae1e5bc vscode: Add support for tsgolint binary configuration (#16921) (ColemanDunn)
  • 3bfe31e linter/eslint-plugin-vitest: Add prefer-called-with as vitest compatible jest rule (#16993) (Said Atrahouch)
  • 0cd075f linter/eslint-plugin-jest: Add fix capabilities to prefer-called-with rule (#16987) (Said Atrahouch)
  • 357564b linter: Add options for typescript/require-array-sort-compare rule. (#16980) (connorshea)
  • 2b0ffba linter: Add options for typescript/no-meaningless-void-operator rule. (#16981) (connorshea)
  • 8bc4287 linter/plugins: Validate options against schema (#16974) (overlookmotel)
  • fdc7d08 linter: Implement eslint/capitalized-comments (#16896) (Tu Shaokun)
  • f8b6561 linter: Add support for test.for in vitest (#16925) (camchenry)
  • 7ee0379 linter/eslint-plugin-vitest: Implement prefer-spy-on (#16426) (Said Atrahouch)
  • fc96ee0 linter: Implement jest/prefer-to-have-been-called-times (#16938) (秦宇航)
  • 291b57b ast_tools: Generate TS declaration files for deserializer and walk files (#16912) (camc314)
  • e31da2a linter: Implement jest/perfer-to-have-been-called (#16899) (秦宇航)
  • 1a31306 linter/eslint-plugin-vitest: Add require-hook as vitest compatible jest rule (#16880) (Said Atrahouch)
  • cd3db21 linter: Add ignoredTypeNames option to no-base-to-string rule (#16898) (camc314)
  • 763b25a linter: Implement eslint/no-inline-comments (#16885) (Tu Shaokun)

🐛 Bug Fixes

  • fb9e193 linter: OOM problems with custom plugins (#17082) (overlookmotel)
  • 005ec25 linter: Permit $schema .oxlintrc.json struct (#17060) (Copilot)
  • fd03131 linter/plugins: Handle plugin names containing slashes (#17073) (overlookmotel)
  • b2a4fac linter/plugins: Error if plugin name alias is not normalized (#17071) (overlookmotel)
  • e046c4e linter/no-misused-spread: Add rule options support (#17054) (camc314)
  • 5c1a9e0 linter/no-deprecated: Add rule options support (#17053) (camc314)
  • 8c9cafe linter: import/consistent-type-specifier-style: add support for declaration files (#16979) (camchenry)
  • dab4780 linter/no-empty-pattern: Misleading help message for arrays (#17039) (Copilot)
  • 67f8c5d linter/plugins: Get correct plugin name in all cases (#17033) (overlookmotel)
  • 674dab9 linter/plugins: Fix indentation in error message (#17018) (overlookmotel)
  • 6524f72 linter/plugins: Add @types/node dev dependency to oxlint package (#17016) (overlookmotel)
  • 7a35513 linter/plugins: Better error for null in globals in RuleTester (#17011) (overlookmotel)
  • 42603ba linter/plugins: Always define languageOptions.globals (#17008) (overlookmotel)
  • 4cdc2f8 linter: Fix VITEST override rule list and add test for alphabetizing the two lists (#16975) (Connor Shea)
  • e466562 linter/consistent-type-definitions: Handle parenthesized types in rule (#16998) (camc314)
  • fce267c linter: Correct vitest plugin source to be @vitest/eslint-plugin (#16976) (connorshea)
  • 477bb57 linter: Fix vitest/no-restricted-vi-methods and add tests for it. (#16971) (connorshea)
  • 7d6974d linter: Ignore oxlint directive comments in capitalized-comments (#16989) (Tu Shaokun)
  • 23ac6b1 linter/plugins: Apply defaults from meta.schema to options (#16930) (overlookmotel)
  • 2f946cf linter/plugins: Error if defaultOptions is not JSON-serializable (#16959) (overlookmotel)
  • d8b8a57 linter/plugins: Freeze whole of merged options (#16958) (overlookmotel)
  • d446c43 linter: Prevent extra fields from being present on oxlint config file (#16874) (connorshea)
  • b845871 linter/plugins: Correctly handle object with __proto__ keys in options merging (#16928) (overlookmotel)
  • c897794 linter: Fix eslint/sort-imports allowSeparatedGroups not working with single empty line (#16012) (Duc Nghiem Xuan)
  • 0c347a1 linter/array-type: Handle satisfies expression (#16903) (camc314)

⚡ Performance

  • 70d853c linter: Avoid cloning source text when cloning AST into fixed-size allocator (#17088) (overlookmotel)
  • 4d389f7 linter: Less bounds checks in normalize_plugin_name (#17030) (overlookmotel)
  • fd8e9c6 linter/plugins: Speed up cloning JSON objects (#16997) (overlookmotel)
  • d77e22d linter/plugins: Use DEFAULT_OPTIONS for rules with empty array as default options (#16913) (overlookmotel)

📚 Documentation

  • 6d053b4 linter: Fix typo in doc comment (#17091) (overlookmotel)
  • b5f3c91 linter: Document intentional exclusion of ignoreCase option in jsx-no-duplicate-props (#17046) (Copilot)
  • a0bf5d8 linter: Fix the config option docs for no-inline-comments rule. (#16983) (connorshea)
  • ca26a11 linter/plugins: Fix typo in doc comment (#16966) (overlookmotel)
  • 3183bf8 linter/plugins: Fix typo in JSDoc comment (#16900) (overlookmotel)

Oxfmt v0.19.0

🚀 Features

  • 15dfb55 oxfmt: Respect single nearest .editorconfig (#17043) (leaysgur)
  • 8c33ff4 oxfmt: Expose Node.js API: format(fileName, sourceText, options?) (#16939) (leaysgur)

🐛 Bug Fixes

  • d340c87 oxfmt: Update api FormatOptions type with & Record<string, unknown> (#17036) (leaysgur)
  • 827a256 oxfmt: Place ignorePatterns at bottom of JSON in --migrate prettier (#16926) (Boshen)

oxc crates_v0.103.0

15 Dec 10:23
Immutable release. Only release title and notes can be modified.
e6ad960

Choose a tag to compare

💥 BREAKING CHANGES

  • 320c09f ast, parser, linter, codegen, formatter: [BREAKING] Rename CommentKind::Block to CommentKind::SinglelineBlock (#16501) (Dunqing)

🚀 Features

  • aafcf3e minifier: Remove empty [] and {} declaration (#16855) (Armano)
  • d221921 semantic: ScopeFlags::With (#16291) (Aapo Alasuutari)
  • 083e081 semantic: Add TS2670 error for global scope augmentation without declare modifier (#16746) (camc314)
  • 30a9076 ast, parser, codegen: Add CommentKind::MultilineBlock (#16479) (Dunqing)

🐛 Bug Fixes

  • d2f9461 minifier: Preserve classes with decorators (#16878) (Copilot)
  • 99c022e transformer: Revert "fix(transformer): validate JSX pragma values and reject invalid identifiers" (#16793) (Copilot)
  • cb88414 parser: Consume semicolon after let.x and let?.x (#16857) (Copilot)
  • d3208dc parser: Parse let?.x (#16840) (Copilot)
  • 250feb3 transformer: import.meta.foo.bar matches and replaces import.meta.bar (#16636) (秦宇航)
  • 92788c7 semantic: Add TS error code 1235 to namespace declaration diagnostic (#16747) (camc314)
  • 853c20d transformer: Validate JSX pragma values and reject invalid identifiers (#16675) (Copilot)
  • 0be98b9 semantic: Add TS1016 error code to required parameter after optional diagnostic (#16685) (camc314)
  • 75d489a semantic: Add TS error code to function implementation missing diagnostic (#16518) (camc314)
  • e4fad5e semantic: Add TS error code to constructor implementation missing diagnostic (#16517) (camc314)