LinuxカーネルのRustサポートはTorvalds氏からの批判に直面している

Linus Torvalds は、Linux カーネル用の Rust 言語でドライバーを作成する機能を実装したパッチをレビューし、いくつかの批判的なコメントをしました。

最も大きな苦情は、カーネル内を含む動的メモリ割り当ての操作が失敗する可能性があるメモリ不足の状況など、エラー状況での panic() の潜在的な可能性によって引き起こされました。 Torvalds 氏は、カーネルにおけるこのようなアプローチは基本的に受け入れられず、この点が理解されない場合は、そのようなアプローチを使用しようとするコードを完全に無効にすることができると述べました。 一方、パッチ開発者はこの問題に同意し、解決可能であると考えています。

もう 128 つの問題は、Linux カーネルなどの環境では受け入れられない浮動小数点型または XNUMX ビット型を使用しようとすることでした。 現時点では、コアの Rust ライブラリは分割できず、XNUMX つの大きな blob を表しているため、これはより深刻な問題であることが判明しました。機能の一部のみをリクエストする方法がなく、問題のある機能の使用が妨げられます。 この問題を解決するには、Rust コンパイラとライブラリの変更が必要になる可能性がありますが、現時点では、チームには言語ライブラリのモジュール化を実装する方法に関する戦略がまだありません。

さらに、Torvalds 氏は、提供されたドライバーのサンプルは役に立たないことを指摘し、実際の問題の XNUMX つを解決するドライバーをサンプルとして使用するようアドバイスしました。

更新: Google は、Linux カーネルに Rust サポートをプッシュする取り組みへの参加を発表し、メモリ エラーから生じる問題に対処するために Rust を導入する技術的な理由を示しました。 Google は、Rust が Linux カーネル コンポーネントを開発する言語として C に加わる準備ができていると考えています。 この記事では、Android プラットフォームでのカーネル ドライバーの使用に関連して、Rust 言語を使用してカーネル ドライバーを開発する例も示しています (Rust は、Android 開発で公式にサポートされている言語として認識されています)。

Google は、Binder プロセス間通信メカニズム用に Rust で書かれたドライバーの初期プロトタイプを準備していることに注意してください。これにより、C と Rust での Binder 実装のパフォーマンスとセキュリティの詳細な比較が可能になります。 現在の形式では作業はまだ完了していませんが、Binder の動作に必要なカーネル機能の基本的な抽象化のほとんどすべてについて、Rust コードでこれらの抽象化を使用するためのレイヤーが準備されています。

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

コメントを追加します