Skip to content

Releases: oxc-project/oxc

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

oxlint v0.3.5

15 May 14:35
754d9f4
Compare
Choose a tag to compare

What's Changed

  • feat(linter): add use-isnan fixer for (in)equality operations by @DonIsaac in #3284
  • feat(linter/eslint): Implement fixer for unicode-bom rule by @jelly in #3259
  • fix(linter/no-direct-mutation-state): false positive when class is declared inside a CallExpression by @Boshen in #3294
  • fix(parser): parse DecoratorCallExpression when Arguments contains MemberExpression by @Boshen in #3265
  • perf(ast): inline all ASTBuilder methods by @Boshen in #3295
  • perf(lexer): dedupe numeric separator check by @DonIsaac in #3283
  • perf(linter): rewrite react/require-render-return by @mysteryven in #3276

New Contributors

Full Changelog: oxlint_v0.3.4...oxlint_v0.3.5

oxlint v0.3.4

13 May 12:22
7193d75
Compare
Choose a tag to compare

What's Changed

Full Changelog: oxlint_v0.3.3...oxlint_v0.3.4


From v0.3.3

What's Changed

Features

  • add --symlinks to allow symbolic walking by @Boshen in #3244
  • add --format github for github check annotation by @Boshen in #3191
  • change the category of all react-perf rules to perf by @Dunqing in #3243
  • remove deprecated eslint v9 rules no-return-await and no-mixed-operators by @Boshen in #3188
  • move prefer-node-protocol to restriction by @Boshen in #3171

New Rules

Bug Fixes

  • improve prefer-string-starts-ends-with rule by @camc314 in #3176
  • import/export: improve multiple exports error message by @Dunqing in #3160
  • import/named: handle import { default as foo } by @Boshen in #3255
  • shorten eslint/eqeqeq rule error message's span by @mysteryven in #3193
  • fix(parser): correctly parse cls.fn = x by @Dunqing in #3208

New Contributors

Full Changelog: oxlint_v0.3.2...oxlint_v0.3.3

oxlint v0.3.3

13 May 10:17
6149e49
Compare
Choose a tag to compare

What's Changed

Features

  • add --symlinks to allow symbolic walking by @Boshen in #3244
  • add --format github for github check annotation by @Boshen in #3191
  • change the category of all react-perf rules to perf by @Dunqing in #3243
  • remove deprecated eslint v9 rules no-return-await and no-mixed-operators by @Boshen in #3188
  • move prefer-node-protocol to restriction by @Boshen in #3171

New Rules

Bug Fixes

  • improve prefer-string-starts-ends-with rule by @camc314 in #3176
  • import/export: improve multiple exports error message by @Dunqing in #3160
  • import/named: handle import { default as foo } by @Boshen in #3255
  • shorten eslint/eqeqeq rule error message's span by @mysteryven in #3193
  • fix(parser): correctly parse cls.fn = x by @Dunqing in #3208

New Contributors

Full Changelog: oxlint_v0.3.2...oxlint_v0.3.3

oxlint v0.3.2

04 May 14:19
Compare
Choose a tag to compare

What's Changed

Oxlint Import Plugin Alpha Release

  • feat(linter): @typescript-eslint/prefer-literal-enum-member by @kaykdm in #3134
  • feat(linter): add more "ban-ts-comment" test cases. by @woai3c in #3107
  • feat(linter): eslint-plugin-jest/require-hook by @eryue0220 in #3110
  • feat(linter): eslint/no-await-in-loop by @woai3c in #3070
  • feat(linter): typescript-eslint/prefer-enum-initializers by @todor-a in #3097
  • feat(linter/jsdoc): Implement implements-on-classes rule by @leaysgur in #3081
  • feat(linter/jsdoc): Implement check-tag-names rule by @leaysgur in #3029
  • feat(linter/jsdoc): Implement no-defaults rule by @leaysgur in #3098
  • feat(linter/jsdoc): Implement require-yields rule by @leaysgur in #3150
  • feat(linter/jsdoc): Support settings.ignore(Private|Internal) by @leaysgur in #3147

New Contributors

Full Changelog: oxlint_v0.3.1...oxlint_v0.3.2

oxlint v0.3.1

22 Apr 08:23
Compare
Choose a tag to compare

Hotfix unwanted plugin rules being enabled.

Full Changelog: oxlint_v0.3.0...oxlint_v0.3.1

oxlint v0.3.0

22 Apr 05:27
Compare
Choose a tag to compare

What's Changed

Potential breaking change

  • -D all no longer enables nursery rules, use -D all -D nursery instead

Features

  • support eslint globals by @Boshen in #3038
  • change no-empty-static-block to correctness
  • implement --format checkstyle by @Boshen in #3044
  • implement --format unix by @Boshen in #3039
  • implement fixer for typescript-eslint/consistent-type-definitions by @todor-a in #3045

Fixes

  • fix crashing with unwrap in import/no-cycle by @Boshen in #3035

Full Changelog: oxlint_v0.2.18...oxlint_v0.3.0

oxlint v0.2.18

19 Apr 09:49
04f5fc0
Compare
Choose a tag to compare

What's Changed

New Rules

  • correctness: eslint-plugin-unicorn no await in promise methods by @camc314 in #2963
  • correctness: eslint-plugin-unicorn no single promise in promise methods by @camc314 in #2962

Features

New Contributors

Full Changelog: oxlint_v0.2.17...oxlint_v0.2.18

oxlint v0.2.17

11 Apr 08:47
Compare
Choose a tag to compare

What's Changed

  • feat(linter): eslint-plugin-jest/prefer-lowercase-title by @eryue0220 in #2911
  • feat(linter): typescript-eslint/consistent-type-definitions by @todor-a in #2885
  • fix(cli): fix oxlint --format json yields 0 files to lint by @Boshen in #2940
  • fix(cli): if format is json do not print summary information (#2899) by @kalvenschraut in #2925
  • fix(linter): import/no-cycle ignore type-only imports by @JohnDaly in #2924
  • refactor(semantic/jsdoc): Rework JSDoc struct for better Span handling by @leaysgur in #2917

New Contributors

Full Changelog: oxlint_v0.2.16...oxlint_v0.2.17

oxlint v0.2.16

08 Apr 03:56
Compare
Choose a tag to compare

What's Changed

  • feat(linter): @typescript-eslint/prefer-for-of by @charnog in #2789
  • feat(linter): Implement jsdoc/check-access by @leaysgur in #2642
  • feat(linter): Implement jsdoc/empty-tags by @leaysgur in #2893
  • feat(linter): eslint-plugin-jest/prefer-mock-promise-sorthand by @eryue0220 in #2864
  • feat(linter/import): Add ignoreTypes option for the import/no-cycle rule by @JohnDaly in #2905
  • fix(ast): FinallyClause won't get visited as BlockStatement anymore. by @rzvxa in #2881
  • fix(linter): handle self closing script tags in astro partial loader (#2017) by @kalvenschraut in #2907
  • fix(linter): svelte partial loader handle generics (#2875) by @kalvenschraut in #2906

New Contributors

Full Changelog: oxlint_v0.2.15...oxlint_v0.2.16