Files
hakorune/docs/development/roadmap/native-plan/llvm/issue/Week1-Roadmap.md
Moe Charm cc2a820af7 feat(plugin): Fix plugin BoxRef return and Box argument support
- 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>
2025-08-21 00:41:26 +09:00

3.2 KiB
Raw Blame History

📅 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を参考に最小実装
リンクエラー まずは静的リンク、動的は後回し

💡 成功のコツ

  1. 小さく始める: return 42が動けば大成功
  2. エラーを恐れない: LLVMのエラーメッセージは親切
  3. IR出力を確認: --emit-llvmでIRをダンプして確認
  4. 既存コード活用: VM/WASMバックエンドの構造を参考に

🎉 Week 1成功時の次のステップ

Week 2では以下に取り組みます

  • BinOp四則演算の実装
  • Branch/Jumpによる制御フロー
  • Box型の基本操作
  • PHIードの実装

注意: 各Issueは独立して実装可能ですが、推奨順序に従うとスムーズです。 ブロッカーがあれば即座にAIチームに相談してください