- 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
1.8 KiB
1.8 KiB
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フェーズの戦略は非常に現実的で、リスクが低く、素晴らしいです。