vm(hako): add v1 reader/dispatcher (flagged), commonize mir_call handler, share block scan; smokes: add v1 hakovm canary; docs: 20.37/20.38 plans, OOB policy; runner: v1 hakovm toggle; include SKIP summary
This commit is contained in:
@ -23,6 +23,8 @@ mod demos;
|
||||
mod dispatch;
|
||||
pub mod json_v0_bridge;
|
||||
mod json_v1_bridge;
|
||||
pub mod mir_json { pub mod common; }
|
||||
mod mir_json_v0;
|
||||
pub mod mir_json_emit;
|
||||
pub mod modes;
|
||||
mod pipe_io;
|
||||
@ -87,6 +89,29 @@ impl NyashRunner {
|
||||
return;
|
||||
}
|
||||
let groups = self.config.as_groups();
|
||||
// Early: direct MIR JSON execution (no source file). Experimental diagnostics/exec.
|
||||
if let Some(path) = groups.parser.mir_json_file.as_ref() {
|
||||
match std::fs::read_to_string(path) {
|
||||
Ok(text) => {
|
||||
match crate::runner::json_v1_bridge::try_parse_v1_to_module(&text) {
|
||||
Ok(Some(module)) => { let rc = self.execute_mir_module_quiet_exit(&module); std::process::exit(rc); }
|
||||
Ok(None) => {
|
||||
if text.contains("\"functions\"") && text.contains("\"blocks\"") {
|
||||
match crate::runner::mir_json_v0::parse_mir_v0_to_module(&text) {
|
||||
Ok(module) => { let rc = self.execute_mir_module_quiet_exit(&module); std::process::exit(rc); }
|
||||
Err(e) => { eprintln!("❌ MIR JSON v0 parse error: {}", e); std::process::exit(1); }
|
||||
}
|
||||
} else {
|
||||
eprintln!("❌ MIR JSON invalid or unsupported shape: {}", path);
|
||||
std::process::exit(1);
|
||||
}
|
||||
}
|
||||
Err(e) => { eprintln!("❌ MIR JSON parse error (v1): {}", e); std::process::exit(1); }
|
||||
}
|
||||
}
|
||||
Err(e) => { eprintln!("❌ Error reading MIR JSON {}: {}", path, e); std::process::exit(1); }
|
||||
}
|
||||
}
|
||||
// Early: build
|
||||
if let Some(cfg_path) = groups.build.path.clone() {
|
||||
if let Err(e) = self.run_build_mvp(&cfg_path) {
|
||||
|
||||
Reference in New Issue
Block a user