Unify condition lowering logic across Pattern 2/4 with trait-based API. New infrastructure: - condition_lowering_box.rs: ConditionLoweringBox trait + ConditionContext (293 lines) - ExprLowerer implements ConditionLoweringBox trait (+51 lines) Pattern migrations: - Pattern 2 (loop_with_break_minimal.rs): Use trait API - Pattern 4 (loop_with_continue_minimal.rs): Use trait API Benefits: - Unified condition lowering interface - Extensible for future lowering strategies - Clean API boundary between patterns and lowering logic - Zero code duplication Test results: 911/911 PASS (+2 new tests) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
3.0 KiB
3.0 KiB
Phase 22 実装ロードマップ
前提条件
- Phase 15 LLVM Rust実装の完成(ChatGPT5作業中)
- LLVMバックエンドでの基本的なEXE生成確認
- MIR 13命令セットの安定
Phase 0: MVP実装(2週間)
Week 1: C++グルー層
- 最小C++ラッパー作成(10関数以内)
llvm_init() llvm_context_create/free() llvm_module_from_ir() llvm_verify_module() llvm_write_object() llvm_get_error() - ビルドシステム整備(CMake/Makefile)
- 基本的なエラーハンドリング
Week 2: Nyash実装とテスト
- LLVMTextGeneratorBox実装
- MIR → LLVM IR テキスト変換
- 最小限:main関数、return文のみ
- エンドツーエンドテスト
echo 'print(42)' > test.hako ./nyash phase22-compiler.hako test.hako - Rust版との出力比較
Phase 1: 基本機能実装(1ヶ月)
Week 3-4: MIR命令カバレッジ
- 算術演算(BinOp, UnaryOp)
- 制御フロー(Branch, Jump)
- 関数呼び出し(Call)
- Box操作(BoxCall基本)
Week 5-6: バッチBuilder化
- バイナリエンコーディング設計
llvm_build_batch()API実装- Nyash側エンコーダー実装
- パフォーマンス測定
Phase 2: 完全移行(1ヶ月)
Week 7-8: 高度な機能
- Phi命令サポート
- ExternCall完全実装
- 文字列・配列操作
- プラグインサポート
Week 9-10: 最適化と検証
- 全テストスイート通過
- パフォーマンスチューニング
- メモリ使用量最適化
- ドキュメント整備
成功指標
必須要件
dep_tree_min_string.hakoのコンパイル成功- 基本的なプラグインテスト通過
- Rust版と同一のオブジェクトファイル生成
パフォーマンス目標
- コンパイル時間: Rust版の2倍以内
- メモリ使用量: 100MB以内
- コード行数: 200行以内
品質目標
- エラーメッセージの明確性
- デバッグ情報の充実
- 拡張性の確保
リスクと対策
技術的リスク
-
FFI境界のオーバーヘッド
- 対策: バッチ化で呼び出し回数削減
-
LLVM APIの複雑性
- 対策: テキストIRから段階的に移行
-
デバッグの困難さ
- 対策: 充実したロギングとIRダンプ
スケジュールリスク
- Phase 15完了の遅延 → 並行して設計・プロトタイプ作成
長期ビジョン
Phase 22.5: 自己コンパイル
// NyashコンパイラでNyashコンパイラをコンパイル!
local compiler = new NyashCompiler()
compiler.compile("phase22-compiler.hako", "nyash-compiler.exe")
Phase 23: 完全セルフホスティング
- Rust依存の完全排除
- NyashだけでNyash開発環境構築
- 究極の「Everything is Box」実現
「難しいけど、夢があるにゃ!」 Status: Historical