Rust言語をサポートするLinuxカーネル用パッチの第XNUMX版

Rust-for-Linux プロジェクトの作者である Miguel Ojeda は、Linux カーネル開発者による検討のために、Rust 言語でデバイス ドライバーを開発するためのコンポーネントの XNUMX 番目のバージョンを提案しました。 Rust のサポートは実験的であると考えられていますが、linux-next ブランチに含めることがすでに合意されており、カーネル サブシステム上に抽象化レイヤーを作成したり、ドライバーやモジュールを作成したりする作業を開始できるほど十分に成熟しています。 この開発には、Google と、Let's Encrypt プロジェクトの創設者であり、HTTPS とインターネット セキュリティを向上させる技術の開発を推進する 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

コメントを追加します