Rust for Linuxは、C言語とアセンブリ言語のみを使用して記述されてきたLinuxカーネル内部のソフトウェアで使用できるプログラミング言語としてRustを追加することを目的とした2020年に開始された進行中のプロジェクトである。このプロジェクトはカーネルドライバを記述する際のバグを減らすためにRustのメモリ安全性を利用することを目指している。プロジェクトの進捗はRustの支持者とLinuxカーネルプロジェクトのリーダーのリーナス・トーバルズの両方が期待したよりも遅れている。2023年12月、Rustで記述された最初のドライバが受け入れられ、Linuxカーネル 6.8でリリースされた。2025年12月、LinuxカーネルでRustはもはや実験的なものではなく、Rustによる開発がカーネル開発の公式な一部になったことが発表された。
歴史 Linuxカーネルは1991年の最初のリリース以来、主にC言語とアセンブリ言語で記述されてきた。1997年頃にはC++の追加が検討され、2週間ほど実験されたが、その後中止された。Rustは2006年に開発が開始され、メモリ安全性に重点を置きながらC言語などの低水準言語の性能の実現と、ユーザビリティなプログラミングツールと構文を組み合わせている。
Rustを使用して記述された外部ローダブル・カーネル・モジュールの例が2013年にTaesoo Kimによって公開された。
Rust for Linuxプロジェクトは2020年にLinuxカーネルメーリングリストで発表され、Linuxプロジェクト内で使用できるプログラミング言語としてRustを追加することを目標としていた。 2022でリーナス・トーバルズは、このプロジェクトの成果の取り込みはLinux 5.20のリリースからすぐに開始できると述べた。Linux 6.0の最初のリリース候補版はRustのサポートがない状態で2022年8月14日に作成された。Linux 6.0-rc1のリリースノートでリーナスはRustのサポートを追加するという彼の意向を表明し、「実際には、最初のRustの基盤とマルチ世代LRU VMが実現することを期待していたが、今回はどちらも実現しませんでした」と述べた。2022年9月19日、ZDNetの記事でリーナスからの「なにか異常なことが起こらない限り、RustはLinux 6.1に組み込まれるだろう」という電子メールが明らかになった。
2022年10月、Rust for Linux向けの実装を受け入れるためのプルリクエストがリーナスによって承認された。Linux 6.1時点では、開発者が機能をテストできるようにするために、サポートは意図的に最小限に抑えられていた。
Rust for Linuxの開発者たちは再割当てしてはならないメモリを安全かつ適切にエラーを処理してするための新しいライブラリ「pinned-init」を作成した。これはLinux 6.4で最初に導入され、その後のバージョンで改良が加えられている。
Linux 6.10でRISC-VがRustをサポートするアーキテクチャとして追加された。
2024年7月、Linuxに複数のRustのバージョンをサポートする最初の変更が採用され、2024年5月2日リリースのRust 1.78と2024年6月13日リリースのRust 1.79のどちらを使用してもコンパイルできるようになった。
、Rust for LinuxはRustコンパイラの不安定な機能に依存している。
2025年12月、Linuxカーネルサミットにおいて、Rustを実験的段階からカーネルのコア部分に昇格させることが決定された。これにより、Linuxカーネルのコア言語にC言語とアセンブリ言語に加えてRustが追加された。
利用例
Linuxカーネルには以下のRustで記述されたコンポーネントが含まれている:
rnull、nullデバイスの完全互換品 ASIX AX88772AとRealtek Generic FE-GEの物理層ネットワークドライバ QRコードを表示するカーネルパニックハンドラ
LinuxでRustを使用しているその他の著名なプロジェクトには以下のようなものがある:
tarfs、tarファイルシステム NVM Express(NVMe)デバイスドライバ Android Binder IPCドライバ Asahi LinuxのAppleシリコンAGX GPU DRMドライバ PuzzleFS、ファイルシステム 読み取り専用のext2ファイルシステム Nova、Rustで記述されたnouveau Nvidia GPUドライバを作成することを意図しており、freedesktop.orgプロジェクトの基盤上で開発されている
脚注
注釈
出典
関連項目 LynxOS Redox OS