Files
hakorune/CURRENT_TASK.md
nyash-codex 58c5d8c9bc feat(joinir): Phase 66-68 GenericTypeResolver + JoinIR First Chapter Wrap
Phase 66: P3-C ジェネリック型推論箱化
- generic_type_resolver.rs 新設 (180行)
  - is_generic_method(): ArrayBox.get/pop/first/last, MapBox.get 判定
  - resolve_from_phi(): PHI解析によるジェネリック型推論
- TypeHintPolicy::is_p3c_target() 追加
  - P1/P2/P3-A/P3-B 以外を P3-C 候補として判定

Phase 67: P3-C 実利用への一歩
- phase67_generic_type_resolver.rs テスト追加 (3テスト)
- lifecycle.rs に P3-C 経路フック追加
  - GenericTypeResolver を P3-C 対象関数で優先使用
- A/B テストで旧経路との一致確認 (11 tests PASS)

Phase 68: JoinIR First Chapter Wrap (ドキュメント整理)
- 68-1: phase-30 README.md に Section 9 追加 (JoinIR 第1章完了サマリー)
- 68-2: README.md に JoinIR status セクション追加
- 68-3: CURRENT_TASK.md スリム化 (351→132行, 62%削減)
- 68-4: PHI_BOX_INVENTORY.md に Phase 66-67 完了セクション追加

Phase 69-1: Trio 棚卸し
- phase69-1-trio-inventory.md 作成
- Trio 使用箇所の完全棚卸し完了 (削減見込み 457-707行)

🐱 JoinIR 第1章完了!4つの柱確立:
- Structure (LoopForm)
- Scope (LoopScopeShape)
- JoinIR (Select/IfMerge/Loop)
- Type Hints (P1-P3-C)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 08:54:18 +09:00

6.5 KiB
Raw Blame History

Current Task — JoinIR / PHI 削減スナップショット2025-11-29 時点)

このファイルは「今どこまで終わっていて、次に何をやるか」を 1000 行以内でざっくり把握するためのスナップショットだよ。
過去の詳細ログは docs/private/roadmap2/CURRENT_TASK_2025-11-29_full.md や各 Phase の README/TASKS を見てね。


0. 現在地ざっくり

  • JoinIR ラインは Phase 68 で一旦 Chapter Close

    • Phase 27-67 で JoinIR の「第1章構造 + PHI + 型ヒント SSOT」が完了。
    • 4つの柱Structure / Scope / JoinIR / Type Hintsが確立。
    • 今後は Trio 削除ライン、wasm/Web デモライン、最適化ラインに分岐。
    • 詳細: phase-30-final-joinir-world/README.md
  • 最終ゴール

    • 制御構造と PHI の意味論は JoinIRLoopScopeShape/IfPhiContext 等の薄い箱) に一本化する。
    • 実行の SSOT は VM / LLVM ラインとし、JoinIR→MIR→VM/LLVM は「構造 SSOT → 実行 SSOT」への変換として扱う。
    • 既存の PHI 箱if_phi.rs / PhiBuilderBox / conservative.rs / Trio 等は、JoinIR 側のカバレッジが十分になったところから順に削っていく。
  • これからPhase 69+

    • Trio 削除ライン: LoopVarClassBox / LoopExitLivenessBox / LocalScopeInspectorBox を LoopScopeShape に完全吸収。
    • wasm/Web デモライン: JoinIR ベースの軽量デモ実装。
    • 最適化ライン: JoinIR の最適化パスと LLVM/ny-llvmc 統合。

1. JoinIR 第1章完了までの道のりPhase 3367 簡潔版)

Phase 33-62: 構造 + PHI + スコープの基盤構築 完了

  • Phase 33-34: IfSelect/IfMerge lowering 実装、AST→JoinIR Frontend 設計・実装If/Loop/Break/Continue
  • Phase 35-36: PHI 箱削減 HIGH/MEDIUM537行削減: if_body_local_merge / phi_invariants / LoopSnapshotMergeBox 縮退)
  • Phase 37-40: If 側 PHI Level 1/2設計array_ext.filter 移行、collect_assigned_vars 削除)
  • Phase 41-46: If 側 PHI Level 3NestedIfMerge、read_quoted_from、IfMerge 拡張)
  • Phase 49-56: JoinIR Frontend 本線統合print_tokens / filter
  • Phase 57-62: If 側 PHI 本体削減conservative.rs 縮退、If Handler 箱化、PHI Core Cleanup

