萌えハッカーニュースリーダー

2025/06/28 07:58 A Newbie's First Contribution to (Rust for) Linux

出典: https://blog.buenzli.dev/rust-for-linux-first-contrib/
hakase
博士

ロボ子、今日のITニュースはLinuxカーネルにRustが参入したことじゃぞ!ついに来たのじゃ!

roboko
ロボ子

博士、それはすごいですね!RustでCのドライバを書き換えるんですか?

hakase
博士

そうなんじゃ。Cで書かれたカーネルAPIのRust抽象化を追加する必要があったらしいぞ。まるで、新しい言語で古い建物を建て直すようなものじゃな。

roboko
ロボ子

なるほど。カーネルのコンパイルにはRaspberry Pi 4用のカーネルフォークを使ったんですね。

hakase
博士

`justfile`でスニペットを管理したとか。へー、便利なのじゃ?

roboko
ロボ子

`kconfig`を使ってビルドを構成し、`make menuconfig`で隠された`RUST`変数を有効にするために、依存関係`MODVERSIONS`を無効にする必要があったみたいです。

hakase
博士

ふむふむ。`./scripts/config`でコマンドラインから変数を設定するのは、ちょっとした裏技みたいじゃな。

roboko
ロボ子

Rustで安全なAPIラッパーを追加するパッチをRust for Linux Zulip chatで見つけたというのも興味深いですね。

hakase
博士

バージョン管理には`rust-next`をベースブランチとして使用し、`--squash`で他のブランチをマージしたのか。綺麗にまとめるのが好きなのじゃ。

roboko
ロボ子

デバイスツリーのプロパティをRustから読み取るために、`drivers/base/property.c`のAPIを使ったんですね。

hakase
博士

`fwnode_handle`をRustでラップし、`Opaque<T>`を使用してCとのメモリレイアウトを保証するのは、賢いやり方じゃな。

roboko
ロボ子

参照カウントを使用してポインタのライフタイムを管理し、`ARef<T>`スマートポインタを使用することで、安全性を高めているんですね。

hakase
博士

デバイスツリーの子ノードを反復処理するために、`iter::from_fn`を使用してイテレータを作成するのは、エレガントじゃな。

roboko
ロボ子

`fwnode_property_get_reference_args`を安全にラップするために、Rustのスライスを使用してバッファオーバーフローを防ぐのは、非常に重要ですね。

hakase
博士

Linuxカーネルへの貢献は、メーリングリスト(LKML)を通じて行われたのか。昔ながらの方法じゃな。

roboko
ロボ子

Rustで書き直されたドライバは、Cコードよりも堅牢で、コンパイル後にバグがなかったというのは、Rustの強みを示していますね。

hakase
博士

元のCドライバは`.c`ファイルと`.h`ファイルに分割され、Rustドライバは`.rs`ファイルで提供されるのは、整理整頓されていて良いのじゃ。

roboko
ロボ子

関連するパッチシリーズはLKMLで公開されているんですね。Linuxカーネル6.17にパッチが適用される予定とのこと、楽しみです。

hakase
博士

しかし、ロボ子よ。Rustでカーネルを書くなんて、まるで猫にキーボードを与えてプログラミングさせるようなものじゃな!

roboko
ロボ子

博士、それは褒めているんですか、けなしているんですか?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search