Linux 上の Rust: 進歩、課題、および現状

Linux の Rust ドライバー

ライナス・トーバルズが入ってから Linux カーネル バージョン 6.1 の Rust、この言語は徐々に普及してきています そして、ますます多くの開発者がこの運動に参加しています。

しかし、 開発者の一部 Linuxカーネルの 彼らは、進歩がますます多くの仕事と課題を意味することを強調していますなぜなら、彼らのコメントの中で、膠着状態が生じる可能性があることをほのめかしているからです。

実装が行き詰まっているということを言っているのではなく、さまざまな開発者のコ​​メントを考慮し、すでに述べたように、現状では作業のペースを下げる必要性が生じ始めていることを明確にしておきたいと思います。少なくともそれが次の記事が私たちに示唆していることです LWN.net。

そして数週間前、Linux での Rust の使用の現状を取り上げ、このプログラミング言語を使った実験が成功したかどうかを分析するこの記事を見つけました。

数年前から言われているが、 Rust は議論が絶えないトピックです 「カーネル メンテナー サミット」でも、2023 年に開催されたサミットでも例外ではありませんでした。 Linux の第 2 プログラミング言語としての Rust、 ミゲル・オジェダ Rust for Linux 開発者、 Rustの使用に対する関心の高まりを強調 このトピック専用のセッション中のカーネル開発のために。

ミゲル・オヘーダ プロジェクトについて言及しています Linux 用の Rust 昨年は大きな勢いがあった、フルタイムのエンジニアと学生開発者が参加し、さまざまな企業が作業のサポートに参加しているためです。さらに、Coccinelle ツールを Rust コードと統合する作業も進行中です。ただし、すべてがバラ色というわけではありません。現在の課題の 1 つは、開発中のコードに対してより多くのレビュー担当者を採用することです。

Linuxカーネル
関連記事
Linux 6.1 には、Rust、パフォーマンスの向上、ドライバーなどが含まれています

記事の中でそして問題が目立ち始めていると述べている ツールチェーン内にあるため、 コンパイラの進捗状況 gccrs として知られる GCC ベースの Rustが鈍くなってきました。 一方、Rustc 用の GCC コード ジェネレーターは有望な進歩を示しており、コンパイラーと統合されています。これにより、Rust サポートを LLVM と互換性のないアーキテクチャーに拡張できるようになります。

関連記事
GCCでは、RUST(gccrs)の実装を承認しました。

カーネルの内部では、 いくつかのサブシステムで進歩が見られ、 Rust の実装の場合がこれに該当します。 アンドロイドバインダー これは、安全でないコードを最小限に抑えながら、C 実装と同等のパフォーマンスを実証しました。さらに、Rust で完全に安全なファイルシステムを実装するというビジョンのもと、Rust で読み取り専用のサポートを実現することを目標に、ファイルシステムのリンクに関する作業が行われています。

DRM (グラフィックス) サブシステムのメンテナである Dave Airlie 氏は、自分の思いどおりにすれば、今後のリリースで統合された Rust DRM ドライバーが登場するだろうと述べました。クリストフ・ヘルウィッグさんは、エアリーさんはお気に入りのおもちゃで遊べるように「みんなの人生を地獄にするつもり」だと答えた。 Hellwig 氏は、Rust をマージすると、他の言語、新しいツールチェーン、および「奇妙なセマンティクスを持つラッパー」に対処する必要があると述べました。 Dan Williams 氏は、現在の状況は「成功とはどのようなものか」と述べ、カーネル コミュニティはすでに Rust に熱心に取り組んでいると述べました。

メンテナーの間ではRustの採用に対する関心が高まっていますが、 課題が生じ、 議論されてから Rustで書かれたカーネルリファレンスドライバが必要 この言語でコントローラーを記述する方法を示します。しかし、Rust と C のドライバ間で機能が重複しているため、メンテナの間で不信感が生じています。

Rust の組み込みに関する議論はさまざまな方向に進みました。 まあ、一部のメンテナは、バインダードライバなどのスタンドアロンの Rust ドライバをマージして、その存続可能性を実証することを主張していますが、コインの裏側では、他のメンテナもいます。 彼らは、2 つのプログラミング言語でカーネルを維持することの複雑さについて懸念を表明しています。

Airlie 氏は続けて、Rust の仕事の多くは現在、鶏が先か卵が先かという問題に陥っていると述べました。抽象化は、ユーザーが存在するまでマージできませんが、それらの抽象化を必要とするコードは、コードが複数のサブシステムに到達するまでブロックされます。その結果、Rust に取り組んでいる開発者は、コードを機能させるために必要な大量のパッチを携行することになります。この障害を打ち破るには、直接のユーザーなしでいくつかの抽象化を入力できるようにする必要があります。

課題にもかかわらず、 カーネルコミュニティはコードのセキュリティと安定性を向上させるRustの可能性を認識しています。将来的には、パッチ適用性と保守性に関する懸念が解決されれば、より広く使用されているドライバが Rust に統合される可能性があります。

Ojeda氏は、この問題が進捗を遅らせていることに同意したが、メンテナにコードを迅速にマージするよう圧力をかけないよう努めたと述べた。ネットワークの場合、皮肉なことに、Rust 開発者はネットワーク担当者に Rust コードのマージを遅くするよう依頼する必要がありました。

最後に、Linux 上で Rust を広く採用するまでの道のりには課題があり、この分野における関心と進歩は明らかであることは言及する価値があります。時間が経つにつれて、Rust は Linux の改善において重要な役割を果たすことが期待されています。

出典 https://lwn.net/