// JitPolicy whitelist demo with DebugConfigBox event setup. // Goal: show fallback on read_only, then allow after whitelist. // Run (Cranelift enabled recommended): // cargo build --release -j32 --features cranelift-jit // NYASH_JIT_HOSTCALL=1 ./target/release/nyash --backend vm examples/jit_policy_whitelist_demo.hako // Check events file: // cat policy_events.jsonl # contains phase=lower/execute decisions box Helper { birth() {} add(a) { a.push(1) return a.length() } } static box Main { main() { // Enable compile-time events and output path via DebugConfigBox local D D = new DebugConfigBox() D = D.setFlag("jit_events_compile", true) D = D.setFlag("jit_events_runtime", true) D = D.setPath("jit_events_path", "policy_events.jsonl") D.apply() // Prepare JIT policy: read_only first local P P = new JitPolicyBox() P.set("read_only", true) // Prepare data and helper local H, A H = new Helper() A = new ArrayBox() // 1st call: should fallback by policy (mutating denied) H.add(A) // Whitelist push_h and retry (expect allow) P.addWhitelist("nyash.array.push_h") return H.add(A) } }