C言語以外のプログラミング言語をLinuxカーネルの開発に用いるという考えは、少し前までであれば一笑に付されていたはずだ。しかし状況は変わった。現在、高水準システム言語としてLinuxでの採用を目指しているRustは、「Linuxカーネルの第2言語としてRustのサポートを追加する(次なる)パッチシリーズ」で、その目標に向けて大きく歩を進めたといえる。
これらの新パッケージにおける最大の変更点は、カーネル用として提案されているRustコードがベータ版ではなく安定版のRustコンパイラーに依存しているところにある。このため今後、安定版のRustコンパイラーが新たにリリースされるたびにLinux上のRust(Rust on Linux)もそれに対応することになる。現時点では「Rust 1.57.0」が採用されている。
Linuxカーネル開発者であり、LinuxでRustを採用する動きを率いているMiguel Ojeda氏はLinuxカーネルメーリングリスト(LKML)に、「コンパイラーをアップグレードすることで、それまでに使用していたいくつかの不安定な機能を削除できるようになった」と書いている。つまり、Linux上のRustがより安定するということだ。
今後についてOjeda氏は、「不安定な機能に依存しないようになるまでアップグレードを続け、それが実現された時点でRustの最小バージョンのサポートがGCCやClangといったレベルでサポートできるようになったと宣言し始めるようになるかもしれない」と記している。
Linuxカーネルの上級開発者であるGreg Kroah-Hartman氏は筆者に対して、Linuxに搭載されるRustが「最初に用いられる場所はおそらくドライバーだ」と確信していると述べ、その理由は「ドライバーがカーネルソースの依存構造における『末端』に位置するためだ。ドライバーはカーネルの中心的機能に依存するものの、ドライバーに依存するもの(カーネル機能)はない」と話した。
2020年、Linuxカーネル開発者のための年次カンファレンス「Linux Plumbers Conference(LPC)2020」で、Rustをカーネルの第2言語として導入するというアイデアなどに関して議論された。
Linus Torvalds氏は確信しているが、LinuxがRustで記述されるようなことはないだろう。しかし、それが目標ではないのだ。Cで記述された2500万行にも及ぶLinuxカーネルをRustで記述し直したいと考える人などいないはずだ。
Rust言語のリードであるJosh Triplett氏と、GoogleのエンジニアNick Desaulniers氏が率いる一部の人々は、Rust言語をカーネルのシステムレベルで使用することを提案している。RustがCよりもずっと安全性に優れており、特にメモリーエラーの取り扱いに長けているためだ。
Torvalds氏はRustのメリットを認識している。同氏は、LinuxへのRustの導入について、ゆっくりながらも着実なアプローチを奨励する一方、ドライバーや、その他のカーネルプログラムの中心的機能以外でのRustインターフェースの使用は理にかなっているとし、「それは現実になると確信している。Rustではないかもしれないが、この種のことを記述する別のモデルを採用するようになるのは確かであるかもしれず、Cが唯一の選択肢というわけではない」と述べている。
Ojeda氏は2021年夏、米ZDNetの取材に対し、「このプロジェクトは終わっていないが、上位のメンテナーが現在の変更を受け入れ、私たちにカーネルの中身について作業させてくれるなら、私たちにはメインラインの作業に参加する準備ができている」とし、「ほとんどの仕事はまだこれからだ」と述べていた。
この記事は海外Red Ventures発の記事を朝日インタラクティブが日本向けに編集したものです。