日本語版
最新ニュース
科学&テクノロジー

カーネルでのRustへのコミット [LWN.net]

LWN.netへようこそ 以下の購読者限定コンテンツは、LWN購読者によって提供されています。何千人もの購読者が、Linuxおよびフリーソフトウェアコミュニティからの最高のニュースを得るためにLWNを利用しています。この記事が気に入ったら、ぜひご検討ください。 LWNを購読するLWN.netにご来訪いただきありがとうございます。 Rust でカーネル コードを記述できるようにするプロジェクトは数年前から進行中で、カーネル リリースごとに Rust コードが追加されています。それでも、新しい機能を統合するのにかかる時間に不満を表明する開発者もおり、プロジェクトには依然として不確実な雰囲気が漂っています。2024 メンテナー サミットでは、Miguel Ojeda 氏がカーネルにおける Rust のステータスと、これを実験的なプロジェクトと見なすのをやめる時期が来ているかどうかについて議論を主導しました。すべての質問に対する回答は得られませんでしたが、カーネルにおける Rust が今後も勢いよく前進し続けることは明らかです。 Ojeda 氏は、カーネルのサブシステムのメンテナーに求められる柔軟性について語り始めた。2 年前、最初の Rust サポートがカーネルに組み込まれる前、Rust コードを組み込むためにコア API を変更する必要が時々生じるため、同氏はその柔軟性を要求していた。その柔軟性の必要性が今、感じられるようになった、と同氏は述べた。 カーネルにおける Rust に関する期待には明らかな違いがある、と彼は続けた。彼は最近の出来事に関する何千ものコメントやメールを読み、Rust-for-Linux プロジェクトの現状とその方向性について幅広い意見を見てきた。目標が何であるかについての共通の理解に収束することは良いことだ。人々や企業はカーネル用の Rust に投資したいと考えているが、その将来については確信が持てない。 Jason Gunthorpe 氏は、他の多くのカーネル開発者と同様、これまでこの作業には参加していないと述べた。このプロジェクトは、Rust がカーネルでの使用に適していることを実証することを目的としており、同氏は結果の決定を待っている。Dave Airlie 氏は、実験はまだ完了していないと述べたが、Greg Kroah-Hartman…

カーネルでのRustへのコミット [LWN.net]

1727226156
2024-09-25 00:08:01

LWN.netへようこそ

以下の購読者限定コンテンツは、LWN購読者によって提供されています。何千人もの購読者が、Linuxおよびフリーソフトウェアコミュニティからの最高のニュースを得るためにLWNを利用しています。この記事が気に入ったら、ぜひご検討ください。 LWNを購読するLWN.netにご来訪いただきありがとうございます。

Rust でカーネル コードを記述できるようにするプロジェクトは数年前から進行中で、カーネル リリースごとに Rust コードが追加されています。それでも、新しい機能を統合するのにかかる時間に不満を表明する開発者もおり、プロジェクトには依然として不確実な雰囲気が漂っています。2024 メンテナー サミットでは、Miguel Ojeda 氏がカーネルにおける Rust のステータスと、これを実験的なプロジェクトと見なすのをやめる時期が来ているかどうかについて議論を主導しました。すべての質問に対する回答は得られませんでしたが、カーネルにおける Rust が今後も勢いよく前進し続けることは明らかです。

Ojeda 氏は、カーネルのサブシステムのメンテナーに求められる柔軟性について語り始めた。2 年前、最初の Rust サポートがカーネルに組み込まれる前、Rust コードを組み込むためにコア API を変更する必要が時々生じるため、同氏はその柔軟性を要求していた。その柔軟性の必要性が今、感じられるようになった、と同氏は述べた。

カーネルにおける Rust に関する期待には明らかな違いがある、と彼は続けた。彼は最近の出来事に関する何千ものコメントやメールを読み、Rust-for-Linux プロジェクトの現状とその方向性について幅広い意見を見てきた。目標が何であるかについての共通の理解に収束することは良いことだ。人々や企業はカーネル用の Rust に投資したいと考えているが、その将来については確信が持てない。

