docs: CLAUDE.md更新 - PHI Option C完了+MIRデバッグガイド追加
✅ 現在の開発状況セクション更新(2025-11-20) - PHI Bug Option C実装ほぼ完了(267/268テストPASS) - commit 461bdec4の成果サマリー ✅ MIRデバッグ完全ガイド追加(超重要!) - --dump-mir, NYASH_VM_DUMP_MIR, NYASH_OPTION_C_DEBUG等 - JSON形式解析、決定性テスト手順 - 実践的コマンド集 ✅ HashMap非決定性の発見記録 - 根本原因(HashDoS対策のランダムseed) - 解決策(BTreeSet/BTreeMap) - 残課題(variable_map) 📖 次回セッションでの即時参照用 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
51
CLAUDE.md
51
CLAUDE.md
@ -4,7 +4,56 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🔄 **現在の開発状況** (2025-11-15)
|
## 🔄 **現在の開発状況** (2025-11-20)
|
||||||
|
|
||||||
|
### 🎊 **PHI Bug Option C実装ほぼ完了!** (2025-11-20 commit `461bdec4`)
|
||||||
|
- **267/268テスト PASS達成!** Option C実装大成功 🎉
|
||||||
|
- **Step 5-5-H完了**: Phantom block検証実装(exit_preds検証)
|
||||||
|
- **PHI決定性向上**: BTreeSet/BTreeMap化(4ファイル修正)
|
||||||
|
- `if_phi.rs`, `loop_phi.rs`, `loop_snapshot_merge.rs`, `loopform_builder.rs`
|
||||||
|
- **根本原因解明**: HashMap非決定的イテレーションによるValueId変動
|
||||||
|
- 詳細: `docs/development/current/main/valueid-*.md`
|
||||||
|
- **退行なし**: 267テスト全てPASS(1テストのみ非決定性残存)
|
||||||
|
- **次タスク**: Stage-B型エラー修正(String > Integer(13))
|
||||||
|
- **後回し**: variable_map決定性化(builder.rs等のHashMap→BTreeMap)
|
||||||
|
|
||||||
|
#### 🔍 **MIRデバッグ完全ガイド**(超重要!)
|
||||||
|
```bash
|
||||||
|
# 基本MIR確認(最優先!)
|
||||||
|
./target/release/nyash --dump-mir program.hako
|
||||||
|
NYASH_VM_DUMP_MIR=1 ./target/release/nyash program.hako
|
||||||
|
|
||||||
|
# 詳細MIR + エフェクト情報
|
||||||
|
./target/release/nyash --dump-mir --mir-verbose --mir-verbose-effects program.hako
|
||||||
|
|
||||||
|
# JSON形式で詳細解析
|
||||||
|
./target/release/nyash --emit-mir-json mir.json program.hako
|
||||||
|
jq '.functions[0].blocks' mir.json # ブロック構造確認
|
||||||
|
|
||||||
|
# Option C デバッグ(PHI関連)
|
||||||
|
NYASH_OPTION_C_DEBUG=1 cargo test --release TEST_NAME 2>&1 | grep "Option C"
|
||||||
|
|
||||||
|
# LoopForm デバッグ
|
||||||
|
NYASH_LOOPFORM_DEBUG=1 cargo test --release TEST_NAME 2>&1 | grep "loopform"
|
||||||
|
|
||||||
|
# 完全MIRダンプ(テスト時)
|
||||||
|
NYASH_MIR_TEST_DUMP=1 cargo test --release TEST_NAME 2>&1 > /tmp/mir_dump.log
|
||||||
|
|
||||||
|
# VM実行トレース
|
||||||
|
NYASH_CLI_VERBOSE=1 ./target/release/nyash program.hako
|
||||||
|
|
||||||
|
# 決定性テスト(3回実行して一貫性確認)
|
||||||
|
for i in 1 2 3; do
|
||||||
|
echo "=== Run $i ==="
|
||||||
|
cargo test --release TEST_NAME 2>&1 | grep -E "(ValueId|test result)"
|
||||||
|
done
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 📊 **重要な発見:HashMap非決定性**
|
||||||
|
- Rustの`HashMap`/`HashSet`はHashDoS対策でランダムseed使用
|
||||||
|
- PHI生成順序が毎回変わる → ValueId割り当てが変動
|
||||||
|
- **解決**: `BTreeSet`/`BTreeMap`で決定的イテレーション保証
|
||||||
|
- **残課題**: `variable_map: HashMap<String, ValueId>` (builder.rs等)
|
||||||
|
|
||||||
### 🎉 **Phase 25 MVP 完全成功!** (2025-11-15)
|
### 🎉 **Phase 25 MVP 完全成功!** (2025-11-15)
|
||||||
- **numeric_core BoxCall→Call変換** 完全動作!
|
- **numeric_core BoxCall→Call変換** 完全動作!
|
||||||
|
|||||||
Reference in New Issue
Block a user