docs(joinir): Phase 43/245B Normalized JoinIR completion summary

Complete documentation consolidation for Phases 26-45 Normalized JoinIR
infrastructure. All components are implemented and tested (937/937 PASS).

Key additions:
- PHASE_43_245B_NORMALIZED_COMPLETION.md: Master completion summary
  - Architecture components (Mode, Capability, Carriers, DigitPos, etc.)
  - Supported loop patterns (P1, P2 variants including JsonParser)
  - Complete file reference guide
  - Test coverage documentation
  - Future expansion roadmap

Updates:
- CURRENT_TASK.md: Moved Phase 43/245B to completed section
- joinir-architecture-overview.md: Phases 43-45 marked complete
- Historical docs: Added completion banners with links
  - phase223-loopbodylocal-condition-design.md
  - phase223-loopbodylocal-condition-inventory.md
  - PHASE_223_SUMMARY.md
  - phase245b-num_str-carrier-design.md
  - phase245c-function-param-capture-summary.md

Documentation hierarchy established:
- Master summary → individual design docs
- Historical docs → completion summary
- Cross-references complete across all docs

Status: Phase 43/245B Normalized infrastructure COMPLETE 
This commit is contained in:
nyash-codex
2025-12-12 04:19:06 +09:00
parent c82ae2365f
commit 297258f963
8 changed files with 407 additions and 28 deletions

View File

