5月21日、corrodeが「Rust for Linux Live with Alice Ryhl and Greg Kroah-Hartman - Rust in Production Podcast」と題した記事を公開した。
3500万行のCコードベースを誇るLinuxカーネルに、Rust言語を導入する壮大な取り組みが本格化している。オランダ・ユトレヒトで開催されたRust Weekでは、Linux Foundation FellowでLinux安定版カーネルのメンテナーGreg Kroah-Hartmanと、GoogleでAndroidとRust for Linux開発を担当するAlice Ryhlの2人がライブインタビューに応じ、プロジェクトの現状と将来について語った。
なぜ今、LinuxにRustなのか
Linuxカーネルは地球上で最も重要なインフラだが、その大半がメモリ安全でないC言語で書かれている。Linux Kernel CVE Statisticsによると、カーネルの脆弱性の約70%がメモリ関連の問題に起因している。バッファオーバーフローやuse-after-freeといったメモリ関連の脆弱性は、カーネルレベルでは致命的なセキュリティホールとなるためだ。
Rustはコンパイル時にこれらの問題を防ぐ所有権システムを持ち、かつCレベルの性能を維持できる。MicrosoftやGoogleなど大手テック企業が相次いでメモリセーフ言語への移行を表明する中、Linuxカーネルでも同様の動きが加速している。
2つの重要人物が語るプロジェクトの核心
Greg Kroah-Hartmanは20年以上にわたってLinuxカーネルのUSBサブシステム、ドライバーコア、sysfs、debugfsなどを維持してきた業界のレジェンドだ。一方、Alice RyhlはTokioの非同期ランタイムメンテナーとしても知られ、現在GoogleでAndroidのBinder IPCシステムのRust実装を手がけている。
2人が強調したのは「書き直しではなく相互運用性」という戦略だ。3500万行のCコードベースを一から書き直すのは現実的ではない。代わりに、新しいドライバーをRustで書き、既存のCコードとの橋渡し部分を段階的に整備することで、リスクを最小限に抑えながら移行を進める。
実践的な取り組み:BinderドライバーとAndroid
Aliceが手がけるBinderドライバーのRust実装は、この戦略の象徴的な事例だ。BinderはAndroidアプリ間のプロセス間通信(IPC)を担う重要なコンポーネントで、セキュリティ上極めて重要な役割を果たしている。
Rust版Binderでは、従来のC実装で頻発していたメモリリークやuse-after-freeの問題を、コンパイル時のチェックで根本的に防げる。同時に、カーネル内の既存のメモリ管理やスケジューラーといったC実装のサブシステムとシームレスに連携する仕組みも整備されている。
開発者体験の劇的な改善
インタビューでは理論を超えて、日々のカーネル開発でRustを書く実際の体験についても語られた。Gregは「デバッグ時間が大幅に短縮された」と述べ、コンパイル時にメモリ関連のバグが捕捉されることで、従来のような長時間のデバッグセッションが不要になったと説明した。
現在のRust for Linuxプロジェクトの範囲は、ビルドシステムやkernelクレートから、ドライバー、コアサブシステムの抽象化、完全にRustで書かれた新しいインフラまで多岐にわたっている。2022年にLinux 6.1でRustサポートが初めて導入されて以降、着実に対応範囲を拡大している。
システムプログラミング全体への波及効果
この取り組みは、Linuxカーネルの変貌にとどまらず、システムプログラミング全体に大きな影響を与える可能性がある。WindowsのカーネルチームやFreeBSDプロジェクトでも同様の議論が活発化しており、オペレーティングシステム開発のパラダイムシフトが始まっている。
メモリセーフティとパフォーマンスを両立するRustの特性が実証されることで、他のシステムソフトウェア、組み込みシステム、クラウドインフラの開発手法にも波及することが予想される。
Rust WeekでのライブインタビューはPodcast形式で公開されており、両氏の生の声と技術的な詳細を直接聞くことができる。
詳細はRust for Linux Live with Alice Ryhl and Greg Kroah-Hartman - Rust in Production Podcastを参照していただきたい。