From e4a46c31bf2db5be5730e2302bd8d349250f179d Mon Sep 17 00:00:00 2001 From: pjh456 <147148383@qq.com> Date: Mon, 29 Jun 2026 21:37:37 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20run=20--repeat=20N=20=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E5=8D=95=E8=BF=9B=E7=A8=8B=E5=86=85=E5=A4=9A=E6=AC=A1=20eval?= =?UTF-8?q?=20=E5=A4=8D=E7=94=A8=20Kernel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit OxideJS 架构优势: 一个 Kernel + VmPool 跑 N 次 eval, arena 每轮 O(1) reset, 内存稳定不增长 (cherry picked from commit 05d0c25aba419fa31e22b8bc325cc4b08de6c403) --- crates/oxide_cli/src/main.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/crates/oxide_cli/src/main.rs b/crates/oxide_cli/src/main.rs index 796f3d53..8fed07bc 100644 --- a/crates/oxide_cli/src/main.rs +++ b/crates/oxide_cli/src/main.rs @@ -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 {