chore: Phase 25.1 完了 - LoopForm v2/Stage1 CLI/環境変数削減 + Phase 26-D からの変更
Phase 25.1 完了成果: - ✅ LoopForm v2 テスト・ドキュメント・コメント完備 - 4ケース(A/B/C/D)完全テストカバレッジ - 最小再現ケース作成(SSAバグ調査用) - SSOT文書作成(loopform_ssot.md) - 全ソースに [LoopForm] コメントタグ追加 - ✅ Stage-1 CLI デバッグ環境構築 - stage1_cli.hako 実装 - stage1_bridge.rs ブリッジ実装 - デバッグツール作成(stage1_debug.sh/stage1_minimal.sh) - アーキテクチャ改善提案文書 - ✅ 環境変数削減計画策定 - 25変数の完全調査・分類 - 6段階削減ロードマップ(25→5、80%削減) - 即時削除可能変数特定(NYASH_CONFIG/NYASH_DEBUG) Phase 26-D からの累積変更: - PHI実装改善(ExitPhiBuilder/HeaderPhiBuilder等) - MIRビルダーリファクタリング - 型伝播・最適化パス改善 - その他約300ファイルの累積変更 🎯 技術的成果: - SSAバグ根本原因特定(条件分岐内loop変数変更) - Region+next_iパターン適用完了(UsingCollectorBox等) - LoopFormパターン文書化・テスト化完了 - セルフホスティング基盤強化 Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: ChatGPT <noreply@openai.com> Co-Authored-By: Task Assistant <task@anthropic.com>
This commit is contained in:
@ -98,6 +98,67 @@ python3 tools/phi_trace_check.py --file tmp/phi_trace.jsonl --summary
|
||||
- `tools/smokes/phi_trace_local.sh`(ビルド→サンプル実行→チェックを一括)
|
||||
- `tools/smokes/v2/run.sh --profile quick|integration` で代表スモークを実行
|
||||
|
||||
## MIR デバッグの入口まとめ
|
||||
|
||||
### 1. CLI レベルの MIR ダンプ
|
||||
|
||||
- ソースから直接 MIR を確認:
|
||||
- `./target/release/nyash --dump-mir path/to/program.hako`
|
||||
- VM 実行経路で MIR を一緒に吐く:
|
||||
- `NYASH_VM_DUMP_MIR=1 ./target/release/nyash path/to/program.hako`
|
||||
- JSON で詳細解析したい場合:
|
||||
- `./target/release/nyash --emit-mir-json mir.json path/to/program.hako`
|
||||
- 例: `jq '.functions[0].blocks' mir.json` でブロック構造を確認。
|
||||
|
||||
### 2. Scope / Loop ヒント(NYASH_MIR_HINTS)
|
||||
|
||||
- 環境変数でヒント出力を制御:
|
||||
- `NYASH_MIR_HINTS="<target>|<filters>..."`
|
||||
- 例:
|
||||
- `NYASH_MIR_HINTS="trace|all"`(stderr へ全ヒント)
|
||||
- `NYASH_MIR_HINTS="jsonl=tmp/hints.jsonl|loop"`(ループ関連のみ JSONL 出力)
|
||||
- 詳細: `docs/guides/scopebox.md`, `src/mir/hints.rs`。
|
||||
|
||||
### 3. __mir__ ロガー(.hako から仕込む MIR ログ)
|
||||
|
||||
- 目的:
|
||||
- `.hako` 側のループや SSA まわりを「MIR レベル」で観測するための dev 専用フック。
|
||||
- 実行意味論には影響しない(Effect::DebugLog のみ)。
|
||||
- 構文(.hako 内):
|
||||
|
||||
```hako
|
||||
__mir__.log("label", v1, v2, ...)
|
||||
__mir__.mark("label")
|
||||
```
|
||||
|
||||
- 第1引数は String リテラル必須(それ以外は通常の呼び出し扱い)。
|
||||
- `log` は第2引数以降の式を評価し、その ValueId 群を記録。
|
||||
- `mark` はラベルだけのマーカー。
|
||||
- 戻り値は Void 定数扱いのため、式コンテキストに書いても型崩れしない。
|
||||
|
||||
- 実行時の有効化:
|
||||
- `NYASH_MIR_DEBUG_LOG=1 ./target/release/nyash path/to/program.hako`
|
||||
- VM の MIR interpreter が次のようなログを stderr に出力:
|
||||
|
||||
```text
|
||||
[MIR-LOG] label: %10=123 %11="foo"
|
||||
```
|
||||
|
||||
- 実装位置:
|
||||
- lowering: `src/mir/builder/calls/build.rs` の `try_build_mir_debug_call`(receiver が `__mir__` のときに `MirInstruction::DebugLog` を挿入)。
|
||||
- 実行: `src/backend/mir_interpreter/handlers/mod.rs`(`NYASH_MIR_DEBUG_LOG=1` のときだけログを出す)。
|
||||
|
||||
- 利用例(ループ観測の定番パターン):
|
||||
|
||||
```hako
|
||||
loop(i < n) {
|
||||
__mir__.log("loop/head", i, n)
|
||||
...
|
||||
}
|
||||
__mir__.mark("loop/exit")
|
||||
```
|
||||
|
||||
- FuncScanner / Stage‑B では、skip_whitespace や scan_all_boxes のループ頭・出口に挿入して、ValueId と値の流れを追跡する用途で使用している。
|
||||
|
||||
## 🔌 **プラグインテスター(BID-FFI診断ツール)**
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user