100 lines
3.9 KiB
Markdown
100 lines
3.9 KiB
Markdown
|
|
# Phase 12 × Nyash ABI 統合戦略
|
|||
|
|
|
|||
|
|
## 🎯 核心的発見
|
|||
|
|
|
|||
|
|
Phase 12(Nyashスクリプトプラグイン)とNyash ABI(多言語ブリッジ)は、**同じ統一インターフェースの内側と外側**だった!
|
|||
|
|
|
|||
|
|
## 🏗️ 統合アーキテクチャ
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
外部言語(Python/JS/C++/Rust等)
|
|||
|
|
↓
|
|||
|
|
┌─────────────────────────────────┐
|
|||
|
|
│ Nyash ABI (C境界) │ ← 3×u64構造体
|
|||
|
|
│ NyashFunc統一呼び出し規約 │
|
|||
|
|
├─────────────────────────────────┤
|
|||
|
|
│ 統一レジストリ・ディスパッチャ │
|
|||
|
|
├─────────────────────────────────┤
|
|||
|
|
│ BoxInterface (Rust内部) │ ← trait実装
|
|||
|
|
│ invoke/get_methods/init/drop │
|
|||
|
|
├─────────────┬─────────────────┤
|
|||
|
|
│ Nyashスクリプト │ ネイティブ │
|
|||
|
|
│ プラグイン │ プラグイン │
|
|||
|
|
└────────────┴─────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🔧 実装フェーズ
|
|||
|
|
|
|||
|
|
### Phase 1: 基盤統合(1-2週間)
|
|||
|
|
- BoxInterfaceにNyashFunc変換レイヤー追加
|
|||
|
|
- NyashValue(enum)とNyashValue(struct)の相互変換
|
|||
|
|
- method_idをmetadataフィールドに統合
|
|||
|
|
|
|||
|
|
### Phase 2: export box拡張(2-3週間)
|
|||
|
|
```nyash
|
|||
|
|
export box MyPlugin {
|
|||
|
|
// 以下を自動生成:
|
|||
|
|
// 1. BoxInterface実装
|
|||
|
|
// 2. NyashFunc extern "C"関数
|
|||
|
|
// 3. 型レジストリ登録
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Phase 3: 多言語バインディング(3-4週間)
|
|||
|
|
- Python: `@nyash_plugin`デコレータ
|
|||
|
|
- JavaScript: `NyashPlugin`クラス
|
|||
|
|
- Rust: `#[nyash_abi]`マクロ
|
|||
|
|
- C++: `NYASH_PLUGIN`マクロ
|
|||
|
|
|
|||
|
|
### Phase 4: 最適化(継続的)
|
|||
|
|
- インライン値(整数/Bool)の高速化
|
|||
|
|
- method_id による高速ディスパッチ
|
|||
|
|
- JIT/AOTでの境界最適化
|
|||
|
|
|
|||
|
|
## 💡 革命的な統合効果
|
|||
|
|
|
|||
|
|
### 1. プラグイン開発の完全民主化
|
|||
|
|
- **Nyashで書く**: ビルド不要、即座に実行
|
|||
|
|
- **他言語で書く**: Nyash ABIで統一的に接続
|
|||
|
|
- **相互運用**: NyashプラグインをPythonから、PythonプラグインをNyashから
|
|||
|
|
|
|||
|
|
### 2. エコシステムの爆発的拡大
|
|||
|
|
```
|
|||
|
|
従来: Rust/C++開発者のみ → 狭いエコシステム
|
|||
|
|
統合後: 全言語の開発者 → 巨大エコシステム
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 実装の簡潔性
|
|||
|
|
- MIR変更最小(ExternCallのまま)
|
|||
|
|
- 既存プラグイン後方互換(トランポリン自動生成)
|
|||
|
|
- 段階的移行(nyash.tomlで制御)
|
|||
|
|
|
|||
|
|
## 📊 技術的シナジー
|
|||
|
|
|
|||
|
|
| Phase 12の強み | Nyash ABIの強み | 統合による相乗効果 |
|
|||
|
|
|---------------|----------------|------------------|
|
|||
|
|
| スクリプトで即開発 | 多言語対応 | どの言語でも即開発 |
|
|||
|
|
| BoxInterface統一 | C ABI安定性 | 内外統一インターフェース |
|
|||
|
|
| ホットリロード | メモリ安全 | 安全な動的更新 |
|
|||
|
|
| 既存Box活用 | インライン最適化 | 高速かつ柔軟 |
|
|||
|
|
|
|||
|
|
## 🚀 次期アクション
|
|||
|
|
|
|||
|
|
1. **仕様統合**: BoxInterfaceとNyashFuncの正確なマッピング定義
|
|||
|
|
2. **プロトタイプ**: 1つの既存プラグインで両方式を実装
|
|||
|
|
3. **ベンチマーク**: 性能影響の測定(特にインライン値)
|
|||
|
|
4. **ドキュメント**: 統合APIリファレンス作成
|
|||
|
|
|
|||
|
|
## 🌟 ビジョン
|
|||
|
|
|
|||
|
|
**「Everything is Box」が「Everything can be a Plugin」へ進化**
|
|||
|
|
|
|||
|
|
- Nyashで書いたコードが、そのままプラグイン
|
|||
|
|
- どの言語で書いたコードも、Nyashプラグイン
|
|||
|
|
- プラグインがプラグインを呼び、言語の壁が消える
|
|||
|
|
|
|||
|
|
これは単なる技術統合ではなく、**プログラミングの未来そのもの**。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
*Phase 12とNyash ABIの統合により、史上最も開かれたプラグインエコシステムが誕生する。*
|