Phase 12: 統一TypeBox ABI実装開始 - ChatGPT5による極小コアABI基盤構築
- TypeBox ABI雛形: メソッドスロット管理システム追加 - Type Registry: Array/Map/StringBoxの基本メソッド定義 - Host API: C ABI逆呼び出しシステム実装 - Phase 12ドキュメント整理: 設計文書統合・アーカイブ化 - MIR Builder: クリーンアップと分離実装完了 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -1,33 +1,66 @@
|
||||
# Phase 12: Nyashコード共有エコシステム - Everything is Box の実現
|
||||
|
||||
## 🚀 最新ブレイクスルー (2025-09-02)
|
||||
## 🌟 最新ブレイクスルー (2025-09-02) - 統一TypeBox ABI誕生!
|
||||
|
||||
### 🔥 セルフホスティングへの道 - ABIすらBoxとして扱う!
|
||||
「Everything is Box」哲学の究極形態:**ABIそのものをBoxとして実装**することで、Rust依存を完全排除!
|
||||
### 🚨 究極の発見:ユーザー定義Boxもプラグインに!
|
||||
|
||||
**AI先生たちの深い技術的検討により、革命的なアイデアが実現可能と判明!**
|
||||
|
||||
```c
|
||||
// Nyash ABIもTypeBoxとして提供(C言語実装)
|
||||
typedef struct {
|
||||
uint32_t abi_tag; // 'NABI'
|
||||
const char* name; // "NyashABIProvider"
|
||||
void* (*create)(void); // ABIプロバイダ生成
|
||||
|
||||
// Nyash ABI操作(Rust非依存)
|
||||
struct {
|
||||
nyash_status (*call)(nyash_ctx*, void* obj, nyash_selector, ...);
|
||||
void (*retain)(void* obj);
|
||||
void (*release)(void* obj);
|
||||
} nyash_ops;
|
||||
} NyashABITypeBox;
|
||||
// ユーザーBoxもプラグインとして動的登録
|
||||
NyashTypeBox* register_user_box(const char* name,
|
||||
NyashBoxMethods* methods);
|
||||
```
|
||||
|
||||
**AI専門家たちの深い考察**:
|
||||
- **Gemini**: 「技術的妥当性が高く、言語哲学とも合致した、極めて優れた設計」
|
||||
- **Codex**: 「Feasible and attractive: 16バイトアライメント、セレクターキャッシング等の具体的実装提案」
|
||||
- **ChatGPT5**: 「統合ABI設計に10の改善点を提供」(反映済み)
|
||||
**これにより実現すること**:
|
||||
- 🎯 **すべての箱をC ABI上で一つで管理**
|
||||
- 🔄 **ユーザー定義Box ↔ プラグインBox 完全相互運用**
|
||||
- 🚀 **Nyash側から見ると完全に統一された世界観**
|
||||
|
||||
### TypeBox統合ABI - プラグイン革命の実現!
|
||||
「Everything is Box」哲学:**型情報すらBoxとして扱う**TypeBoxにより、C ABI + Nyash ABIの完全統合を達成!
|
||||
詳細:[ユーザー定義Box統合](./unified-typebox-user-box.md) 🆕
|
||||
|
||||
### 🔥 究極の統合:すべてのプラグインがTypeBoxになる!
|
||||
|
||||
「Everything is Box」哲学の完成形:**C ABIもNyash ABIも統一TypeBoxに統合**!
|
||||
|
||||
```c
|
||||
// 統一TypeBox - すべてのプラグインがこの形式に!
|
||||
typedef struct {
|
||||
uint32_t abi_tag; // 'TYBX' - すべて同じ
|
||||
uint16_t version; // APIバージョン
|
||||
const char* name; // "StringBox", "FileBox", etc.
|
||||
|
||||
// 基本操作(旧C ABI互換)
|
||||
void* (*create)(void* args);
|
||||
void (*destroy)(void* self);
|
||||
|
||||
// 高速メソッドディスパッチ(新機能)
|
||||
uint32_t (*resolve)(const char* name); // 名前→ID変換
|
||||
NyResult (*invoke_id)(void* self, // ID呼び出し(JIT最適化)
|
||||
uint32_t method_id,
|
||||
NyValue* args, int argc);
|
||||
|
||||
// メタ情報
|
||||
uint64_t capabilities; // THREAD_SAFE | ASYNC_SAFE等
|
||||
} NyashTypeBox;
|
||||
```
|
||||
|
||||
**3大AI専門家の統合案への評価**:
|
||||
- **Gemini**: 「技術的妥当性は非常に高い。単なるアイデアではなく、堅牢なアーキテクチャ」
|
||||
- **Codex**: 「TypeBox統合は実現可能で有益。JIT最適化で33倍高速化も可能」
|
||||
- **ChatGPT5**: 「『Everything is Box』哲学に最も適した設計」(設計に反映済み)
|
||||
|
||||
### 🎯 なぜ統合するのか?
|
||||
|
||||
以前は2つのシステムが混在していました:
|
||||
- **C ABI**:シンプルだが拡張性に限界
|
||||
- **TypeBox**:プラグイン間連携は可能だが別システム
|
||||
|
||||
**統合により実現したこと**:
|
||||
1. **概念の統一**:すべてがTypeBoxという1つの形式
|
||||
2. **プラグイン間連携が標準装備**:どのプラグインも他のBoxを作れる
|
||||
3. **JIT/AOT最適化**:メソッドID化で最大33倍高速化
|
||||
4. **段階的移行**:既存資産を保護しながら進化
|
||||
|
||||
## 🎯 重要な変更 (2025-09-01)
|
||||
|
||||
@ -60,9 +93,11 @@ processor.process(3.14) # すべてプラグインで動作!
|
||||
|
||||
「プラグイン」という言葉から、特別な仕組みが必要だと考えてしまいましたが、Nyashの「Everything is Box」哲学により、ユーザー定義Boxこそが最高のプラグインシステムでした。
|
||||
|
||||
詳細な分析:[なぜ天才AIたちは間違えたのか](./WHY-AIS-FAILED.md)
|
||||
詳細な分析:[なぜ天才AIたちは間違えたのか](./design/WHY-AIS-FAILED.md)
|
||||
|
||||
## 🚀 Phase 12の真の価値:コード共有エコシステム
|
||||
## 🚀 Phase 12の真の価値:コード共有エコシステム(同一実行の確立)
|
||||
|
||||
最終ゴールは「Nyashコード → VM → JIT の同一実行」。同じプログラムがVMとJITで同じ意味・結果・副作用になるよう、ディスパッチ/ABI/Barrier/Safepointの規約を共有し、差分をなくします。テストハーネスで同値性を比較できるように整備します。
|
||||
|
||||
### 本当に必要なもの
|
||||
|
||||
@ -93,17 +128,32 @@ processor.process(3.14) # すべてプラグインで動作!
|
||||
export box MathUtils { ... }
|
||||
```
|
||||
|
||||
## 📊 新しい3層プラグインシステム
|
||||
## 📊 新しい統一プラグインシステム
|
||||
|
||||
```
|
||||
Nyashエコシステム(ビルトインBox廃止後):
|
||||
├── Nyashスクリプトプラグイン(ユーザー定義Box)← .nyashファイル
|
||||
├── C ABIプラグイン(既存のまま使用)← シンプル・高速・安定
|
||||
│ └── **TypeBox**: プラグイン間Box生成の最小機構 🆕
|
||||
└── Nyash ABIプラグイン(必要時のみ)← 言語間相互運用・将来拡張
|
||||
└── MIR命令は増やさない(BoxCallにabi_hint追加のみ)
|
||||
Nyashエコシステム(統一TypeBox ABI採用後):
|
||||
├── Nyashスクリプトプラグイン ← .nyashファイル(純粋なNyashコード)
|
||||
└── 統一TypeBoxプラグイン ← .so/.dll(ネイティブ実装)
|
||||
├── 基本機能(旧C ABI互換)
|
||||
├── 高速ディスパッチ(JIT最適化)
|
||||
└── プラグイン間連携(標準装備)
|
||||
```
|
||||
|
||||
### 🔄 移行パス
|
||||
- **既存C ABIプラグイン** → そのまま動作(互換レイヤー経由)
|
||||
- **新規プラグイン** → 統一TypeBox形式で作成
|
||||
- **段階的移行** → ツールで自動変換支援
|
||||
|
||||
### 📚 プラグインシステムドキュメント
|
||||
|
||||
- **[統一TypeBox ABI](./unified-typebox-abi.md)** 🆕 - すべてのプラグインの統一仕様
|
||||
- **[移行ガイド](./migration-guide.md)** 🆕 - 既存プラグインの移行方法
|
||||
- **[Nyashスクリプトプラグイン](./nyash-script-plugins.md)** - 純粋なNyashコードのプラグイン
|
||||
|
||||
### 📦 レガシードキュメント(参考用)
|
||||
- [旧C ABI仕様](./archive/legacy-abi-docs/c-abi.md)
|
||||
- [旧Nyash ABI仕様](./archive/legacy-abi-docs/nyash-abi.md)
|
||||
|
||||
### 💡 TypeBox:シンプルなプラグイン間連携
|
||||
|
||||
MapBox.keys()がArrayBoxを返したい場合:
|
||||
@ -125,7 +175,7 @@ void* map_keys(void* self, void* array_type_box) {
|
||||
}
|
||||
```
|
||||
|
||||
詳細: [C ABI TypeBox設計仕様書](./C-ABI-BOX-FACTORY-DESIGN.md)
|
||||
詳細: [C ABI TypeBox設計仕様書](./archive/legacy-abi-docs/C-ABI-BOX-FACTORY-DESIGN.md)
|
||||
|
||||
### プラグイン選択の指針
|
||||
- **C ABIで済むなら、C ABIを使う**(シンプルイズベスト)
|
||||
@ -141,21 +191,21 @@ void* map_keys(void* self, void* array_type_box) {
|
||||
- VM層でC ABI/Nyash ABI/Scriptを自動判定
|
||||
- Core-15 → Core-14 へ(命令数削減)
|
||||
|
||||
## 🛣️ 実装ロードマップ(セルフホスティング対応版)
|
||||
## 🛣️ 実装ロードマップ(統一TypeBox ABI版)
|
||||
|
||||
### Phase 12.0: TypeBox統合ABI実装(1週間)🆕
|
||||
- [ ] nyrt_typebox.h完全ヘッダー定義(16バイトアライメント)
|
||||
- [ ] セレクターキャッシング機構
|
||||
- [ ] MapBox両ABI実装(実証テスト)
|
||||
- [ ] 所有権ファズテスト
|
||||
- 📄 **[統合ABI設計仕様書](./UNIFIED-ABI-DESIGN.md)**
|
||||
### Phase 12.0: 統一TypeBox ABI実装(1週間)🆕
|
||||
- [ ] nyash_typebox.h完全ヘッダー定義
|
||||
- [ ] メソッドID解決・キャッシング機構
|
||||
- [ ] NyValue統一値表現の実装
|
||||
- [ ] 互換レイヤー(既存C ABI→TypeBox)
|
||||
- 📄 **[統一TypeBox ABI仕様](./unified-typebox-abi.md)**
|
||||
|
||||
### Phase 12.0.5: Nyash ABI C実装(2週間)🔥🆕
|
||||
- [ ] C Shim実装(既存Rustへのラッパー)
|
||||
- [ ] 基本型のC完全実装(Integer/String/Bool)
|
||||
- [ ] アトミック参照カウント + 弱参照
|
||||
- [ ] 適合性テストスイート
|
||||
- 📄 **[Nyash ABI C実装設計書](./NYASH-ABI-C-IMPLEMENTATION.md)**
|
||||
### Phase 12.0.5: 移行ツール開発(2週間)🔧
|
||||
- [ ] プラグイン自動変換ツール
|
||||
- [ ] 検証・テストツール
|
||||
- [ ] パフォーマンスベンチマーク
|
||||
- [ ] サンプルプラグイン集
|
||||
- 📄 **[移行ガイド](./migration-guide.md)**
|
||||
|
||||
---
|
||||
|
||||
@ -188,20 +238,31 @@ void* map_keys(void* self, void* array_type_box) {
|
||||
|
||||
## 📚 関連ドキュメント
|
||||
|
||||
### 🎯 主要設計ドキュメント
|
||||
- **[統合ABI設計仕様書](./UNIFIED-ABI-DESIGN.md)** ← 🆕🚀 C ABI + Nyash ABI統合の完全設計!**3大AI専門家検証済み**
|
||||
- **[C ABI TypeBox設計仕様書](./C-ABI-BOX-FACTORY-DESIGN.md)** ← 🆕 シンプルなプラグイン間Box生成!
|
||||
- **[Nyash ABI C実装設計書](./NYASH-ABI-C-IMPLEMENTATION.md)** ← 🆕🔥 セルフホスティング実現!**Gemini/Codex絶賛**
|
||||
- **[Nyash ABI統合設計図](./NYASH-ABI-DESIGN.md)** ← 将来拡張用の高度なABI
|
||||
- [export/import仕様](./export-import-spec.md)
|
||||
- [パッケージマネージャー設計](./package-manager-design.md)
|
||||
- [なぜ天才AIたちは間違えたのか](./WHY-AIS-FAILED.md)
|
||||
### 🎯 プラグインシステムガイド(メインドキュメント)
|
||||
- **[統一TypeBox ABI](./unified-typebox-abi.md)** ← 🌟🆕 すべてのプラグインの新仕様!
|
||||
- **[ユーザー定義Box統合](./unified-typebox-user-box.md)** ← 🔥🆕 革命的な完全統合!
|
||||
- **[AI先生たちの技術的検討](./ai-consultation-unified-typebox.md)** ← 🤖🆕 深い分析と提言(Codex詳細版追加)
|
||||
- **[技術的決定事項](./TECHNICAL_DECISIONS.md)** ← 📋🆕 確定した技術仕様まとめ
|
||||
- **[実装ロードマップ](./IMPLEMENTATION_ROADMAP.md)** ← 📅🆕 詳細な実装計画
|
||||
- **[移行ガイド](./migration-guide.md)** ← 🆕 既存プラグインを新形式へ
|
||||
- **[Nyashスクリプトプラグイン](./nyash-script-plugins.md)** ← 純粋なNyashコードのプラグイン
|
||||
|
||||
### 📂 議論の過程
|
||||
### 📐 設計ドキュメント(design/)
|
||||
- **[統合ABI設計仕様書](./design/UNIFIED-ABI-DESIGN.md)** ← 統合の詳細設計
|
||||
- **[C ABI TypeBox設計仕様書](./archive/legacy-abi-docs/C-ABI-BOX-FACTORY-DESIGN.md)** ← TypeBoxの原点
|
||||
- **[Nyash ABI C実装設計書](./design/NYASH-ABI-C-IMPLEMENTATION.md)** ← セルフホスティング構想
|
||||
- **[なぜ天才AIたちは間違えたのか](./design/WHY-AIS-FAILED.md)** ← 設計プロセスの教訓
|
||||
|
||||
- ABI戦略議論: `abi-strategy-discussion/`
|
||||
- Nyash ABI詳細: `nyash-abi-discussion/`
|
||||
- 初期提案アーカイブ: `archive/`
|
||||
### 📋 仕様書(specs/)
|
||||
- **[export/import仕様](./specs/export-import-spec.md)** ← モジュールシステムの詳細仕様
|
||||
- **[パッケージマネージャー設計](./specs/package-manager-design.md)** ← パッケージ管理の設計
|
||||
|
||||
### 💬 議論の過程(discussions/)
|
||||
- **ABI戦略議論**: `discussions/abi-strategy-discussion/`
|
||||
- **Nyash ABI詳細**: `discussions/nyash-abi-discussion/`
|
||||
|
||||
### 📦 アーカイブ
|
||||
- **初期提案**: `archive/` ← 過去の提案や古いドキュメント
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user