hv1 verify: add direct route (env JSON) and clean inline path; fix v1 phi incoming order; make test_runner use hv1 direct; add phase2037 phi canaries; load modules.workspace exports for alias; update docs (phase-20.38, source extensions) and CURRENT_TASK
This commit is contained in:
@ -26,14 +26,28 @@ impl MirInterpreter {
|
||||
args: &[ValueId],
|
||||
) -> Option<Result<VMValue, VMError>> {
|
||||
match extern_name {
|
||||
// Console/print family (minimal)
|
||||
// Console family (minimal)
|
||||
"nyash.console.log" | "env.console.log" | "print" | "nyash.builtin.print" => {
|
||||
let s = if let Some(a0) = args.get(0) { self.reg_load(*a0).ok() } else { None };
|
||||
if let Some(v) = s { println!("{}", v.to_string()); } else { println!(""); }
|
||||
Some(Ok(VMValue::Void))
|
||||
}
|
||||
"env.console.warn" | "nyash.console.warn" => {
|
||||
let s = if let Some(a0) = args.get(0) { self.reg_load(*a0).ok() } else { None };
|
||||
if let Some(v) = s { eprintln!("[warn] {}", v.to_string()); } else { eprintln!("[warn]"); }
|
||||
Some(Ok(VMValue::Void))
|
||||
}
|
||||
"env.console.error" | "nyash.console.error" => {
|
||||
let s = if let Some(a0) = args.get(0) { self.reg_load(*a0).ok() } else { None };
|
||||
if let Some(v) = s { eprintln!("[error] {}", v.to_string()); } else { eprintln!("[error]"); }
|
||||
Some(Ok(VMValue::Void))
|
||||
}
|
||||
// Extern providers (env.mirbuilder / env.codegen)
|
||||
"env.mirbuilder.emit" => {
|
||||
// Guarded stub path for verify/Hakorune-primary bring-up
|
||||
if std::env::var("HAKO_V1_EXTERN_PROVIDER").ok().as_deref() == Some("1") {
|
||||
return Some(Ok(VMValue::String(String::new())));
|
||||
}
|
||||
if args.is_empty() { return Some(Err(VMError::InvalidInstruction("env.mirbuilder.emit expects 1 arg".into()))); }
|
||||
let program_json = match self.reg_load(args[0]) { Ok(v) => v.to_string(), Err(e) => return Some(Err(e)) };
|
||||
let res = match crate::host_providers::mir_builder::program_json_to_mir_json(&program_json) {
|
||||
@ -43,6 +57,10 @@ impl MirInterpreter {
|
||||
Some(res)
|
||||
}
|
||||
"env.codegen.emit_object" => {
|
||||
// Guarded stub path for verify/Hakorune-primary bring-up
|
||||
if std::env::var("HAKO_V1_EXTERN_PROVIDER").ok().as_deref() == Some("1") {
|
||||
return Some(Ok(VMValue::String(String::new())));
|
||||
}
|
||||
if args.is_empty() { return Some(Err(VMError::InvalidInstruction("env.codegen.emit_object expects 1 arg".into()))); }
|
||||
let mir_json = match self.reg_load(args[0]) { Ok(v) => v.to_string(), Err(e) => return Some(Err(e)) };
|
||||
let opts = crate::host_providers::llvm_codegen::Opts {
|
||||
|
||||
Reference in New Issue
Block a user