Jason Gunthorpe 氏は、他の多くのカーネル開発者と同様、これまでこの作業には参加していないと述べた。このプロジェクトは、Rust がカーネルでの使用に適していることを実証することを目的としており、同氏は結果の決定を待っている。Dave Airlie 氏は、実験はまだ完了していないと述べたが、Greg Kroah-Hartman 氏は、この時点でカーネルでの Rust が実行可能であることは明らかであると述べた。同氏によると、作業のペースが明らかに遅い理由の 1 つは、Rust 開発者がデバイス ドライバーに集中していることである。ドライバーは他の多くのカーネル サブシステムとインターフェイスする必要があるため、マージしなければならないサポート コードが大量にある。これには時間がかかる。

ガンソープ氏は、Rust に飛び込む前に、Rust が成功しているという明確なメッセージを見たいと述べました。また、RHEL で適切なコンパイラが利用可能になるまでは、Rust に取り組むことはできません。エアリー氏は、ガンソープ氏にとって、おそらくその時はまだ来ていないと述べました。

ツールとヘルプ

Arnd Bergmann 氏は、Rust で書かれたドライバが C で書かれたものより優れていることは間違いないが、必要なサブシステムすべてにサポートを統合するのにどれくらいの時間がかかるのか、ツールが広く利用可能になるのはいつになるのか、と疑問を呈した。同氏は、自分のディストリビューションで出荷される Rust コンパイラでカーネル コードをビルドできるようになるのはいつになるのか、と尋ねた。Ojeda 氏は、現在カーネル コードでは複数のコンパイラ バージョンがサポートされており、多くのコミュニティ指向のディストリビューションから適切なコンパイラが入手できる、と答えた。Airlie 氏は、Rust コミュニティにカーネル コードをビルドするための完全に安定したコンパイラを求めるのは時期尚早であり、それを実現するにはカーネルにまだ十分な Rust コードがない、と述べた。

Linus Torvalds氏は、現時点ではすべてのサブシステムがRustをサポートするかどうかについては話したくないとグループに忠告した。現時点では、いくつかのサブシステムのサポートで十分だ。Airlie氏が、一部のサブシステムが進行を妨げたらどうなるかと尋ねると、Torvalds氏は「それは私の仕事だ」と答えた。Christian Brauner氏は、 バインダードライバー サブシステムの作業の多くを現在動機付けており、これには多少議論の余地のある ファイルシステムの抽象化そのコードは現在レビュー中です。Airlie 氏は、最初にマージされる実際のドライバーが一種の変曲点となり、その後ペースが上がるだろうと付け加えました。その後の次の課題は、C から呼び出し可能な Rust インフラストラクチャの作成です。

Will Deacon 氏は、Rust コミュニティがカーネル開発者に提供しているサポートについて Ojeda 氏に尋ねました。Ojeda 氏は、必要に応じて支援するために専門家のチームを構築していると答えました。これらの人々の中には、言語を熟知しているコア Rust 開発者もおり、カーネルに関する深い経験がなくてもパッチのレビューを手伝うことができます。

トーバルズ氏は、現在Rustと互換性のないカーネル機能があり、それがRustのサポートを全体的に妨げていると指摘した。特にmodversionsについて言及したが、その問題は 作業中ブロックする機能のリストは短くなってきているが、それでも人々が必要とするカーネル機能は含まれていると彼は述べた。

期待を管理する

ダン・ウィリアムズは、かつて新しいものを手に入れるのに2年かかったことがあると指摘した。
mmap() フラグがマージされました。Rust 側の期待を管理する必要があると彼は述べ、そのコードすべてをマージするのは時間のかかるプロセスになるだろうと述べました。Ojeda 氏はこの点を認めましたが、Rust の作業に資金を提供している企業はそれがアップストリームに進んでいないと考えており、そのため今後も資金提供を続けることに消極的になっていると述べました。

Brauner 氏は、ファイルシステムの抽象化が統合されないと宣言した人は誰もいない、議論はそれがどのように行われるかという詳細についてのみであると述べた。