詳細: 各 Phase の README を参照(docs/private/roadmap2/phases/phase-*/README.md


Phase 63-67: 型ヒントライン完全実装 完了2025-11-30

Phase 63-3: JoinIR 型ヒント最小配線

  • JoinInst::SelectMergePairtype_hint: Option<MirType> 追加
  • 13ファイル更新、全 JoinIR テスト PASS

Phase 63-4: infer_type_from_phi 縮退設計

  • 型ヒント優先+従来ロジックフォールバック仕様を docs 化
  • 削除条件 5/5 を定義P1: IfSelectTest, P2: read_quoted/IfMerge, P3: Method/Box

Phase 63-5: infer_type_from_phi 縮退実装

  • infer_type_from_phi_with_hint() 実装(+44行
  • lifecycle.rs で呼び出し経路統一
  • 削除条件達成率: 3/560%

Phase 63-6: P1 ケース型ヒント完全実装

  • MirInstruction::Phitype_hint 追加21ファイル修正
  • JoinIR→MIR Bridge で型ヒント伝播実装
  • P1 ケースIfSelectTest.*)で JoinIR 型ヒントのみで型決定
  • 削除条件達成率: 4/580%

Phase 64: P2 型ヒント拡大

  • P2 ケースread_quoted_from, IfMerge型ヒント実装
  • is_type_hint_target() 箱化TypeHintPolicy 萌芽)
  • 削除条件達成率: 4.5/590%

Phase 65: P3-A/B 型ヒント実装

  • P3-A: type_inference.rs 新設、JoinInst::MethodCall に型ヒントStringBox メソッド)
  • P3-B: JoinInst::NewBox に型ヒントBox コンストラクタ)
  • 代表ケースベースで削除条件 5/5 達成

Phase 66: P3-C ジェネリック型推論箱化

  • generic_type_resolver.rs 新設180行
  • TypeHintPolicy::is_p3c_target() 追加
  • ArrayBox.get / MapBox.get 等のジェネリック型推論基盤確立

Phase 67: P3-C 実利用への一歩

  • phase67_generic_type_resolver.rs テスト追加3テスト全 PASS
  • lifecycle.rs に P3-C 経路フック追加GenericTypeResolver 優先使用)
  • A/B テストで旧経路との一致確認11 tests PASS

技術的成果:

  • JoinIR が構造 + PHI + 型ヒントの SSOT として確立
  • infer_type_from_phi は P3-C フォールバック専用に縮退
  • 4つの柱Structure / Scope / JoinIR / Type Hints完成

2. 次の一手Phase 69+

直近の候補タスク

  • Trio 削除ラインPhase 69 候補)

    • LoopVarClassBox / LoopExitLivenessBox / LocalScopeInspectorBox を LoopScopeShape に完全吸収
    • Phase 48-7: Trio/LoopScopeShape の将来扱い整理docs-only
  • P3-C 拡大 / If PHI 本体削除Phase 70 候補)

    • GenericTypeResolver 経由で全 P3-C ケースをカバー
    • infer_type_from_phi 本体削除と if_phi.rs 大掃除
  • wasm/Web デモラインPhase 71 候補)

    • JoinIR ベースの軽量デモ実装
    • ブラウザで動く最小構成
  • 最適化ラインPhase 72+ 候補)

    • JoinIR 最適化パス実装
    • LLVM/ny-llvmc 統合強化

バックログ

  • Mir 決定性(小フェーズ)
    • MirFunction.blocks: HashMapBTreeMap で非決定的テスト解消
    • Phase 25.1 同様のパターン適用

3. 旧フェーズ(過去ログへのポインタ)

古いフェーズの詳細な経緯やログは、以下のドキュメントと
docs/private/roadmap2/CURRENT_TASK_2025-11-29_full.md を見てね。

  • Phase 21.7 — Static Box Methodization
    • StaticMethodId / NamingBox で BoxName.method/arity 名前解決の SSOT 化。
    • docs: docs/development/current/main/phase-21.7-naming-ssot-checklist.md など。
  • Phase 25.x / 26.x — LoopForm v2 / LoopSSA v2 / Exit PHI / ExitLiveness
    • LoopForm v2 / LoopSSA v2 の整備と Exit PHI / ExitLiveness まわりの 4 箱構成。
  • Phase 2732 — JoinIR 初期実験〜汎用化
    • LoopToJoinLowerer / LoopScopeShape / JoinIR VM Bridge を minimal ケースから Stage1 / StageB へ広げていくライン。
    • docs: docs/private/roadmap2/phases/phase-27-joinir*, phase-31-looptojoin-lowerer, phase-32-joinir-complete-migration など。

CURRENT_TASK.md 自体は「いまどこを触っているか」と「次に何をやるか」を
1 画面で把握できる軽さを維持する方針だよ。***