Rust が Linux カーネルで「実験」を卒業した話
はじめに
Rust が Linux カーネルに導入された、という話自体は数年前からありました。
しかし最近、Rust サポートが 「実験的扱いを終え、長期的に使われる前提になった」 ことが、カーネルメンテナ間で明確に合意されています。
これは単なる言語トレンドではなく
OS カーネルという最も保守的な領域で、言語選択が変わり始めた
という点で大きな意味を持つと考えます。
なぜ Linux カーネルは Rust を受け入れたのか
最大の理由は、メモリ安全性です。
Linux カーネルで報告される脆弱性の多くは
- use-after-free
- buffer overflow
- null pointer dereference
といった C 言語では防ぎにくいクラスのバグ です。
Rust は所有権・借用・ライフタイムをコンパイル時に検査することで
「その種のバグを構造的に書けなくする」設計を取っています。
そのため Linux カーネルでは
- レビュー以前に事故を減らせる
- メンテナの負担を根本から下げられる
という点が評価されました。
「実験」扱いが外れた、という意味
重要なのは、Rust が C を置き換えるわけではない という点です。
現在の方針は以下の通りです。
- 既存の C コードは維持
- 新規コード、とくに デバイスドライバ から Rust を採用
- C と Rust が共存する前提
今回の合意は
「Rust は試験導入ではなく、今後も使い続ける言語である」
というメッセージに近いものです。
一部メンテナからは
「新規ドライバは Rust を推奨する」
という趣旨の発言も出ています。
実際どこで使われているのか
現時点で Rust が使われている主な領域は
- デバイスドライバ
- Android 向け Linux カーネル周辺コード
- 他サブシステムと疎結合なコンポーネント
です。
理由は明確で
- 境界がはっきりしている
- unsafe を局所化しやすい
- C とのインターフェースが限定的
といった特性があるためです。
Linux カーネル全体を Rust で書き直す計画は現時点ではありません。
「危険度の高い部分から Rust を使う」
という現実的な進め方が採られているように見えます。
Rust でも脆弱性は出る
誤解されがちですが、
Rust = 絶対安全 ではありません。
実際、Linux カーネルに含まれる Rust コードでも
- unsafe ブロックの誤用
- 並行処理設計の不備
- ロジックバグ
による脆弱性は報告されています。
ただし Rust では
- 問題箇所が unsafe に集中する
- バグの種類が限定される
- レビュー対象が明確になる
という特徴があります。
「バグがゼロになる」のではなく
「バグの起き方を制御できる」
という点が Rust の本質です。
Rust エンジニアに何が起きるか
この流れが意味するものは大きいです。
- Rust はアプリケーション専用言語ではなくなった
- OS / ドライバ / 基盤ソフトでの需要が増える
- C の単純な代替ではなく「次世代の標準候補」になりつつある
特に組み込みや低レイヤを扱うエンジニアにとって
Rust は 将来的に避けて通れない技術 になりつつあります。
おわりに
Linux カーネルが Rust を正式に受け入れたことは
- 言語戦争の勝敗
- 一時的な流行
ではなく、
「安全性を人間の注意力に委ねる設計の限界」
を示しているように思います。
Rust は万能ではありません。
しかし、危険な領域にこそ適した言語 であることを
Linux という巨大プロジェクトが示し始めました。
今後数年で
「Rust をどこで使うか」
という問いは、より現実的なものになっていくでしょう。
参考リンク
-
Linux カーネルでの Rust 採用が「実験」を卒業
https://gigazine.net/news/20251211-linux-kernel-rust/ -
Rust for Linux プロジェクト公式
https://rust-for-linux.com/ -
Linux Kernel Maintainer Summit における Rust の位置づけ
https://lwn.net/Articles/978738/ -
Rust コードに関する Linux カーネル脆弱性の事例
https://rocket-boys.co.jp/security-measures-lab/linux-kernel-vulnerability-cve-2025-68260-fixed/
Discussion