- Fixed deadlock in FileBox plugin copyFrom implementation (single lock) - Added TLV Handle (tag=8) parsing in calls.rs for returned BoxRefs - Improved plugin loader with config path consistency and detailed logging - Fixed loader routing for proper Handle type_id/fini_method_id resolution - Added detailed logging for TLV encoding/decoding in plugin_loader_v2 Test docs/examples/plugin_boxref_return.nyash now works correctly: - cloneSelf() returns FileBox Handle properly - copyFrom(Box) accepts plugin Box arguments - Both FileBox instances close and fini correctly 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
3.2 KiB
3.2 KiB
📅 Week 1 ロードマップ: LLVM基盤構築
期間: 2025年8月21日〜8月27日
目標: LLVMバックエンドの基盤を構築し、最小限のプログラムを実行可能にする
🎯 Week 1の全体目標
「return 42」レベルの超シンプルなNyashプログラムが、LLVM経由で実行できる状態を達成する。
📋 Issue実装順序
Issue #001: inkwellセットアップとHello World 🚀最初にこれ!
- 期間: Day 1-3
- 内容: 環境構築と「return 42」の実行
- 成功条件: LLVMでコンパイルした実行ファイルが終了コード42を返す
- ファイル: 001-setup-inkwell-hello-world.md
Issue #002: Const命令の実装(#001完了後)
- 期間: Day 3-4
- 内容: MIR Const命令をLLVM定数に変換
- 対象: Integer, Float, Bool定数
- テスト:
return 100,return 3.14,return true
Issue #003: 基本的な型システム(#002と並行可能)
- 期間: Day 4-5
- 内容: MIR型→LLVM型のマッピング実装
- 対象: i32/i64, f64, bool, 関数型
- 成果: type_cache の実装
Issue #004: ランタイム関数宣言(#003完了後)
- 期間: Day 5-6
- 内容: nyash_runtime_* 関数の宣言
- 対象: alloc, free, print_int(デバッグ用)
- 準備: 最小限のCランタイム作成
Issue #005: Week 1統合テスト(最終日)
- 期間: Day 7
- 内容: 複数の小さなプログラムでテスト
- 確認: CI/CDでのLLVMビルド
- 文書: Week 2への引き継ぎ事項
🔄 実装の流れ
graph LR
A[Issue #001<br/>環境構築] --> B[Issue #002<br/>Const実装]
A --> C[Issue #003<br/>型システム]
B --> D[Issue #004<br/>ランタイム]
C --> D
D --> E[Issue #005<br/>統合テスト]
✅ Week 1完了時のチェックリスト
- inkwellクレートが正常に動作
- 「return 42」がLLVM経由で実行可能
- Integer/Float/Bool定数がサポート済み
- 基本的な型変換が実装済み
- 最小限のランタイム関数が宣言済み
- 5個以上のテストケースがパス
📊 リスクと対策
| リスク | 対策 |
|---|---|
| LLVM環境構築で詰まる | Docker環境を準備、LLVM17固定 |
| inkwellのAPIが複雑 | 公式exampleを参考に最小実装 |
| リンクエラー | まずは静的リンク、動的は後回し |
💡 成功のコツ
- 小さく始める: return 42が動けば大成功
- エラーを恐れない: LLVMのエラーメッセージは親切
- IR出力を確認:
--emit-llvmでIRをダンプして確認 - 既存コード活用: VM/WASMバックエンドの構造を参考に
🎉 Week 1成功時の次のステップ
Week 2では以下に取り組みます:
- BinOp(四則演算)の実装
- Branch/Jumpによる制御フロー
- Box型の基本操作
- PHIノードの実装
注意: 各Issueは独立して実装可能ですが、推奨順序に従うとスムーズです。 ブロッカーがあれば即座にAIチームに相談してください!