|
|
84ded8ca6c
|
docs: add loop canonicalizer SSOT + MirBuilder entrypoint
|
2025-12-16 04:37:47 +09:00 |
|
|
|
d3b3bf5372
|
feat(mir): Phase 131-11-E - TypeFacts/TypeDemands 分離(SSOT)
## 実装内容
### 1) Rust MIR Builder (ops.rs + lifecycle.rs)
- OperandTypeClass で型分類(String/Integer/Unknown)
- BinOp 型推論: Integer + Unknown → Integer
- lifecycle.rs に repropagate_binop_types() パス追加
- PHI 型解決後に BinOp 型を再計算
### 2) JSON Emission (mir_json_emit.rs)
- 結果ベースの dst_type 発行に変更
- Integer → "i64", String → {kind: handle, box_type: StringBox}
### 3) Python LLVM Backend (binop.py)
- dst_type を確実な情報として使用
- dst_type != None なら優先して処理
## 結果
- ✅ MIR: PHI/BinOp が Integer として正しく型付け
- ✅ VM: `Result: 3` (正しい出力)
- ✅ JSON: `dst_type: "i64"` を発行
- ❓ LLVM: 別の codegen 問題の可能性あり
## SSOT 設計達成
- TypeFacts(事実): 定義命令から推論
- TypeDemands(要求): 使用箇所の coercion で吸収
- 後方伝播なし: Fail-Fast に統一
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
2025-12-14 18:55:05 +09:00 |
|
|
|
4b87b6cc88
|
docs: ドキュメント配置ルール(SSOT)確立
## 追加内容
- CLAUDE.md にドキュメント配置ルール(SSOT)セクション追加
- DOCS_LAYOUT.md (SSOT): 置き場所ルール定義
- phases/README.md: Phase ドキュメント説明
- design/README.md: 設計図ドキュメント説明
- investigations/README.md: 調査ログ説明
## ルール概要
1. **Phase 文書** → phases/phase-<N>/
2. **設計図** → design/
3. **調査ログ** → investigations/ (結論を 10-Now/20-Decisions に反映)
## 導線
- CLAUDE.md で概要説明
- DOCS_LAYOUT.md で詳細定義(SSOT)
- 各フォルダ README で参照方法
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
2025-12-14 18:27:24 +09:00 |
|
|
|
e1d706d2e0
|
docs(phase131): Case C 調査完了 - InfiniteEarlyExit パターン追加方針
## 根本原因解明
- loop(true) が Pattern4 に誤ルーティング
- Pattern4 は BinaryOp 比較を期待、boolean literal で失敗
## 解決方針
- 新パターン InfiniteEarlyExit 追加(Pattern 2 拡張ではなく)
- classify() の優先度修正
- Shape guard で最小受理(break+continue 各1箇所)
## 作成ドキュメント
- case-c-infinite-loop-analysis.md (13KB詳細分析)
- phase131-11-case-c-summary.md (4KBサマリー)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-14 09:47:23 +09:00 |
|
|
|
18bf35e6d4
|
fix(llvm): Phase 131-10 - Smart console.log routing(Segfault修正)
## 問題
- Integer値をi8*ポインタに変換 → Segfault(Exit 139)
## 解決策
- String literal → nyash.console.log(i8*)
- Integer/Handle → nyash.console.log_handle(i64)
## 結果
- Case B (loop_min_while): LLVM outputs `0,1,2` ✅
- VM/LLVM完全パリティ達成
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-14 09:19:00 +09:00 |
|
|
|
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 |
|
|
|
05c5021147
|
docs(phase131): LLVM SSOT強化 + ConsoleBox調査完了 + Phase86-90要約
Phase 131-1 完了: LLVM exe line SSOT 強化
- phase87-selfhost-llvm-exe-line.md に 4セクション追加(+300行)
- 環境変数リファレンス(14変数)
- 成功/失敗基準(exit code 0/1/2/3)
- コンパイラモード説明(harness vs crate)
- デバッグセクション拡張
- "1コマンドで再現" 可能な状態を確立
Phase 131-2 完了: ConsoleBox 問題調査
- VM の 3重登録経路を特定(BoxFactoryRegistry/UnifiedRegistry/Builtin)
- LLVM backend は Phase 133 で解決済み
- 3つのドキュメント作成:
- phase131-2-consolebox-investigation.md(詳細調査)
- phase131-2-summary.md(エグゼクティブサマリ)
- phase131-2-box-resolution-map.md(Box 解決マップ)
Phase 86-90 完了: Loop frontends 要約
- phase86-90-loop-frontends-summary.md 追加
- Pattern4/ContinueReturn/ParseStringComposite の経緯を1枚に集約
- INDEX から導線追加
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2025-12-14 05:24:31 +09:00 |
|
|
|
cd12a2569e
|
feat(llvm): Phase 87 - LLVM exe line SSOT + integration smoke
Established single pipeline for .hako → executable generation.
SSOT: tools/build_llvm.sh
- Standard procedure: build_llvm.sh input.hako -o output_exe
- Prerequisites: llvm-config-18, llvmlite, LLVM features enabled
- Pipeline: .hako → MIR → LLVM IR → .o → executable
New files:
- docs: phase87-selfhost-llvm-exe-line.md (SSOT procedure doc)
* Full troubleshooting guide (llvm-config, llvmlite, linking)
* Advanced usage (custom output, debugging, performance notes)
* Anti-patterns documentation (no duplication/fragmentation)
- fixture: apps/tests/phase87_llvm_exe_min.hako (5 lines, return 42)
- smoke: integration/apps/phase87_llvm_exe_min.sh
* Exit code verification (stdout-independent testing)
* SKIP if LLVM unavailable (graceful degradation)
* Integration profile only (not in quick)
- index: 10-Now.md, 01-JoinIR-Selfhost-INDEX.md (Phase 87 entries)
- task: CURRENT_TASK.md (Phase 74-87 status update)
Integration smoke: demonstrates full pipeline
- Build: .hako → .o → exe (successful ✅)
- Runtime: Ring0 initialization issue (known limitation, out of scope)
Quick profile: unchanged (integration only, per policy)
Policy: No duplicate build paths, SSOT maintained
987/987 tests PASS (production stable)
|
2025-12-13 22:51:13 +09:00 |
|
|
|
7dbc894629
|
docs(joinir): Phase 86 到達点 - Carrier init builder + Error tags SSOT
Phase 74-86 成果を SSOT docs に反映:
- 10-Now.md: Phase 86 achievements summary
- INDEX: carrier_init_builder, error_tags modules documented
- architecture-overview: SSOT module references added
Impact: 987/987 tests, +13 unit tests, 2 new SSOT modules
Modules: carrier_init_builder.rs, error_tags.rs
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2025-12-13 22:37:56 +09:00 |
|
|
|
624245b63c
|
docs(joinir): Phase 78-85 Boxification Feedback Report
Comprehensive analysis of boxification patterns effectiveness.
Key Findings:
- Overall: Exceptional success ⭐⭐⭐⭐⭐ (24/25 avg rating)
- Net code reduction: -1,388 lines (Phase 78-79: -530L, Phase 85: -858L)
- 4 new Boxes: PromotedBindingRecorder, Detector/Recorder, BindingMapProvider, DebugOutputBox
- 28 new unit tests, 974/974 PASS maintained
Box Ratings (out of 25):
- PromotedBindingRecorder: 24/25 (67% wiring reduction)
- Detector/Recorder: 24/25 (60% code reduction, SRP)
- BindingMapProvider: 23/25 (80% cfg reduction)
- DebugOutputBox: 21/25 (centralized debug output)
Phase 86 Recommendations:
- GO: Carrier Initialization Builder (HIGH, 2-3h, -100L)
- GO: Remaining DebugOutputBox Migration (QUICK, 30m)
- GO: Error Message Centralization (LOW, 1-2h)
- NO-GO: Detector/Promoter Pipeline (over-abstraction risk)
- NO-GO: ScopeManager Lookup Variants (premature)
Lessons Learned:
- Single Responsibility principle validated
- Testability-first approach successful
- Low migration cost (1-2h per phase)
- Zero production risk (all dev-only/backward-compatible)
Report: phase78-85-boxification-feedback.md (~1,200 lines)
Updated: INDEX, Now, architecture-overview (Phase 85 links)
|
2025-12-13 21:32:35 +09:00 |
|
|
|
3ff032ead5
|
docs(joinir): link Phase 81 ExitLine contract SSOT
Phase 81 完了を受けて docs リンク追加:
- 01-JoinIR-Selfhost-INDEX.md: Phase 81 entry
- 10-Now.md: Phase 81 status update
- joinir-architecture-overview.md: Phase 81 ExitLine contract verification section
Phase 74-81 complete: BindingId migration + ExitLine contract verified
|
2025-12-13 18:46:07 +09:00 |
|
|
|
889492b617
|
docs(joinir): Phase 80 Tasks 80-0/80-A - Status verification + design doc
Task 80-0: Current status verification
- ✅ 970/970 lib tests PASS (production stable)
- ✅ Core VM smoke tests PASS (json_pp_vm)
- ❌ Phase 79 E2E tests broken (AST API mismatch, out-of-scope)
- ❌ Pre-existing json_lint_vm failure (Pattern2 verifier, out-of-scope)
- **Conclusion**: Phase 80 has ZERO blockers
Task 80-A: SSOT design doc created
- New: docs/development/current/main/phase80-bindingid-p3p4-plan.md (336 lines)
- Pattern3/4 BindingId wiring strategy
- Implementation order: 80-B (P3) → 80-C (P4) → 80-D (E2E)
- Code examples and success metrics
- Fallback detection mechanism (existing log tags)
Design principles (consistent with Phase 74-79):
- Dev-only code (feature-gated)
- Dual-path maintained (BindingId priority + name fallback)
- Structural detection only (NO by-name branching)
- Fail-Fast error handling
- Zero production impact
Updated docs:
- 01-JoinIR-Selfhost-INDEX.md: Phase 79 Activation status
- 10-Now.md: Phase 80 tasks 80-0/80-A complete
- 20-Decisions.md: BindingId migration complete status
- joinir-architecture-overview.md: Phase 79/80 sections
Next: Task 80-B (Pattern3 BindingId registration)
|
2025-12-13 17:26:15 +09:00 |
|
|
|
448bf3d8c5
|
docs(joinir): Phase 232-239 documentation and ExprLowerer refinements
Documentation:
- Move completion reports to docs/archive/reports/
- Add phase232-238 design/inventory documents
- Update joinir-architecture-overview.md
- Add doc-status-policy.md
Code refinements:
- ExprLowerer: condition catalog improvements
- ScopeManager: boundary clarifications
- CarrierInfo: cleanup
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-11 00:21:29 +09:00 |
|