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:
nyash-codex
2025-11-04 16:33:04 +09:00
parent 5a1bb549a7
commit 30aa39f50b
270 changed files with 4320 additions and 758 deletions

View File

@ -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 {