2022年12月11日T1

Linux カーネルが Rust を採用 ── C 独占の終わりの始まり

Linus Torvalds が Linux 6.1 のリリース時、 Rust 言語による初期サポートを正式マージ。 1973年以来、 Linux カーネルは事実上 C のみで書かれていたが、 メモリ安全性を保証する Rust が本格的にカーネル開発に持ち込まれた歴史的瞬間。 当初はデバイスドライバから段階的に拡張され、 2024年以降は Apple Silicon GPU ドライバ、 NVMe、 ファイルシステムなどで Rust 実装が本格普及。 一部 C 派の保守的メンテナと Rust 派の対立も発生(2024年の「Rust for Linux 内紛」)し、 言語選択をめぐるソフトウェア文化の世代交代を象徴する出来事になった。

Rust for Linux ロゴ ── Tux と Rust ロゴの重ね合わせ
出典Dbeef / 0xDeadbeef (Wikimedia Commons) · CC0 1.0 (Public domain dedication) · Commons で見る

メタデータ

日付
2022年12月11日
年代
2020s
Tier
T1
出典数
06
関連項目
01

Linux カーネルが Rust を採用 ── C 一強の30年に終止符

2022年12月11日にリリースされた Linux 6.1 は、 表面的には通常のメジャーリリースだった。 だがその中に、 Linux 史上ほぼ前例のない決定が含まれていた ── Rust 言語の初期サポートが正式マージ された。

1991年に Linus Torvalds が公開して以来、 Linux カーネルは事実上 C のみで書かれてきた。 アーキテクチャ依存のアセンブリと、 ごく一部のスクリプトを除けば、 30年以上にわたって C 一色。 そこに「もう一つの言語」が mainline に入った瞬間である。

なぜ Rust か ── メモリ安全性の論理

カーネルバグの最大カテゴリは、 use-after-free、 二重解放、 境界外アクセス、 データ競合といった メモリ安全性 に関するものだ。 Google・Microsoft の社内集計でも、 セキュリティ脆弱性の 約70% がメモリ安全性起因と繰り返し報告されている。 C はこれをコンパイラレベルで防げない。

Rust は所有権と借用検査により、 これらの大半を コンパイル時に 排除する。 「カーネルを書き換えるのではなく、 新しいコード(とくにドライバ)を Rust で書けば、 そのコードはメモリ安全になる」 ── これが採用の論理だった。

Miguel Ojeda と Rust for Linux

プロジェクトを率いたのはスペインの物理学者出身プログラマ Miguel Ojeda。 2020年から Rust for Linux(R4L)として議論を始め、 2021年にはカーネルメーリングリストに最初のパッチを投稿。 2022年9月、 Maintainers Summit で Linus Torvalds が「次のサイクルに入れていい」と言質を与え、 12月の 6.1 で実現した。

初期マージは最小限 ── Rust ツールチェイン、 alloc クレートの一部、 そしてサンプルとして単純なモジュールが入っただけ。 ドライバ実装はまだ無い。 だがこの「足場」が、 その後3年間で本格展開の基盤になる。

Linus の心境変化

Torvalds はかつて C++ を「ひどい言語」と切り捨て、 Linux における言語選択に保守的だったことで有名だ。 Rust 採用の決定は、 そのキャラクターからは意外な転換に見えた。

本人の説明は実利的だった ── 「カーネル開発者の世代交代が必要であり、 若い世代を惹きつけられない言語選択は、 長期的にプロジェクトを殺す」「メモリ安全性の論証は技術的に妥当だ」。 イデオロギーではなく持続可能性の論点として、 Torvalds は Rust を受け入れた。

2024年の内紛 ── Hellwig vs R4L

採用は技術的にはスムーズに進んだが、 文化的にはそうではなかった。 2025年1月、 「Add dma coherent allocator abstraction」という穏当な名前のパッチが LKML(カーネルメーリングリスト)で論争の引き金となる。

DMA サブシステムのメンテナ Christoph Hellwig(中核 C メンテナの一人、 NVMe ドライバの原作者でもある)は、 Rust 抽象化のレビューと保守を引き受けることを 明確に拒否 した。 主張の核は ── 「私が責任を負うサブシステムに、 私が読まない言語のバインディングが乗るのは受け入れられない。 サブシステムごとに二言語のメンテナンス負荷を負うのはスケールしない」。

R4L 側の主張は逆 ── 「Rust 側の抽象化は Rust 側で保守する。 C メンテナに Rust を読めとは言っていない」。 技術論としては平行線、 そしてこれは技術論を越えていた。

Hector Martin の離脱

Asahi Linux(Apple Silicon Mac での Linux)プロジェクトリーダー Hector Martin は、 Apple GPU ドライバを Rust で書いていた当事者である。 彼はメーリングリスト上で Hellwig 側を強く批判し、 Mastodon でも公然と非難した。

Torvalds は2025年2月、 公開メールで Martin を叱責した ── 「ソーシャルメディアでの圧力("social media brigading")はカーネル開発の手段ではない。 議論はメーリングリストで」。 この介入は同時に「メンテナの拒否権は尊重する」というメッセージでもあった。

その数日後の2025年2月13日、 Martin は Asahi Linux のプロジェクトリーダーを辞任、 同時に upstream カーネルメンテナからも降りた。 燃え尽き、 ユーザからの過剰な要求、 そして Torvalds のリーダーシップへの失望を理由に挙げた。 R4L からは2024年8月にも、 Microsoft 在籍のメンテナ Wedson Almeida Filho が同様の理由で離脱している。

2025年 ── Rust が「実験」を卒業

人的な軋轢にもかかわらず、 技術的進捗は加速した。 2025年、 Miguel Ojeda は Rust for Linux が「実験的」フェーズを正式に終えた と宣言。 Torvalds も「Rust kernel policy」文書を承認し、 プロジェクトの長期的支援を明文化した。

主要なドライバ実装も走り出した。

  • Nova: NVIDIA Turing 以降向け、 GSP(GPU System Processor)依存の新しいオープンソース NVIDIA ドライバ。 Nouveau の後継。 Linux 6.15 でスケルトンが mainline 入り、 6.17 でさらに肉付け。
  • Apple AGX: Asahi 由来の GPU ドライバ。 Martin 離脱後もコミュニティが継続。
  • NVMe: 一部の null block ドライバなどから始まり、 Rust 版が継続開発中。
  • Android Binder: Google 主導。 DRM パニックスクリーンの QR ジェネレータなども Rust 実装。

何が示されたか

Linux カーネルへの Rust 採用は、 単なる言語追加ではない。 オープンソースで最も影響力ある OS プロジェクトが、 「C で書く」という不文律を更新した という事件である。

そして同時に、 ボランティアベースの巨大プロジェクトに新しい言語を持ち込むことの 人的コスト ── 文化衝突、 メンテナの離脱、 リーダーシップ判断の難しさ ── を可視化した出来事でもあった。 30年分の C 文化と、 メモリ安全性を要求する新しい時代の摩擦は、 まだ完全には解けていない。

それでも、 2025年時点で Rust は Linux に確実に根を張った。 C の独占は終わり、 これから書かれるカーネルコードの相当部分は、 もう C ではない言語で書かれるだろう。

出典

  1. 一次資料Rust for Linux — kernel.org documentation

    取得日: 2026-05-24

  2. 一次資料Rust for Linux — project home

    取得日: 2026-05-24

  3. 一次資料Nova GPU Driver — Rust for Linux

    取得日: 2026-05-24

  4. 二次資料Rust for Linux — Wikipedia

    取得日: 2026-05-24

共有