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:
@ -0,0 +1,208 @@
|
||||
# Phase 12: 統一TypeBox ABI - 実装ロードマップ
|
||||
|
||||
## 🎯 概要
|
||||
|
||||
このドキュメントは、統一TypeBox ABIの実装を段階的に進めるための詳細なロードマップです。
|
||||
|
||||
## 📅 タイムライン
|
||||
|
||||
```
|
||||
2025年9月(Week 1-2): 基礎実装
|
||||
2025年9月(Week 3-4): 最適化・性能向上
|
||||
2025年10月(Week 1-2): 移行ツール・互換性
|
||||
2025年10月(Week 3-4): 完全移行・テスト
|
||||
2025年11月:リリース準備
|
||||
```
|
||||
|
||||
## 🚀 Phase 12.0: 基礎実装(Week 1-2)
|
||||
|
||||
### Week 1: コア構造体とAPI
|
||||
|
||||
#### タスク
|
||||
- [ ] `include/nyash/typebox.h` ヘッダー定義
|
||||
- [ ] NyashTypeBox構造体
|
||||
- [ ] NyBoxHeader構造体
|
||||
- [ ] NyValue統一表現
|
||||
- [ ] 基本的なヘルパーマクロ
|
||||
|
||||
- [ ] `src/runtime/typebox_registry.rs` 実装
|
||||
- [ ] Type ID管理システム
|
||||
- [ ] register_user_box基本実装
|
||||
- [ ] メソッドテーブル管理
|
||||
|
||||
- [ ] 基本的なテストケース
|
||||
- [ ] ユーザーBox登録テスト
|
||||
- [ ] メソッド呼び出しテスト
|
||||
- [ ] 参照カウントテスト
|
||||
|
||||
#### 成果物
|
||||
- 動作する最小限のTypeBox登録・呼び出し
|
||||
- ドキュメント化されたAPI
|
||||
|
||||
### Week 2: 互換レイヤー
|
||||
|
||||
#### タスク
|
||||
- [ ] 既存C ABIとの互換レイヤー
|
||||
- [ ] 旧形式→TypeBox自動変換
|
||||
- [ ] フォールバックメカニズム
|
||||
- [ ] 警告・移行推奨メッセージ
|
||||
|
||||
- [ ] 主要プラグインの動作確認
|
||||
- [ ] FileBox
|
||||
- [ ] StringBox
|
||||
- [ ] MapBox
|
||||
- [ ] ArrayBox
|
||||
|
||||
#### 成果物
|
||||
- 既存プラグインが新システムで動作
|
||||
- 移行ガイドの初版
|
||||
|
||||
## ⚡ Phase 12.1: 最適化(Week 3-4)
|
||||
|
||||
### Week 3: メソッドID最適化
|
||||
|
||||
#### タスク
|
||||
- [ ] メソッド名→ID解決システム
|
||||
- [ ] ハッシュテーブル実装
|
||||
- [ ] スロット割り当てアルゴリズム
|
||||
- [ ] キャッシュ機構
|
||||
|
||||
- [ ] パフォーマンス測定
|
||||
- [ ] ベンチマークスイート作成
|
||||
- [ ] 旧方式との比較測定
|
||||
- [ ] ボトルネック分析
|
||||
|
||||
#### 成果物
|
||||
- 10倍以上の高速化を確認
|
||||
- パフォーマンスレポート
|
||||
|
||||
### Week 4: JIT/AOT統合
|
||||
|
||||
#### タスク
|
||||
- [ ] インラインキャッシング基礎
|
||||
- [ ] Monomorphic IC実装
|
||||
- [ ] キャッシュヒット率測定
|
||||
- [ ] Deoptimizationフック
|
||||
|
||||
- [ ] JIT統合準備
|
||||
- [ ] メソッドポインタ直接呼び出し
|
||||
- [ ] 型情報の静的解析連携
|
||||
- [ ] AOT向け最適化ヒント
|
||||
|
||||
#### 成果物
|
||||
- IC有効時30倍高速化を達成
|
||||
- JIT統合設計書
|
||||
|
||||
## 🔄 Phase 12.2: 移行ツール(Week 5-6)
|
||||
|
||||
### Week 5: ツール開発
|
||||
|
||||
#### タスク
|
||||
- [ ] `ny-abi-gen` コード生成ツール
|
||||
- [ ] Cヘッダーからの自動生成
|
||||
- [ ] nyash.toml更新機能
|
||||
- [ ] ドキュメント生成
|
||||
|
||||
- [ ] `ny-abi-check` 検証ツール
|
||||
- [ ] ABI互換性チェック
|
||||
- [ ] 署名検証
|
||||
- [ ] セキュリティ監査
|
||||
|
||||
#### 成果物
|
||||
- 使いやすい移行ツール群
|
||||
- 自動化されたCI/CDパイプライン
|
||||
|
||||
### Week 6: プラグイン移行
|
||||
|
||||
#### タスク
|
||||
- [ ] コアプラグインの移行
|
||||
- [ ] すべてのビルトインBoxをTypeBox化
|
||||
- [ ] サードパーティプラグインサポート
|
||||
- [ ] 移行スクリプト提供
|
||||
|
||||
- [ ] ドキュメント整備
|
||||
- [ ] 移行ガイド完成版
|
||||
- [ ] APIリファレンス
|
||||
- [ ] サンプルコード集
|
||||
|
||||
#### 成果物
|
||||
- 90%以上のプラグインが新ABI対応
|
||||
- 完全なドキュメント
|
||||
|
||||
## ✅ Phase 12.3: 完全移行(Week 7-8)
|
||||
|
||||
### Week 7: 統合テスト
|
||||
|
||||
#### タスク
|
||||
- [ ] エンドツーエンドテスト
|
||||
- [ ] 実アプリケーションでの動作確認
|
||||
- [ ] パフォーマンス回帰テスト
|
||||
- [ ] メモリリークチェック
|
||||
|
||||
- [ ] セキュリティ監査
|
||||
- [ ] Wasmサンドボックステスト
|
||||
- [ ] 権限管理システム検証
|
||||
- [ ] ファジングテスト
|
||||
|
||||
#### 成果物
|
||||
- グリーンなテストスイート
|
||||
- セキュリティレポート
|
||||
|
||||
### Week 8: リリース準備
|
||||
|
||||
#### タスク
|
||||
- [ ] 最終調整
|
||||
- [ ] パフォーマンスチューニング
|
||||
- [ ] メモリ使用量最適化
|
||||
- [ ] エラーメッセージ改善
|
||||
|
||||
- [ ] リリース準備
|
||||
- [ ] CHANGELOG作成
|
||||
- [ ] アップグレードガイド
|
||||
- [ ] ブログ記事・アナウンス
|
||||
|
||||
#### 成果物
|
||||
- リリース候補版
|
||||
- 完全なリリースノート
|
||||
|
||||
## 📊 成功指標
|
||||
|
||||
### パフォーマンス
|
||||
- メソッド呼び出し: 50倍高速化(目標)
|
||||
- メモリ使用量: 現状維持または改善
|
||||
- 起動時間: 10%以内の増加
|
||||
|
||||
### 互換性
|
||||
- 既存プラグイン: 100%動作
|
||||
- 新規API採用率: 80%以上
|
||||
- 移行完了率: 90%以上
|
||||
|
||||
### 品質
|
||||
- テストカバレッジ: 90%以上
|
||||
- ドキュメント完成度: 100%
|
||||
- バグ報告: クリティカル0件
|
||||
|
||||
## 🚨 リスクと対策
|
||||
|
||||
### 技術的リスク
|
||||
- **ABI破壊的変更**: 段階的移行と互換レイヤーで対応
|
||||
- **パフォーマンス劣化**: 継続的なベンチマークで早期発見
|
||||
- **メモリリーク**: 自動テストとValgrind検証
|
||||
|
||||
### スケジュールリスク
|
||||
- **遅延**: 2週間のバッファを確保
|
||||
- **スコープクリープ**: 機能は段階的リリース
|
||||
- **リソース不足**: コミュニティ協力を促進
|
||||
|
||||
## 🎯 次のステップ
|
||||
|
||||
1. このロードマップのレビューと承認
|
||||
2. Week 1タスクの詳細化
|
||||
3. 開発環境のセットアップ
|
||||
4. キックオフミーティング
|
||||
|
||||
## 📚 参照
|
||||
|
||||
- [技術的決定事項](./TECHNICAL_DECISIONS.md)
|
||||
- [統一TypeBox ABI仕様](./unified-typebox-abi.md)
|
||||
- [AI先生たちの技術検討](./ai-consultation-unified-typebox.md)
|
||||
Reference in New Issue
Block a user