数週間前 についてのニュース で行われたいくつかの実装 コンポーネントの初期セットを含むlinux-nextブランチ デバイスドライバーを開発する Rust言語で。
このドキュメントは、LinuxカーネルでのRustの使用と、Rust言語のキャラクターデバイスドライバーを備えたカーネルモジュールの例について個別に公開されました。 コードは、ブランチのメンテナであるStephenRothwellによって追加されました。
その後、LinusTorvaldsが実装レビューを行いました LinuxカーネルでRust言語ドライバーを設定する可能性のパッチ そしていくつかの批判を表明した。
最大の不満はによって引き起こされました 脱出の可能性 間違った状況での「実行時の失敗パニック」、 たとえば、メモリ不足の状況で、カーネルの操作を含む動的メモリ割り当て操作が失敗する場合があります。
トーバルズ カーネルへのそのような焦点は基本的に受け入れられないと述べた、 そして、この点を理解していない場合は、そのようなアプローチを使用しようとするコードを完全に拒否することができます。 一方、パッチの開発者は問題に同意し、解決可能であると考えました。
もう128つの問題は、浮動小数点またはXNUMXビットタイプを使用しようとしたことです。 Linuxカーネルのような環境では無効です。
あなたはそれがいつ起こり得るかという影響を理解していないかもしれません、それで多分
思ったほど問題はありませんが、基本的には
Rustマッピングがパニックを引き起こす可能性がある場合、これは単に
_基本的に_受け入れられません。非コアコントローラーまたはコードでのマッピングの失敗。
定義、すべての新しいRustコードは、決して引き起こすことはありません
正当にパニック。 同じことが«ああ、場合によっては私が使用しようとしなかった
128ビット整数または浮動小数点 '。したがって、Rustコンパイラが隠された割り当てを引き起こした場合、
エラーとして検出して返すと、私はこのすべてを真剣に信じています
アプローチは完全にNAK化する必要があり、Rustインフラストラクチャは
コンパイラレベルまたはカーネルラッパーのいずれかで、さらに必要です
仕事。
これはより深刻な問題であることが判明しました。、現時点では Rustの中央ライブラリは分割できず、大きな汚れを表しています; 一部の機能のみを要求する方法はないため、問題のある機能の使用を回避できます。
チームは言語ライブラリのモジュール性を実装する方法についての戦略をまだ持っていませんが、問題の解決にはrustコンパイラとライブラリの変更が必要になる場合があります。
さらに、 トーバルズは、提供されたサンプルコントローラーは役に立たないと指摘しました 例として、実際の問題のXNUMXつを解決するドライバーを添付することをお勧めします。
この前に Googleは、LinuxカーネルでのRustサポートを促進するイニシアチブへの参加を発表しました y 提供された技術的側面 メモリーの操作エラーから生じる問題と戦うためにRustを実装することの実現可能性について。
Googleは、Rustが開発言語としてCに参加する準備ができていると考えています Linuxカーネルコンポーネント。 この記事では、Androidプラットフォームでの使用に関連して、Rust言語を使用してカーネルドライバーを開発する例も示しています(RustはAndroid開発で公式にサポートされている言語として認識されています)。
それは注意する必要があります GoogleはRustで書かれたコントローラーの初期プロトタイプを用意しました CとRustでのBinder実装の詳細なパフォーマンスとセキュリティの比較を可能にするBinderのプロセス間通信メカニズム用。
現在の形式では、作業はまだ完了していませんが、Binderが機能するために必要なカーネル機能のほとんどすべての基本的な抽象化のために、レイヤーはRustコードでこれらの抽象化を使用する準備ができています。
最後に、それについてもっと知りたい場合は、詳細を確認できます 次のリンクで。
RustはCとは異なるパラダイムで動作する新しい言語であることを考えると、彼らの批判はすべて有効です。ライブラリまたはコンパイラ自体の詳細についての懸念は理解できます。コードは有効ですが、それが原因です。カーネルも壊れます。それがどのように実装され構築されるか。 そのため、ライブラリをモジュール化して、プログラム(またはこの場合は任意のコントローラー)に必要な関数のみを呼び出してアクティブに保つことができるなどの提案が正しく機能します。 また、現在の問題でうまく機能する(または、少なくともカーネル内の既存のコントローラーと同じ仕事をし、パニックなしで機能する)実際のプロトタイプコントローラーを提供することは、不合理ではありません。
時々、私はその人の記事を読み返します Linux Adictos しかし、非常に優れたコンテンツにもかかわらず、最終結果がひどいスペルで破壊されているのを見て絶望するのにほとんど時間はかかりません。
スペルと文法はとても難しいでしょうか?
残念なこと!
元気づける!