feat: run --repeat N 支持单进程内多次 eval 复用 Kernel

OxideJS 架构优势: 一个 Kernel + VmPool 跑 N 次 eval,
arena 每轮 O(1) reset, 内存稳定不增长

(cherry picked from commit 05d0c25aba419fa31e22b8bc325cc4b08de6c403)
This commit is contained in:
2026-06-29 21:37:37 +08:00
parent 75525cbeef
commit e4a46c31bf
+13 -2
View File
@@ -42,6 +42,8 @@ enum Commands {
},
Run {
file: String,
#[arg(long, default_value = "1")]
repeat: u64,
},
Compile {
#[arg(short = 'e')]
@@ -78,10 +80,19 @@ fn main() -> ExitCode {
let pool = make_pool(&kernel);
eval(&code, &kernel, &pool)
}
Some(Commands::Run { file }) => {
Some(Commands::Run { file, repeat }) => {
let kernel = make_kernel(cli.verbose, cli.quiet);
let pool = make_pool(&kernel);
run(&file, &kernel, &pool)
for n in 0..repeat {
let code = run(&file, &kernel, &pool);
if code != ExitCode::SUCCESS && code != ExitCode::FAILURE {
return code;
}
if n + 1 < repeat {
eprintln!("[oxide] iteration {}/{} done", n + 1, repeat);
}
}
ExitCode::SUCCESS
}
Some(Commands::Compile { expr, file }) => compile(expr, file),
Some(Commands::Bench {