Rust言語チームのリーダーであるジョシュ・トリプレット氏は、Linuxカーネルでの使用をサポートすることを約束し、次のように述べています。「LinuxカーネルがRust言語開発の優先事項に反映されることを嬉しく思います。カーネル内でRusticインターフェースを構築するために追加の言語機能が必要な場合は、どのような言語機能強化がそれらの要件に最も適しているかを検討する必要があります。」
これらの発言の背景は、来月オンラインで開催されるLinux Plumbersカンファレンスのセッション提案に関するカーネルメーリングリストでの議論です。このカンファレンスは、カーネル、コアライブラリ、ウィンドウシステムなど、Linuxの内部構造に取り組んでいるオープンソース開発者を対象としています。GoogleのエンジニアであるNick Desaulniers氏は、LLVMの「マイクロカンファレンス」の一環として、Linuxカーネルのツリー内Rustサポートというトピックを提案しました。
この話題は、Linuxコミュニティの主要人物数名の注目を集めました。その中には、Linuxカーネルの監督を務めるリーナス・トーバルズ氏やカーネルメンテナーのグレッグ・クロア=ハートマン氏も含まれています。トーバルズ氏は既に、カーネル開発における追加言語としてRustの可能性について言及していましたが、ドライバなど「カーネル自体にとってそれほど重要ではない」ものを対象としていると述べ、このアイデアを軽視しています。カーネルは主にC言語で記述されています。
トリプレット氏は、Rustは「カーネルの規範と標準に自然に適合すると同時に、Rustの規範と標準の一部を適切な場所に導入する」べきだと述べた。また、C言語の外部関数インターフェース(FFI)に頼るのではなく、「自然で安全に使用できる適切なRustインターフェース」が必要だとも述べた。
Rustを段階的に導入する方法についても議論がありました。Triplett氏は、「十分な時間をかけてRustを試すまでは、『makeallnoconfig』も『make allyesconfig』もRustを必要としない」という設定オプションを提案しました。
Rustに私たちは夢中:セキュリティ重視のスーパーC++言語は、Stack Overflowの住人の間で依然として最も愛されている
続きを読む
ここでTorvalds氏が口を挟み、「いや、どうか『Rustが利用可能か』を自動設定オプションにしてほしい。既にコンパイラのバージョン確認や、設定時に様々なコンパイラフラグの可用性チェックを行っているのと全く同じ方法だ…新しいRustサポートがデフォルトでビルドテストすらされないような状況にはなりたくない…最悪なのは、(少人数の)グループが自分たちの特殊な状況でテストを始め、『誰も気にしない、隠されているから』という理由で、悪いことやおかしなことをしてしまうことだ。いや、結構だ」と発言した。
Rustの魅力は、CやC++よりも使いやすく安全な、最新のシステムレベルプログラミング言語であることです。1年前、Microsoftのセキュリティ研究チームは「Rustが現在利用可能なCやC++の最良の代替言語であると考える理由」について投稿しました。
マイクロソフトのプリンシパル・クラウド・デベロッパー・アドボケイトのライアン・レヴィック氏は、Rustの魅力はまず安全性にあると述べた。「RustをC言語やC++と区別するのは、その強力な安全性保証です。『unsafe』キーワードを使って明示的に除外しない限り、Rustは完全にメモリセーフです」。バッファオーバーフローエラーなど、メモリ関連のバグが数多く発生しているWindowsのようなオペレーティングシステムにとって、Rustの魅力は明らかだ。
しかし、Rustにはそれだけではありません。レヴィック氏は他の機能についても言及しました。「マイクロソフトの多くのチームは、Rustの豊富な型システムによって表現力豊かなプログラムが書けることを実感しています」と彼は述べました。
レビック氏は、Microsoft での Rust 導入を阻む要因は「C++ との第一級の相互運用性の欠如、および既存の Microsoft ツールとの相互運用性の欠如」だと書いている。
LinuxでRustを使用する場合のもう一つの潜在的な問題は、Rustコンパイラが頻繁に更新されるため、コンパイラのアップグレードによって不安定性が生じるリスクが高まることです。Triplett氏は、「Rustは、ある安定バージョンから次のバージョンにアップグレードする際に、安定性が厳密に保証されています」と述べています。
トーバルズ氏はこう答えた。「心配なのは、公開された機能群ではなく、コンパイラ自体のバグの方です。コンパイラのバグは非常に稀ですが、発生した場合のデバッグが非常に困難なため、非常に特別な問題になってしまいます。」
カーネル開発に Rust を使用することへの関心と、Torvalds 氏や Kroah-Hartman 氏のような人々による原則的なサポートは、ゆっくりと慎重に導入されるとはいえ、これが実現する可能性を示唆しています。®