208 lines
5.5 KiB
Markdown
208 lines
5.5 KiB
Markdown
|
|
# 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)
|