Skip to content

Releases: oxc-project/oxc

oxlint v0.6.0

11 Jul 07:02
4f26e51
Compare
Choose a tag to compare

[0.6.0] - 2024-07-11

Features

  • fb549e1 linter: Add vitest/no-focused-tests rule (#4178) (mysteryven)
  • 6c49007 linter: Add fixer for @typescript-eslint/consistent-type-imports (#3984) (mysteryven)
  • 278c3e9 linter: Add fixer for jsx-a11y/aria-props (#4176) (DonIsaac)
  • 2188144 linter: Eslint-plugin-jest/prefer-hooks-in-order (#4052) (cinchen)
  • cc58614 linter: Better json schemas for allow/warn/deny (#4150) (DonIsaac)
  • c5b4be0 linter: Add fixer for prefer-node-protocol (#4129) (DonIsaac)
  • 7ec0c0b linter/eslint: Implement no-label-var (#4087) (Jelle van der Waa)

Bug Fixes

  • ed4c54c eslint/radix: Detect yield Number.parseInt variant (#4110) (Jelle van der Waa)
  • e9ad03b linter: Fixer for no-debugger creates incorrect code (#4184) (DonIsaac)
  • bd69571 linter: Fix top level return panic in eslint/array_callback_return (#4167) (Boshen)
  • c8f5664 linter: Fix panic with unicode in unicorn/prefer_dom_node_dataset (#4166) (Boshen)
  • f2b3273 linter: Fix fixer panic in typescript/consistent_indexed_object_style (#4165) (Boshen)
  • 2334515 linter: Panic in get_enclosing_function (#4121) (DonIsaac)
  • 1b91d40 linter: Incorrect fixer for no-unused-labels (#4123) (Don Isaac)
  • 1729249 linter: Incorrect fix in no-single-promise-in-promise-methods rule; (#4094) (DonIsaac)
  • cc7e893 linter/tree-shaking: Avoid recursive function stackoverflow (#4191) (mysteryven)
  • 28eeee0 parser: Fix asi error diagnostic pointing at invalid text causing crash (#4163) (Boshen)

Performance

  • ddfa343 diagnostic: Use Cow<'static, str> over String (#4175) (DonIsaac)

Refactor

  • 2687ebc react: Use find_binding helper for finding React binding (#4108) (Jelle van der Waa)

oxlint v0.5.3

07 Jul 11:53
0c7f3ee
Compare
Choose a tag to compare

[0.5.3] - 2024-07-07

Features

  • 1681b11 linter: Eslint-plugin-jest/consistent-test-it (#4053) (cinchen)
  • 6876490 linter: Add rule no-undefined (#4041) (jordan boyer)
  • bf04dee linter: Implement unicorn/no-negation-in-equality-check (#4034) (Nissim Chekroun)
  • aa45604 linter/eslint: Implement no-multi-str (#4038) (Jelle van der Waa)

Bug Fixes

  • 7b2dc3b linter: Fix panic in import/namespace (#4080) (Boshen)

oxlint v0.5.2

02 Jul 14:29
b66ad0b
Compare
Choose a tag to compare

[0.6.0] - 2024-07-02

Features

  • b257d53 linter: Support report @typescript-eslint/consistent-type-imports (#3895) (mysteryven)
  • 2114475 linter: Implement @typescript-eslint/no-dynamic-delete (#3971) (kaykdm)
  • 10a3c9a linter/eslint-plugin-react: Implement no-set-state (#3975) (Jelle van der Waa)

Bug Fixes

  • 432d6d9 linter: Find disabled directives using the message's Span. (#4010) (rzvxa)
  • dbbb6fc linter: Global variable check should always check builtin variables (#3973) (Boshen)

oxlint v0.5.1

29 Jun 09:24
21b964b
Compare
Choose a tag to compare

[0.5.1] - 2024-06-29

Bug Fixes

  • c26975a linter: Only show the filename for max-lines (#3966) (Boshen)
  • 94329e4 linter: Handle useful but empty constructors in no-useless-constructor (#3951) (DonIsaac)
  • 6498a08 linter: No-useless-spread fixer with multiple spread elements (#3950) (DonIsaac)

oxlint v0.5.0

27 Jun 08:05
1d74db7
Compare
Choose a tag to compare

[0.5.0] - 2024-06-27

Features

  • 3ae2628 linter: Change no-import-assign to correctness (#3928) (Boshen)
  • a89d501 linter: @typescript-eslint/no-non-null-asserted-nullish-coalescing (#3850) (kaykdm)
  • fc48cb4 linter: eslint-plugin-jest/prefer-jest-mocked (#3865) (cinchen)
  • 328445b linter: vitest/no-disabled-tests (#3717) (mysteryven)
  • 8c61f9c linter: @typescript-eslint/no-non-null-assertion (#3825) (kaykdm)
  • 9493fbe linter: oxc/no-optional-chaining (#3700) (mysteryven)
  • 139adfe linter: @typescript-eslint/no-import-type-side_effects (#3699) (mysteryven)
  • 5f84500 linter: react/prefer-es6-class (#3812) (Jelle van der Waa)
  • fafe67c linter: max-dependencies (#3814) (Jelle van der Waa)

Bug Fixes

  • 5902331 cli: properly report configuration error (#3889) (Luca Bruno)

Refactor

  • 7302429 linter/prefer_number_properties: Remove the unused IdentifierName check (#3822) (Boshen)

oxlint v0.4.4

14 Jun 07:48
2173f23
Compare
Choose a tag to compare

[0.4.4] - 2024-06-14

Highlights

Sort imports via oxlint --fix -D sort-imports

  • f6d9ca6 linter: Add eslint/sort-imports rule (#3568) (Wang Wenzhe)

Features

  • 8f5655d linter: Add eslint/no-useless-constructor (#3594) (Don Isaac)
  • 29c78db linter: Implement @typescript-eslint/explicit-function-return-type (#3455) (kaykdm)
  • 21d3425 linter: Typescript-eslint no-useless-empty-export (#3605) (keita hino)
  • 85c3b83 linter: Eslint-plugin-jest/max-nested-describes (#3585) (cinchen)
  • 046ff3f linter/eslint: Add no_unreachable rule. (#3238) (rzvxa)
  • e32ce00 linter/jsdoc: Implement require-param-name rule (#3636) (Yuji Sugiura)
  • 110661c linter/jsdoc: Implement require-param-description (#3621) (Yuji Sugiura)
  • d6370f1 linter/jsdoc: Implement require-param-type rule (#3601) (Yuji Sugiura)

Bug Fixes

  • f0b689d linter: Panic in jsdoc/require-param (#3590) (Don Isaac)

oxlint v0.4.3

07 Jun 09:34
4b9a365
Compare
Choose a tag to compare

[0.4.3] - 2024-06-07

Features

  • 1fb9d23 linter: Add fixer for no-useless-fallback-in-spread rule (#3544) (Don Isaac)
  • 6506d08 linter: Add fixer for no-single-promise-in-promise-methods (#3531) (Don Isaac)
  • daf559f linter: Eslint-plugin-jest/no-large-snapshot (#3436) (cinchen)
  • 4c17bc6 linter: Eslint/no-constructor-return (#3321) (谭光志)
  • 4a075cc linter/jsdoc: Implement require-param rule (#3554) (Yuji Sugiura)
  • 747500a linter/jsdoc: Implement require-returns-type rule (#3458) (Yuji Sugiura)
  • 6b39654 linter/tree-shaking: Support options (#3504) (Wang Wenzhe)

Bug Fixes

  • b188778 linter/eslint: Fix require-await false positives in ForOfStatement. (#3457) (rzvxa)
  • 350cd91 parser: Should parser error when function declaration has no name (#3461) (Dunqing)

oxlint v0.4.2

28 May 15:33
031bbe6
Compare
Choose a tag to compare

What's Changed

Linter

Parser

  • fix(parser): parse const extends in arrow functions correctly by @Dunqing in #3450

New Contributors

Full Changelog: oxlint_v0.4.1...oxlint_v0.4.2

oxlint v0.4.1

24 May 10:17
d971c9c
Compare
Choose a tag to compare

What's Changed

  • fix(parser): fix lexer error while parsing parenthesized arrow expressions by @Boshen in #3400

The previous version refactored some parsing code around arrow expressions, which failed to parse the following snippet correctly

(/\./.exec())

Full Changelog: oxlint_v0.4.0...oxlint_v0.4.1

oxlint v0.4.0

24 May 07:34
e5337f0
Compare
Choose a tag to compare

Potential Breaking Changes

enforce rule severity from the cli and configuration file by @Boshen in #3337

The --deny or -D flag in the CLI, and the "error" severity setting in the configuration file will now set linter diagnostics to be an "error" and exit the program with exit code 1.

Previously, these flags had no effect, and all linter diagnostics were reported as warnings.

This means in CI, oxlint --deny-warnings is no longer needed for exit code 1 if oxlint -D correctness is set.

To restore the previous "report as warning" behaviour, the --warn or -W flag is added to the CLI, and the "warn" severity in the configuration file will take into effect.

merge deepscan rules into oxc rules by @Boshen in #3327

deepscan rules are now "oxc" rules, because there is no "deepscan" plugin in the eslint ecosystem and this caused some confusion.

Ecosystem CI

We added the Oxlint Ecosystem CI to maximize ecosystem compatibility, reduce churn, and minimize break-after-release

New Features

The default rule set enables some plugins by default, the following CLI arguments are added for disabling them:

  • --disable-react-plugin
  • --disable-unicorn-plugin
  • --disable-oxc-plugin
  • --disable-typescript-plugin

New Rules

Two notable new rules that are under experiment but worth a try:

No Barrel File

oxlint --import-plugin -D no-barrel-file

Loading a lot of modules is slow for runtimes and bundlers.

image

To change the threshhold:

oxlint -c oxlintrc.json --import-plugin -D no-barrel-file

{
  "rules": {
    "oxc/no-barrel-file": ["error", {
      "threshold": 10
    }]
  }
}

See Speeding up the JavaScript ecosystem - The barrel file debacle for background reading.

Rule of Hooks

oxlint -D rules-of-hooks

Enforce the React Rules of Hooks.

Bug Fixes

  • fix(linter): avoid infinite loop in jest/expect-expect by @mysteryven in #3332
  • fix(linter): avoid infinite loop when traverse ancestors in jest/no_conditional_expect by @mysteryven in #3330
  • fix(linter): fix panic in jest/expect-expect by @Boshen in #3324
  • fix(linter/jsx-no-undef): check for globals when an identifier is undefined by @Boshen in #3331
  • fix(linter/next): false positives for non-custom font link by @Dunqing in #3383

Performance Improvements

  • perf(lexer): use bitshifting when parsing known integers by @DonIsaac in #3296
  • perf(linter): use usize for RuleEnum hash by @Boshen in #3336
  • perf(parser): more efficient number parsing by @overlookmotel in #3342
  • perf(parser): use FxHashSet for not_parenthesized_arrow by @Boshen in #3344
  • perf(parser): improve parse_simple_arrow_function_expression by @Boshen in #3349
  • perf(parser): improve expression parsing by @Boshen in #3352
  • perf(parser): improve is_parenthesized_arrow_function_expression by @Boshen in #3343

What's coming next

Full Changelog: oxlint_v0.3.5...oxlint_v0.4.0