feat(joinir): Phase 213-2 Step 2-2 & 2-3 Data structure extensions

Extended PatternPipelineContext and CarrierUpdateInfo for Pattern 3 AST-based generalization.

Changes:
1. PatternPipelineContext:
   - Added loop_condition: Option<ASTNode>
   - Added loop_body: Option<Vec<ASTNode>>
   - Added loop_update_summary: Option<LoopUpdateSummary>
   - Updated build_pattern_context() for Pattern 3

2. CarrierUpdateInfo:
   - Added then_expr: Option<ASTNode>
   - Added else_expr: Option<ASTNode>
   - Updated analyze_loop_updates() with None defaults

Status: Phase 213-2 Steps 2-2 & 2-3 complete
Next: Create Pattern3IfAnalyzer to extract if statement and populate update summary
This commit is contained in:
nyash-codex
2025-12-10 00:01:53 +09:00
parent 577b5b01d5
commit d7805e5974
138 changed files with 3529 additions and 378 deletions

View File

@ -20,14 +20,14 @@
#### 🔍 **MIRデバッグ完全ガイド**(超重要!)
```bash
# 基本MIR確認最優先
./target/release/nyash --dump-mir program.hako
NYASH_VM_DUMP_MIR=1 ./target/release/nyash program.hako
./target/release/hakorune --dump-mir program.hako
NYASH_VM_DUMP_MIR=1 ./target/release/hakorune program.hako
# 詳細MIR + エフェクト情報
./target/release/nyash --dump-mir --mir-verbose --mir-verbose-effects program.hako
./target/release/hakorune --dump-mir --mir-verbose --mir-verbose-effects program.hako
# JSON形式で詳細解析
./target/release/nyash --emit-mir-json mir.json program.hako
./target/release/hakorune --emit-mir-json mir.json program.hako
jq '.functions[0].blocks' mir.json # ブロック構造確認
# Option C デバッグPHI関連
@ -62,7 +62,7 @@ NYASH_JOINIR_DEBUG=1 ./target/release/hakorune program.hako 2>&1 | grep "\[trace
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
NYASH_CLI_VERBOSE=1 ./target/release/hakorune program.hako
# 決定性テスト3回実行して一貫性確認
for i in 1 2 3; do
@ -224,7 +224,7 @@ tools/smokes/v2/run.sh --profile quick --filter "<glob>"
bash tools/smokes/v2/profiles/quick/core/selfhost_mir_m3_jump_vm.sh
# 単発実行(参考)
./target/release/nyash --backend vm apps/APP/main.hako
./target/release/hakorune --backend vm apps/APP/main.hako
```
#### ⚡ llvmlite ラインLLVMハーネス
@ -245,10 +245,10 @@ tools/smokes/v2/run.sh --profile integration --filter "<glob>"
# 例: --filter "vm_llvm_*" # VM/LLVM比較系のみ
# 単発実行
NYASH_LLVM_USE_HARNESS=1 ./target/release/nyash --backend llvm apps/tests/peek_expr_block.hako
NYASH_LLVM_USE_HARNESS=1 ./target/release/hakorune --backend llvm apps/tests/peek_expr_block.hako
# 有効化確認
./target/release/nyash --version | rg -i 'features.*llvm'
./target/release/hakorune --version | rg -i 'features.*llvm'
```
**💡 ポイント**:
@ -403,26 +403,26 @@ Nyashは「Everything is Box」。実装・最適化・検証のすべてを「
### 🎯 **2本柱実行方式** (推奨!)
```bash
# 🔧 開発・デバッグ・検証用 (Rust VM)
./target/release/nyash program.hako
./target/release/nyash --backend vm program.hako
./target/release/hakorune program.hako
./target/release/hakorune --backend vm program.hako
# ⚡ 本番・最適化・配布用 (LLVM)
./target/release/nyash --backend llvm program.hako
./target/release/hakorune --backend llvm program.hako
# 🛡️ プラグインエラー対策
NYASH_DISABLE_PLUGINS=1 ./target/release/nyash program.hako
NYASH_DISABLE_PLUGINS=1 ./target/release/hakorune program.hako
# 🔍 詳細診断
NYASH_CLI_VERBOSE=1 ./target/release/nyash program.hako
NYASH_CLI_VERBOSE=1 ./target/release/hakorune program.hako
```
### 🚀 **Phase 15 セルフホスティング専用**
```bash
# JSON v0ブリッジPyVM特殊用途
NYASH_SELFHOST_EXEC=1 ./target/release/nyash program.hako
NYASH_SELFHOST_EXEC=1 ./target/release/hakorune program.hako
# using処理確認
./target/release/nyash --enable-using program_with_using.hako
./target/release/hakorune --enable-using program_with_using.hako
# ラウンドトリップテスト
./tools/ny_roundtrip_smoke.sh
@ -434,10 +434,10 @@ NYASH_SELFHOST_EXEC=1 ./target/release/nyash program.hako
cargo build --release
# 開発・デバッグ実行Rust VM
./target/release/nyash program.hako
./target/release/hakorune program.hako
# 本番・最適化実行LLVM
./target/release/nyash --backend llvm program.hako
./target/release/hakorune --backend llvm program.hako
```
### 🪟 Windows版
@ -455,7 +455,7 @@ target/x86_64-pc-windows-msvc/release/nyash.exe
# TODO: VM/LLVMベースのWASM実装に移行予定
# LLVM AOTコンパイル実験的
./target/release/nyash --backend llvm program.hako # 実行時最適化
./target/release/hakorune --backend llvm program.hako # 実行時最適化
```
### 🎯 **2本柱ビルド方法** (2025-09-28更新)
@ -473,20 +473,20 @@ cargo build --release --features llvm
```bash
# 1. Rust VM実行 ✅(開発・デバッグ用)
cargo build --release
./target/release/nyash program.hako
./target/release/hakorune program.hako
# 2. LLVM実行 ✅(本番・最適化用, llvmliteハーネス
cargo build --release --features llvm
NYASH_LLVM_USE_HARNESS=1 ./target/release/nyash --backend llvm program.hako
NYASH_LLVM_USE_HARNESS=1 ./target/release/hakorune --backend llvm program.hako
# 3. プラグインテスト実証済み ✅
# CounterBox
echo 'local c = new CounterBox(); c.inc(); c.inc(); print(c.get())' > test.hako
./target/release/nyash --backend llvm test.hako
./target/release/hakorune --backend llvm test.hako
# StringBox
echo 'local s = new StringBox(); print(s.concat("Hello"))' > test.hako
./target/release/nyash test.hako
./target/release/hakorune test.hako
```
@ -501,19 +501,19 @@ echo 'local s = new StringBox(); print(s.concat("Hello"))' > test.hako
```bash
# 🎯 基本実行(まずこれ)- Rust VM
./target/release/nyash program.hako
./target/release/hakorune program.hako
# ⚡ 本番・最適化実行 - LLVM
./target/release/nyash --backend llvm program.hako
./target/release/hakorune --backend llvm program.hako
# 🛡️ プラグインエラー対策(緊急時のみ)
NYASH_DISABLE_PLUGINS=1 ./target/release/nyash program.hako
NYASH_DISABLE_PLUGINS=1 ./target/release/hakorune program.hako
# 🔍 詳細診断情報
NYASH_CLI_VERBOSE=1 ./target/release/nyash program.hako
NYASH_CLI_VERBOSE=1 ./target/release/hakorune program.hako
# ⚠️ PyVM特殊用途JSON v0ブリッジ・セルフホスト専用
NYASH_SELFHOST_EXEC=1 ./target/release/nyash program.hako
NYASH_SELFHOST_EXEC=1 ./target/release/hakorune program.hako
```
### 🚨 **Phase 15戦略確定**
@ -532,7 +532,7 @@ NYASH_SELFHOST_EXEC=1 ./target/release/nyash program.hako
| ~~`NYASH_VM_USE_PY=1`~~ | ⚠️ | PyVM特殊用途 | ~~開発者明示のみ~~ |
| ~~`NYASH_ENABLE_USING=1`~~ | ✅ | using処理 | ~~デフォルト化済み~~ |
**💡 2本柱戦略**:基本は`./target/release/nyash`Rust VM、本番は`--backend llvm`
**💡 2本柱戦略**:基本は`./target/release/hakorune`Rust VM、本番は`--backend llvm`
**⚠️ PyVM使用制限**: [PyVM使用ガイドライン](docs/reference/pyvm-usage-guidelines.md)で適切な用途を確認
@ -550,7 +550,7 @@ NYASH_SELFHOST_EXEC=1 ./target/release/nyash program.hako
# 基本using動作環境変数・フラグ不要
echo 'using nyashstd' > test.hako
echo 'console.log("Hello!")' >> test.hako
./target/release/nyash test.hako
./target/release/hakorune test.hako
# 出力: Hello!
# 実装箇所
@ -568,17 +568,17 @@ src/runner/modes/common_util/resolve/strip.rs # コード生成
## 🧪 テストスクリプト参考集(既存のを活用しよう!)
```bash
# 基本的なテスト
./target/release/nyash local_tests/hello.hako # Hello World
./target/release/nyash local_tests/test_array_simple.hako # ArrayBox
./target/release/nyash apps/tests/string_ops_basic.hako # StringBox
./target/release/hakorune local_tests/hello.hako # Hello World
./target/release/hakorune local_tests/test_array_simple.hako # ArrayBox
./target/release/hakorune apps/tests/string_ops_basic.hako # StringBox
# MIR確認用テスト
./target/release/nyash --dump-mir apps/tests/loop_min_while.hako
./target/release/nyash --dump-mir apps/tests/esc_dirname_smoke.hako
./target/release/hakorune --dump-mir apps/tests/loop_min_while.hako
./target/release/hakorune --dump-mir apps/tests/esc_dirname_smoke.hako
# 統一Call テストPhase A完成
NYASH_MIR_UNIFIED_CALL=1 ./target/release/nyash --dump-mir test_simple_call.hako
NYASH_MIR_UNIFIED_CALL=1 ./target/release/nyash --emit-mir-json test.json test.hako
NYASH_MIR_UNIFIED_CALL=1 ./target/release/hakorune --dump-mir test_simple_call.hako
NYASH_MIR_UNIFIED_CALL=1 ./target/release/hakorune --emit-mir-json test.json test.hako
```
## ⚡ 重要な設計原則
@ -903,9 +903,9 @@ NYASH_SKIP_TOML_ENV=1 ./tools/smoke_plugins.sh
#### パーサー無限ループ対策
```bash
# 🔥 デバッグ燃料でパーサー制御
./target/release/nyash --debug-fuel 1000 program.hako # 1000回制限
./target/release/nyash --debug-fuel unlimited program.hako # 無制限
./target/release/nyash program.hako # デフォルト10万回
./target/release/hakorune --debug-fuel 1000 program.hako # 1000回制限
./target/release/hakorune --debug-fuel unlimited program.hako # 無制限
./target/release/hakorune program.hako # デフォルト10万回
```
**対応状況**: must_advance!マクロでパーサー制御完全実装済み✅