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

@ -288,8 +288,8 @@ fn check_layer_boundary() {
- ここは Nyash の Cranelift JIT/AOT 開発用ブランチだよ。JIT 経路の実装・検証・計測が主対象だよ。
- ビルドJIT有効: `cargo build --release --features cranelift-jit`
- 実行モード:
- CLI Cranelift: `./target/release/nyash --backend cranelift apps/APP/main.hako`
- JITダイレクトVM非介入: `./target/release/nyash --jit-direct apps/smokes/jit_aot_string_min.hako`
- CLI Cranelift: `./target/release/hakorune --backend cranelift apps/APP/main.hako`
- JITダイレクトVM非介入: `./target/release/hakorune --jit-direct apps/smokes/jit_aot_string_min.hako`
- デバッグ環境変数(例):
- `NYASH_JIT_EXEC=1`JIT実行許可
- `NYASH_JIT_STATS=1`(コンパイル/実行統計)
@ -307,8 +307,8 @@ fn check_layer_boundary() {
> 注: 2025-12 現在、PyVM 実行経路は完全撤退中だよ。以下は Phase15 当時の方針と運用メモで、今は「歴史情報」としてだけ残しているよ。日常の開発・CI では Rust VM / LLVM ラインだけを使ってね。
- 当時の主経路: Python/llvmlite + PyVM を標準の実行/検証経路として扱うよ。Rust VM/JIT は補助(保守/比較/プラグイン検証)。
- 使い分け:
- PyVM推奨・日常確認: `NYASH_VM_USE_PY=1 ./target/release/nyash --backend vm apps/APP/main.hako`
- llvmlite ハーネス: `NYASH_LLVM_USE_HARNESS=1 ./target/release/nyash --backend llvm apps/APP/main.hako`
- PyVM推奨・日常確認: `NYASH_VM_USE_PY=1 ./target/release/hakorune --backend vm apps/APP/main.hako`
- llvmlite ハーネス: `NYASH_LLVM_USE_HARNESS=1 ./target/release/hakorune --backend llvm apps/APP/main.hako`
- パリティ検証: `tools/parity.sh --lhs pyvm --rhs llvmlite apps/tests/CASE.hako`
- 自己ホストNy→JSON v0: `NYASH_USE_NY_COMPILER=1` は emitonly 既定で運用(`NYASH_NY_COMPILER_EMIT_ONLY=1`)。子プロセスは Quiet pipe`NYASH_JSON_ONLY=1`)。
- 子プロセス安全策: タイムアウト `NYASH_NY_COMPILER_TIMEOUT_MS`(既定 2000ms。違反時は kill→フォールバック無限ループ抑止
@ -379,7 +379,7 @@ Notes
- 非対象(やらない): プラグイン動的ロード/ABI、GC/スケジューラ、例外/非同期、大きな I/O/OS 依存、性能最適化。
- 運用ポリシー: 仕様差は llvmlite に合わせて PyVM を調整。未知の extern/boxcall は安全に `None`/no-op。既定は静音、`NYASH_CLI_VERBOSE=1` で詳細。
- 実行とスモーク:
- PyVM 実行: `NYASH_VM_USE_PY=1 ./target/release/nyash --backend vm apps/tests/CASE.hako`
- PyVM 実行: `NYASH_VM_USE_PY=1 ./target/release/hakorune --backend vm apps/tests/CASE.hako`
- 代表スクリプト: `tools/pyvm_stage2_smoke.sh`, `tools/pyvm_collections_smoke.sh`, `tools/pyvm_stage2_dot_chain_smoke.sh`
- Bridge 短絡RHS スキップ): `tools/ny_stage2_shortcircuit_smoke.sh`
- CI: `.github/workflows/pyvm-smoke.yml` を常時緑に維持。LLVM18 がある環境では `tools/parity.sh --lhs pyvm --rhs llvmlite` を任意ジョブで回す。
@ -444,8 +444,8 @@ Notes
- Build (LLVM AOT / harness-first):
- `cargo build --release -p nyash-llvm-compiler` (ny-llvmc builder)
- `cargo build --release --features llvm`
- Run via harness: `NYASH_LLVM_USE_HARNESS=1 ./target/release/nyash --backend llvm apps/APP/main.hako`
- Quick VM run: `./target/release/nyash --backend vm apps/APP/main.hako`
- Run via harness: `NYASH_LLVM_USE_HARNESS=1 ./target/release/hakorune --backend llvm apps/APP/main.hako`
- Quick VM run: `./target/release/hakorune --backend vm apps/APP/main.hako`
- Emit + link (LLVM): `tools/build_llvm.sh apps/APP/main.hako -o app`
- Smokes (v2):
- Single entry: `tools/smokes/v2/run.sh --profile quick`
@ -504,8 +504,8 @@ Notes
- PyVM は参照実行器(保守最小)。言語機能の確認や LLVM ハーネスのパリティ検証が主目的で、既定経路では使わない。
- 実行例(目安)
- Rust VM既定: `./target/release/nyash apps/APP/main.hako`
- LLVM Harness: `NYASH_LLVM_USE_HARNESS=1 ./target/release/nyash --backend llvm apps/APP/main.hako`
- Rust VM既定: `./target/release/hakorune apps/APP/main.hako`
- LLVM Harness: `NYASH_LLVM_USE_HARNESS=1 ./target/release/hakorune --backend llvm apps/APP/main.hako`
- AOT ビルド: `tools/build_llvm.sh apps/APP/main.hako -o app`
- セルフホスティング指針
@ -552,7 +552,7 @@ Flags
- How to run harness
- Build: `cargo build --release -p nyash-llvm-compiler && cargo build --release --features llvm`
- Run: `NYASH_LLVM_USE_HARNESS=1 ./target/release/nyash --backend llvm apps/tests/peek_expr_block.hako`
- Run: `NYASH_LLVM_USE_HARNESS=1 ./target/release/hakorune --backend llvm apps/tests/peek_expr_block.hako`
- IR dump: `NYASH_LLVM_DUMP_IR=tmp/nyash_harness.ll ...`
- PHI trace: `NYASH_LLVM_TRACE_PHI=1 ...` (JSON lines output via `phi_wiring.common.trace`)