2月12日、海外のテクノロジーメディア「ItsFOSS」が「最近のカーネル騒動を受けて、Rust for Linuxポリシーが施行される(After Recent Kernel Drama, Rust for Linux Policy Put in Place)」と題した記事を公開した。この記事では、Linuxカーネルを巡るRustの統合方針について詳しく紹介されている。
最近、LinuxカーネルにRustコードを導入する動きをめぐって新たな問題が発生している。DMAマッピングヘルパーコードのメンテナがRustコードの受け入れを拒否したことを発端として、多くのカーネル開発者やSNS上で議論が過熱し、その結果、開発者がカーネル開発プロセスへの不信感から離脱を表明する事態にまで至った。
議論の中では、クロス言語構成によるメンテナンスの煩雑さを“_癌_”と形容する強い表現もみられた。この一連のやりとりは比較的長いスレッドとして公開されており、詳細を追いかけたい場合は該当スレッドを参照していただきたい。
一方で、今後の混乱を回避するためにRustカーネルポリシー(Rust kernel policy)が策定され、大きな動きがあった。これはRust for Linuxプロジェクトを主導するMiguel Ojeda氏が示したもので、LinuxカーネルでRustをどのように取り込んでいくかを整理することを目的としている。
策定された方針によれば、Rust対応の導入やメンテナンスについていくつかのルールが定められている。
- Rust for Linuxは独立した取り組みである
- RustプロジェクトやRust Foundationとは直接関係なく、コミュニティ主導で進められている。
- 主要メンテナのサポート
- Linuxカーネルの多くの主要メンテナがRustの導入を容認・支援している。
- ビルド破壊の禁止
- 基本的にはCの変更によってRust対応のビルドが壊れることは認められない(Rustサブシステムに限り例外がある)。
- 重複ドライバの扱い
- 同じ機能を持つCドライバとRustドライバが並行して存在することは原則として認められない。ただし、Rust導入を円滑に進めるため、一時的に例外を設ける場合がある。
- 柔軟な運用方針
- ポリシーそのものは今後の議論や検証結果を踏まえて柔軟に更新される可能性があり、開発者コミュニティでオープンに意見を交換しながら進められていく。
Rust for Linuxは、プログラミング言語Rustが持つ利点をLinuxカーネルに取り込むことを目指す取り組みであり、さまざまな開発者コミュニティや企業の支援を受けて進められている。ただし、RustプロジェクトやRust Foundationが直接関与しているわけではない点も、この方針で明確に示されている。
この方針により、Rust for Kernelの貢献者とLinuxカーネルの主要メンテナの間で生じていた摩擦が今後少しでも和らぐことが期待されている。具体的な内容については、実際のRust kernel policyの文書を参照するとより詳しく把握できるだろう。
詳細はAfter Recent Kernel Drama, Rust for Linux Policy Put in Placeを参照していただきたい。