## 実装内容 ### 1. continue_merge ブロックで PHI ノード生成 - `src/mir/loop_builder.rs` (422-557行) - 複数の continue パスからの変数値を PHI でマージ - 全て同じ値なら PHI 省略(最適化) - merged_snapshot を seal_phis に渡す構造 ### 2. ValueId::INVALID GUARD 修正 - `src/mir/phi_core/loopform_builder.rs` (111行) - 誤った `value.0 == 0` チェックを `value == ValueId::INVALID` に修正 - ValueId::INVALID は u32::MAX なので、ValueId(0) は有効な値 ### 3. test_loopform_builder_separation を構造ベースに改善 - 具体的な ValueId(100..105) を期待するアサーションを削除 - pinned/carrier の分離、ValueId の有効性、衝突チェックに変更 - HashMap の反復順序や内部の割り当て順に依存しないテストに改善 ## テスト結果 ✅ **既存テスト全て PASS**: - `test_loopform_builder_separation` - 構造ベース修正で PASS - 既存ループ関連テスト15個 - 全て PASS - `mir_stageb_loop_break_continue::*` - PASS - `mir_loopform_exit_phi::*` - PASS ✅ **実行確認**: - 基本的なループ実行 - 正常動作(sum=10) - continue を含むループ実行 - 正常動作(sum=8) - continue_merge ブロック生成確認(BasicBlockId表示) ⚠️ **残存バグ**: - FuncScannerBox.scan_all_boxes/1: ValueId(1283) undefined - 13個の continue を持つ複雑なループで発生 - Phase 25.2 リファクタリングで解決予定 ## 今後の予定 Phase 25.2 として以下のリファクタリングを実施予定: 1. LoopSnapshotMergeBox 実装(優先度1) 2. LoopVarClassifyBox 実装(優先度2) 3. LoopDebugLogBox 実装(優先度3) 4. TextScanRegionBox 実装(優先度4) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Hakorune Lang Line — Rust-less Kernel (C ABI)
Scope
- This
lang/tree hosts the script-driven C ABI kernel artifacts for Phase 20.9+. - Goal: keep the runtime data plane callable without Rust on the hot path (Hakorune → LLVM → C ABI).
Principles
- Separation: do not mix Rust crates or cargo-specific layout under this tree.
- Ownership & ABI:
- Any
char*returned across the ABI is owned by the callee and must be freed viahako_mem_free(). - Do not mix CRT
free()across boundaries.
- Any
- Fail‑Fast: no silent fallbacks. Missing symbols must be observable via short diagnostics.
Layout (initial)
c-abi/— C shim(s) and headers for the minimal kernel surfaceREADME.md— responsibilities, build notes, platform caveatsinclude/— public headers (mirrored or thin wrappers)shims/— libc-backed shim(s) for canaries and local testing
Build & Link (dev)
- C shim: build a shared library to satisfy symbols for the LLVM line canaries.
- Link flags example:
- Linux:
-L$(pwd)/target/release -Wl,-rpath,$(pwd)/target/release -lhako_kernel_shim
- Linux:
Non‑Goals
- Plugin loader, HostBridge router, Box/Type system — kept in Rust.
Selfhost Launcher (AOT)
Dev line (Stage1 core – experimental)
- Dev build:
tools/selfhost/build_stage1.sh→ producestarget/selfhost/hakorune - Role:
- Fast iteration用の Stage1 selfhost バイナリ(Ny Executor / CLI 実験など)。
- new CLI/runner 機能はまずこちらで開発・検証する。
Stable line (lang bin – snapshot)
- Stable binary:
lang/bin/hakorune - Build (pure-lang launcher, legacy bring-up):
lang/build/build_runner.sh→ produceslang/bin/hakorune- Requirements: LLVM 18 dev (
llvm-config-18)
- Policy(Phase 25.1 以降の想定):
target/selfhost/hakoruneで十分に安定したら、その成果物をlang/bin/hakoruneに昇格させる(手動コピー or 専用スクリプト)。lang/bin/hakoruneは「last known good」の Stage1 コア EXE として扱い、配布や外部からの参照時は原則こちらを基準にする。
Notes
lang/以下は「最終的に 1 つの Stage1 コア EXE(hakorune)を構成するソース群」という前提で整理する。target/selfhost/hakoruneは開発中の最新版、lang/bin/hakoruneは安定版スナップショットという役割分担にする。