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:
20
AGENTS.md
20
AGENTS.md
@ -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 実行経路は完全撤退中だよ。以下は Phase‑15 当時の方針と運用メモで、今は「歴史情報」としてだけ残しているよ。日常の開発・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` は emit‑only 既定で運用(`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`)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user