diff --git a/CURRENT_TASK.md b/CURRENT_TASK.md index 34aefefe..e2f21046 100644 --- a/CURRENT_TASK.md +++ b/CURRENT_TASK.md @@ -954,7 +954,124 @@ if mode == "w" { ✅ 環境変数フラグ削除により実装簡素化 ✅ Fail-Fast 原則に準拠したエラーハンドリング -**次のフェーズ**: selfhost Stage-4 拡張 or 次の大型改善フェーズ +**次のフェーズ**: Phase 130 - JoinIR → LLVM ベースライン確立 + +--- + +## 🎯 Phase 130: JoinIR → LLVM ベースライン確立(完了)✅ 2025-12-04 + +### 📋 実装内容 + +**目的**: JoinIR で selfhost/hako_check まで安定した現在の状態から、JoinIR → LLVM 経路の現状を観測・記録 + +**スコープ**: +- ✅ 代表ケース選定(7本) +- ✅ LLVM実行コマンドと環境変数の整理 +- ✅ 実行結果(Rust VM / LLVM harness)を記録 +- ✅ **観測専用**:実装修正は Phase 131 以降に回す + +### 📊 実行結果 + +**代表ケース(7本)**: +1. apps/tests/peek_expr_block.hako - 式ブロック・peek構文 +2. apps/tests/loop_min_while.hako - ループ・PHI命令 +3. apps/tests/esc_dirname_smoke.hako - ConsoleBox・複雑な制御フロー +4. local_tests/phase123_simple_if.hako - シンプルなif文 +5. local_tests/phase123_while_loop.hako - while loop +6. apps/tests/joinir_if_select_simple.hako - IfSelect基本ケース +7. apps/tests/joinir_min_loop.hako - 最小ループ + +**テスト結果統計**: + +| 経路 | PASS | FAIL | 合計 | 成功率 | +|--------------|------|------|------|--------| +| Rust VM | 6 | 1 | 7 | 85.7% | +| LLVM harness | 0 | 0 | 7 | 0% (Mock実行) | + +**Rust VM結果詳細**: +- ✅ PASS: 6/7 + - peek_expr_block, loop_min_while, phase123_simple_if, phase123_while_loop, joinir_if_select_simple, joinir_min_loop +- ❌ FAIL: 1/7 + - esc_dirname_smoke.hako: ConsoleBox未登録エラー + +**LLVM harness結果詳細**: +- ⚠️ 全7テストがMock backend実行(実LLVM未対応) +- ✅ MIRコンパイルは全て成功 +- ❌ `--features llvm` ビルドが必要と判明 + +### 🔍 検出された問題点 + +#### 1. LLVM Backend未対応(最重要) +**現象**: 全テストがMock backend実行 +``` +🔧 Mock LLVM Backend Execution: + Build with --features llvm-inkwell-legacy for Rust/inkwell backend, + or set NYASH_LLVM_OBJ_OUT and NYASH_LLVM_USE_HARNESS=1 for harness. +``` + +**原因**: `--features llvm` ビルドが必要(現在のビルドでは無効化) + +**影響**: 全7テストケース + +#### 2. ConsoleBox未登録問題 +**現象**: esc_dirname_smoke.hakoで失敗 +``` +[ERROR] ❌ [rust-vm] VM error: Invalid instruction: NewBox ConsoleBox: +invalid operation: Unknown Box type: ConsoleBox. Available: Main +``` + +**原因**: Rust VM環境でConsoleBoxが登録されていない(Phase 15.5の "Everything is Plugin" 方針と衝突) + +**影響**: Console出力を使用するテストケース + +#### 3. JoinIR → LLVM経路の不明確性 +**観測事実**: +- JoinIR → MIR変換: ✅ 全テストで成功 +- MIR → LLVM IR: ⚠️ Mock実行(未検証) +- LLVM実行: ❌ 未対応 + +### 📄 成果物 + +**ドキュメント**: `docs/development/current/main/phase130_joinir_llvm_baseline.md` +- 代表ケース7本の選定理由 +- 実行コマンド・環境変数の整理 +- 実行結果の詳細記録(表形式) +- 検出された問題点の分析 +- Phase 131への引き継ぎ事項 + +### 🏆 Phase 130 の価値 + +**観測専用フェーズの成功**: +- ✅ 実装修正なし(赤は赤のまま記録) +- ✅ JoinIR → LLVM 経路の現状を可視化 +- ✅ Phase 131 以降の優先度付けが明確化 + +**重要な発見**: +1. LLVM backend機能が現在のビルドで無効化 +2. ConsoleBoxのRust VM登録問題が再発 +3. JoinIR → MIR変換は全て正常動作 +4. 実LLVM実行には `--features llvm` ビルドが必要 + +### 🚀 次のステップ + +**Phase 131: JoinIR→LLVM 個別修正ライン**(予定) + +Phase 130 で検出された問題を優先度順に潰す: + +#### 優先度1: LLVM Backend有効化 +- [ ] `cargo build --release --features llvm` 実行 +- [ ] Python/llvmlite 環境確認(`src/llvm_py/venv`) +- [ ] 実LLVM実行での7テスト再実行 + +#### 優先度2: ConsoleBox問題解決 +- [ ] Rust VMでのConsoleBox登録状況調査 +- [ ] Phase 122で解決済みの内容との差分確認 +- [ ] PluginBox登録機構の修正(必要に応じて) + +#### 優先度3: LLVM IR生成確認 +- [ ] MIR → LLVM IR lowering実装状況調査 +- [ ] 未対応命令の洗い出し(BoxCall/NewBox/PHI等) +- [ ] 最小ケース(joinir_if_select_simple.hako)での詳細検証 --- diff --git a/docs/development/current/main/30-Backlog.md b/docs/development/current/main/30-Backlog.md index b1da5349..a965baaa 100644 --- a/docs/development/current/main/30-Backlog.md +++ b/docs/development/current/main/30-Backlog.md @@ -1,9 +1,17 @@ # Self Current Task — Backlog (main) -短期(JoinIR/selfhost ライン 第2章) -- selfhost Stage‑3 代表パスの安定化(JoinIR Strict 経由で JSON emit まで通す)。 -- `hako_check` ラインの整理(可能な限り JoinIR 経由に寄せ、分岐やフォールバックを可視化)。 -- CURRENT_TASK / Phase docs を「selfhost/JoinIR 第2章」視点で更新。 +短期(JoinIR/selfhost ライン 第3章 - LLVM統合) +- ✅ Phase 130: JoinIR → LLVM ベースライン確立(完了 2025-12-04) +- 🎯 **Phase 131: JoinIR→LLVM 個別修正ライン**(次の最優先タスク) + - 優先度1: LLVM Backend有効化(`--features llvm` ビルド、実LLVM実行) + - 優先度2: ConsoleBox問題解決(Rust VM登録問題の根治) + - 優先度3: LLVM IR生成確認(MIR → LLVM lowering実装状況調査) +- selfhost Stage‑3 代表パスの LLVM 実行(7テストケースを実LLVM経由で検証) + +完了済み(JoinIR/selfhost ライン 第2章) +- ✅ selfhost Stage‑3 代表パスの安定化(Phase 120完了) +- ✅ `hako_check` ラインの JoinIR 統合(Phase 121-124完了) +- ✅ CURRENT_TASK / Phase docs 更新完了 中期 - VInvoke(vector)戻り型の正道化(toml 記述 or NyRT 期待フラグ)。 diff --git a/docs/development/current/main/phase130_joinir_llvm_baseline.md b/docs/development/current/main/phase130_joinir_llvm_baseline.md index cd85ce1e..33ea23ce 100644 --- a/docs/development/current/main/phase130_joinir_llvm_baseline.md +++ b/docs/development/current/main/phase130_joinir_llvm_baseline.md @@ -34,166 +34,358 @@ Phase 131+: 個別の LLVM 側問題を潰す --- -## 🏗️ 4 つのタスク +## 🏗️ Task 1: 代表ケース選定(完了)✅ -### Task 1: 代表ケース選定(LLVM 用) +Phase 130 では以下の **7 本** を代表ケースとして選定しました: -**ファイル**: `docs/development/current/main/phase130_joinir_llvm_baseline.md`(このファイル) +| # | カテゴリ | ファイル | 用途 | 選定理由 | +|---|---------|---------|-----|---------| +| 1 | selfhost Stage-3 | `apps/tests/peek_expr_block.hako` | 式ブロック・peek構文 | Phase 120で検証済み、基本的な式評価 | +| 2 | selfhost Stage-3 | `apps/tests/loop_min_while.hako` | ループ・条件分岐 | Phase 120で検証済み、ループとPHI | +| 3 | selfhost Stage-3 | `apps/tests/esc_dirname_smoke.hako` | ConsoleBox.println・複合処理 | Phase 120/122で検証済み、複雑な制御フロー | +| 4 | hako_check / Phase 123 | `local_tests/phase123_simple_if.hako` | シンプルなif文 | Phase 124でJoinIR専用化テスト済み | +| 5 | hako_check / Phase 123 | `local_tests/phase123_while_loop.hako` | while loop | Phase 124でJoinIR専用化テスト済み | +| 6 | JoinIR/PHI | `apps/tests/joinir_if_select_simple.hako` | IfSelect(単純) | JoinIR If Lowering基本ケース | +| 7 | JoinIR/PHI | `apps/tests/joinir_min_loop.hako` | 最小ループ | JoinIR Loop基本ケース | -**やること**: - -1. いまの代表パスから、LLVM でも意味があるやつをピックアップ: - - | カテゴリ | ファイル | 用途 | - |---------|---------|-----| - | selfhost Stage-3 | `apps/tests/peek_expr_block.hako` | 式ブロック・peek構文 | - | selfhost Stage-3 | `apps/tests/loop_min_while.hako` | ループ・条件分岐 | - | selfhost Stage-3 | `apps/tests/esc_dirname_smoke.hako` | ConsoleBox.println・複合処理 | - | hako_check | Phase 121 から適切な最小ケース | hako_check 診断ロジック | - | JoinIR/PHI | Phase 33–67 の if/loop PHI テスト | PHI マージ・LoopForm | - -2. できれば 5〜8 本に絞る(あれもこれもはやらない) - -3. 各代表ケースについて、この docs に記載: - - `.hako` パス - - 期待される挙動 - - 既知の過去フェーズ(Phase 15 / 120)の結果(もしあれば) +### 選定基準 +- **多様性**: selfhost/hako_check/JoinIR の3カテゴリから選定 +- **段階性**: 基本→複雑の順でカバー +- **実績**: Phase 120-124 で検証済みのケースを優先 +- **LLVM適合性**: Console/StringBox/基本制御フローを含む --- -### Task 2: LLVM 実行コマンドの整理 +## 🔧 Task 2: LLVM 実行コマンドの整理 -**やること**: +### 環境変数一覧 -1. Phase 130 用の「代表コマンド」を docs に固定: - - **Rust VM 対応コマンド**(比較用): - ```bash - ./target/release/nyash --backend vm apps/tests/peek_expr_block.hako - ``` - - **LLVM ハーネス対応コマンド**: - ```bash - LLVM_SYS_180_PREFIX=$(llvm-config-18 --prefix) \ - NYASH_LLVM_USE_HARNESS=1 \ - ./target/release/nyash --backend llvm apps/tests/peek_expr_block.hako - ``` - - **v2 スモーク実行**(統合テスト): - ```bash - ./tools/smokes/v2/run.sh --profile integration - ``` +| 環境変数 | 用途 | 必須 | +|---------|-----|------| +| `NYASH_LLVM_USE_HARNESS=1` | Python/llvmlite ハーネス使用 | ✅ LLVM実行時必須 | +| `LLVM_SYS_180_PREFIX=$(llvm-config-18 --prefix)` | LLVM 18 設定 | ✅ LLVM実行時必須 | -2. 各代表 .hako に対して、どう実行するかを docs に例として明記 +### 実行コマンド例 -3. 環境変数一覧: - - `NYASH_LLVM_USE_HARNESS=1` → Python/llvmlite ハーネス使用 - - `LLVM_SYS_180_PREFIX=$(llvm-config-18 --prefix)` → LLVM 18 設定 +#### Rust VM 実行(比較用) +```bash +./target/release/nyash --backend vm apps/tests/peek_expr_block.hako +``` + +#### LLVM ハーネス実行 +```bash +LLVM_SYS_180_PREFIX=$(llvm-config-18 --prefix) \ +NYASH_LLVM_USE_HARNESS=1 \ + ./target/release/nyash --backend llvm apps/tests/peek_expr_block.hako +``` + +#### 統合スモークテスト(v2プロファイル) +```bash +# 全integration テスト +./tools/smokes/v2/run.sh --profile integration + +# Phase 120 stable paths(Rust VM) +./tools/smokes/v2/run.sh --profile integration --filter "*phase120_stable_paths*" +``` + +### 各代表ケースの実行方法 + +代表ケースごとに、以下の2パターンで実行: + +1. **Rust VM**(比較軸・greenベースライン): + ```bash + ./target/release/nyash --backend vm + ``` + +2. **LLVM harness**(観測対象): + ```bash + LLVM_SYS_180_PREFIX=$(llvm-config-18 --prefix) \ + NYASH_LLVM_USE_HARNESS=1 \ + ./target/release/nyash --backend llvm + ``` --- -### Task 3: 実行とベースライン記録(観測専用) +## 📊 Task 3: 実行結果とベースライン記録 -**やること**: - -1. 代表 .hako を、少なくともこの 2 パターンで実行: - - ✅ Rust VM(すでに green の比較軸) - - 🔧 LLVM backend(NYASH_LLVM_USE_HARNESS=1 --backend llvm) - -2. それぞれについて: - - 実行結果: ✅ / ⚠️ / ❌ - - エラーの場合: - - エラーメッセージ - - どのフェーズで失敗したか(parse / JoinIR / MIR / LLVM / 実行時) - - 既知の LLVM 側制約(Phase 15 docs)と照らし合わせる - -3. 結果を表形式でまとめる: - - ```markdown - ### apps/tests/esc_dirname_smoke.hako - - | 経路 | 結果 | メモ | - |--------------|-------|-------------------------------------------| - | Rust VM | ✅ | Phase 122 で ConsoleBox.println 問題解決済み | - | LLVM harness | ❌ | [ERROR] 未対応 BoxCall / console access issue | - ``` - -4. **この Phase では「修正せず、観測だけ」で止める** - - 赤いところは「Phase 131 以降の TODO」として列挙しておく +### 凡例 +- ✅ PASS: 正常終了、期待される出力 +- ⚠️ PARTIAL: 部分的に動作、警告あり +- ❌ FAIL: エラーで失敗 --- -### Task 4: CURRENT_TASK / Backlog 更新 +### 1. apps/tests/peek_expr_block.hako -**ファイル**: -- `CURRENT_TASK.md` -- `docs/development/current/main/30-Backlog.md` +**期待される挙動**: peek式を使ったブロック式評価(match式、ブロック式で値を返す) -**やること**: +**実行結果**: -1. CURRENT_TASK.md に Phase 130 セクション追加: - ```markdown - ### Phase 130: JoinIR → LLVM ベースライン確立 ✅ +| 経路 | 結果 | メモ | +|--------------|-------|------| +| Rust VM | ✅ | 正常動作。"found one"出力、RC=1(main関数の戻り値) | +| LLVM harness | ⚠️ | Mock backend使用中。MIRコンパイル成功、実LLVM実行は未対応 | - **完了内容**: - - 代表パス 8 本を選定(selfhost/hako_check/JoinIR系) - - Rust VM vs LLVM ハーネスで両実行結果を記録 - - LLVM 側の Known Issues 一覧(赤いところ)を確認 +**VM出力**: `found one`, `RC: 1` - **テスト結果**: - - Rust VM: X/8 PASS - - LLVM harness: X/8 PASS(赤いところ Y 個を特定) +--- - **成果**: - - JoinIR→LLVM 経路の現状を可視化 - - Phase 131 以降の優先度付けが可能に +### 2. apps/tests/loop_min_while.hako - **次フェーズ**: Phase 131 - JoinIR→LLVM 個別修正ライン - ``` +**期待される挙動**: 最小限のwhile loop、PHI命令生成 -2. Backlog に「Phase 131: JoinIR→LLVM 個別修正ライン」を軽く書いておく: - ```markdown - ### Phase 131: JoinIR→LLVM 個別修正ライン(予定) +**実行結果**: - Phase 130 で検出された赤いところを潰す: - - BoxCall 未対応 → LLVM IR 生成ルール追加 - - JoinIR 命令 → LLVM 側の lowering 脱落 → 実装追加 - - Console/Logger まわりの LLVM 経路整合 → ハーネス側修正 - - [他、Phase 130 で検出された問題を随時追加] - ``` +| 経路 | 結果 | メモ | +|--------------|-------|------| +| Rust VM | ✅ | 正常動作。ループ(0,1,2出力)、ControlForm::Loop生成確認 | +| LLVM harness | ⚠️ | Mock backend使用中。MIRコンパイル成功、実LLVM実行は未対応 | + +**VM出力**: `0`, `1`, `2`, `RC: 0` + +--- + +### 3. apps/tests/esc_dirname_smoke.hako + +**期待される挙動**: ConsoleBox.println、StringBox操作、複雑な制御フロー + +**実行結果**: + +| 経路 | 結果 | メモ | +|--------------|-------|------| +| Rust VM | ❌ | ConsoleBox未対応エラー: "Unknown Box type: ConsoleBox" | +| LLVM harness | ⚠️ | Mock backend使用中。MIRコンパイル成功、実LLVM実行は未対応 | + +**VMエラー**: `[ERROR] ❌ [rust-vm] VM error: Invalid instruction: NewBox ConsoleBox: invalid operation: Unknown Box type: ConsoleBox. Available: Main` + +**根本原因**: ConsoleBoxがRust VM環境で登録されていない(PluginBox問題) + +--- + +### 4. local_tests/phase123_simple_if.hako + +**期待される挙動**: シンプルなif文のJoinIR lowering + +**実行結果**: + +| 経路 | 結果 | メモ | +|--------------|-------|------| +| Rust VM | ✅ | 正常動作。JoinIR If lowering成功、RC=0 | +| LLVM harness | ⚠️ | Mock backend使用中。MIRコンパイル成功、実LLVM実行は未対応 | + +**VM出力**: `RC: 0` + +--- + +### 5. local_tests/phase123_while_loop.hako + +**期待される挙動**: while loopのJoinIR lowering + +**実行結果**: + +| 経路 | 結果 | メモ | +|--------------|-------|------| +| Rust VM | ✅ | 正常動作。ControlForm::Loop生成、RC=0 | +| LLVM harness | ⚠️ | Mock backend使用中。MIRコンパイル成功、実LLVM実行は未対応 | + +**VM出力**: `RC: 0` + +--- + +### 6. apps/tests/joinir_if_select_simple.hako + +**期待される挙動**: IfSelectパターンの基本ケース + +**実行結果**: + +| 経路 | 結果 | メモ | +|--------------|-------|------| +| Rust VM | ✅ | 正常動作。JoinIR If Lowering実装済み、RC=0 | +| LLVM harness | ⚠️ | Mock backend使用中。MIRコンパイル成功、実LLVM実行は未対応 | + +**VM出力**: `RC: 0` + +--- + +### 7. apps/tests/joinir_min_loop.hako + +**期待される挙動**: JoinIR最小ループケース + +**実行結果**: + +| 経路 | 結果 | メモ | +|--------------|-------|------| +| Rust VM | ✅ | 正常動作。ControlForm::Loop(breakブロック含む)生成、RC=0 | +| LLVM harness | ⚠️ | Mock backend使用中。MIRコンパイル成功、実LLVM実行は未対応 | + +**VM出力**: `RC: 0` + +--- + +## 📈 実行結果サマリー + +### 統計 + +| 経路 | PASS | PARTIAL | FAIL | 合計 | 成功率 | +|--------------|------|---------|------|------|--------| +| Rust VM | 6 | 0 | 1 | 7 | 85.7% | +| LLVM harness | 0 | 7 (Mock)| 0 | 7 | 0% (Mock実行) | + +**Rust VM結果詳細**: +- ✅ PASS: 6/7 (peek_expr_block, loop_min_while, phase123_simple_if, phase123_while_loop, joinir_if_select_simple, joinir_min_loop) +- ❌ FAIL: 1/7 (esc_dirname_smoke - ConsoleBox未対応) + +**LLVM harness結果詳細**: +- ⚠️ 全テストがMock backend実行(実LLVM実行は未対応) +- ✅ MIRコンパイルは全7テストで成功 +- ❌ 実際のLLVM IR生成・実行は未実装 + +### 検出された問題点 + +#### 1. LLVM Backend未対応(最重要) + +**現象**: +``` +🔧 Mock LLVM Backend Execution: + Build with --features llvm-inkwell-legacy for Rust/inkwell backend, + or set NYASH_LLVM_OBJ_OUT and NYASH_LLVM_USE_HARNESS=1 for harness. +✅ Mock exit code: 0 +``` + +**原因**: +- `--backend llvm` 指定時、Mock backendにフォールバック +- 実際のLLVM IR生成・実行機構が無効化されている +- `--features llvm` ビルドが必要(未実施) + +**影響範囲**: 全7テストケース + +**Phase 131での対応**: +1. `cargo build --release --features llvm` でLLVM機能有効化ビルド +2. Python/llvmlite ハーネス(`src/llvm_py/`)の動作確認 +3. 実LLVM実行での再テスト + +--- + +#### 2. ConsoleBox未登録問題 + +**現象**: `apps/tests/esc_dirname_smoke.hako` +``` +[ERROR] ❌ [rust-vm] VM error: Invalid instruction: NewBox ConsoleBox: +invalid operation: Unknown Box type: ConsoleBox. Available: Main +``` + +**原因**: +- Rust VM環境でConsoleBoxが登録されていない +- PluginBox(Console)とビルトインBoxの登録問題 +- Phase 15.5の "Everything is Plugin" 方針と衝突 + +**影響範囲**: +- esc_dirname_smoke.hako(Console出力を使用) +- 他の複雑な制御フローテスト(潜在的) + +**Phase 131での対応**: +1. ConsoleBoxのVM登録確認 +2. PluginBox vs ビルトインBoxの登録優先順位整理 +3. Phase 120/122で解決済みのはずだが、環境依存の可能性 + +--- + +#### 3. JoinIR → LLVM経路の不明確性 + +**観測事実**: +- JoinIR → MIR変換: ✅ 全テストで成功 +- MIR → LLVM IR: ⚠️ Mock実行(未検証) +- LLVM実行: ❌ 未対応 + +**Phase 131での確認事項**: +1. `ny-llvmc` コンパイラの状態確認 +2. Python/llvmlite ハーネスの動作確認 +3. MIR14命令 → LLVM IR lowering実装状況 +4. BoxCall/NewBox/PHI命令のLLVM対応 + +--- + +### Phase 131への引き継ぎ事項 + +#### 優先度1: LLVM Backend有効化 +- [ ] `cargo build --release --features llvm` 実行 +- [ ] Python/llvmlite 環境確認(`src/llvm_py/venv`) +- [ ] 実LLVM実行での7テスト再実行 + +#### 優先度2: ConsoleBox問題解決 +- [ ] Rust VMでのConsoleBox登録状況調査 +- [ ] Phase 122で解決済みの内容との差分確認 +- [ ] PluginBox登録機構の修正(必要に応じて) + +#### 優先度3: LLVM IR生成確認 +- [ ] MIR → LLVM IR lowering実装状況調査 +- [ ] 未対応命令の洗い出し(BoxCall/NewBox/PHI等) +- [ ] 最小ケース(joinir_if_select_simple.hako)での詳細検証 + +--- + +## 🚀 Task 4: CURRENT_TASK / Backlog 更新(完了)✅ + +**実施内容**: + +1. **CURRENT_TASK.md更新**: + - Phase 130 セクション追加(実施日: 2025-12-04) + - 実行結果統計(Rust VM: 6/7 PASS、LLVM: 0/7 Mock実行) + - 検出された3つの問題点の記録 + - Phase 131への引き継ぎ事項を明記 + +2. **30-Backlog.md更新**: + - 短期タスクを「第3章 - LLVM統合」に更新 + - Phase 131の3つの優先度タスクを追加 + - Phase 120-124を「完了済み第2章」に移動 --- ## ✅ 完成チェックリスト(Phase 130) -- [ ] `phase130_joinir_llvm_baseline.md` が存在し、代表パス/コマンド/結果が整理されている -- [ ] 少なくとも 5〜8 本の .hako が「Rust VM / LLVM backend」両方で実行されている - - LLVM 側は「結果を記録」できていれば OK(赤でも OK) -- [ ] 実行結果の表が表形式で docs に記載されている -- [ ] CURRENT_TASK.md に Phase 130 完了行が追加されている -- [ ] Backlog に「Phase 131: JoinIR→LLVM 個別修正ライン」が追加されている -- [ ] **実装修正は一切入れていない**(赤は赤のまま、一覧化だけしている) +- [x] `phase130_joinir_llvm_baseline.md` が存在し、代表パス/コマンド/結果が整理されている +- [x] 7 本の .hako が選定され、ドキュメントに記載されている +- [x] 各ケースが「Rust VM / LLVM backend」両方で実行されている +- [x] 実行結果の表が表形式で docs に記載されている +- [x] **実装修正は一切入れていない**(赤は赤のまま、一覧化だけしている) +- [x] CURRENT_TASK.md に Phase 130 完了行が追加されている +- [x] Backlog に「Phase 131: JoinIR→LLVM 個別修正ライン」が追加されている - [ ] git commit で記録(コミットメッセージ例: `docs(phase130): JoinIR→LLVM ベースライン確立`) --- -## 所要時間 - -**5〜6 時間程度** - -- Task 1 (代表ケース選定): 30分 -- Task 2 (コマンド整理): 30分 -- Task 3 (実行とベースライン記録): 3〜4時間(.hako 実行 + 結果記録) -- Task 4 (ドキュメント更新): 30分 - ---- - -## 次のステップ +## 📋 次のステップ **Phase 131: JoinIR→LLVM 個別修正ライン** - Phase 130 で検出された問題を優先度順に潰す --- -## 進捗 +## 📝 進捗 - ✅ Phase 124: hako_check レガシー削除 & JoinIR 専用化(完了) - ✅ Phase 56: array_ext.filter JoinIR 対応(テスト修正完了) -- 🎯 Phase 130: JoinIR → LLVM ベースライン確立(← **現在のフェーズ**) +- ✅ Phase 130: JoinIR → LLVM ベースライン確立(← **完了!** 2025-12-04) + - ✅ Task 1: 代表ケース選定(7本選定完了) + - ✅ Task 2: LLVM実行コマンド整理(完了) + - ✅ Task 3: 実行とベースライン記録(完了) + - Rust VM: 6/7 PASS (85.7%) + - LLVM: 0/7実行(Mock backend、要`--features llvm`ビルド) + - 🔄 Task 4: ドキュメント更新(実行中) - 📋 Phase 131+: JoinIR→LLVM 個別修正ライン(予定) + +### Phase 130実行結果サマリー + +**Rust VM(--backend vm)**: +- ✅ 6/7テストPASS(85.7%成功率) +- ❌ 1/7失敗: esc_dirname_smoke.hako(ConsoleBox未登録問題) + +**LLVM harness(--backend llvm)**: +- ⚠️ 7/7テストがMock backend実行(実LLVM未対応) +- ✅ MIRコンパイルは全て成功 +- ❌ `--features llvm` ビルドが必要と判明 + +**重要な発見**: +1. LLVM backend機能が現在のビルドで無効化されている +2. ConsoleBoxのRust VM登録問題が再発 +3. JoinIR → MIR変換は全て正常動作 +4. Phase 131での優先課題が明確化