Rust言語をサポートするLinuxカーネル用の新しいバージョンのパッチ

Rust-for-Linux プロジェクトの作者である Miguel Ojeda は、Linux カーネル開発者による検討のために、Rust 言語でデバイス ドライバーを開発するための v5 コンポーネントのリリースを提案しました。 これは、バージョン番号なしで公開された最初のバージョンを考慮すると、パッチの 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 版、第 XNUMX 版、および第 XNUMX 版の議論中に作成されたコメントが引き続き削除されています。 新しいバージョンでは:

  • ツールキットが更新され、Rust 1.59.0 がリリースされました。 alloc ライブラリのバリアントも Rust の新しいバージョンと同期されており、メモリ不足などのエラーが発生したときに「パニック」状態が発生する可能性が排除されています。 アセンブラーインサート (「feature(global_asm)」) を使用する機能が安定しました。
  • カーネルのコンパイル中に使用されるホスト プログラムを Rust で作成するためのサポートが追加されました。
  • 事前に生成されたターゲット プラットフォーム仕様ファイルを配信するのではなく、カーネル構成に基づいて動的に生成されます。
  • Rustをサポートするアーキテクチャを有効にするためのHAVE_RUSTカーネルパラメータを追加しました。
  • 抽象化は、ハードウェア擬似乱数生成器の Rust コードで使用するために提案されています。
  • C でのエラー コードの処理を近似するために、「Error::」プレフィックスのないエラー コード (たとえば、「return Err(EINVAL)」) の使用を許可しました。
  • カスタム C 文字列用に「CString」タイプを追加しました。 フォーマッタ タイプとバッファ タイプが結合されました。
  • Bool 型と LockInfo 型を追加しました。
  • スピン ロックの実装が簡素化されました。

出所: オープンネット.ru

コメントを追加します