9月30日、Nicholas Nethercoteが「How to speed up the Rust compiler in September 2026」と題した記事を公開した。2026年7月末から9月末にかけてRustコンパイラのコンパイル速度がどのように改善されたかを詳述した内容で、629件のベンチマーク測定のうち555件が改善、平均wall-time(実経過時間)削減率4.57%という成果が報告されている。
Rustコンパイラのパフォーマンス最適化は、perf.rust-lang.orgでベンチマーク計測が継続的に公開されており、コミュニティ全体で取り組まれてきた長年の課題だ。今回の期間は、新しいボローチェッカー「Polonius Alpha」と新しいトレイトソルバーという二つの大きな構造変化がNightlyで同時に有効化されるという特殊な状況下での最適化であり、その密度は過去の報告と比べても際立っている。
最大の見どころ:CFG走査アルゴリズムの変更で反復150万回→9万回
今回の改善の中で最もインパクトが大きいのが、データフロー解析に関わるCFG(制御フローグラフ)の走査アルゴリズム変更だ(#160193)。
データフロー解析はコンパイラ内で「不動点(fixpoint)」、すなわち解析結果が変化しなくなるまで繰り返し実行される処理だ。走査の順序が悪いと収束までの反復回数が爆発的に増加する。cranelift-codegenクレートには基本ブロック数が18,000を超える巨大な関数が存在し、旧アルゴリズムではボローチェッカーが使うEverInitializedPlaces解析の収束に150万回のapply_effects_in_block呼び出しが必要だった。新アルゴリズムではこれが9万回まで削減され、このクレートのcheckビルドで約30%のwall-time削減を達成している。
さらに同じEverInitializedPlacesに対して、プロジェクションの不要なデータ追跡を省く改善も加わり(#160033)、match-stressベンチマークで17%の命令数削減を記録した。
2ヶ月で「緑の海」:全体の数字
ベンチマーク計測結果によれば、2026年7月29日から9月28日の期間でwall-timeの平均削減率は**4.57%**。629件の測定のうち555件が改善、リグレッションは74件のみという結果だった。Nethercoteはこれを「a sea of green(緑の海)」と表現している。perf.rust-lang.orgのUIでは改善がグリーン、リグレッションがレッドで表示されるため、画面が緑に染まった状態を指す。複数のベンチマークでは二桁パーセントの削減も記録されている。
新機能の導入とパフォーマンスのトレードオフ
Polonius Alpha(新ボローチェッカー)
Polonius Alphaが8月からNightlyで有効化された。Poloniusは旧ボローチェッカーが誤って拒否していた一部の有効なプログラムを受け入れられるようにする次世代ボローチェッカーで、Rust公式ブログでもその意義が解説されている。ただし処理量が増えるため、serdeなど一部のクレートでコンパイル時間が増加している。Jack Hueyがliveness計算の遅延評価化(#161938)でこれに対処し、serdeの命令数を3〜5%削減している。
新トレイトソルバー
新トレイトソルバーも8月にNightlyで有効化された。こちらも一部ケースで低速化が発生するが、Nethercote自身が複数のPRで対処し、特定のアウトライアークレートで**50%・25%・15%**という大幅な削減を達成している。詳細はJana Dönszelmannによる解説記事にまとめられている。
新規コントリビューターxmakroの活躍
今回の期間で存在感を示したのが新規コントリビューターのxmakroだ。連続した改善を投入した。
- #157281: 特殊化グラフ構築時のimpl処理を最適化。全ベンチマークで平均サイクル数1.58%削減
- #158059: インクリメンタルコンパイルデータのロード最適化。最大6%の命令数削減
- #160268: 動的ディスパッチを静的ディスパッチに切り替え、大量のアロケーションを削減
その他の主要な改善
- PGO(Profile-Guided Optimization)をClippyに適用(#159642):最大18%のwall-time改善
- LLVM 23へのアップグレード(#158734):全ベンチマーク平均1.2%のwall-time削減
- コンパイラのデフォルトスタックサイズ増加(#160535):手動スタック拡張機構
ensure_sufficient_stackを削除でき、最大約3%の命令数削減
また、パフォーマンス改善PRがマージキューに大量に溜まり、10件のパフォーマンス改善PRをまとめてロールアップするという前例のない事態も発生した。
著者は翌日からRustコンパイラ最適化専業へ
記事の末尾でNethercoteは、10月1日からHexcatに転職し、Rustコンパイラのパフォーマンス最適化プロジェクトゴールに専念することを報告している。Nethercoteは長年Mozillaでfirefoxのプロファイリングツール開発などに携わり、Rustコンパイラの高速化シリーズを継続的に執筆してきた人物だ。その活動が正式な業務になるという転換は、Rustエコシステムにとっても注目の動きである。
詳細はHow to speed up the Rust compiler in September 2026を参照していただきたい。