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:
@ -3,14 +3,14 @@
|
||||
このページはPhase 10.10の再起動用ミニ手順です。3つだけ確かめればOK。
|
||||
|
||||
- 事前ビルド: `cargo build --release -j32`
|
||||
- 実行は `./target/release/nyash` を使用
|
||||
- 実行は `./target/release/hakorune` を使用
|
||||
|
||||
## 1) HH直実行(Map.get_hh)
|
||||
- 目的: 受け手/キーが関数パラメータのとき、JIT HostCallを許可(HH経路)。
|
||||
- 実行:
|
||||
```
|
||||
NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_HOSTCALL=1 NYASH_JIT_EVENTS=1 \
|
||||
./target/release/nyash --backend vm examples/jit_map_get_param_hh.hako
|
||||
./target/release/hakorune --backend vm examples/jit_map_get_param_hh.hako
|
||||
```
|
||||
- 期待: `allow id: nyash.map.get_hh` イベントが出る。戻り値は `value1`。
|
||||
|
||||
@ -19,7 +19,7 @@ NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_HOSTCALL=1 NYASH_JIT_EVENTS=1 \
|
||||
- 実行:
|
||||
```
|
||||
NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_HOSTCALL=1 NYASH_JIT_EVENTS=1 \
|
||||
./target/release/nyash --backend vm examples/jit_policy_optin_mutating.hako
|
||||
./target/release/hakorune --backend vm examples/jit_policy_optin_mutating.hako
|
||||
```
|
||||
- 期待: 1回目は `policy_denied_mutating` でfallback、whitelist後の2回目はallow。
|
||||
|
||||
@ -36,7 +36,7 @@ NYASH_JIT_EVENTS_RUNTIME=1 NYASH_JIT_EVENTS_PATH=events.jsonl ...
|
||||
- 目的: GCのカウント/トレース/バリア観測の導線確認(VM経路)。
|
||||
- 実行:
|
||||
```
|
||||
./target/release/nyash --backend vm examples/gc_counting_demo.hako
|
||||
./target/release/hakorune --backend vm examples/gc_counting_demo.hako
|
||||
```
|
||||
- Tips: 詳細ログは `NYASH_GC_COUNTING=1 NYASH_GC_TRACE=2` を併用。
|
||||
|
||||
@ -45,7 +45,7 @@ NYASH_JIT_EVENTS_RUNTIME=1 NYASH_JIT_EVENTS_PATH=events.jsonl ...
|
||||
- 実行(しきい値=1を明示/またはDebugConfigBoxでapply後にRunnerが自動設定):
|
||||
```
|
||||
NYASH_JIT_THRESHOLD=1 NYASH_JIT_HOSTCALL=1 \
|
||||
./target/release/nyash --backend vm examples/jit_policy_whitelist_demo.hako
|
||||
./target/release/hakorune --backend vm examples/jit_policy_whitelist_demo.hako
|
||||
```
|
||||
- 期待: `policy_events.jsonl` に `phase:"lower"`(計画)と `phase:"execute"`(実績)が出る。
|
||||
|
||||
@ -61,12 +61,12 @@ NYASH_JIT_THRESHOLD=1 NYASH_JIT_HOSTCALL=1 \
|
||||
- 事前: `cargo build --release --features cranelift-jit`
|
||||
- 実行例(String/Integer/Consoleの最小):
|
||||
```
|
||||
./target/release/nyash --compile-native examples/aot_min_string_len.hako -o app && ./app
|
||||
./target/release/hakorune --compile-native examples/aot_min_string_len.hako -o app && ./app
|
||||
# 結果は `Result: <val>` として標準出力に表示
|
||||
```
|
||||
- Python最小チェーン(RO):
|
||||
```
|
||||
./target/release/nyash --compile-native examples/aot_py_min_chain.hako -o app && ./app
|
||||
./target/release/hakorune --compile-native examples/aot_py_min_chain.hako -o app && ./app
|
||||
```
|
||||
- スクリプト版(詳細な手順): `tools/build_aot.sh <file> -o <out>`(Windowsは `tools/build_aot.ps1`)
|
||||
|
||||
@ -75,6 +75,6 @@ NYASH_JIT_THRESHOLD=1 NYASH_JIT_HOSTCALL=1 \
|
||||
- 実行(デモ):
|
||||
```
|
||||
NYASH_SCHED_DEMO=1 NYASH_SCHED_POLL_BUDGET=2 \
|
||||
./target/release/nyash --backend vm examples/scheduler_demo.hako
|
||||
./target/release/hakorune --backend vm examples/scheduler_demo.hako
|
||||
```
|
||||
- 期待: `[SCHED] immediate task ran at safepoint` と `[SCHED] delayed task ran at safepoint` が出力
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
// AOT Python evalR OK demo (returns Result.Ok)
|
||||
// Build:
|
||||
// cargo build --release --features cranelift-jit
|
||||
// ./target/release/nyash --compile-native examples/aot_py_result_ok.hako -o app && ./app
|
||||
// ./target/release/hakorune --compile-native examples/aot_py_result_ok.hako -o app && ./app
|
||||
|
||||
static box Main {
|
||||
main() {
|
||||
@ -13,4 +13,3 @@ static box Main {
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
// ArrayBox plugin demo
|
||||
// Requires: plugins/nyash-array-plugin built (release) and nyash.toml updated
|
||||
// Run:
|
||||
// NYASH_CLI_VERBOSE=1 ./target/release/nyash --backend vm examples/array_plugin_demo.hako
|
||||
// NYASH_CLI_VERBOSE=1 ./target/release/hakorune --backend vm examples/array_plugin_demo.hako
|
||||
|
||||
static box Main {
|
||||
main() {
|
||||
@ -19,4 +19,3 @@ static box Main {
|
||||
return a.length()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
// GC Counting demo (VM path) — verifies CountingGc counters and barrier sites
|
||||
// Run:
|
||||
// ./target/release/nyash --backend vm examples/gc_counting_demo.hako
|
||||
// ./target/release/hakorune --backend vm examples/gc_counting_demo.hako
|
||||
// Expect (with trace): [GC] counters: safepoints>0 read_barriers>=0 write_barriers>=0
|
||||
|
||||
static box Main {
|
||||
@ -31,4 +31,3 @@ static box Main {
|
||||
return "done"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
// jit-direct: boolean return normalization
|
||||
// Build: cargo build --release --features cranelift-jit
|
||||
// Run: NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 \
|
||||
// ./target/release/nyash --jit-direct examples/jit_direct_bool_ret.hako
|
||||
// ./target/release/hakorune --jit-direct examples/jit_direct_bool_ret.hako
|
||||
|
||||
static box Main {
|
||||
main() {
|
||||
@ -11,4 +11,3 @@ static box Main {
|
||||
return a < b // expect true
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
// jit-direct: f64 return demo
|
||||
// Build: cargo build --release --features cranelift-jit
|
||||
// Run: NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_NATIVE_F64=1 \
|
||||
// ./target/release/nyash --jit-direct examples/jit_direct_f64_ret.hako
|
||||
// ./target/release/hakorune --jit-direct examples/jit_direct_f64_ret.hako
|
||||
|
||||
static box Main {
|
||||
main() {
|
||||
@ -12,4 +12,3 @@ static box Main {
|
||||
return s // expect 3.75
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
// jit-direct: minimal local Store/Load path
|
||||
// Build: cargo build --release --features cranelift-jit
|
||||
// Run: NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 \
|
||||
// ./target/release/nyash --jit-direct examples/jit_direct_local_store_load.hako
|
||||
// ./target/release/hakorune --jit-direct examples/jit_direct_local_store_load.hako
|
||||
|
||||
static box Main {
|
||||
main() {
|
||||
@ -12,4 +12,3 @@ static box Main {
|
||||
return x // expect 3
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
// Fallback case: Array.append/push is mutating; with read-only policy it should fallback
|
||||
// Run: NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 ./target/release/nyash --backend vm examples/jit_hostcall_array_append.hako
|
||||
// Run: NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 ./target/release/hakorune --backend vm examples/jit_hostcall_array_append.hako
|
||||
|
||||
static box Main {
|
||||
main() {
|
||||
@ -9,4 +9,3 @@ static box Main {
|
||||
return xs.length() // expect 1 in VM; under JIT read-only policy push is denied → still 1 via VM path
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
// Success case: String.length() via JIT hostcall (read-only)
|
||||
// Run: NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 ./target/release/nyash --backend vm examples/jit_hostcall_len_string.hako
|
||||
// Run: NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 ./target/release/hakorune --backend vm examples/jit_hostcall_len_string.hako
|
||||
|
||||
static box Main {
|
||||
main() {
|
||||
@ -8,4 +8,3 @@ static box Main {
|
||||
return s.length()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
// Allow case: math.sin expects f64; JIT records sig_ok (allow) and VM executes (thin bridge)
|
||||
// Run:
|
||||
// NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_EVENTS=1 \
|
||||
// ./target/release/nyash --backend vm examples/jit_hostcall_math_sin_allow_float.hako
|
||||
// ./target/release/hakorune --backend vm examples/jit_hostcall_math_sin_allow_float.hako
|
||||
|
||||
static box Main {
|
||||
main() {
|
||||
@ -13,4 +13,3 @@ static box Main {
|
||||
return m.sin(x)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
// Expect: JIT hostcall allow for nyash.map.get_hh (Handle,Handle)
|
||||
// Run:
|
||||
// NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_HOSTCALL=1 NYASH_JIT_EVENTS=1 \
|
||||
// ./target/release/nyash --backend vm examples/jit_map_get_param_hh.hako
|
||||
// ./target/release/hakorune --backend vm examples/jit_map_get_param_hh.hako
|
||||
|
||||
box Helper {
|
||||
birth() {
|
||||
|
||||
@ -1,11 +1,10 @@
|
||||
// Function-style math: cos(x)
|
||||
// Run:
|
||||
// NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_NATIVE_F64=1 NYASH_JIT_EVENTS=1 \
|
||||
// ./target/release/nyash --backend vm examples/jit_math_function_style_cos_float.hako
|
||||
// ./target/release/hakorune --backend vm examples/jit_math_function_style_cos_float.hako
|
||||
|
||||
static box Main {
|
||||
main() {
|
||||
return cos(0.0)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,11 +1,10 @@
|
||||
// Function-style math: max(a,b)
|
||||
// Run:
|
||||
// NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 NYASH_JIT_NATIVE_F64=1 NYASH_JIT_EVENTS=1 \
|
||||
// ./target/release/nyash --backend vm examples/jit_math_function_style_max_float.hako
|
||||
// ./target/release/hakorune --backend vm examples/jit_math_function_style_max_float.hako
|
||||
|
||||
static box Main {
|
||||
main() {
|
||||
return max(2.5, 7.0)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
// Run:
|
||||
// NYASH_USE_PLUGIN_BUILTINS=1 NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 \
|
||||
// NYASH_JIT_SHIM_TRACE=1 NYASH_CLI_VERBOSE=1 \
|
||||
// ./target/release/nyash --backend vm examples/jit_plugin_invoke_static_helper.hako
|
||||
// ./target/release/hakorune --backend vm examples/jit_plugin_invoke_static_helper.hako
|
||||
|
||||
static box Helper {
|
||||
static helper(arr) {
|
||||
@ -22,4 +22,3 @@ a.push(3)
|
||||
|
||||
print(Helper.helper(a))
|
||||
print(debug.getJitEvents())
|
||||
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
// Run:
|
||||
// NYASH_USE_PLUGIN_BUILTINS=1 NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 \
|
||||
// NYASH_JIT_SHIM_TRACE=1 NYASH_CLI_VERBOSE=1 \
|
||||
// ./target/release/nyash --backend vm examples/jit_shim_trace_param_array.hako
|
||||
// ./target/release/hakorune --backend vm examples/jit_shim_trace_param_array.hako
|
||||
|
||||
static box Main {
|
||||
main() {
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
// Nyash micro benchmarks using TimeBox (script-level)
|
||||
// How to run:
|
||||
// - Interpreter: ./target/release/nyash examples/ny_bench_fixed.hako
|
||||
// - VM: ./target/release/nyash --backend vm examples/ny_bench_fixed.hako
|
||||
// - VM+JIT (fast path!): NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 ./target/release/nyash --backend vm examples/ny_bench_fixed.hako
|
||||
// - Interpreter: ./target/release/hakorune examples/ny_bench_fixed.hako
|
||||
// - VM: ./target/release/hakorune --backend vm examples/ny_bench_fixed.hako
|
||||
// - VM+JIT (fast path!): NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 ./target/release/hakorune --backend vm examples/ny_bench_fixed.hako
|
||||
|
||||
local ITER
|
||||
ITER = 100000 // change for heavier runs
|
||||
@ -55,4 +55,4 @@ ops = (ITER * 1000.0) / ms
|
||||
print("[simple_add_loop] elapsed_ms=" + ms + ", ops/sec=" + ops)
|
||||
|
||||
print("\nDone.")
|
||||
return 0
|
||||
return 0
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
// Nyash small benchmarks - reduced iterations for quick testing
|
||||
// How to run:
|
||||
// - Interpreter: ./target/release/nyash examples/ny_bench_small.hako
|
||||
// - VM: ./target/release/nyash --backend vm examples/ny_bench_small.hako
|
||||
// - VM+JIT (fast path!): NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 ./target/release/nyash --backend vm examples/ny_bench_small.hako
|
||||
// - Interpreter: ./target/release/hakorune examples/ny_bench_small.hako
|
||||
// - VM: ./target/release/hakorune --backend vm examples/ny_bench_small.hako
|
||||
// - VM+JIT (fast path!): NYASH_JIT_EXEC=1 NYASH_JIT_THRESHOLD=1 ./target/release/hakorune --backend vm examples/ny_bench_small.hako
|
||||
|
||||
local ITER
|
||||
ITER = 1000 // reduced for interpreter testing
|
||||
@ -43,4 +43,4 @@ loop(i < ITER) {
|
||||
print("[simple_add_loop] final z = " + z)
|
||||
|
||||
print("\nDone.")
|
||||
return 0
|
||||
return 0
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
// Python callR error demo (returns Result.Err)
|
||||
// Run:
|
||||
// NYASH_PLUGIN_ONLY=1 ./target/release/nyash --backend vm examples/py_callR_error_demo.hako
|
||||
// NYASH_PLUGIN_ONLY=1 ./target/release/hakorune --backend vm examples/py_callR_error_demo.hako
|
||||
|
||||
static box Main {
|
||||
main() {
|
||||
@ -14,4 +14,3 @@ static box Main {
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
// @env NYASH_PLUGIN_ONLY=1
|
||||
// @env NYASH_PY_AUTODECODE=1
|
||||
// Run:
|
||||
// ./target/release/nyash --backend vm examples/py_callR_int_base16_ok_demo.hako
|
||||
// ./target/release/hakorune --backend vm examples/py_callR_int_base16_ok_demo.hako
|
||||
|
||||
static box Main {
|
||||
main() {
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
// @env NYASH_PLUGIN_ONLY=1
|
||||
// @env NYASH_PY_AUTODECODE=1
|
||||
// Run:
|
||||
// ./target/release/nyash --backend vm examples/py_callR_ok_demo.hako
|
||||
// ./target/release/hakorune --backend vm examples/py_callR_ok_demo.hako
|
||||
|
||||
static box Main {
|
||||
main() {
|
||||
|
||||
Reference in New Issue
Block a user