2月20日、海外のテクノロジーメディアPhoronixが「Greg Kroah-Hartman Makes A Compelling Case For New Linux Kernel Drivers To Be Written In Rust」と題した記事を公開した。以下に、その内容をかいつまんで紹介する。
記事によると、LinuxカーネルにRustを導入するかどうかをめぐる議論は続いている。リーナス・トーバルズ氏の右腕ともいえるGreg Kroah-Hartman(Greg KH)もRustコードの大きな支持者であり、新しいカーネルコードやドライバをCではなくRustで記述することを強く推奨しているようだ。
Greg KHは、 カーネルに生じるバグの大部分はC言語の細かな不備に起因している と主張している。Rustによってメモリ安全性の問題などを回避できるため、これらのバグを事前に防ぎ、開発者が実際のロジックバグやレースコンディションなどのより本質的な問題へ注力できると考えているようだ。既存のCコードをすべてRustに置き換えるのは難しいものの、新しいドライバやコードにRustを採用することで、Cの脆弱性やバグを大幅に減らせるのではないかという。
以下はGreg KHがLinuxカーネルメーリングリスト(LKML)に投稿した内容の要旨である。
「ここ15年以上にわたって、ほぼすべてのカーネルバグ修正やセキュリティ問題を見てきた。大半のバグ(その深刻度とは無関係)は、C言語にある些細なコーナーケースに起因するものだ。Rustならそのような問題が大幅に減る。Rustによって、使い終わったメモリを参照する(use-after-free)問題やエラーハンドリングの失敗などが大きく軽減される。
新しく追加されるドライバであれば、Cで起こりがちなメモリ安全性のバグを防げるRustを使うのは当然の選択だろう。C++には期待できないし、C++コミュニティが抱える問題を踏まえると、そちらへ移行する可能性も低い。
Rustを導入することで、既存のカーネルAPIを見直す機会にもなる。Cで安全に使うのが難しかったAPIを再定義することにより、Linux全体の品質向上にもつながるだろう。
もちろんRustが万能ではないことは承知している。しかし、今後の新しいコードにRustを活用することは、カーネルの品質と将来性を高める上で大きな意味がある。混合言語のメンテナンスは大変だが、Linuxカーネルをここまで育ててきた開発者コミュニティであれば対応できる。とにかく前進し続けなければならない。」
このように、Greg KHはLinuxカーネルの新規コードやドライバをRustで書くメリットを強調している。C言語の問題を完全に排除できるわけではないものの、Rustがメモリ安全性やエラーハンドリングの観点で優位に立つことで、将来的に大幅なバグ削減と開発効率の向上が期待できるという。
詳細はGreg Kroah-Hartman Makes A Compelling Case For New Linux Kernel Drivers To Be Written In Rustを参照していただきたい。