3月17日、JavaScriptツールチェーンをRustベースで置き換えることを目指すプロジェクトOxcが、Eslintの置き換えを目指す「Oxlint」のベータ版をリリースした。

以下に、その内容を紹介する。
Oxcとは何か
Oxcは「JavaScript Oxidation Compiler」の略称であり、Rustで記述された高性能なJavaScript向け開発ツール群の総称である。JavaScriptに不可欠とされるコンパイラツール(パーサー、リンター、フォーマッタ、トランスパイラ、ミニファイア、リゾルバ)を構築することを目的として開発が進められている。プロジェクトの目標は、VoidZeroの一環としてJavaScript用の次世代ツールチェーンを強化することであり、言語解析やコード変換などの高負荷処理をRustのパフォーマンスを活かして効率的に行うことが可能だ。
Oxcはオープンソースで開発されており、多数のコントリビューターによるコミュニティ主導のコラボレーションを通じて進化を続けている。既存のJavaScriptツールチェーンとの親和性を保ちつつも、高速化や拡張性の向上を実現する点が特徴である。
Oxlintとは何か
Oxcプロジェクトに含まれる各種ツールの中でも、OxlintはJavaScriptやTypeScriptのコード品質を向上させるために設計されたリンターである。従来のリンター(例えばESLint)と同様、構文エラーやコードスタイルの乱れ、潜在的なバグを検出し、開発者に修正を促す役割を担う。Oxlintが注目を集めている理由は、Rustベースの高パフォーマンスを発揮するだけでなく、多様なルールやプラグインを標準でサポートし、コードメンテナンスを効率化する仕組みを提供している点にある。
約1年にわたる開発を経てベータ版がリリースされ、機能の充実度やパフォーマンス、安定性などが大幅に向上している。
現時点でOxlintは、中小規模のプロジェクトにおいてESLintを完全に置き換えることが可能である。大規模なプロジェクトでは、eslint-plugin-oxlintを利用し、ESLintのルールを無効化してOxlintを先行して実行する運用が推奨されている。これにより高速なフィードバックループを構築できる。
Oxlintを導入する際は、任意のパッケージマネージャを使用してプロジェクトのルートディレクトリでOxlintをインストールし、実行すればよい。エディタとの連携方法やより詳しい設定方法については、インストールガイドに詳しく記載されている。
ベータ版で追加された主な新機能
以下は、ベータ版で強化された機能の一部である。
- 大幅なパフォーマンス改善(前リリース比で最大50%高速化)
- 500を超えるルールを標準搭載(追加インストール不要)
- typescript、- unicorn、- react、- react-perf、- nextjs、- import、- jsdoc、- jsx-a11y、- node、- promise、- jest、- vitestなどのプラグイン由来の多数のルールが完成
- .oxlintrc.json形式での設定に対応(ネストした設定ファイル、extends、overridesなど柔軟な設定が可能)
- .astro、- .svelte、- .vueファイルの- <script>ブロックを追加設定なしでリンティング可能
- 自動修正やサジェスチョン適用機能を提供
OxlintはESLintのルールや主要プラグインを広範にサポートすると同時に、以前よりも大幅な高速化を実現している。以下のベンチマーク結果は、著名なリポジトリでOxlintのベータ版をテストした際の例である。
| Repository | File count | Lint time (GA) | Lint time (beta) | Speedup | 
|---|---|---|---|---|
| elastic/kibana | 68,591 | 6.02s | 3.11s | 48% faster | 
| microsoft/vscode | 5,703 | 1.697s | 0.792s | 53% faster | 
| vitest-dev/vitest | 1,732 | 105ms | 50ms | 52% faster | 
| vuejs/core | 1,063 | 217ms | 89ms | 59% faster | 
今後のロードマップ
コミュニティから強く要望されている、ESLint用カスタムプラグインのサポートについては、次のメジャーリリースでの提供を目指している。
また、VSCode、Zed、coc.nvim、IntelliJプラグインなど、各種IDE・エディタとの連携を強化する計画も進行中である。
詳細はThe JavaScript Oxidation Compilerを参照していただきたい。
