Linuxカーネル開発における「Rust」–その現在地と今後
今回は「Linuxカーネル開発における「Rust」–その現在地と今後」についてご紹介します。
関連ワード (ソフトウェア等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、ZDNet Japan様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
米バージニア州リッチモンドで最近開催されたLinux Plumbers Conferenceでは、Linux開発でRustをサポートする取り組みの責任者であるMiguel Ojeda氏が、LinuxカーネルにおけるRustサポートの最新状況を説明した。一言で言えば、LinuxカーネルのRustサポートは成熟してきており、Ciscoやサムスン、Canonicalなどの開発者やベンダーから強力な支援を受けている状況だ。
ご存じの通り、Linux 6.1のリリース時にLinus Torvalds氏がRustの導入を認めたことで、今ではLinuxカーネルの開発にRustが使えるようになっている。しかしRustは現在、C言語と並ぶLinux開発言語のツールチェーンの一部になるために必要な環境を整えている段階にある。
Rustの地位は向上している。MicrosoftのソフトウェアエンジニアであるWedson Almeida Filho氏はその理由について、「私たちは、Rustには、C言語と共にカーネル実装に実際に使える言語の1つになる準備が整っていると感じている。Rustは、特権を扱うコードの潜在的なバグやセキュリティ上の脆弱性を減らしつつ、コアカーネルとも問題なく連携できるため、パフォーマンス特性を維持することができる」と述べていた。
このことが重要なのは、Alex Gaynor氏とGeoffrey Thomas氏が「2019 Linux Security Summit」で説明したように、Linuxカーネルに見つかっているセキュリティホールの約3分の2が、メモリ安全性の問題に起因しているためだ。こうしたエラーが発生する原因は、CとC++が本質的な弱点を抱えていることにある。一方Rustは、非常に安全なAPIを使用することでこれらの問題を回避している。
もちろんこれは、C言語を使うのをやめてRustに移行しようという話ではないし、実際問題として、そのようなことが起きるとは考えにくい。しかし、RustがLinux開発にとって重要な言語になりつつあるのは間違いない。
RustがLinuxカーネルの開発に安心して使えるようになるまでには、まだいくつか克服すべき課題がある。Ojeda氏がカンファレンスで述べていたとおり、「新しいメンバーが加わり、コアチームは大きくなった」とは言え、まだやるべきことはたくさんある。