Linuxの大部分はC言語で書かれていますが、Rustが勢いを増しています。約25,000行のRustコードが既にカーネルに組み込まれており、主にバインディング用ですが、カーネルクラッシュ時にQRコードを生成するなどの機能にも使用されています。
Rustの導入は、カーネルの特定の部分におけるメモリ安全性の向上を目指しています。しかし、Rustでドライバを記述するには、広範なCコードベースへのバインディングの必要性や、CとRustのメモリ管理モデルの違いなど、課題が伴います。
Rustにおけるメモリ安全性とは、主にオブジェクトのライフサイクルとメモリ所有権の安全性を指し、必ずしもすべてのバグを排除することを意味するものではありません。Rustコードでは、論理エラーやメモリの安全性の欠陥が発生する可能性が依然としてあります。
Rust の採用は、既存の C コードベースの改善も促進しています。Rust バインディングを作成する必要性から、安全性と明確さを向上させるための C コードの再評価が促進されるためです。