Ted Ts’o 氏は、Rust 開発者はカーネルのメンテナーを怖がらせないように努めており、「Rust を少し学ぶだけで十分だ」と言っていると述べた。しかし、Rust を少し学ぶだけでは、サブシステムの複雑なロック ルールを扱うファイルシステムの抽象化を理解するのに十分ではない。慣用的な Rust でファイルシステム コードを書く方法に関するドキュメントとチュートリアルが必要である。彼は、学ぶべきことがたくさんあり、それを学ぶつもりだが、次の点について助けが必要だと述べた。 学ぶ。(参照 この記事 Rust-for-Linux 開発者がこのニーズを満たすためにどのように取り組んでいるかについては、こちらをご覧ください。

トルバルズ氏は、サブシステムにRustを導入するためにRustを理解する必要はない、と述べた。 誰でもない メモリ管理サブシステムを理解しているわけではありませんが、誰でもそれを扱うことができます。Rust 開発者はサブシステム バインディングを作成しているだけではなく、本質的に安全なインターフェイスを作成しようとしているため、C 側の変更が必要になることが多いことを指摘しました。これによりサブシステムへの影響が増大しますが、C コードも改善されます。Airlie 氏は、Rust 開発者はメンテナーを連れて行く必要があると付け加えました。そうしないと、メンテナーは何が起こっているのか理解できなくなります。

Deacon 氏は、C 側のリファクタリングの問題を提起した。C インターフェースの変更は、多くの場合 Rust コードに影響を及ぼし、コードが壊れる可能性がある。そのため、誰かが問題を修正する必要がある。Torvalds 氏は、現時点では Rust コードの破損は許容されるが、将来的には変更されるだろうと述べた。Kroah-Hartman 氏は、Rust 開発者は、追加した抽象化のメンテナンスの責任を負うことができると述べた。

蒸気はすぐそこ

トルバルズ氏は、カーネルでは現在 Rust に依存しているものはなく、今後もしばらくは依存しないだろうと述べた。重要なのは前進することなので、開発者は「まっすぐに前進」し、今のところはこれらの問題について心配する必要はない。細部が正しくなくても、物事が機能すれば十分だ。ユーザーが Rust コードに依存するようになれば、さらに心配する必要があるが、カーネル開発者は今、慎重になりすぎて失敗してはならない、と同氏は述べた。

Thomas Gleixner 氏は、Rust 開発者はコードのドキュメント化に気を配っており、リファクタリングの可能性を恐れていないと述べた。何かが理解できない場合は、C コードの場合と同じように、開発者に電子メールを送信するだけだ。Torvalds 氏は、Rust には多くの利点があり、カーネルはそれを活用するようにすべきだと付け加えた。Kroah-Hartman 氏は、Rust によってカーネル内のバグのクラス全体が排除される可能性があると述べた。

ディーコンは、現在Rust側で何人の開発者が働いているのか尋ねた。オジェダは、現在6人か7人で、そのほとんどが「本物のRustの専門家」だと答えた。グループ内で最もカーネルに精通していたのは、最近 プロジェクトを離れたそれは本当に損失でしたが、オジェダは他の人を募集するために働いています。

Gleixner 氏は、20 年前にはリアルタイム カーネルの作業に関して多くの不安や懸念があったが、現在 Rust に関しても同じことが起こっていると述べ、その不安に左右されてはならないと語った。Torvalds 氏は、Rust が部分的に統合されてから 2 年が経過したと述べた。これは大したことはない、と同氏は述べた。Clang でカーネルを構築するプロジェクトには 10 年かかり、それも古い言語だったのだ。

Julia Lawall 氏は、C 側で変更があった場合どうなるのか、どの程度 Rust コードに漏れるのかを尋ねました。Bergmann 氏は、Rust を知らなくても C サブシステムの Rust 抽象化を確認することは難しくなく、コードを理解できるところまでは到達できるが、変更できるとは感じないと述べました。

Torvalds 氏は、コミュニティは数年間 Rust で遊ぶことができると述べた。しかし、Gunthorpe 氏は、何かを製品化するのは良いことだと述べた。そうすれば、プロジェクトに必要な勢いが生まれるだろう。バインダー ドライバーは良い選択かもしれない。Ojeda 氏は、それが企業からのさらなるサポートを正当化するのに役立つだろうと述べた。しかし、セッションの終わりに、主な成果は Torvalds 氏によって表明された可能性が高い。彼は、カーネル Rust を製品化レベルにまで引き上げることはできるが、それには何年もかかるだろうと人々に伝えることを提案した。




#カーネルでのRustへのコミット #LWN.net

執筆者について: nipponese

Nipponese News編集部は、国内外のニュースを日本語で分かりやすくお届けします。