Files
hakorune/CURRENT_TASK.md

90 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# CURRENT_TASK (moved)
Status: SSOT
Scope: Repo root の旧リンク互換。現行の入口は `docs/development/current/main/10-Now.md`
- Now: `docs/development/current/main/10-Now.md`
- Backlog: `docs/development/current/main/30-Backlog.md`
---
## Handoff (current)
### 状況SSOT
**2025-12-27: Phase 188.3 / Phase 287 P2 COMPLETE (Pattern6 nested loop: merge/latch fixes)**
Pattern61-level nested loopの JoinIR→bridge→merge 経路で発生していた `undefined ValueId``vm step budget exceeded`(無限ループ)を解消。`apps/tests/phase1883_nested_minimal.hako` が RC=9 を返し、quick 154 PASS を維持。
- SSOTmergeの契約:
- latch_incoming を記録してよいのは `TailCallKind::BackEdge` のみLoopEntry は上書き禁止)
- entry-like 判定は “JoinIR MAIN のみ” を対象にするblock-id 推測はしない): `src/mir/builder/control_flow/joinir/merge/contract_checks/entry_like_policy.rs`
- latch 二重設定は `debug_assert!` で fail-fast回帰検知
- 変更箇所:
- `src/mir/builder/control_flow/joinir/merge/instruction_rewriter.rs`
- `src/mir/builder/control_flow/joinir/merge/loop_header_phi_info.rs`
- 検証DONE:
- [x] 再現とPHI確認Pattern6
- [x] latch記録条件を修正BackEdgeのみ
- [x] デバッグ出力を撤去(恒常出力なし)
- [x] quick/fixtureで検証quick 154 PASS / fixture RC=9
- [x] docsを締めて次の指示書を用意refactor挟み込み用
**2025-12-26: Phase 286 P2.2 COMPLETE (Hygiene: extractor重複排除 + router小整理)**
Pattern1/Pattern4 の Plan/Frag PoC 完了後、extractor の `extract_loop_increment_plan``common_helpers.rs` に統一、router の 3行パターンnormalize→verify→lower`lower_via_plan()` ヘルパーで共通化。~65行削減、quick 154 PASS 維持。
**2025-12-26: Phase 286 P2.3 COMPLETE (Pattern9 AccumConstLoop Plan化 PoC)**
Pattern9 (AccumConstLoop) を Plan/Frag SSOT に移行完了。PHI 2本loop_var, acc_var、const/var 両方 OK。Pattern9 は Pattern1 より先にチェックより具体的なパターン。quick 154 PASS 維持。
- 現行の入口: `docs/development/current/main/10-Now.md`
- Phase 286 詳細: `docs/development/current/main/phases/phase-286/README.md`
- 次の候補: `docs/development/current/main/30-Backlog.md`
- Design goal: `docs/development/current/main/design/join-explicit-cfg-construction.md`
### 直近の道筋JoinIR / Normalized
### 設計方針メモSSOT候補
- ExprLowererBox式SSOT
- 役割: `AST(expr)``(prelude: Vec<Inst>, value: ValueId)`ANF含む
- pure/impure/whitelist/strict の契約を集約入口SSOT
- ConditionLowererBox条件→分岐SSOT
- 役割: `AST(cond)``BranchPlan`(短絡なら分岐語彙で組む)
- 評価順は ExprLowererBox に委譲ANFで順序固定
- `&&/||` は制御として扱い、式で無理しない
- ControlLowererBox制御SSOT
- 役割: `StepNode/ControlTree` → JoinIR継続 + env
- `if/loop` はここ、条件の中身は ConditionLowererBox に委譲
- Phase 139: if-only `post_k` の return lowering を `ReturnValueLowererBox` に統一DONE
- `docs/development/current/main/phases/phase-139/README.md`
- Phase 140: `NormalizedExprLowererBox` 初版pure expression のみDONE
- SSOT: `docs/development/current/main/design/normalized-expr-lowering.md`
- `docs/development/current/main/phases/phase-140/README.md`
- Phase 141 P0: impure 拡張点contractを SSOT 化Call/MethodCall はまだ out-of-scopeDONE
- `docs/development/current/main/phases/phase-141/README.md`
- Phase 141 P1: “既知 intrinsic だけ” を許可して段階投入DONE
- `docs/development/current/main/phases/phase-141/README.md`
- Phase 141 P1.5: known intrinsic registry + available_inputs 3-source merge + diagnosticsDONE
- `docs/development/current/main/phases/phase-141/README.md`
- Phase 142-loopstmt P0: 正規化単位を statementloop 1個へ寄せるDONE
- `docs/development/current/main/phases/phase-142-loopstmt/README.md`
- Phase 142-loopstmt P1: LLVM EXE smoke同 fixtureを追加DONE
- `docs/development/current/main/phases/phase-142-loopstmt/README.md`
- Phase 141 P2+: Call/MethodCalleffects + typingを分離して段階投入
- Historical context: `docs/development/current/main/investigations/joinir-generalization-study.md`
- Phase 143-loopvocab P0/P1: loop 内 if/break/continue の語彙追加DONE
- `docs/development/current/main/phases/phase-143-loopvocab/README.md`
- Phase 143-loopvocab P2: else 対称化B-C / C-BDONE
- `docs/development/current/main/phases/phase-143-loopvocab/README.md`
- Phase 145-anf P0/P1/P2: ANFimpure hoist + 再帰的線形化DONE
- `docs/development/current/main/phases/phase-145-anf/README.md`
- Phase 146in progress: Loop/If 条件式へ ANF を横展開(順序固定と診断)
- `docs/development/current/main/phases/phase-146/README.md`
## Resolved (historical)
### WSL EXDEV / cargo build failure (resolved)
- 2025-12-18: `Invalid cross-device link (os error 18)` により `cargo build` が失敗する事象があったが、`wsl --shutdown` 再起動後に復旧。
- 再発時のワークアラウンド: `tools/build_llvm.sh` は EXDEV を避けるため `TMPDIR``target/...` 配下へ寄せる。