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:
Moe Charm
2025-09-03 05:04:56 +09:00
parent e2e25f6615
commit 53d88157aa
84 changed files with 4739 additions and 2750 deletions

View File

@ -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/` ← 過去の提案や古いドキュメント
---