Files
hakorune/docs/archive/bid_ffi_integration_discussion_2025-08-17.md

92 lines
3.1 KiB
Markdown
Raw Normal View History

# BID-FFI統合議論アーカイブ (2025-08-17)
## 概要
Phase 9.75g BIDBox Interface DefinitionとFFI ABI v0の統合について、設計の簡素化と段階的実装を検討した記録。
## 議論の流れ
### 1. 問題提起
- FFI ABI v0仕様`ffi-abi-specification.md`)を確認
- Phase 9.75g BIDが野心的すぎて複雑との懸念
- 両者の統合による簡素化を提案
### 2. 主要な発見
#### FFI ABI v0の良い点
- シンプルで実績がある
- 型システムが完備i32, i64, f32, f64, bool, string, array
- メモリモデルが明確32ビットポインタ、4バイトアライメント
- Effect systemが4種類で明確pure/mut/io/control
#### BIDの問題点
- 型が不完全i32, f32欠落
- Transport層が野心的すぎるgrpc/rest/python_bridge等
- 実装の複雑さが高い
### 3. C ABIの説明
ユーザーからの質問「C ABIって何」に対して
- C言語のバイナリレベルでの約束事
- どの言語からでも同じ方法で関数を呼べる仕組み
- 高速(直接マシンコード呼び出し)
- 安定(何十年も使われている標準)
### 4. 統合計画の作成
`phase_9_75g_bid_ffi_abi_alignment.md`として以下を提案:
- Phase 9.75g-0: FFI ABI v0準拠1週間
- 型システムの統一
- メモリモデルの明確化
- 段階的実装C ABI → gRPC/REST → 言語ブリッジ)
### 5. AI大会議での最終レビュー
#### Gemini先生の評価
- 全体的に優れた計画
- Simple Firstの原則を支持
- 段階的実装は現実的
#### ChatGPT先生の技術的指摘
1. **ポインタサイズ**: 32ビット固定は危険 → `usize`推奨
2. **アライメント**: 4バイト不十分 → 8バイト推奨
3. **型追加**: Option/Result型を最初から
4. **API設計**: 単一invoke関数で拡張性確保
5. **所有権**: 明文化が必須
### 6. 重要な技術修正
```rust
// ❌ 当初の案
ptr: i32 // 32ビット固定
alignment: 4 // 4バイト
// ✅ 修正案
ptr: usize // プラットフォーム依存
alignment: 8 // 8バイト保証
// Boxヘッダー改善案ChatGPT
#[repr(C)]
pub struct BoxHeader {
magic: u32, // "NYBX"
abi_major: u16, // バージョン管理
abi_minor: u16,
type_id: u32,
flags: u32, // 将来のatomic等
ref_count: u32,
field_count: u16,
reserved: u16, // 8バイトアライメント
}
```
### 7. NyaMeshとの関連
- 当初の野心的なTransport設計はNyaMeshP2Pライブラリでやろうとしていたことに似ている
- Phase 4でP2P追加は価値ありとAIも評価
## 結論
- FFI ABI v0準拠で始めるシンプル・実績あり
- ChatGPTの技術的指摘を反映ポインタ幅、アライメント、所有権
- 段階的に拡張C ABI → ネットワーク → P2P
- 「最初は簡単に動かして、拡張できる方式」の実現
## 次のステップ
1. AIレビューのフィードバックを適用
2. 実装計画をissueとして作成
3. Linux x86-64限定で1週間スプリント開始