Rust-for-プロジェクトの著者、ミゲル・オヘダLinuxカーネル開発者による検討のために提案された Linux Rustでデバイスドライバを開発するためのコンポーネントの第4バージョンです。Rustのサポートは実験的な段階ですが、すでにlinux-nextブランチへの組み込みが承認されており、カーネルサブシステム上に抽象化レイヤーを作成したり、ドライバやモジュールを作成したりするのに十分な成熟度を備えています。この開発は、Googleと、HTTPSの普及とインターネットセキュリティ向上技術の開発を推進するLet's Encryptプロジェクトの創設団体であるISRG(Internet Security Research Group)によって資金提供されています。
提案されている変更により、ドライバーとカーネル モジュールを開発するための第 XNUMX 言語として Rust を使用できるようになるということを思い出してください。 Rust サポートは、デフォルトでは有効になっていないオプションとして提供されており、カーネルの必須ビルド依存関係として Rust が含まれることはありません。 ドライバー開発に Rust を使用すると、解放後のメモリ アクセス、null ポインターの逆参照、バッファ オーバーランなどの問題がなく、最小限の労力でより安全で優れたドライバーを作成できます。
Rustのメモリ安全性は、参照チェック、オブジェクトの所有権とオブジェクトの有効期間(スコープ)の追跡、およびコード実行中のメモリアクセスの正確性の評価を通じて、コンパイル時に提供されます。 Rust は整数オーバーフローに対する保護も提供し、使用前に変数値の初期化を必須にし、標準ライブラリでエラーをより適切に処理し、デフォルトで不変参照と変数の概念を適用し、論理エラーを最小限に抑えるための強力な静的型付けを提供します。
新しいバージョンのパッチでは、パッチの第 XNUMX 版、第 XNUMX 版、および第 XNUMX 版の議論中に作成されたコメントが引き続き削除されています。 新しいバージョンでは:
- Rust 1.58.0 の安定リリースをリファレンス コンパイラとして使用するように移行しました。 プロジェクトに必要な変更のうち、メインの Rust ツールキットにはまだ含まれていませんが、「-Zsymbol-mangling-version=v0」フラグ (Rust 1.59.0 で予定) と「maybe_uninit_extra」モード (Rust 1.60.0 で予定) です。 .XNUMX)が記載されています。
- 適切な Rust ツールが利用できるかどうかの自動チェックが追加され、システム内の Rust サポートをテストする機能が拡張されました。
- Rust コードからデバイス識別子テーブル (「IdArray」および「IdTable」) にアクセスするための新しい抽象化が提案されています。
- タイマー関連機能 (クロック フレームワーク) にアクセスするためのレイヤーを追加しました。
- プラットフォーム ドライバーは、トレイトの実装を通じて定義されるようになりました。
- プラットフォーム ドライバーの登録を簡素化するために新しいマクロが追加され、新しい汎用ドライバー テンプレートが提案されました。
- 「dev_*」構造用のマクロを追加しました。
- IoMem タイプに「{read,write}*_relaxed」メソッドを追加しました。
- ファイル操作を簡素化するために FileOpener プロパティを削除しました。
- ドライバー登録時に渡される引数に「ThisModule」パラメータが追加されました。
- Rust言語でカーネルモジュールを作成するための標準テンプレートが提案されています。
出所: オープンネット.ru
