
Linux 6.19がStableとなったあと、次期バージョンであるLinux 7.0のマージウィンドウが開かれていますが、Rustの「実験的」タグが取り外され、正式に採用されることとなりました。
Rust
RustはMozillaが開発したプログラミング言語で、Cと同様に低レイヤーのコードがかけると同時に、Cで問題となっていたメモリ安全性が担保されているというプログラミング言語です。
C言語では明示的なメモリ確保とメモリ解放を行わなければならないため、メモリの自由度が高い一方、メモリ解放忘れやミスなどによって、メモリリークが発生したり、メモリ関連の脆弱性が発生しやすい状態になっています。
メモリ関連の脆弱性は、調査によっては6割以上になると報告されており、Rustを採用することでこの脆弱性を大きく減らす事ができると期待されています。
Rustの採用は徐々に広がっており、例えばMicrosoftは自社のコードをCからRustに置き換える取り組みを進めている他、Androidなどでも採用が進んでいます。
LinuxにおけるRust
LinuxでのRustの採用は、2020年に開始され、最初のコードがマージされたのが2022年のLinux 6.1のことです。Linux 6.1では実験的に限定された範囲での採用にとどまりましたが、その後徐々にRustベースの部分が増えてきています。
このプロジェクトも6年目となりましたが、ようやく正式採用に至った形です。
経緯として、昨年12月に行われたMaintainers Summitにて、Rustの採用が「もはや実験的ではない」と確認されexperimentalタグが取り外されることになりました。その後最初のバージョンとなるLinux 7.0でついにRustが正式採用されるということになります。
Rustの採用にあたっては、Rustへの移行に反対する技術的保守派とRust推進派によって対立が起こっており、度々論争に発展しています。おそらくこの現状自体は暫く続くことになりそうですが、RustがLinuxに正式採用されたことからある程度は沈静化すると思われます。
今後の展望
LinuxはCをすべてRustに置き換えるということではありません。LinuxのCコードは膨大でこれをすべてRustに置き換えるというのは野心的ですが非現実的です。
そのため、RustとCを共存させる戦略を取っています。しかし、RustからCのAPIやライブラリを呼び出す時、Rustの利点をぶっ潰すunsafeを使用する必要があることから、LinuxのライブラリのRustによる安全なラッパーを提供するプロジェクトも進んでいます。
また、正式に採用されたことにより、今後より多くのコードがRustに置き換えられていく可能性もあります。
おそらく今後はCとRustの両方のコードがマージされることになりそうです。