Microsoft は、開発者が Rust で Windows ドライバーを作成できるようにするコードを Github でリリースしました。これは、オペレーティング システムのメモリセーフ プログラミングを可能にするための重要なステップです。 Azure CTO の Mark Russinovich は、「Rust での Windows ドライバーの開発に懸命に取り組んでいます」というコメントとともに X にリンクを投稿しました。
この作品は何年も前に遡ります。 2019 年 7 月、Microsoft Research は、「脆弱性のクラス全体を発生前に排除する」ことを望んでいると投稿し、メモリセーフな言語を主張し、「これらの要件を満たす最も有望な新しいシステム プログラミング言語の 1 つは、もともと Mozilla によって発明された Rust プログラミング言語である」と述べました。
同社は、メモリの安全性だけでなく、データ競合の安全性、つまり「2 つ以上のスレッドがメモリ領域に非同期でアクセスできない」ことを保証するために Rust を推進しています。
2022 年、Russinovich 氏は次のように発表しました。「C/C++ で新しいプロジェクトを開始するのはやめて、非 GC 言語を使用する必要がある場合には Rust を使用してください。安全性と信頼性のために、業界はこれらの言語が廃止されたと宣言すべきです。」 C# や Java などの GC 言語またはガベージ コレクション言語は商用アプリケーションには適していますが、基盤となるシステム コードには適していません。
Windows は主に C と C++ で書かれていますが。 「さまざまな技術的および歴史的理由により、現在、ほとんどのユーザーモード コードは C++ で書かれていますが、カーネル コードのほとんどは依然として C 言語で書かれています。」長年ソフトウェア開発に携わってきたマイクロソフトのソフトウェアエンジニア、レイモンド・チェン氏は2018年、それ以来Windows 11が登場したが、新バージョンの開発時にOSは書き換えられていないと述べた。ハードウェア メーカーがデバイスを Windows で実行するために使用する Windows ドライバー ツールキットは、依然として C/C++ ツールキットです。
新しい Rust ベースのドライバー ツールキットのリリース ノートによると、WDM (Windows Driver Model) ドライバーと WDF (Windows Driver Framework) ドライバーの両方をサポートすることを目的としています。 WDM ドライバーは低レベルでオペレーティング システムに密接に関連付けられていますが、WDF ドライバーはフレームワーク ライブラリを通じてシステムと対話します。初期リポジトリは WDK に重点を置いています。
説明には、「このプロジェクトはまだ開発の初期段階にあり、商業利用はまだ推奨されていません。マイクロソフトは実験とフィードバックを奨励しており、開発者はリポジトリ内の GitHub ディスカッション フォーラムでフィードバックを求めることができることに注意しています。」と付け加えています。
最初の疑問は、例外をどのように処理するかということです。ある開発者は、「構造化例外処理は、Windows カーネル (およびオペレーティング システム全体) の Windows 開発に不可欠な部分であり、Windows カーネル開発で Rust を実現する上での大きな障害となります。Rust には例外がありません。Rust は結果変数を使用して回復可能なエラーを報告することを好み、回復不可能なエラーの場合はクラッシュ失敗で終了します。カーネル コードでは、そのようなクラッシュはシステム全体のクラッシュを引き起こすため、望ましくありません。」と述べています。
開発者の Johnny Shaw は、Linux カーネル (これも Rust を使用) の LinuxTorvalds を引用し、次のように述べています。「カーネル コードは、ランダムなユーザー空間システム ツールとは異なるためです。メモリ枯渇によって中断が発生してはなりません。エラーが返されるだけで十分です。」トーバルズ氏はこれを「根本的な問題」とみなしている。
Microsoft の新しいリポジトリの初期のコードには、次のコメントが含まれています。
//FIXME:KeBugCheckEx 経由でバグチェックをトリガーする必要がありますか?
この問題は、基盤となる Windows コードに Rust を導入することが、WDKAPI に Rust 言語バインディングを追加するほど単純ではないことを示しています。ただし、最初の反応は概ね好意的でした。メモリの安全性の問題は Windows のセキュリティと安定性の問題の大部分を占めているため、Rust の採用は実行可能な解決策です。