Files
hakorune/docs/development/current/main/01-JoinIR-Selfhost-INDEX.md
nyash-codex 5709026812 docs(phase131): Phase 131-3 完了 - LLVM lowering 棚卸し(3ケース)
Phase 131-3 完了: MIR→LLVM lowering 棚卸し

テスト結果マトリックス:
- Case A (phase87_llvm_exe_min.hako):  PASS (baseline)
- Case B (loop_min_while.hako):  TAG-EMIT (PHI after terminator)
- Case B2 (print(42) simple):  PASS (BoxCall works)
- Case C (llvm_stage3_loop_only.hako):  TAG-EMIT (JoinIR pattern gap)

Critical Bugs:
1. Bug #1: PHI After Terminator (Case B)
   - 原因: function_lower.py が terminator を PHI より先に emit
   - 修正: 4-pass block emission (2-3h)

2. Bug #2: JoinIR Pattern Gap (Case C)
   - 原因: loop(true) { break } パターンが JoinIR 未対応
   - 修正: Pattern 5 設計・実装 (3-4h)

Next Actions:
- P1 (推奨): PHI ordering 修正 → 80% のループを有効化
- P2: JoinIR Pattern 5 → infinite loop 対応

ドキュメント:
- phase131-3-llvm-lowering-inventory.md: 詳細棚卸し結果
- phase87-selfhost-llvm-exe-line.md: LLVM IR parsing error 追記
- CURRENT_TASK.md: phase131-3 参照追加

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-14 05:55:21 +09:00

6.1 KiB
Raw Blame History

JoinIR / Selfhost INDEX読み始めガイド

Status: Active
Scope: JoinIR と SelfhostStageB/Stage1/Stage3に関する「最初に読むべき現役ドキュメント」だけを集約した入口。

このファイルは、JoinIR と Selfhost ラインの主戦場をすばやく把握するためのインデックスだよ。
歴史メモや詳細な Phase 文書に飛ぶ前に、まずここに載っている現役ドキュメントから辿っていくことを想定しているよ。


1. まず全体像だけ掴みたいとき

  • JoinIR 全体像SSOT
    • docs/development/current/main/joinir-architecture-overview.md
  • Selfhost / StageB〜3 の代表フロー
    • docs/development/current/main/selfhost_stage3_expected_flow.md
  • 「いまどこまで進んでいるか」の現状サマリ
    • docs/development/current/main/10-Now.md
      • 「JoinIR / Loop / If ライン」
      • 「JsonParser / Selfhost depth2 ライン」
  • Phase 8690Loop frontendsの要約1枚
    • docs/development/current/main/phase86-90-loop-frontends-summary.md

2. JoinIR をこれから触る人向け

