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:
@ -6,9 +6,29 @@
|
||||
|
||||
---
|
||||
|
||||
## 🎯 今フォーカスしているテーマ(2025-12-10 時点のスナップショット)
|
||||
## 🎯 今フォーカスしているテーマ(2025-12-12 時点のスナップショット)
|
||||
|
||||
### 0. JoinIR / ExprLowerer / Pattern2–4 + JsonParser `_parse_number` / DigitPos ライン(Phase 230–247-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 / Pattern2–4 + JsonParser `_parse_number` / DigitPos ライン(Phase 230–247-EX 完了)✅
|
||||
|
||||
- Pattern1–4(while / break / if‑PHI / continue)+ P5(Trim) でループ lowering を JoinIR 経路に一本化。
|
||||
- Phase 231/236/240-EX:
|
||||
@ -74,13 +94,11 @@
|
||||
|
||||
### 1. いまコード側で意識しておきたいフォーカス
|
||||
|
||||
- JoinIR ループ基盤(Pattern1–4 + ExprLowerer + ScopeManager + CapturedEnv)は一応の完成状態に入ったので、当面は:
|
||||
- **Phase 43/245B Normalized 完了** により JoinIR ループ基盤(Pattern1–4 + ExprLowerer + ScopeManager + CapturedEnv + Normalized layer)は一応の完成状態に入ったので、当面は:
|
||||
- 既存パターン/箱の範囲内での **バグ修正・Fail‑Fast/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 の一部)
|
||||
- Pattern1–4 / ExprLowerer / ScopeManager まわりで、by-name ハードコードやサイレントフォールバックが見つかった場合は、
|
||||
CarrierInfo / ConditionEnv / Scope 情報を使って「構造で」直す。
|
||||
|
||||
@ -128,26 +146,31 @@
|
||||
|
||||
このあたりが「JoinIR ループ基盤の芯」で、以降の Phase は JsonParser/selfhost の各ループへの適用フェーズ、という位置づけだよ。
|
||||
|
||||
- **Phase 43/245B Normalized JoinIR(Phase 26–45 完了)** ✅
|
||||
- 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/P4+P5 パイプラインをどこまで延ばせるかを docs 側で設計 → コード側はその設計に沿って小さく実装。
|
||||
4. selfhost depth‑2 ラインの再開
|
||||
5. selfhost depth‑2 ラインの再開
|
||||
- `.hako` 側で Program/MIR JSON を読んで JoinIR/MIR/VM/LLVM に流すライン。
|
||||
- JsonParser 側のカバレッジが上がったあとに、小さいループから順に移植する。
|
||||
5. JoinIR Verify / 最適化まわり
|
||||
6. JoinIR Verify / 最適化まわり
|
||||
- すでに PHI/ValueId 契約は debug ビルドで検証しているので、
|
||||
必要なら SSA‑DFA や軽い最適化(Loop invariant / Strength reduction)を検討。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user