LinuxカーネルにおけるRustサポートのためのRFC
(lkml.org)-
カーネルの第2言語としてRustを使うべき理由を整理
-
コアや主要なカーネルサブシステムを書き直すのではなく、ドライバおよびそれに類する「Leaf」モジュールをRustで書けるようにするため
LinuxカーネルでRustを使うと
-
言語的特性により、メモリセーフティバグ、データ競合、論理バグのリスクが減る
-
メンテナーがRustの安全性により、モジュールのリファクタリングやパッチ適用をより自信を持って行える
-
最新の言語機能と詳細なドキュメント化のおかげで、新しいドライバやモジュールを簡単に書ける
-
より多くの人が最新言語を使ってカーネル開発に広く参加できる
"Why Rust?"
- Linuxカーネルの文脈では、Cと比べていくつかの主要な利点を提供
→ (言語的な利点は省略..)
"Why not?"
- Linuxカーネルの文脈では、Cと比べてこのような欠点がある
→ コンパイラプラグイン、Sanitizerなどを含むCベースのツール群に注力してきた。これは時間が経ちRustの利用が増えれば改善される見込み
→ LLVMベースの単一実装。GCCフロントエンド、Craneliftベースの 'ructc' バックエンド、ブートストラップチェーンを減らすための 'mrustc' といった取り組みが進行中
→ まだ標準化されていない。標準化がカーネルに役立つかは定かではないが..
→ 現在のコンパイラの複雑な機能と制限により、コンパイル速度が遅い
→ 現時点ではNightlyビルドの機能が必要で、安定版は使えない。1年以内にこの制約をなくすことを目標としている
→ 'core' および 'alloc' Rust標準ライブラリの機能はすべて使われておらず、現状必要な部分より大きい
-
これらの欠点の大半は、Rustがまだ若く、あまり使われていない言語であることに起因する
-
過去数十年にわたってCがそうであったように、Rustはシステムプログラミングの重要な一部になると信じている
3件のコメント
https://lkml.org/lkml/2021/4/14/1099
"So I replied with my reactions to a couple of the individual patches, but on the whole I don't hate it."
とともに、HOWEVER の後に続く文章を見ると、
実際に追加されるまでにはかなり時間がかかるかもしれませんね。
このRFCについて、Linus Torvalds氏が返信しています https://lkml.org/lkml/2021/4/14/1099
"So I replied with my reactions to a couple of the individual patches, but on the whole I don't hate it."
全体としては嫌っていないとのことなので、うまく進んでいくのではないかと期待しています。
検索してみると、GeekNewsにはRust関連のニュースが本当にたくさん上がっていましたね。今や本当に時代の本流だと思います。
https://news.hada.io/search?q=Rust
Rustプログラミング言語 [韓国語版] https://ja.news.hada.io/topic?id=1152
Rust - 高い性能と信頼性を確保するための言語 「Rustの素晴らしさを知らないあなたは気の毒です」 https://ja.news.hada.io/topic?id=991
徐々にCと共存しながら、いつかは置き換えられているのではないか……と考えてしまいます。むしろMozillaから独立したことのほうが、より良い選択だったような気もします。