Biome v2.1


Biome 2.0のリリースから、まだ1か月も経っていません。しかし、この短期間で驚くほど多くの反響をいただきました!Discordは賑わい、ダウンロード数は急増し、バグレポートも続々と寄せられています :)
より高速なスキャナー
Section titled “より高速なスキャナー”おそらく一番の議論の的は、Biome 2.0で導入された新しいスキャナーでしょう。これは、ネストされた設定ファイルの検出や、プロジェクトルールが有効な場合のモジュールグラフの構築に使われます。この機能が議論を呼んでいる理由は明確で、スキャナーによって処理が遅くなる一方、ユーザーはBiomeに高速性を求めているからです。
速度低下を軽減するために、2.0ではプロジェクトルールをオプトインにしており、ユーザーは機能と速度のどちらを優先するか自分で選択できます。しかし理想的には、両方を実現したいところです。そして残念ながら、プロジェクトルールがなくても、スキャナーはある程度の目に見えるオーバーヘッドを引き起こしていました。
Biome 2.1では、「軽量スキャナー」(プロジェクトルールが無効な場合)の動作ロジックを変更しています。以前は、常にプロジェクトのルートから全体をスキャンしていましたが、現在はBiomeに操作を要求するファイルとフォルダーを、プロジェクトのどの部分をスキャンすべきかのヒントとして使用します。
つまり、プロジェクトルートから引数なしでBiomeを実行する場合、違いに気付くことはありません。しかし、チェックする特定のファイルを指定したり、ネストされたフォルダー内でBiomeを実行したりすると、スキャナーはプロジェクトのどの部分に興味があるかを認識し、それらの部分のみをスキャンします。
プロジェクトルールを有効にしている場合、これらの改善は適用されないことに注意してください。プロジェクトルールは、指定していないファイルを含む他のファイルから情報を取得する必要があることが多いため、現時点では引き続きプロジェクト全体をスキャンします。
改善された型推論
Section titled “改善された型推論”Biome 2.0をリリースしたとき、型推論がnoFloatingPromises
ルールが理想的に検出すべきケースの約75%を検出できると述べました。それ以来、これを約85%に改善し、次のようなケースも正常に推論できるようになりました:
// これがPromiseに評価されることがわかります:true && Promise.reject("logical operator bypass");
// しかし、これはPromiseではありません:false && Promise.reject("logical operator bypass");
// 同様に、これがPromiseを返す可能性があることを検出するようになりました:const condition = Math.random() > -1; // 常にtrueですが、リンターには動的condition ? Promise.reject("ternary bypass") : null;
// 一方、以下は決してPromiseではないことがわかります:const alwaysFalsy = 0;alwaysFalsy ? Promise.reject("ternary bypass") : null;
// Promiseが処理されていないため、これにフラグが立てられるようになりました:[1, 2, 3].map(async (x) => x + 1);
さらに、ゲッター、呼び出しシグネチャ(Call Signature)、カンマ演算子などのサポートを追加しました。私たちの目標は、TypeScriptのどの部分がサポートされているかを心配する必要がなく、大部分のケースが「ただ動く」ようにすることです。まだ作業中ですが、進捗に満足しています。
そして最後に、関連するルールnoMisusedPromises
も追加しました。
ルールの更新
Section titled “ルールの更新”2.1.0で以下の新しいルールが追加されました:
noAlert
noImplicitCoercion
noMagicNumbers
noMisusedPromises
noUnassignedVariables
useReadonlyClassProperties
useUnifiedTypeSignature
その他の注目すべき変更:
- ルール
noUnusedFunctionParameters
に、ignoreRestSiblings
オプションが追加されました。
注目すべきバグ修正
Section titled “注目すべきバグ修正”- ルート設定からネストされた設定ファイルを無視すると、適切に無視されるようになりました。
- 別の設定から拡張する場合、他の設定の
root
を正しく無視するようになりました。これはいくつかのユースケースで混乱を招いていました。
2.xの旅はまだ始まったばかりです。スキャナーも型推論もさらなる改善が見込まれます。さらに、コアコントリビューターは2025年のロードマップを進め、次の機能に焦点を当てます:
- HTMLサポートを安定させる
- Vue、Svelte、Astro、そしてうまくいけばAngularもサポートするようにHTMLを拡張する
- Markdownサポートをパーサー実装から開始する
- その他多数!
インストールと移行
Section titled “インストールと移行”@biomejs/biome
パッケージをインストールまたは更新します。パッケージをアップグレードする場合は、migrate
コマンドを実行してください。
npm install --save-dev --save-exact @biomejs/biomenpx @biomejs/biome migrate --write
migrate
コマンドは設定の破壊的変更を処理するので、手動で行う必要はありません。
この方向性が気に入っています、どうすれば手伝えますか?
Section titled “この方向性が気に入っています、どうすれば手伝えますか?”Biomeは、プログラミング、オープンソース、Biomeの哲学を愛するボランティアによって主導されているプロジェクトです。どんな助けも歓迎します😁
Biomeに精通していて、その普及に貢献したい場合は、ウェブサイトを母国語に翻訳して私たちを支援できます。このダッシュボードで、サポートされている言語と、ドキュメントが最新かどうかを確認できます。
私たちとチャット
Section titled “私たちとチャット”Discordサーバーに参加して、コミュニティと交流してください。コミュニティとチャットし、コミュニティの一員であることは、貢献の一形態です。
プロジェクトの技術的側面が好きで、Rust言語への道を歩みたい、またはパーサー、コンパイラー、アナライザーなどに関する知識を実践したい場合、Biomeはあなたのためのプロジェクトです!
探求すべき多くの側面があります。退屈することはないと保証します。以下は、始められるものの小さなリストです:
- 新しいリントルールを作成する!まだ実装していないルールがたくさんあります(ESLint、ESLintプラグイン、Next.js、Solidなど)。詳細な技術ガイドがあります。
- Biomeのパーサーの構築を手伝う! Biomeパーサーの面白い点は、エラー耐性のある回復可能なパーサーであり、従来のASTではなくCSTを出力することです。
- LSP(Language Server Protocol)に新しい機能を実装するか、エディター拡張機能のいずれかに新しい機能を追加する:VS Code、Zed、JetBrains IntelliJ。
プロジェクトの将来を信じている場合は、Open CollectiveまたはGitHub Sponsorsを通じて財政的な貢献で支援することもできます。
さらに、プロジェクトはエンタープライズサポートプログラムを提供しており、企業としてコアコントリビューターの1人と契約してBiomeツールチェーンの特定の側面に取り組むことができます。