# 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 の協調、開発フィードバックの問題設定)