Releases: oxc-project/oxc
oxlint v0.4.0
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
--disable-oxc-plugin
by @Boshen in #3328--disable
-react/unicorn/typescript-plugin
by @Boshen in #3305
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.
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.
eslint-plugin-jest/no-duplicate-hooks
by @eryue0220 in #3358default-case
rule by @jelly in #3379no-new
by @jelly in #3368prefer-exponentiation-operator
by @jelly in #3365symbol-description
by @jelly in #3364jsdoc/require-returns-description
by @leaysgur in #3397
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
forRuleEnum
hash by @Boshen in #3336 - perf(parser): more efficient number parsing by @overlookmotel in #3342
- perf(parser): use
FxHashSet
fornot_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
- Published JSON schema for configuration file
- More features to the configuration file
- Automatically synced and never outdated documentation website pages
Full Changelog: oxlint_v0.3.5...oxlint_v0.4.0
oxlint v0.3.5
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
whenArguments
containsMemberExpression
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
What's Changed
- feat(linter): move react/rules_of_hooks to nursery
- feat(linter/eslint): Implement max-classes-per-file by @jelly in #3241
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
andno-mixed-operators
by @Boshen in #3188 - move prefer-node-protocol to restriction by @Boshen in #3171
New Rules
- react/rules-of-hooks by @rzvxa in #3071
- eslint/radix by @KubaJastrz in #3167
- eslint/no-new-native-nonconstructor by @Boshen in #3187
- eslint/unicode-bom by @jelly in #3239
- eslint/no-empty-function rule by @jelly in #3181
- eslint-plugin-next/no-duplicate-head by @Boshen in #3174
- eslint-plugin-next/no-page-custom-font by @Dunqing in #3185
- eslint-plugin-next/no-styled-jsx-in-document by @Dunqing in #3184
- unicorn/no-anonymous-default-export by @1zumii in #3220
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
- @KubaJastrz made their first contribution in #3167
- @1zumii made their first contribution in #3220
Full Changelog: oxlint_v0.3.2...oxlint_v0.3.3
oxlint 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
andno-mixed-operators
by @Boshen in #3188 - move prefer-node-protocol to restriction by @Boshen in #3171
New Rules
- react/rules-of-hooks by @rzvxa in #3071
- eslint/radix by @KubaJastrz in #3167
- eslint/no-new-native-nonconstructor by @Boshen in #3187
- eslint/unicode-bom by @jelly in #3239
- eslint/no-empty-function rule by @jelly in #3181
- eslint-plugin-next/no-duplicate-head by @Boshen in #3174
- eslint-plugin-next/no-page-custom-font by @Dunqing in #3185
- eslint-plugin-next/no-styled-jsx-in-document by @Dunqing in #3184
- unicorn/no-anonymous-default-export by @1zumii in #3220
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
- @KubaJastrz made their first contribution in #3167
- @1zumii made their first contribution in #3220
Full Changelog: oxlint_v0.3.2...oxlint_v0.3.3
oxlint v0.3.2
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
Hotfix unwanted plugin rules being enabled.
Full Changelog: oxlint_v0.3.0...oxlint_v0.3.1
oxlint v0.3.0
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
Full Changelog: oxlint_v0.2.18...oxlint_v0.3.0
oxlint v0.2.18
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
- Add --jsdoc-plugin flag by @leaysgur in #2935
- Implement plugin-jsdoc/check-property-names by @leaysgur in #2989
- eslint/max-len by @woai3c in #2874
- remove import/no-unresolved by @Boshen in #3023
- support
oxlint-disable
alongsideeslint-disable
by @Boshen in #3024 - jsdoc: Implement require-property rule by @leaysgur in #3011
- jsdoc: Implement require-property-(type|name|description) rules by @leaysgur in #3013
New Contributors
- @branchseer made their first contribution in #2943
- @woai3c made their first contribution in #2874
Full Changelog: oxlint_v0.2.17...oxlint_v0.2.18
oxlint v0.2.17
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
- @bradzacher made their first contribution in #2938
Full Changelog: oxlint_v0.2.16...oxlint_v0.2.17
oxlint v0.2.16
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 theimport/no-cycle
rule by @JohnDaly in #2905 - fix(ast):
FinallyClause
won't get visited asBlockStatement
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
- @charnog made their first contribution in #2789
- @kalvenschraut made their first contribution in #2906
- @JohnDaly made their first contribution in #2905
Full Changelog: oxlint_v0.2.15...oxlint_v0.2.16