Skip to content

Releases: oxc-project/oxc

oxc crates_v0.110.0

19 Jan 13:48
89de3a1

Choose a tag to compare

🐛 Bug Fixes

  • f1e2dc0 semantic: No error in check_function_redeclaration for CommonJS files (#18231) (overlookmotel)
  • 645c3f0 transformer: Use require not import in CommonJS files (#18226) (overlookmotel)
  • ee9f6a4 mangler: Use retain instead of truncate to remove empty frequency slots (#18225) (Dunqing)

⚡ Performance

  • 52073d9 semantic: Use cheaper test for source type (#18235) (overlookmotel)

oxc crates_v0.109.0

19 Jan 10:48
7282e9c

Choose a tag to compare

💥 BREAKING CHANGES

  • ba9c750 span: [BREAKING] Use ModuleKind::CommonJS for .cjs and .cts file extensions (#18117) (Boshen)
  • 9135b0b ast: [BREAKING] Move scope from TSEnumDeclaration to TSEnumBody (#18058) (Boshen)

🚀 Features

  • 8a1cbbd parser: Add syntax errors for constructor declarations (#18220) (Boshen)
  • e2221e6 semantic: Store scope_id in Reference (#18053) (Dunqing)
  • 6e8fa80 napi/parser, napi/transform: Accept sourceType: "commonjs" (#18197) (overlookmotel)
  • 175b73a parser: Add ts error 1257 for TSTupleElement (#18146) (Sysix)
  • fa2ffe2 parser: Add ts error 1266 for TSTupleElement (#18145) (Sysix)
  • acf1aba parser: Add ts error 1265 for TSTupleElement (#18144) (Sysix)
  • 830b757 regular_expression: Add Unicode 17.0 script properties (#18140) (Boshen)
  • 92e27b4 parser: Reparse await expressions in unambiguous mode when ESM detected (#18139) (Boshen)
  • 66b8c02 parser: Implement unambiguous module parsing for JS/TS files (#18124) (Boshen)
  • 08dad63 span: Add sourceType: 'commonjs' support (#18089) (Boshen)
  • 3f83ded traverse: Add into_state and into_state_and_scoping methods to ReusableTraverseCtx (#18010) (Cole Leavitt)
  • d1016b9 minifier: Do not flip if/else when it would produce longer result (#17556) (Armano)
  • 9c6e344 minifier: Prune empty case before trailing default (#17994) (Boshen)
  • 6b29bd1 semantic/example: Add detailed references info (#17938) (camc314)

🐛 Bug Fixes

  • 808b7c3 semantic: Resolve qualified names to namespaces, not shadowing type parameters (#17929) (camc314)
  • 1b199af semantic: Report TS18019 for abstract modifier with private identifier (#18173) (Boshen)
  • 37482eb parser: Respect optional TSNamedTupleMember for ts error 1266 &1257 (#18178) (Sysix)
  • 2c6966d parser: Correct precedence handling for private-in expression (#18169) (Boshen)
  • 38e4b53 minifier: Validate RegExp patterns before marking as pure (#18125) (Boshen)
  • 91126a0 parser: Reparse all statements with await identifier in unambiguous mode (#18163) (Boshen)
  • c98e5b7 parser: Parse for (using of = ...) as using declaration (#18142) (Boshen)
  • 01d7b13 oxc_minifier: Enable sourcemap feature in dev mode (#18131) (Armano)
  • fb181cc semantic: Error on using at top level in scripts (#18090) (Boshen)
  • 2aae4fc linter: Fix stack overflow in no-unreachable rule on large files (#18077) (Boshen)
  • f69b6da mangler: Reserve names from eval-containing scopes (#18037) (camc314)
  • c8f847e minifier: Preserve return value of @__PURE__ IIFE in return statements (#18036) (camc314)
  • ee353e6 minifier: Skip inlining constant in scopes with eval (#17926) (camc314)
  • 7a0ca99 linter/plugins: Use correct ScriptKind for tokens (#17185) (Peter Wagenet)
  • 4c16ae7 codegen: Remove spaces around = in minified type parameter defaults (#17989) (Boshen)
  • a412103 parser: Improve diagnostics for double export (#17992) (Boshen)
  • 06bd17b codegen: Remove unnecessary double parentheses from satisfies expressions (#17986) (Boshen)
  • 1874765 codegen: Fix inconsistent multiline EOF comment formatting (#17983) (Boshen)
  • 2619c66 codegen: Remove leading whitespace from export statements after comments (#17982) (Boshen)
  • 4d9582d semantic: Allow arguments/eval as binding identifier names and identifier reference names in .d.ts (#17910) (Dunqing)

⚡ Performance

  • 91c143f mangler: Remove frequencies items if they are unused (#18183) (Dunqing)
  • 9af52c6 mangler: Turn off scope_tree_child_ids for SemanticBuilder (#18122) (Dunqing)
  • 46cd73d allocator: Add #[cold] annotations to error handling functions (#18181) (Boshen)
  • 8da684e allocator: Type-erase RawVec::finish_grow inner function (#18175) (Boshen)
  • 837edf6 transformer/typescript: Reduce scope_id() calls (#18097) (overlookmotel)
  • 8ee6f80 transformer/tagged-template: Add #[cold] hint to unlikely path (#18034) (overlookmotel)
  • 23449e0 transformer/tagged-template-transform: Improve performance (#15834) (Dunqing)

📚 Documentation

  • 17406b6 traverse: Update comment (#18079) (overlookmotel)
  • 06a96da semantic: Document with statement limitation in is_global_reference (#17996) (Boshen)

oxlint v1.41.0 & oxfmt v0.26.0

19 Jan 18:52
8dea8d3

Choose a tag to compare

Table of Contents

Oxlint v1.41.0

⚡ Performance

  • 1a247f1 linter/no-redeclare: Avoid repeated PHF hashmap lookups (#18248) (overlookmotel)

📚 Documentation

  • 64459e5 linter: Update a handful of rules that were missing the "Why is this bad?" docs header. (#18263) (connorshea)
  • 8a294d5 oxfmt, oxlint: Update logo (#18242) (Dunqing)

Oxfmt v0.26.0

🐛 Bug Fixes

  • 864b4ab oxfmt: Use format_config for external_options override (#18252) (leaysgur)
  • 90ce4b7 oxfmt: Restore customGroups handling lost (#18243) (leaysgur)

📚 Documentation

  • 8a294d5 oxfmt, oxlint: Update logo (#18242) (Dunqing)

oxlint v1.40.0 & oxfmt v0.25.0

19 Jan 12:56
8fe1e8e

Choose a tag to compare

Table of Contents

Oxlint v1.40.0

💥 BREAKING CHANGES

  • ba9c750 span: [BREAKING] Use ModuleKind::CommonJS for .cjs and .cts file extensions (#18117) (Boshen)
  • 3a0a190 linter/plugins: [BREAKING] Prevent access to cwd in createOnce (#18081) (overlookmotel)
  • 9135b0b ast: [BREAKING] Move scope from TSEnumDeclaration to TSEnumBody (#18058) (Boshen)

🚀 Features

  • 7c86fc3 linter/plugins: Support commonjs source type in RuleTester (#18198) (overlookmotel)
  • 6e8fa80 napi/parser, napi/transform: Accept sourceType: "commonjs" (#18197) (overlookmotel)
  • 66b8c02 parser: Implement unambiguous module parsing for JS/TS files (#18124) (Boshen)
  • 08dad63 span: Add sourceType: 'commonjs' support (#18089) (Boshen)
  • b516088 linter: Implement rule option validation/error handling for jest/no-hooks and eslint/no-return-assign rules. (#17600) (connorshea)
  • 883f472 vscode: Change icon source (#17998) (Alexander Lichter)
  • e7631dd website: Update website generation flow for JSON rules output (#17973) (connorshea)
  • 1757251 linter: Update linter JSON rule output to include extra information. (#15763) (connorshea)
  • 1f3cdcd linter/no-useless-rename: Add automatic fix (#17951) (camchenry)
  • fe1444c linter/no-unused-vars: Improve fixer for unused imports (#17941) (camc314)
  • 251f301 linter/fixer: Expose find_next_token_within in fixer (#17942) (camc314)
  • f04aa60 linter/fixer: Expose find_next_token_from in fixer (#17940) (camc314)

🐛 Bug Fixes

  • 4d68448 linter/plugins: report accept out of range column indexes in loc (#18199) (overlookmotel)
  • a0b3721 linter: Move typescript/prefer-optional-chain to nursery for now. (#18147) (connorshea)
  • 8a2dabc linter/plugins: Rule tester default to module source type in ESLint compat mode (#18195) (overlookmotel)
  • a7e2eb2 vscode: Resolve binary paths with node resolver (#17970) (Sysix)
  • 5f98e1a linter: Update react/jsx-max-depth to raise an error if provided invalid config options. (#18105) (connorshea)
  • c7e7008 linter: Raise errors for invalid config on eslint/prefer-promise-reject-errors rule (#18103) (connorshea)
  • 618c629 linter/rules-of-hooks: Detect hook calls inside JSX render props (#17980) (LeeKangbok)
  • 121a239 linter: Sort paths by length instead of alphabetically for depth heuristic (#18084) (Boshen)
  • 6956543 linter: Fix LSP panic from stale directive spans (#18082) (Boshen)
  • 2aae4fc linter: Fix stack overflow in no-unreachable rule on large files (#18077) (Boshen)
  • 7a0ca99 linter/plugins: Use correct ScriptKind for tokens (#17185) (Peter Wagenet)
  • 2a397f8 oxlint/lsp: Don't send workspace/diagnostic/refresh notification on watched file changes (#17885) (Sysix)
  • 8deef41 linter/prefer-destructuring: Fix rule to exclude using and await using (#17952) (camchenry)
  • dbe06d8 linter/no-promise-executor-return: Check if Promise is the global one (#17949) (camchenry)
  • ad02e03 linter/no-await-in-loop: Add support for await using (#17947) (camchenry)
  • 63e2737 linter/no-import-node-test: Mark fixer as suggestion (#17925) (camc314)

📚 Documentation

  • 4afa5c8 linter: Cleanup docs for various rules for consistency. (#18214) (connorshea)
  • c1c152b linter: Fix formatting for empty-brace-spaces rule example. (#18203) (connorshea)
  • 7028745 linter: Fix formatting of JSON examples in filename-case rule docs. (#18202) (connorshea)
  • 926b7be linter: Fix a mistake in the documentation for prefer-ts-expect-error (#18201) (connorshea)
  • d51cb6c linter/plugins: Remove outdated comments (#18194) (overlookmotel)
  • 85a846c linter: Prefer enum docs over struct field docs for no-unused-vars (#18123) (Boshen)
  • d8f5c66 vcode: Add example for editor.formatOnSave with editor.formatOnSaveMode (#18126) (Sysix)
  • 5346fc9 editor: Update the README for the vscode extension to clarify experimental setting (#18048) (Connor Shea)
  • c2173a7 linter: Minor typo fix for nextjs rules. (#18018) (connorshea)
  • 132cc48 linter: Improve prefer-spread docs. (#17976) (connorshea)

Oxfmt v0.25.0

🚀 Features

  • a95b9bb oxfmt: Support oxfmtrc overrides config (#18068) (leaysgur)
  • 984d5c1 oxfmt/sort-imports: Support options.customGroups (#17576) (nilptr)
  • 66b8c02 parser: Implement unambiguous module parsing for JS/TS files (#18124) (Boshen)
  • fd2c792 formatter: Support css prop, styled jsx, and member/computed styled.tags (#17990) (magic-akari)
  • 361a8f1 oxfmt: Upgrade prettier to 3.8.0 (#18024) (Dunqing)
  • 873c683 oxfmt: Add more tracing logs (#18015) (Yuji Sugiura)
  • cc3e74b oxfmt: Add Prettier specific fields in Oxfmtrc (#17981) (leaysgur)
  • 6ffe315 oxfmt: Add more Oxfmtrc fields description (#17979) (leaysgur)
  • c4c55cc formatter: Add oxfmt-ignore ignore comment support (#17916) (Dunqing)

🐛 Bug Fixes

  • 73fedb9 oxfmt: Apply .editorconfig root section with oxfmtrc.overrides (#18210) (leaysgur)
  • 3e141f0 formatter: Normalize ChainExpression with TSNonNullExpression to match Prettier (#18061) (Boshen)
  • 9b902b6 formatter: Use soft indent for empty objects in JSX spread attributes (#18063) (Boshen)
  • 8da749b formatter: Allow parameters to break in angular test wrappers (#18060) (Boshen)
  • 125962d formatter: Fix 4 prettier conformance tests (#18057) (Boshen)
  • 2a397f8 oxlint/lsp: Don't send workspace/diagnostic/refresh notification on watched file changes (#17885) (Sysix)
  • efacb13 oxfmt: Do not wrap with block_indent() if format_embedded fails (#17975) (leaysgur)
  • bbadb8e oxfmt/sort-imports: Hard line inside multiline import leads to i… (#17880) (nilptr)
  • 9d0f551 oxfmt: Do not panic with subdirectry and config (#17955) (leaysgur)
  • 9d96cc6 oxfmt: Use std(out/err)._handle.setBlocking(true) to handle WouldBlock error in Rust (#17950) (leaysgur)

⚡ Performance

  • 138637c formatter: Use VecDeque for member chain groups (#18094) (Boshen)

oxc crates_v0.108.0

12 Jan 09:57
140cb1f

Choose a tag to compare

🚀 Features

  • 10426af codegen: Print soft space between inline block comments on the same line (#17799) (camc314)
  • 2261e6e semantic: Improve error message to add # for private identifiers (#17779) (Dunqing)

🐛 Bug Fixes

  • 7422b7e parser/trivia: Correctly mark whether a block comment is on a newline (#17754) (camc314)
  • c32e8d5 codegen: Wrap TSAsExpression in parens when used with in/instanceof operators (#17752) (camc314)
  • 5755b2d semantic: Report duplicate private identifier for static and instance elements (#17591) (camc314)
  • 0600df3 isolated_declarations: Only print jsdoc comments (#17748) (camc314)
  • ef7e014 parser: Preserve @__NO_SIDE_EFFECTS__ annotation with parenthesized expressions (#17711) (camc314)
  • 59a6228 parser: Detect TS1363 error for type-only imports with mixed default and named/namespace bindings (#17712) (Copilot)

⚡ Performance

  • 864f1fa semantic: Mark duplicate class element error reporting as cold (#17746) (camc314)
  • 3a452b8 semantic: Use smallvec for storing reference IDs (#17731) (camchenry)
  • d5979dc minifier: Do not allocate when checking to convert const to let (#17730) (camchenry)
  • 3f4429c parser: Do not re-allocate TS interface heritage (#17692) (camchenry)

📚 Documentation

  • 120a27c minifier: Add prettier-ignore for js-in-md part (#17687) (leaysgur)

oxlint v1.39.0 & oxfmt v0.24.0

12 Jan 10:17
b56d60f

Choose a tag to compare

Table of Contents

Oxlint v1.39.0

🚀 Features

  • 9699a1b linter/prefer-global-this: Add suggestion (#17873) (Mikhail Baev)
  • 51c2815 linter/no-invalid-regexp: Add labels and help text to flag diagnostics (#17865) (camchenry)
  • 344d77d linter/no-ex-assign: Improve diagnostic with more detail (#17864) (camchenry)
  • 7d280e0 linter: Add fixer for unicorn/no-useless-error-capture-stack-trace rule (#17839) (Mikhail Baev)
  • af1d0e3 linter/prefer-optional-chain: Add rule (#17831) (camc314)
  • e3c4108 vscode: Add more supported languages to extension (#17812) (Alexander Lichter)
  • 4a46678 vscode: Activate extension on more languages (#17717) (Sysix)
  • b1298fc vscode: Sync formatter with supported files (#17615) (Alexander Lichter)
  • c7f0848 linte/rno-required-prop-with-default: Implement suggestion (#17747) (Minsu Lee)
  • 0e8127e linter/vue: Implement no-lifecycle-after-await (#17701) (yefan)
  • 3567304 linter/vitest: Implement consistent-each-for (#17601) (Said Atrahouch)
  • 883e156 linter: Add fixer for unicorn/no-useless-collection-argument rule (#17594) (Mikhail Baev)
  • 4eb335c linter/vitest: Implemented prefer-called-once (#17674) (Said Atrahouch)
  • 2bd2d5a linter/vitest: Implement hoisted-apis-on-top (#17658) (Said Atrahouch)
  • cfb2bcc linter/vue: Implement no-arrow-functions-in-watch (#17672) (yefan)
  • a68208a linter/eslint-plugin-vitest: Implements prefer-describe-function-title (#17677) (Said Atrahouch)
  • efa029f linter/vitest: Implement no-unneeded-async-expect-function (#17494) (Minsu Lee)

🐛 Bug Fixes

  • 49cf66e lsp: Fix workspace worker selection for nested and similar-named workspaces (#17853) (Copilot)
  • 84f4f3c linter: Add doc url for tsgolint diagnostics (#17879) (Sysix)
  • 76c903f linter/consistent-indexed-object-style: Skip fixing default exported interface (#17874) (Copilot)
  • 7e87d16 linter/tabindex-no-positive: Improve diagnostic phrasing (#17849) (connorshea)
  • 28f9fba vscode: Fix nested search for binaries (#17832) (Sysix)
  • 8ca2cd2 linter: Move jsx-a11y/no-static-element-interactions rule to nursery. (#17818) (connorshea)
  • dc9fdd6 linter/consistent-indexed-object-style: Re-port test cases and fix some bugs (#17802) (camc314)
  • 7bbd880 linter: Update prefer-destructuring rule metadata (#17642) (Hamir Mahal)
  • 3c45185 linter/consistent-indexed-object-style: False positive with circular reference (#17789) (heygsc)
  • bd186b4 vscode: Search for oxlint and oxfmt in every workspace directory (#17760) (Sysix)
  • 3e0dff7 linter/no-hooks: Add punctuation to diagnostic message (#17751) (camc314)
  • 6ae21f9 linter/prefer-called-once: Avoid panic on trailing comma (#17735) (Said Atrahouch)
  • 32c3901 oxlint: Do not panic on invalid no-unused-vars configuration (#17719) (Sysix)
  • 59a6228 parser: Detect TS1363 error for type-only imports with mixed default and named/namespace bindings (#17712) (Copilot)

⚡ Performance

  • f87a1e2 linter: Check for giving reserved plugin name before calling load_plugin on napi side (#17841) (Sysix)

📚 Documentation

  • a2b3a24 linter/no-caller: Improve docs and diagnostic for rule. (#17890) (connorshea)
  • aa48247 linter/no-unsafe-finally: Improve rule docs. (#17891) (connorshea)
  • 1b0bdee linter: Tweak docs for no-useless-constructor and hoisted-apis-on-top (#17888) (connorshea)
  • 8f24fa9 vscode: Remove mention of a built-in server (#17836) (Sysix)
  • e81a306 linter: Update the tsconfig flag mention for the import plugin. (#17778) (connorshea)

Oxfmt v0.24.0

🚀 Features

  • 539b350 formatter/sort_imports: Update NODE_BUILTINS modules (#17771) (nilptr)
  • 2e03ebf oxfmt/lsp: Use SourceFormatter to support non-JS files and napi features (#17655) (leaysgur)
  • 623f7eb oxfmt/sort_package_json: Use options.sort_scripts (#17740) (leaysgur)
  • 86c0168 oxfmt/sort_package_json: Handle oxfmtrc.sort_scripts option (#17738) (leaysgur)
  • 256636a oxfmt/lsp: Add .editorconfig to get_watcher_patterns (#17694) (leaysgur)
  • 3f3db39 oxfmt/lsp: Use ConfigResolver to align with CLI (#17654) (leaysgur)

🐛 Bug Fixes

  • fdd1e1e formatter: Don't wrap parenthesis for type assertion when it's an declaration of export default (#17878) (Dunqing)
  • f0813ad formatter: Incorrect type annotation check for short argument (#17877) (Dunqing)
  • 9e89389 formatter/tailwindcss: Nested class string doesn't respect singleQuote: true (#17838) (Dunqing)
  • e2f534c formatter/sort_imports: Handle alignable comment with JsLabels (#17791) (leaysgur)
  • f0cedd4 formatter/tailwindcss: Class name is broken after sorting when its contains single quotes with singleQuote: true (#17790) (Dunqing)
  • 1864142 oxfmt/tailwindcss: Bundle prettier/plugins/* (#17782) (leaysgur)
  • 3a9d43b oxfmt: Ignore explicit positional path which is ignored by directory (#17732) (leaysgur)
  • 0563217 formatter: Classes will be stripped out when both experimentalTailwindcss and experimentalSortImports are enabled (#17726) (Dunqing)

⚡ Performance

  • d1bc514 formatter: Optimize RegExpLiteral formatting to avoid heap allocations (#17797) (Dunqing)

📚 Documentation

  • 62b7a01 formatter: Clarify experimentalTailwindcss configuration comments (#17898) (Dunqing)

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)