XNUMX番目のバージョンの公開からXNUMXか月, ミゲル・オヘーダ、Rust-for-Linuxプロジェクトの作者、 XNUMX番目のオプションの提案を知らせた LinuxカーネルでのRust言語のデバイスドライバーの開発用。
Rustのサポートは実験的なものと見なされていますが、linux-nextブランチに含めることはすでに合意されています。 この開発は、Googleと、Let's Encryptプロジェクトの創設者であるISRG(Internet Security Research Group)組織によって資金提供されており、HTTPSの推進とインターネットセキュリティを向上させる技術の開発に貢献しています。
提案された変更により、Rustをカーネルドライバーとモジュールを開発するための第XNUMX言語として使用できるようになることを覚えておく必要があります。
Rustサポートは、デフォルトではアクティブではないオプションとしてアドバタイズされます また、Rustが必要な基本ビルドの依存関係に含まれることはありません。 ドライバー開発にRustを使用すると、解放されたメモリ領域にアクセスしたり、nullポインターを逆参照したり、バッファー制限を超えたりする手間をかけずに、最小限の労力でより優れた安全なドライバーを作成できます。
新しいバージョンのパッチは、パッチのXNUMX番目とXNUMX番目のバージョンの議論中に行われたコメントと、私たちが見つけることができる最も注目すべき変更を引き続き排除します。
Rust1.57安定バージョンに移行 参照コンパイラとして、Rust2021言語の安定版へのバインドが保護されています。Rust2021p仕様への移行そのような不安定な機能の使用を避けるために作業を開始することができます const_fn_transmute、const_panic、const_unreachable_unchecked、core_panic、try_reserveなどのパッチで。
それはまた際立っています allocバージョンの開発は継続されています Rustライブラリから、新しいバージョンでは、 「no_rc」および「no_sync」オプションは、機能を無効にするために実装されています これはカーネルのRustコードでは使用されないため、ライブラリがよりモジュール化されます。 引き続きメインのalloc開発者と協力して、必要なカーネルの変更をメインライブラリにもたらします。 ライブラリがカーネルレベルで機能するために必要な「no_fp_fmt_parse」オプションは、Rustのベースライブラリ(カーネル)に移動されました。
可能性のあるコンパイラ警告を削除するためにコードがクリーンアップされました カーネルをCONFIG_WERRORモードでコンパイルする場合。 Rustでコードが作成されると、追加の診断コンパイラモードとClippylinter警告が含まれます。
彼らは提案した seqlocksを使用するための抽象化 (シーケンスロック)、電源管理のコールバック呼び出し、メモリI / O(readX / writeX)、割り込みおよびスレッドハンドラー、GPIO、デバイスアクセス、ドライバー、および錆びたコードの資格情報。
ドライバー開発ツールが拡張されました 再配置可能なミューテックス、ビットイテレータ、ポインタ上の単純化されたバインディング、改善された障害診断、およびデータバスに依存しないインフラストラクチャを使用します。
リンクの操作は、Refタイプを使用して改善されました 同じ名前の中央APIを使用して参照をカウントするrefcount_tバックエンドに基づいて簡略化されています。 標準のマッピングライブラリで提供されているArcおよびRcタイプのサポートは削除され、カーネルレベルで実行されるコードでは使用できなくなりました(ライブラリ自体については、これらのタイプを無効にするオプションが用意されています)。
Rustで書き直されたバージョンのPL061GPIOドライバーがパッチに追加されました。 このドライバーの特徴は、ほぼ行ごとの実装が既存のCGPIOドライバーを繰り返すことです。 Rustでのコントローラーの構築に精通したい開発者のために、行ごとの比較が用意されており、RustでのCコードの構築がどのようになったかについての洞察が得られます。
Rustのメインコードベースは、libgccjitライブラリを使用してAOTコンパイルを実装するGCCのrustcバックエンドであるrustc_codegen_gccを採用しています。 バックエンドを適切に開発すると、GCCを使用してカーネルに含まれるRustコードを収集できるようになります。
ARM、Google、Microsoftに加えて、RedHatはLinuxカーネルでRustを使用することに関心を示しています。
最後に、それについてもっと知りたい場合は、詳細を調べることができます 次のリンクで。