@ -6,9 +6,29 @@
---
## 🎯 今フォーカスしているテーマ2025-12-10 時点のスナップショット)
## 🎯 今フォーカスしているテーマ2025-12-12 時点のスナップショット)
### 0. JoinIR / ExprLowerer / Pattern24 + JsonParser `_parse_number` / DigitPos ラインPhase 230247-EX 完了)✅
### 0. ✅ Phase 43/245B Normalized JoinIR Infrastructure COMPLETE (Phase 26-45)
**完全サマリ**: [PHASE_43_245B_NORMALIZED_COMPLETION.md](docs/development/current/main/PHASE_43_245B_NORMALIZED_COMPLETION.md)
- **達成内容**:
- Structured→Normalized→MIR(direct) パイプライン確立
- P1/P2 + JsonParser (skip_ws/atoi/parse_number) 全対応
- Mode system (Phase 45), Capability system (Phase 44) 完成
- 937/937 tests PASS
- **主要コンポーネント**:
- JoinIrMode enum (StructuredOnly/NormalizedDev/NormalizedCanonical)
- ShapeCapabilityKind (P2CoreSimple/P2CoreSkipWs/P2CoreAtoi/P2MidParseNumber)
- CarrierRole (LoopState/ConditionOnly), CarrierInit
- DigitPos dual-value (is_digit_pos + digit_value)
- NumberAccumulation, Step scheduling, Exit PHI & Jump args
- **今後の拡張候補**(計画のみ):
- Phase 46+: Canonical set 拡張 (capability-based)
- Pattern3/4 Normalized 適用
- Selfhost loops 対応
### 0-B. JoinIR / ExprLowerer / Pattern24 + JsonParser `_parse_number` / DigitPos ラインPhase 230247-EX 完了)✅
- Pattern14while / break / ifPHI / continue P5(Trim) でループ lowering を JoinIR 経路に一本化。
- Phase 231/236/240-EX:
@ -74,13 +94,11 @@
### 1. いまコード側で意識しておきたいフォーカス
- JoinIR ループ基盤Pattern14 + ExprLowerer + ScopeManager + CapturedEnvは一応の完成状態に入ったので、当面は:
- **Phase 43/245B Normalized 完了** により JoinIR ループ基盤Pattern14 + ExprLowerer + ScopeManager + CapturedEnv + Normalized layer)は一応の完成状態に入ったので、当面は:
- 既存パターン/箱の範囲内での **バグ修正・FailFast/invariant 追加・テスト強化** を優先する。
- JsonParser/selfhost への新しい適用や大きな仕様拡張は、docs 側で Phase 設計が固まってからコード側に持ち込む。
- 直近のコード側フォーカス候補:
- Phase 246-EXコード: JsonParser `_atoi` のループを Pattern2 + NumberAccumulation + DigitPos 二重値インフラ上に載せる。
- header/break 条件を ExprLowerer/ConditionEnv/FunctionScopeCapture 経由で JoinIR に lower。
- `result = result * 10 + digit_pos` を NumberAccumulation + `digit_value` carrier で扱い、従来の意味論を E2E テストで固定する。
- ~~Phase 246-EXコード~~: ✅ 完了_atoi Integration, Phase 43/245B の一部)
- Pattern14 / ExprLowerer / ScopeManager まわりで、by-name ハードコードやサイレントフォールバックが見つかった場合は、
CarrierInfo / ConditionEnv / Scope 情報を使って「構造で」直す。
@ -128,26 +146,31 @@
このあたりが「JoinIR ループ基盤の芯」で、以降の Phase は JsonParser/selfhost の各ループへの適用フェーズ、という位置づけだよ。
- **Phase 43/245B Normalized JoinIRPhase 2645 完了)** ✅
- Structured→Normalized→MIR(direct) パイプライン確立
- Mode system (JoinIrMode) + Capability system (ShapeCapabilityKind)
- Pattern1/2 + JsonParser (_skip_whitespace, _atoi, _parse_number) 全対応
- 詳細: [PHASE_43_245B_NORMALIZED_COMPLETION.md](docs/development/current/main/PHASE_43_245B_NORMALIZED_COMPLETION.md)
---
## 🧭 これからの候補(まだ「やる」とは決めていないメモ)
ここは「やることリスト」ではなく「今後やるとしたらこの辺」というメモだよ。
ここは「やることリスト」ではなく「今後やるとしたらこの辺」というメモだよ。
実際に着手するタイミングで、別途 Phase/タスクを切る想定。
1. Phase 245Bコード: JsonParser `_parse_number``num_str` を LoopState carrier として Pattern2/P5 ラインに統合
- UpdateExpr で `num_str = num_str + ch` 1 形だけを許可し、StringAppend 経路で JoinIR に落とす。
- ExitMeta/JoinIR/E2E テストで num_str/p/戻り値の意味論を従来どおり固定する。
2. Phase 246-EXコード: JsonParser `_atoi` を Pattern2 + NumberAccumulation ラインに統合
- `_atoi` のループを Pattern2 detect → Pattern2 lowerer に接続し、DigitPos 二重値 + NumberAccumulation で数値更新を扱う。
- JsonParser `_atoi` 呼び出しテスト(既存 or 追加で、JoinIR 経路でも従来どおりのパース結果になることを固定する。
3. JsonParser 残りループへの JoinIR 展開
1. ~~Phase 245Bコード~~: ✅ 完了Phase 43/245B の一部)
2. ~~Phase 246-EXコード~~: ✅ 完了Phase 43/245B の一部)
3. **Phase 46+**: Canonical set 拡張capability-based filtering
- 現在の canonical set を段階的に拡張
- ShapeCapability インフラを活用
4. JsonParser 残りループへの JoinIR 展開
- `_parse_array` / `_parse_object` / `_unescape_string` / 本体 `_parse_string` など。
- 既存の P2/P3/P4P5 パイプラインをどこまで延ばせるかを docs 側で設計 → コード側はその設計に沿って小さく実装。
4. selfhost depth2 ラインの再開
5. selfhost depth2 ラインの再開
- `.hako` 側で Program/MIR JSON を読んで JoinIR/MIR/VM/LLVM に流すライン。
- JsonParser 側のカバレッジが上がったあとに、小さいループから順に移植する。
5. JoinIR Verify / 最適化まわり
6. JoinIR Verify / 最適化まわり
- すでに PHI/ValueId 契約は debug ビルドで検証しているので、
必要なら SSADFA や軽い最適化Loop invariant / Strength reductionを検討。