JoinIR の箱構造と責務、ループ/if の lowering パターンを把握したいときの読み順だよ。

  1. JoinIR の基本設計SSOT
    • docs/development/current/main/joinir-architecture-overview.md
  2. ループパターン空間とパターン番号の意味
    • docs/development/current/main/loop_pattern_space.md
  3. Boundary / ExitLine / Carrier の具体パターン
    • docs/development/current/main/joinir-boundary-builder-pattern.md
  4. Scope/BindingIdshadowing・束縛同一性の段階移行
    • docs/development/current/main/phase73-scope-manager-design.md
    • docs/development/current/main/PHASE_74_SUMMARY.md
    • docs/development/current/main/PHASE_75_SUMMARY.md
    • docs/development/current/main/PHASE_77_EXECUTIVE_SUMMARY.md
    • docs/development/current/main/phase78-bindingid-promoted-carriers.md
    • docs/development/current/main/phase80-bindingid-p3p4-plan.mdP3/P4 への配線計画)
    • docs/development/current/main/phase81-pattern2-exitline-contract.mdpromoted carriers の ExitLine 契約検証)
  5. Boxification feedbackPhase 7885 の振り返りと Phase 86 推奨)
    • docs/development/current/main/phase78-85-boxification-feedback.md
  6. Phase 86: Carrier Init Builder + Error Tags
    • Status: COMPLETE (2025-12-13)
    • Modules:
      • src/mir/builder/control_flow/joinir/merge/carrier_init_builder.rs (+8 tests)
      • src/mir/join_ir/lowering/error_tags.rs (+5 tests)
    • Achievements: SSOT 確立CarrierInit → ValueId 生成統一、エラータグ中央化、DebugOutputBox 完全移行)
    • Impact: 987/987 tests PASS, +13 unit tests, Single Responsibility validated
  7. Phase 87: LLVM Exe Line SSOT
    • Status: COMPLETE (2025-12-13)
    • SSOT: tools/build_llvm.sh - Single pipeline for .hako → executable
    • Deliverables:
      • Design doc: phase87-selfhost-llvm-exe-line.md (full troubleshooting + advanced usage)
      • Minimal fixture: apps/tests/phase87_llvm_exe_min.hako (exit code 42)
      • Integration smoke: tools/smokes/v2/profiles/integration/apps/phase87_llvm_exe_min.sh (SKIP if no LLVM)
    • Policy: No script duplication, integration smoke only (not quick), graceful SKIP
    • Impact: Standard procedure established, prerequisites documented
  8. 代表的な Phase 文書(現役ラインとの接点だけ絞ったもの)
    • docs/development/current/main/phase33-16-INDEX.md
    • docs/development/current/main/phase33-17-joinir-modularization-analysis.md
    • docs/development/current/main/phase183-selfhost-depth2-joinir-status.md
  9. Phase 8690Loop frontendsの要約1枚
    • docs/development/current/main/phase86-90-loop-frontends-summary.md

Phase 文書は歴史や検証ログも含むので、「JoinIR の現役設計を確認した上で、必要なときだけ掘る」という前提で読んでね。


3. SelfhostStageB / Stage1 / Stage3を触る人向け

自己ホストコンパイラのフローや実行手順、Ny Executor ラインの計画を押さえたいときの読み順だよ。

  1. Selfhost 全体フローStageB / Stage1 / Stage3 と JSON v0
    • docs/development/current/main/selfhost_stage3_expected_flow.md
  2. 実行手順・クイックスタート
    • docs/development/selfhosting/quickstart.md
    • docs/development/testing/selfhost_exe_stageb_quick_guide.md
  3. Ny ExecutorNy で MIR(JSON v0) を実行)のロードマップ
    • docs/development/roadmap/selfhosting-ny-executor.md
  4. Stage3 / depth2 関連で「現役」として参照する Phase 文書
    • docs/development/current/main/phase150_selfhost_stage3_depth1_baseline.md
    • docs/development/current/main/phase150_selfhost_stage3_depth1_results.md
    • docs/development/current/main/phase183-selfhost-depth2-joinir-status.md
    • docs/development/current/main/phase120_selfhost_stable_paths.md

4. 迷ったときの読み分けガイド

  • JoinIR の箱や契約で迷っているとき
    • → 2章の 1〜3 をこの順番で読む。
  • Selfhost のビルド / 実行フローで迷っているとき
    • → 3章の 1〜3 をこの順番で読む。
  • VM backend の Box 解決ConsoleBox / plugin / builtinで迷っているとき
    • docs/development/current/main/phase131-2-box-resolution-map.md(経路図)
    • docs/development/current/main/phase131-2-summary.md(要点)
  • LLVMPython llvmlitelowering の不具合切り分けで迷っているとき
    • docs/development/current/main/phase131-3-llvm-lowering-inventory.md(再現ケース表 + 根本原因候補)
    • docs/development/current/main/phase87-selfhost-llvm-exe-line.md実行パイプラインのSSOT
  • 「この Phase 文書は現役か?」で迷ったとき
    • → まず docs/development/current/main/10-Now.md
      docs/development/current/main/30-Backlog.md を確認し、そこで名前が挙がっている Phase 文書を優先して読んでね。