Releases: oxc-project/oxc
Releases Β· oxc-project/oxc
Release list
oxc crates_v0.148.0
Immutable
release. Only release title and notes can be modified.
π₯ BREAKING CHANGES
- a31567a allocator: [BREAKING] Make
Allocator::cursor_ptranddata_end_ptrprivate (#26081) (overlookmotel)
π Features
- 115955d minifier: Drop cases whose condition is statically false (#26172) (Armano)
- 784e9fa minifier: Invert
!0and!1in place for boolean context to1and0(#26050) (Armano) - 1e902cc minifier: Expand fold leading assignments into the var decl (#26142) (Armano)
- 3ed4f6a minifier: Expand de morgan's optimization to allow move of
!(#25930) (Armano) - 5672585 parser: Attach all comments to nodes (#25944) (camc314)
π Bug Fixes
- a3d33dd semantic: Skip body bindings in type parameters and
thisparam (#26169) (Dunqing) - 4adfb4c semantic: Validate chained continue labels (#26157) (camc314)
- b874f48 ecmascript:
Math.roundonly exact half ties (#26150) (camc314) - a625378 minifier: Coerce omitted
indexOfsearch argument (#26149) (camc314) - dc7398b ecmascript: Trim trailing whitespace in string to number (#26148) (camc314)
- 243b685 transformer/object-rest: Lower multiple declarators correctly (#26147) (camc314)
- dc09a3a parser: Avoid panic on escaped string export names (#26146) (camc314)
- e412cf2 linter: Clamp invalid JS plugin locations (#26144) (camc314)
- c3dedc9 semantic: Skip function body bindings in parameters (#26099) (Dunqing)
- e74de61 transform-react: Match Babel diagnostic reporting (#26128) (Boshen)
- d5163d0 parser: Correctly classify unapplied pure annotations (#26084) (camc314)
- 8531b9b linter/plugins: Alter method for obtaining mutable
Programwhen sending AST to JS plugins (#26077) (overlookmotel) - 9b51658 regular_expression: Allow oversized decimal escape for Annex B (#26070) (leaysgur)
- c8de4df regular_expression: Reject oversized backreferences (#26055) (camc314)
β‘ Performance
- ac4785a diagnostics: Use fixed ANSI styles (#26130) (Boshen)
- 07a0793 packages/codegen: Flatten output in chunks (#26109) (overlookmotel)
- 487427a packages/codegen: Faster string flattening (#26108) (overlookmotel)
- 7785583 packages/codegen: Ensure indent strings are flattened (#26107) (overlookmotel)
- 0dd4db3 packages/codegen: Store mapping positions in an
Int32Array(#26085) (overlookmotel)
oxlint v1.81.0 & oxfmt v0.66.0
Immutable
release. Only release title and notes can be modified.
Table of Contents
Oxlint v1.81.0
π Features
π Bug Fixes
- 33ac4b0 linter/lsp: Prevent tsgolint from holding onto processes (#25570) (Adrian Schaedle)
- baf4b1e linter/import/no-empty-named-blocks: Make empty value import removal a suggestion (#26155) (camc314)
- 77cfaec linter/eslint/object-shorthand: Preserve
__proto__semantics (#26154) (camc314) - fa3c082 linter/unicorn/prefer-set-size: Ignore shadowed
Setconstructors (#26153) (camc314) - e412cf2 linter: Clamp invalid JS plugin locations (#26144) (camc314)
- d86c113 linter: Normalize reversed JS plugin locations (#26138) (camc314)
- 73c09b2 linter/eslint/no-use-before-define: Run on JS, JSX files (#26114) (camc314)
- 03ef0f2 linter/unicorn/no-useless-spread: Treat typed arrays as a distinct value hint (#26067) (Aadharsh Pannirselvam)
- bd15905 linter/react/no-unstable-nested-components: Check nested component object property names (#26101) (camc314)
- 3910e2b linter/eslint/no-unassigned-vars: Skip Svelte and Vue files (#26042) (Hamody We)
- 047f7ca linter/plugins: Fix interaction between JS plugins and Vue rules (#26080) (overlookmotel)
- 8531b9b linter/plugins: Alter method for obtaining mutable
Programwhen sending AST to JS plugins (#26077) (overlookmotel) - dc464ff linter/unicorn/prefer-math-min-max: Avoid unsafe autofix (#26060) (camc314)
π Documentation
- 464ddd1 linter: Support a shared short description for jest/vitest rules (#26186) (connorshea)
- 9db5ad3 linter: Add short description to
vue/no-dupe-keys(#26183) (connorshea) - db66f58 linter: Correct export/import mismatch in bar and foo example (#25927) (billychannnnnn)
- d5be037 linter/typescript/switch-exhaustiveness-check: Clarify default case comment pattern (#26100) (camc314)
Oxfmt v0.66.0
π Features
- 1fb37b6 formatter/css: Format declaration-shaped raw-prelude rules (postcss nested config blocks) (#26194) (leaysgur)
π Bug Fixes
- 9f81002 formatter: Re-add suppressed statement terminators per options.semi (#26220) (leaysgur)
- 769ffd5 formatter: Print suppressed typecast parens (#26218) (leaysgur)
- 5ff57f8 formatter/sort-imports: Handle custom side effect groups (#26217) (leaysgur)
- 2f4d759 formatter: Do not skip cast comment lookup (#26216) (leaysgur)
- 1213e12 formatter: Preserve comment for statement terminators and binary casts (#26213) (leaysgur)
- 57e8e22 formatter_css: Space a folded sign after a call in Less operations (#26134) (leaysgur)
- e4298fb formatter/jsdoc: Follow CommonMark for interrupting lists and guard wrapping from creating them (#26098) (leaysgur)
- a1e21c2 formatter: Apply head body policy everywhere (#26074) (leaysgur)
- 676b7e1 formatter: Keep comments in their for-head slot, before an empty-statement body and do-while (#26073) (leaysgur)
- 3bbcea6 formatter: Keep comments between a head and its body out of the braces across all constructs (#26071) (leaysgur)
- 57537a2 formatter: Place comments between a head and open paren (#26058) (leaysgur)
- e2d53e7 formatter: Place comments between a statement head and its body (#26043) (leaysgur)
- 662556c formatter: Print the idempotent placement for comments in dropped parens (#26041) (leaysgur)
- faf11d9 formatter_yaml: Keep trailing whitespace in block scalars (#26072) (leaysgur)
β‘ Performance
- ac4785a diagnostics: Use fixed ANSI styles (#26130) (Boshen)
π Documentation
- b879608 formatter,formatter_graphql,formatter_yaml: Annotate own-line comment inlining as known policy violation (#26131) (leaysgur)
- 181953b oxfmt,formatter_core,formatter,formatter_yaml,formatter_css,formatter_graphql: Extract
DIVERGENCES.mdout fromAGENTS.md(#26121) (leaysgur) - a67cb9d formatter,formatter_core: Document comment moving policy (#26075) (leaysgur)
- fc175b0 formatter_core: Clarify idempotency test infra (#26069) (leaysgur)
oxc crates_v0.147.0
Immutable
release. Only release title and notes can be modified.
π Features
π Bug Fixes
- 8db1053 codegen: Require sourcemap for example (#26047) (camc314)
- 8a9bdbd estree: Include decorators in
FormalParameterRestspans (#26021) (camc314) - 6f0c7cf minifier: Avoid merging
iftoforin sloppy mode when containing function declaration (#25638) (sapphi-red) - 2cde1f6 rust: Address nightly deprecations (#25998) (Boshen)
- 6c5ad1b codegen: Only add mapping names for
PrivateIdentifiers which have changed (#25958) (overlookmotel) - 2dad1e0 parser: Track irregular line terminators in trivia (#25947) (camc314)
- 58ba651 minifier: Avoid merging
iftoforwhen the body contains a function declaration (#25637) (sapphi-red) - a185ac3 codegen: Print
#before private identifier in TS signature key (#25938) (overlookmotel) - af82a07 minifier: Keep unary
+when the other operand has side effects (#25645) (Kotaro Chikuba)
β‘ Performance
- 20711f4 packages/codegen: Remove
nodeparam fromwriteandmarkMapfunctions in sourcemap builds (#25989) (overlookmotel) - 29a7749 packages/codegen: Pass
startandendtowriteandmarkfunctions (#25986) (overlookmotel) - 8ae741b packages/codegen: Replace
writecalls withwriteIdent(#25984) (overlookmotel) - a78ed30 packages/codegen: Remove
lastparam fromwriteWithMapNamed(#25983) (overlookmotel) - 53f6270 packages/codegen: Eagerly initialize
mapNames(#25979) (overlookmotel) - 5b43c60 packages/codegen: Split recording mappings into multiple functions (#25978) (overlookmotel)
- cc947b5 packages/codegen: Reduce property lookups (#25977) (overlookmotel)
- c22a9cc packages/codegen: Combine condition checks (#25976) (overlookmotel)
- 215a6a5 packages/codegen: Add functions for writing/marking unnamed mappings (#25975) (overlookmotel)
- fe444cc codegen: Avoid allocations for single comment anchors (#25598) (camc314)
- a0aee81 minifier: Do not rebuild expression when substituting void to null (#25964) (Armano)
- 1004439 packages/codegen: Merge
markandwritecalls inprintImportAttributes(#25972) (overlookmotel) - 94c8a34 packages/codegen: Remove
nodeparam fromprintStringandprintNonNegativeFloat(#25971) (overlookmotel) - 7e2b4b3 packages/codegen:
printNonNegativeFloatwrite mapping directly (#25968) (overlookmotel) - f09c8ab minifier: Avoid creation of unnecessary conditional expressions (#25931) (Armano)
- 53ff080 packages/codegen: Remove
lastWasPostfixClose(#25888) (overlookmotel)
π Documentation
oxlint v1.80.0 & oxfmt v0.65.0
Immutable
release. Only release title and notes can be modified.
Table of Contents
Oxlint v1.80.0
π Features
- 70c3e35 linter/typescript/no-confusing-non-null-assertion: Implement suggestion (#26012) (Mikhail Baev)
π Bug Fixes
- 17ae11c linter/oxc/double-comparisons: Handle grouped logical expressions (#26044) (camc314)
- 8a353a7 linter/eslint/no-control-regex: Refine help message text (#25996) (Rahul Mishra)
- 8a9bdbd estree: Include decorators in
FormalParameterRestspans (#26021) (camc314) - 8d94cd1 linter/eslint/no-useless-rename: Preserve type modifiers (#26020) (Cameron)
- 2cde1f6 rust: Address nightly deprecations (#25998) (Boshen)
- 51d36d7 linter/vue: Resolve
vueimports via shared import helpers (#25903) (Connor Shea) - 83a68d2 linter/react/no-react-children: Resolve
reactimports by symbol (#25901) (Connor Shea) - 124e196 linter: Resolve globals by reference, not by name (#25905) (Connor Shea)
- a701bcc linter: Remove invalid React compiler doc links (#25900) (Boshen)
π Documentation
- 9b7e153 linter: Set
versionto 1.79.0 for rules shipped in 1.79.0 (#25902) (connorshea)
Oxfmt v0.65.0
π Bug Fixes
oxc crates_v0.146.0
Immutable
release. Only release title and notes can be modified.
π Features
π Bug Fixes
- 82a790d codegen: Narrow printSync input type (#25871) (camc314)
- 134fb22 isolated-declarations: Preserve unresolved parameter types (#25909) (Dunqing)
- 526c2b3 codegen: Remove deprecated test APIs (#25889) (camc314)
- 344a9b2 codegen: Align enum template sourcemaps (#25872) (camc314)
β‘ Performance
- 603b904 packages/codegen: Check
sourceTextonly once (#25887) (overlookmotel) - 5ef0c93 minifier: Unwrap all unary exprs without creating dummy expressions (#25891) (Armano)
- 8783524 packages/codegen: Remove loop from
growMappingBuffer(#25886) (overlookmotel) - b6b14c0 packages/codegen: Remove redundant branch (#25885) (overlookmotel)
- be6adf0 packages/sourcemap: Make
locationpassed torecordSourceMappingalways a number (#25884) (overlookmotel) - f720f15 packages/codegen: Take named-mapping only code off hot path in
recordSourceMapping(#25883) (overlookmotel) - a734af5 packages/codegen: Remove redundant setting of
lastinprintImportAttributesandprintIf(#25882) (overlookmotel) - c6e44c6 packages/codegen: Combine 2 writes in
printJSXElement(#25881) (overlookmotel) - 8801662 packages/codegen: Remove redundant mapping from
printParams(#25880) (overlookmotel)
π Documentation
oxc crates_v0.145.0
Immutable
release. Only release title and notes can be modified.
π₯ BREAKING CHANGES
π Features
- 6a7eb60 packages/codegen: Alter capitalization of
sourceFilenameoption (#25854) (overlookmotel) - 300763f packages/codegen: Add full source map support (#25585) (camc314)
- a169e4a napi/minify: Expose property name mangling options (#24741) (Dunqing)
- 2f5cdb1 minifier: Add property name mangling (#24740) (Dunqing)
- 4922141 mangler: Deduplicate private accessor names (#25601) (camc314)
- 1c4f519 napi: Add Relay transform plugin (#25503) (Boshen)
- a4478e9 codegen: Add
oxc-codegenpackage (#25488) (overlookmotel)
π Bug Fixes
- 0fbcf64 codegen: Validate sourcemap options (#25860) (camc314)
- 345f981 react_compiler: Skip node_modules by default (#25859) (Boshen)
- ab81f3f minifier: Drop side-effect-free additions (#25639) (Dunqing)
- 241c559 napi/minify: Accept RegExp for property filters (#25827) (Dunqing)
- 4cc7ea4 codegen: Reject invalid indent options (#25807) (camc314)
- 53f9295 isolated-declarations: Preserve undefined for defaulted any (#25292) (camc314)
- 8ab883a codegen: Preserve property key annotations (#25766) (Dunqing)
- b13fd48 minifier: Model uninitialized module vars as undefined (#25497) (Dunqing)
- f6000ac ecmascript: Fold
**withNumber::exponentiate, not IEEEpow(#25644) (Kotaro Chikuba) - b846abc isolated-declarations: Handle ambient expando properties (#25655) (camc314)
- dec0a86 react-compiler: Standardize diagnostics (#25702) (Boshen)
- fca2e0c parser: Reject initialized lexical declarations in for-in (#25700) (Boshen)
- ae9be8f parser: Forbid type parameters on quoted constructors (#25696) (Boshen)
- c5f188a react-compiler: Use Babel v1 validation defaults (#25676) (Boshen)
- db44651 napi: Disable reuseWorker in browser bindings (#25640) (leaysgur)
- ce35d47 react_compiler: Preserve JSX import source pragmas (#25592) (Boshen)
- 059784d semantic: Respect shadowed
InfinityandNaNin enum evaluation (#25604) (camc314) - bb5a232 minifier: Keep variable declaration initilized with class when keepNames is enabled (#25584) (sapphi-red)
- f49229d minifier: Keep side effects when rotating bitwise operands (#25596) (Kotaro Chikuba)
- e82495b ecmascript: Derive
ToNumberof!xfromToBoolean(#25595) (Kotaro Chikuba) - 509931b semantic: Classify global references per identifier (#25608) (camc314)
- 80484ce mangler: Correct base54 safety comment (#25606) (camc314)
- c1369a7 codegen: Resolve private names in class heritage (#25588) (camc314)
- c002f29 codegen: Escape sources for empty import specifiers (#25586) (camc314)
- 0c68b7f estree: Emit
decoratorsonFormalParameterRest(#25582) (camc314) - cdf1846 semantic: Allow legacy escapes in JSX attributes (#25576) (Boshen)
- e75e102 minifier: Preserve block statement in labeled iteration statements (#25162) (Armano)
- 771d79a mangler: Exclude non-manglable symbols from slot assignment (#25539) (sapphi-red)
- 76b19f5 minifier: Avoid duplicating large folded strings (#25532) (Dunqing)
- 59e8895 codegen: Validate starting indent level (#25550) (camc314)
- 88b34f2 clippy: Remove unneeded
unsafe(#25551) (camc314) - 23a7ad0 parser: Stop delimited lists at end of file (#25542) (Boshen)
- 73acba9 parser: Preserve fatal errors during await reparse (#25541) (Boshen)
- c3e99d1 minifier: Avoid invalid octal escapes in template folds (#25495) (Dunqing)
- b4e6a9e codegen: Output newline after
export default interface(#25487) (overlookmotel) - 5fcf683 minifier: Correct issue with try finally termination (#25185) (Armano)
- 1645d93 react_compiler: Preserve source spans (#25462) (Boshen)
- 8d7f9cf react_compiler: Honor eslint suppressions (#25394) (Boshen)
β‘ Performance
- 568203e ecmascript: Use binary search for known globals (#25817) (Boshen)
- c84ede3 estree_tokens: Share JS token update entry point (#25826) (Boshen)
- 9a6e862 minifier: Move owned statements directly (#25835) (Dunqing)
- 61b2aef minifier: Move owned AST nodes directly (#25837) (Dunqing)
- 673b04b minifier: Replace expressions without take_in dummies (#25836) (Dunqing)
- 63ff8ef linter: Outline diagnostic construction (#25762) (Boshen)
- 621808e diagnostics: Measure graphemes lazily (#25723) (Boshen)
- f62ed0e diagnostics: Optimize graphical number rendering (#25715) (Boshen)
- 7152834 diagnostics: Reduce graphical formatting overhead (#25714) (Boshen)
- 10fc4b7 diagnostics: Reduce graphical rendering allocations (#25711) (Boshen)
- 9c8abab diagnostics: Batch graphical reports (#25710) (Boshen)
- 757f3d4 mangler: Share allocated names across reused slots (#25605) (camc314)
- 5444cbf codegen: Skip escaping harmless
<tokens (#25564) (camc314)
π Documentation
- 58f7ab9 packages/codegen: Reformat docs and comments (#25848) (overlookmotel)
- 627466e transform-react: Document all options (#25800) (Boshen)
- ce03ac1 packages/codegen: Fix JSDoc comments for
printSync(#25722) (overlookmotel) - 386a699 packages/codegen: Correct JSDoc comment (#25716) (overlookmotel)
- 31e571d mangler: Update code example (#25599) (camc314)
- fd62354 codegen: Revamp package readme (#25560) (camc314)
- ffa3153 codegen: Clarify raw transfer Node requirement (#25565) (camc314)
- c5d4063 codegen: Clarify binary walk allocations (#25562) (camc314)
- 5703d7a codegen: Correct stale printer comments (#25561) (camc314)
oxlint v1.79.0 & oxfmt v0.64.0
Immutable
release. Only release title and notes can be modified.
Table of Contents
Oxlint v1.79.0
π₯ BREAKING CHANGES
See React Compiler Support for details.
π Features
π Bug Fixes
- 345f981 react_compiler: Skip node_modules by default (#25859) (Boshen)
- 2f40afa linter/unicorn/no-array-callback-reference: Ignore effect library imports (#25857) (MichaΓ«l Bitard)
- 7b565a0 linter: Align React Compiler rule categories (#25840) (Boshen)
- 228e8e0 linter: Resolve inactive React compiler rules (#25830) (Boshen)
- f8e4884 linter/eslint/no-useless-constructor: Allow parameter properties (#25811) (camc314)
- e4b6993 linter: Report exhaustive effect dependencies (#25829) (Boshen)
- 742e25f linter/eslint/no-return-assign: Anchor diagnostic on return stmt (#25803) (camc314)
- b831ca8 react-compiler: Improve derived state diagnostic (#25804) (Boshen)
- 5908c87 linter/jest/prefer-mock-return-shorthand: Preserve implementations using this (#25802) (camc314)
- f6b2265 linter/eslint/no-redeclare: Run in ES modules, skipping only the globals check (#25691) (Hamody We)
- ca9f553 linter/unicorn/prefer-default-parameters: Mark fixer as a suggestion (#25801) (camc314)
- aa49d86 linter: Allow spread rule options in config types (#25675) (ch3rry)
- d5483f8 linter/typescript/no-useless-empty-export: Skip TS declaration files (#25789) (Evyatar Daud)
- 57f2199 linter/typescript/no-useless-empty-export: Report after imports (#25786) (camc314)
- 633bc19 linter/typescript/no-unnecessary-type-conversion: Mark fixer as
suggestion(#25787) (camc314) - dea3339 linter/typescript/explicit-module-boundary-types: Anchor diagnostics on arrows (#25779) (camc314)
- 5cd6f02 linter/eslint/array-callback-return: Anchor diagnostic on callback (#25780) (camc314)
- ef8cebf linter/eslint/preserve-caught-error: Handle AggregateError options (#25775) (camc314)
- c108d5c linter: Improve React Compiler diagnostics (#25742) (Boshen)
- c9ec55e react-compiler: Improve diagnostic spans (#25731) (Boshen)
- 1cbbcb7 linter/unicorn/prefer-string-replace-all: Apply fixes in one pass (#25709) (Mikhail Baev)
- dec0a86 react-compiler: Standardize diagnostics (#25702) (Boshen)
- 5fd77f7 linter/react/display-name: Report curried HOC inner component (#25662) (camc314)
- 4dbb80e linter/import/no-named-as-default: Report local export conflicts (#25658) (camc314)
- e8a7214 linter/react/rules-of-hooks: Report hooks inside try blocks (#25670) (camc314)
- 36f8451 linter/eslint/no-eval: Align indirect default with ESLint (#25656) (camc314)
- d901d24 linter/react/exhaustive-deps: Handle destructured object dependencies (#25669) (camc314)
- beb724d linter/eslint/no-unused-vars: Report bare underscore parameters (#25663) (camc314)
- fa36f26 linter/react/no-this-in-sfc: Detect this in nested arrow callbacks (#25653) (camc314)
- 44d1be3 linter/typescript/no-var-requires: Run rule on JavaScript (#25664) (camc314)
- 4004c10 linter/eslint/no-irregular-whitespace: Check comments by default (#25660) (camc314)
- 625401d linter/import/no-named-default: Flag type-only named defaults (#25661) (camc314)
- 8eacb2d linter/typescript/no-non-null-asserted-optional-chain: Detect assertions after continued optional chains (#25659) (camc314)
- d55b76c linter/react/no-direct-mutation-state: Detect computed state mutations (#25654) (camc314)
- f92c651 linter/unicorn/no-abusive-eslint-disable: Use directive prefix in diagnostic (#25657) (camc314)
- ee44996 linter/eslint/max-classes-per-file: Anchor diagnostic at program start (#25652) (camc314)
- 403ec40 linter/eslint/no-multi-assign: Handle parenthesized declarator initializers (#25651) (camc314)
- 6c9ba37 linter/jest/expect-expect: Detect assertions in nested function declarations (#25650) (camc314)
- 285820e linter/no-large-snapshots: Precompile and document allowed snapshot matchers (#25611) (Mikhail Baev)
- 1be1e20 linter/eslint/prefer-promise-reject-errors: Report on spread arguments (#25648) (Mikhail Baev)
- a38f7b3 oxlint,oxfmt: Apply .gitignore only to walk targets, not explicitly named files (#25531) (leaysgur)
- 509931b semantic: Classify global references per identifier (#25608) (camc314)
- 0c68b7f estree: Emit
decoratorsonFormalParameterRest(#25582) (camc314) - 1d22912 linter/plugins: Parse rule-less directive justifications (#25559) (camc314)
- eaf80d8 linter/unicorn/prefer-node-protocol: Validate exact Node.js built-in specifiers (#25558) (camc314)
- 57b94af linter/promise/no-multiple-resolved: Ignore unresolved globals (#25530) (Tushar Singh)
- 80e64c2 linter/expect-expect: Validate assertion regex (#25504) (Mikhail Baev)
- 7830604 linter/react/exhaustive-deps: Treat binary expressions as a stable dependency (#25508) (Hamody We)
- 4df5835 linter: Allow capitalized built-in calls (#25516) (Boshen)
- 9d49d27 react_compiler: Bail out instead of panicking on "Expected a node for all scopes" (#25506) (Boshen)
- d43b562 linter/vitest/prefer-expect-assertions: Handle parameterized Vitest assertion suggestions (#25476) (camc314)
β‘ Performance
- e8303d6 linter: Shrink rule serialization dispatch (#25818) (Boshen)
- c84ede3 estree_tokens: Share JS token update entry point (#25826) (Boshen)
- 35c8eb2 linter: Compute sort keys once with sort_by_cached_key (#25821) (Boshen)
- f0121ed linter: Share config deserialization entry point (#25820) (Boshen)
- 2dacf7a oxlint: Reduce debug formatting code size (#25797) (Boshen)
- 9ed10b7 linter: Use unstable sorts for unique keys (#25778) (Boshen)
- 63ff8ef linter: Outline diagnostic construction (#25762) (Boshen)
- 2dd7446 diagnostics: Preallocate graphical output (#25721) (Boshen)
- 9c8abab diagnostics: Batch graphical reports (#25710) (Boshen)
- 8e9b95f linter: Use table for rule names (#25458) (Boshen)
Oxfmt v0.64.0
π Features
- c07fe7c oxfmt: Support
experimentalOperatorPosition(#25643) (leaysgur) - 2adb8fb formatter: Implement
operatorPositionoption (#25581) (leaysgur)
π Bug Fixes
- 44231fb formatter: Fix comment and indent issues around unions (#25665) (leaysgur)
- 2465e87 formatter: Keep comments in place when dropping
EmptyStatement(#25730) (leaysgur) - 7e4f3b7 formatter: Print
JSDocUnknownType(#25729) (leaysgur) - 5238d9e formatter: Keep nested awaited-paren member chain grouped in call arguments (#25646) (leaysgur)
- a38f7b3 oxlint,oxfmt: Apply .gitignore only to walk targets, not explicitly named files (#25531) (leaysgur)
- 5c0a5ff formatter_css: Fill own-line block comments inside space-separated values (#25578) (leaysgur)
- 53debfa formatter_css: Keep trailing comma and indent after comment-preceded last map value (#25577) (leaysgur)
- 1a83a8d oxfmt: Mirror printer line suppression and restore dedent-to-root (#25573) (leaysgur)
- 7f350d1 formatter: Keep unary comment and print only needed parens (#25526) (leaysgur)
- f405789 formatter_yaml: Consistent chomped eos behavior (#25523) (leaysgur)
- a243311 formatter_yaml: Bump oxc-yaml-parser for contentless block scalar (#25519) (leaysgur)
- 40d38a0 formatter_css: Keep multi value function args intact after leading comment (#25518) (leaysgur)
π Documentation
oxc crates_v0.144.0
Immutable
release. Only release title and notes can be modified.
π₯ BREAKING CHANGES
- a33788e ast: [BREAKING] Group class heritage into
ClassHeritage(#25360) (camc314) - 5c5cdcd ast: [BREAKING] Narrow
TSInterfaceHeritage::expressionto TSTypeName (#24360) (camc314) - 6be314f ast: [BREAKING] Remove duplicated
VariableDeclarator::kind(#25319) (camc314) - 44fd320 ast: [BREAKING] Split TS external modules & Namespace Declarations (#25284) (camc314)
π Features
- 9a37c41 napi: Restructure React transform options (#25326) (Boshen)
- b3c1b30 allocator: Add
ArenaVec::push_mut(#25338) (overlookmotel)
π Bug Fixes
- bbd6ed3 codegen: Wrap string literal in parens after directives (#25435) (overlookmotel)
- d07a293 codegen: Preserve cast parentheses in conditional tests (#25115) (camc314)
- 8b7d441 codegen: Preserve satisfies parentheses before bitwise operators (#25113) (camc314)
- e0fb2d7 minifier: Avoid unsafe return removal in labeled blocks (#25406) (Armano)
- c49f4ce parser: Preserve terminal license comments (#25400) (camc314)
- 9d19ab3 transform_react: Downgrade nonfatal compiler diagnostics (#25418) (Boshen)
- 937825c react_compiler: Disable exhaustive memo validation by default (#25417) (Boshen)
- 12937b3 parser: Reject comma expressions in class fields (#25385) (Cameron)
- 7d8a9b5 react_compiler: Preserve hook spans for React Refresh (#25393) (Boshen)
- 9e93ba6 parser: Reset auto-accessor initializer context (#25384) (camc314)
- cc2e28d parser: Reject trailing tokens in
Parser::parse_expression(#25371) (camc314) - 697c629 minifier: Preserve Annex B labeled-function bindings in implicit-return rewrite (#25349) (Armano)
- 4d723ca parser: Report TS1035 for quoted module names (#25305) (camc314)
- 0c9b980 semantic: Report module declaration diagnostics (#25285) (camc314)
- 2a1058a napi: Omit parser header from WASI declarations (#25254) (camc314)
β‘ Performance
- dd1430b semantic: Avoid allocation in class overload check (#25440) (camc314)
- e420816 parser: Optimize trailing comma tracking (#25376) (camc314)
- 6529d1a minifier: Short-circuit scope check when alternate already determines result (#25318) (Armano)
π Documentation
oxlint v1.78.0 & oxfmt v0.63.0
Immutable
release. Only release title and notes can be modified.
Table of Contents
Oxlint v1.78.0
π Features
- ccb8fe8 linter/jsdoc: Implement
no-blank-blocksrule (#25207) (Mikhail Baev) - d4a897c linter/eslint: Implement
one-varrule (#24470) (Cole Ellison) - 5ab9340 linter/jsx-a11y/anchor-has-content: Add options to match eslint (#24571) (Cole Ellison)
π Bug Fixes
- b746e00 linter/eslint/no-implicit-coercion: Preserve template coercion whitespace (#25470) (camc314)
- a92c541 linter: Preserve source text for JS plugin ignore fixes (#25280) (Norcleeh)
- 675c840 linter/eslint/prefer-promise-reject-errors: Handle parenthesized calls (#25378) (camc314)
- 1703739 linter/unicorn/new-for-builtins: Ignore optional chains (#25411) (tanakalucky)
- 95ece63 linter/unicorn/prefer-code-point: Downgrade the auto-fix to dangerous (#25412) (leemr)
- c451a0e linter/vitest: Validate
consistent-test-filenameregex patterns (#25408) (Mikhail Baev) - 937825c react_compiler: Disable exhaustive memo validation by default (#25417) (Boshen)
- f0f7dae linter/eslint/no-unused-vars: Report invalid regex options (#25380) (Cameron)
- 44e73fd linter/unicorn/prefer-array-flat: Fix
concat.applysuggestions (#25373) (Cameron) - 6846a9a linter/react/rules-of-hooks: Detect constructor callbacks (#25377) (camc314)
- b247a9d linter/unicorn/new-for-builtins: Support
Float16Array(#25382) (tanakalucky) - 19109cd linter/unicorn/error-message: Support
SuppressedErrormessages (#25375) (camc314) - 9c13f5e linter: Assert token lookup invariants (#25368) (camc314)
- bc35f83 linter/eslint/no-unused-vars: Bound catch parameter lookup (#25367) (camc314)
- c159fb9 linter/unicorn/switch-case-braces: Bound token lookup (#25363) (camc314)
- 03b2eb2 linter/unicorn/no-static-only-class: Bound token lookup (#25361) (camc314)
- 0afc59e linter/unicorn/empty-brace-spaces: Bound token lookup (#25353) (camc314)
- 2963d98 linter/eslint/no-unreachable-loop: Do not report loops whose body has a finally block (#25335) (Todor Andonov)
- 589e5fb linter/eslint/no-param-reassign: Validate
ignorePropertyModificationsForRegexproperty (#25346) (Mikhail Baev) - aae5d8b linter/eslint/no-throw-literal: False positive on variable declared without initializer (#25275) (cjnoname)
- 6b1c479 oxlint: Normalize customized rule names (#25316) (camc314)
- d494eb5 linter/unicorn/consistent-existence-index-check: Bound token lookup (#25325) (camc314)
- 4266037 linter/typescript/prefer-namespace-keyword: Bound token lookup (#25322) (camc314)
- 4745b4e linter/typescript/no-namespace: Bound token lookup (#25321) (camc314)
- 648a481 linter/eslint/one-var: Avoid joining exported declarations (#25314) (camc314)
- 9573937 linter/typescript: Validate
ban-ts-commentdescription_format (#25320) (Mikhail Baev) - ebf7d18 linter/typescript/consistent-type-definitions: Bound token lookup (#25281) (camc314)
- 1501ccf linter/typescript/consistent-generic-constructors: Bound token lookup (#25258) (camc314)
β‘ Performance
- 8f784f3 linter: Reduce rule config dispatch size (#25461) (Boshen)
- 2de4ec2 linter: Reduce visitor code size (#25441) (Boshen)
- 6fb7f47 linter/unicorn/prefer-export-from: Narrow
ExportFromDeclarationlookup (#25381) (camc314) - e3f6263 linter/unicorn/prefer-default-parameters: Avoid reference allocation (#25379) (camc314)
- d863473 linter/vue/max-props: Narrow AST dispatch (#25372) (camc314)
- 273d867 linter: Avoid diagnostic sorting after applying fixes (#25079) (Sysix)
- 4ec9189 oxlint/lsp: Avoid second lock for getting/removing unused directives (#25350) (Sysix)
- 6c0d01b oxlint/lsp: Preallocate fix-content vec (#25351) (Sysix)
- 3a94055 linter: Avoid per-call heap allocations in jest and unicorn helpers (#25210) (Connor Shea)
- 4abff11 linter: Avoid redundant message work in the agent reporter (#25315) (Connor Shea)
- 6bb5421 linter: Hoist
current_dirout of the stylish reporter loop (#25313) (Connor Shea) - 9a7c323 linter: Compute diagnostic
Infoonce per diagnostic in junit reporter (#25312) (Connor Shea) - 1cf7dde oxlint: Render JSON report into a single buffer (#25295) (connorshea)
- 8492cfd linter/typescript/ban-ts-comment: Bail early with substring guard (#25301) (Jacob Asper)
- 7607f04 linter/typescript/ban-tslint-comment: Replace regex with manual parser (#25299) (Jacob Asper)
Oxfmt v0.63.0
π Features
- fd02a89 oxfmt: Dispatch yaml-in-css(frontmatter) to
oxc_formatter_yaml(#25336) (leaysgur) - ab12665 formatter_core: Add
hardlineWithoutBreakParentequivalent IR (#25273) (leaysgur)
π Bug Fixes
- 95dc917 oxfmt: Drop IR Space at line start for js-in-xxx (#25460) (leaysgur)
- b63eccc formatter: Keep comments after TS this_param (#25459) (leaysgur)
- ab52a59 formatter: Format xxx-in-js inside JSDoc js fence (#25414) (leaysgur)
- 1a2c64a formatter,oxfmt: Apply effective print width for JSDoc fence (#25413) (leaysgur)
- 2eaede9 formatter_core: Unify leading-BOM handlings (#25340) (leaysgur)
- ef1d04b formatter: Break mapped type brackets (#25297) (leaysgur)
- 4e6f3f1 formatter: Break index signature brackets (#25296) (leaysgur)
- e23dccf formatter_css: Bump oxc-css-parser to accept unknown at-rule with interpolated (#25277) (leaysgur)
- c29b587 formatter_core: Measure decided-flat fill separator as flat during group re-measure (#25276) (leaysgur)
- f3c6953 formatter_yaml: Don't rewrite overflowing key to implicit (#25274) (leaysgur)
β‘ Performance
- c9d1a5b oxfmt: Spawn tinypool lazily (#25298) (leaysgur)
π Documentation
oxc crates_v0.143.0
Immutable
release. Only release title and notes can be modified.
π₯ BREAKING CHANGES
- 4120da0 semantic: [BREAKING] Return borrowed JSDoc so the parse cache works (#25186) (Connor Shea)
- f0a41c8 allocator: [BREAKING] Remove
ArenaBox::danglingmethod (#25236) (overlookmotel) - 067da8c ast: [BREAKING] Store single parameter in
TSIndexSignature::parameter(#25154) (camc314) - a0c7788 ast: [BREAKING] Change
TSIndexSignatureName::nametoIdent(#25150) (camc314) - 1bdedd1 ast: [BREAKING] Introduce
ExportDeclaration,ExportFromDeclaration(#25095) (camc314) - c917f20 ast: [BREAKING] Introduce
ArrowFunctionBodyenum (#24987) (camc314) - 7e1199c ast: [BREAKING] Remove conversion to
Boxfrom AST builder methods (#25038) (overlookmotel)
π Features
- 3c8312e allocator: Make
BoxSend+Syncwhen the type it contains is (#25242) (overlookmotel) - cb5bc08 ast: Derive
GetSpanforComment(#25147) (leaysgur) - 8541e18 ast_tools: Generate minifier scope collector (#25088) (camc314)
- 5acdae2 ecmascript: Skip transparent TS expressions (#25072) (camc314)
- 85d0f4d napi: Add React Compiler transform binding (#24934) (Boshen)
- 70d6ece minifier: Fold safe integer exponentiation (#25009) (Dunqing)
- 73fc747 minifier: Enable termination statement optimization for do while (#24921) (Armano)
- 5eadfdb minifier: Fold safe integer division and remainder (#24981) (Dunqing)
π Bug Fixes
- 6c9ee14 minifier: Preserve if-chain idempotency and correct side effects when alternate should not be moved (#25041) (Armano)
- 8a47ff3 ecmascript: Do not treat lone-surrogate strings as constants (#25084) (Dunqing)
- 468b970 isolated-declarations: Strip re-export attributes (#25090) (camc314)
- a70035d parser: Report export imports in namespaces (#25086) (camc314)
- 5d8ccf5 react_compiler: Preserve nonfatal diagnostics (#25066) (Boshen)
- d349e4a react_compiler: Match eslint suppression gating (#25068) (Boshen)
- 0dc16ba react_compiler: Track catch block declarations (#25067) (Boshen)
- e6734a5 minifier: Fold typeof comparisons with known object strings (#25017) (Dunqing)
- 3a9d5a5 minifier: Keep
typeof foo == ['object']as-is (#24941) (sapphi-red) - 10ec276 ast: Custom AST builder methods take
IntoIn<ArenaBox>where child method does (#25033) (overlookmotel) - fbe8d31 minifier: Respect targets when folding RegExp source (#24790) (Dunqing)
β‘ Performance
- fb402b0 minifier: Stop re-deriving printed numeric spellings (#25103) (Dunqing)
- 7251e52 react_compiler: Avoid large types on stack (#25037) (overlookmotel)
- e07718f isolated_declarations: Avoid large types on stack (#25036) (overlookmotel)
- 9fb1e3e transformer: Avoid large types on stack (#25035) (overlookmotel)
- 8b80f8b parser: Avoid large types on stack (#25034) (overlookmotel)
π Documentation
- 2ea0aa9 ast: Correct grammar in AST builder methods doc comments (#25173) (overlookmotel)