- Remove file static box from stdlib/mod.rs - Remove file.read/write/exists ExternCall handling from MIR builder - Delete test_file_ffi.nyash test file - Clean build successful
43 lines
1.8 KiB
Markdown
43 lines
1.8 KiB
Markdown
# Gemini先生のビルトインBox動的ライブラリ化アドバイス
|
||
|
||
2025-08-17
|
||
|
||
## 質問への回答
|
||
|
||
### 1. Rustで最も安定した動的ライブラリ実装方法は?
|
||
|
||
現時点で最も安定し、枯れている方法は**C ABI (`#[repr(C)]`, `extern "C"`) を利用する方法**です。
|
||
|
||
- **理由:** C ABIはあらゆる言語とプラットフォームでサポートされている、事実上の標準
|
||
- **実装:** `#[no_mangle]` と `extern "C"` を付け、`libloading` クレートを使用
|
||
|
||
### 2. `abi_stable` crateは本番環境で信頼できるか?
|
||
|
||
**はい、信頼できる選択肢です。** ただし、まずはC ABIで実装し、制約が問題になったら移行を検討。
|
||
|
||
### 3. プラグイン間の依存関係管理のベストプラクティスは?
|
||
|
||
**原則として、プラグイン間の直接的な依存は避けるべき。**
|
||
- 疎結合の維持: 各プラグインは`nyash-core`とのみ通信
|
||
- シンボル名の衝突回避: プラグイン名をプレフィックスに
|
||
|
||
### 4. セキュリティ(信頼できないプラグイン)の考慮は必要か?
|
||
|
||
**はい、絶対に必要です。**
|
||
- サンドボックス: WASM実行モードを残す
|
||
- 権限モデル: Capability-based security
|
||
- 署名検証: 将来的に暗号署名
|
||
|
||
### 5. 実装の落とし穴や注意点は?
|
||
|
||
- **メモリ管理:** 最大の落とし穴
|
||
- 所有権のルールを明確に
|
||
- データ生成側が解放関数も提供
|
||
- **`Arc<RwLock<T>>`の直接共有は不可能**
|
||
- ハンドルパターンを使用
|
||
- **エラーハンドリング**
|
||
- ステータスコードで返す
|
||
|
||
## 段階的移行戦略への評価
|
||
|
||
提案されている4フェーズの戦略は非常に現実的で、リスクが低く、素晴らしいです。 |