# Rust-BPF ## 定義 Rust-BPF は、Rust の `no_std` と `alloc` を基盤に、標準 Rust の診断、安全機構、コレクション、パニック処理を BPF プログラムで利用する設計方向である。BPF 固有の制約に合わせて Rust の機能を削るのではなく、verifier、ランタイム、コンパイラバックエンドを拡張して Rust の表現力を保つことを目指す。(Source: [[@2026__BPFConf2026__BPF in the Agentic Era (LSFMM 2026)]]) ## 設計要素 - `Vec<T>`、`String`、`Box<T>`、`BTreeMap` を `bpf_arena_alloc/free` と組み合わせる。 - `dyn Trait`、関数ポインタ、クロージャを `PTR_TO_FUNC` と vtable で扱う。 - `for`、while、実行時境界のイテレータをループの widening で検証する。 - `panic=unwind`、`bpf_throw()`、`.bpf_cleanup` で理由出力と `Drop` を可能にする。 - `rustc`、LLVM、libbpf、BTF、CO-RE をつなぎ、専用ツールを増やさない。 - verifier は停止性の完全証明よりメモリ安全性を重視し、証明不能な箇所は実行時検査へ委ねる。 ## エージェント駆動開発との関係 Rust のコンパイラ診断と BPF の実行結果を、エージェントの生成・修正ループへ接続する。構造化されたエラー、VM 起動を省く開発用検証、`bpftool` による型探索、`drgn` によるライブ状態調査を組み合わせることで、BPF の低レベル安全性を保ちながら反復時間を短縮する狙いである。(Source: [[@2026__BPFConf2026__BPF in the Agentic Era (LSFMM 2026)]]) ## 横断的知見 - **Rust-BPF は、LLM の生成能力を上げるよりも、生成物を早く説明可能にする方向の設計である**: スライドはニッチな DSL と巨大な verifier ログをエージェントの障壁とし、Rust の構造化診断、標準ツール、実行時結果を閉ループへ組み込む。これは [[エージェント型コーディング]] で確認されている「環境からの反復フィードバックが性能を左右する」という設計原則を、カーネル内プログラムへ適用する例である。(Source: [[@2026__BPFConf2026__BPF in the Agentic Era (LSFMM 2026)]], [[@2026__LWN__BPF in the agentic era]]) ## 未解決の問い - 標準 Rust のどの機能までを BPF verifier とランタイムで安全に支えられるか。 - arena 内ポインタとカーネルポインタを混在させるプログラムを、どのように静的検査するか。 - Rust の診断と verifier の構造化エラーを、エージェントが誤修正を繰り返さない共通形式へ統合できるか。 - `panic=unwind` と cleanup のコストが、頻繁なプローブの本番性能へ与える影響はどの程度か。 - Rust-BPF の設計案が、Linux カーネルの upstream ツールチェーンとどの時期に統合されるか。 ## 関連 - 概念: [[BPF verifier]] / [[BPF arena memory]] / [[eBPF]] / [[エージェント型コーディング]] - エンティティ: [[Aya]] / [[rust-for-linux]] / [[libbpf]] / [[drgn]] / [[bpftool]] - ソース: [[@2026__BPFConf2026__BPF in the Agentic Era (LSFMM 2026)]] / [[@2026__LWN__BPF in the agentic era]] ## 出典 - [[@2026__BPFConf2026__BPF in the Agentic Era (LSFMM 2026)]](Rust 機能、arena、widening、panic、コンパイルパイプライン) - [[@2026__LWN__BPF in the agentic era]](Rust と verifier の協調、開発フィードバックの問題設定)