diff --git a/Cargo.lock b/Cargo.lock index c3f7de35..e59f89b9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1160,7 +1160,7 @@ dependencies = [ [[package]] name = "oxide_builtins" -version = "0.14.2" +version = "0.14.3" dependencies = [ "chrono", "fast-float", @@ -1185,7 +1185,7 @@ dependencies = [ [[package]] name = "oxide_bytecode" -version = "0.14.2" +version = "0.14.3" dependencies = [ "num-bigint", "oxide_log", @@ -1193,7 +1193,7 @@ dependencies = [ [[package]] name = "oxide_cfg" -version = "0.14.2" +version = "0.14.3" dependencies = [ "oxide_bytecode", "oxide_emit", @@ -1204,7 +1204,7 @@ dependencies = [ [[package]] name = "oxide_cli" -version = "0.14.2" +version = "0.14.3" dependencies = [ "ansi_term", "bumpalo", @@ -1226,7 +1226,7 @@ dependencies = [ [[package]] name = "oxide_code_cache" -version = "0.14.2" +version = "0.14.3" dependencies = [ "lru", "oxide_bytecode", @@ -1235,7 +1235,7 @@ dependencies = [ [[package]] name = "oxide_compiler" -version = "0.14.2" +version = "0.14.3" dependencies = [ "oxide_bytecode", "oxide_cfg", @@ -1255,7 +1255,7 @@ dependencies = [ [[package]] name = "oxide_dce" -version = "0.14.2" +version = "0.14.3" dependencies = [ "oxide_bytecode", "oxide_cfg", @@ -1269,7 +1269,7 @@ dependencies = [ [[package]] name = "oxide_emit" -version = "0.14.2" +version = "0.14.3" dependencies = [ "num-bigint", "oxc_allocator", @@ -1284,7 +1284,7 @@ dependencies = [ [[package]] name = "oxide_engine" -version = "0.14.2" +version = "0.14.3" dependencies = [ "oxide_bytecode", "oxide_compiler", @@ -1296,7 +1296,7 @@ dependencies = [ [[package]] name = "oxide_ir" -version = "0.14.2" +version = "0.14.3" dependencies = [ "oxide_bytecode", "oxide_log", @@ -1305,7 +1305,7 @@ dependencies = [ [[package]] name = "oxide_kernel" -version = "0.14.2" +version = "0.14.3" dependencies = [ "bumpalo", "dashmap", @@ -1319,7 +1319,7 @@ dependencies = [ [[package]] name = "oxide_liveness" -version = "0.14.2" +version = "0.14.3" dependencies = [ "oxide_bytecode", "oxide_cfg", @@ -1331,7 +1331,7 @@ dependencies = [ [[package]] name = "oxide_log" -version = "0.14.2" +version = "0.14.3" dependencies = [ "tracing", "tracing-appender", @@ -1340,7 +1340,7 @@ dependencies = [ [[package]] name = "oxide_parser" -version = "0.14.2" +version = "0.14.3" dependencies = [ "oxc_allocator", "oxc_ast", @@ -1355,7 +1355,7 @@ dependencies = [ [[package]] name = "oxide_regalloc" -version = "0.14.2" +version = "0.14.3" dependencies = [ "oxide_bytecode", "oxide_cfg", @@ -1371,7 +1371,7 @@ dependencies = [ [[package]] name = "oxide_runtime_api" -version = "0.14.2" +version = "0.14.3" dependencies = [ "num-bigint", "num-traits", @@ -1384,7 +1384,7 @@ dependencies = [ [[package]] name = "oxide_test262" -version = "0.14.2" +version = "0.14.3" dependencies = [ "oxide_bytecode", "oxide_compiler", @@ -1402,7 +1402,7 @@ dependencies = [ [[package]] name = "oxide_types" -version = "0.14.2" +version = "0.14.3" dependencies = [ "bumpalo", "dashmap", @@ -1415,7 +1415,7 @@ dependencies = [ [[package]] name = "oxide_vm" -version = "0.14.2" +version = "0.14.3" dependencies = [ "bumpalo", "chrono", diff --git a/Cargo.toml b/Cargo.toml index d88e7740..452a8f48 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,7 +23,7 @@ members = [ ] [workspace.package] -version = "0.14.2" +version = "0.14.3" edition = "2021" license = "MIT" rust-version = "1.80" diff --git a/crates/oxide_test262/src/config.rs b/crates/oxide_test262/src/config.rs index 3eda7b19..6d4e5f30 100644 --- a/crates/oxide_test262/src/config.rs +++ b/crates/oxide_test262/src/config.rs @@ -95,7 +95,7 @@ impl RunConfig { \x20 OXIDE_TEST262_CHUNK_SIZE tests per child in chunked mode\n\ \x20 OXIDE_TEST262_CHILD_CHUNK marks a spawned child as chunk worker (any value)\n\ \x20 OXIDE_TEST262_ALLOW_FAIL_EXIT child may exit 1 on fail (any value)\n\ - \x20 OXIDE_TEST262_KERNEL_BATCH kernel rebuilds every N tests (default 256, kept under the 512 realm bound)\n\ + \x20 OXIDE_TEST262_KERNEL_BATCH kernel rebuilds every N tests (default 256, clamped to the 512 realm bound)\n\ \x20 OXIDE_TEST262_LOG_LEVEL runner log level (default info)\n\ \x20 OXIDE_SKIP_UNTIL skip test indexes below N (chunking/supervise resume)\n\ \x20 OXIDE_MAX_TESTS run at most N tests after skip point" diff --git a/crates/oxide_test262/src/main.rs b/crates/oxide_test262/src/main.rs index 5aec3c27..cfa9b7a5 100644 --- a/crates/oxide_test262/src/main.rs +++ b/crates/oxide_test262/src/main.rs @@ -29,6 +29,10 @@ use runner::{build_runner_engine, process_path, CURRENT_TEST_PATH}; use stats::RunStats; use supervise::run_supervised; +/// kernel 重建批次的上界:realm 编号受属性键符号空间约束须小于 512, +/// 单个 kernel 生命周期至多创建 512 个 Vm;用户配置超此值时钳到该上界。 +const MAX_KERNEL_BATCH: usize = 512; + /// 程序入口:安装带当前测试路径的 panic hook,并在大栈线程上运行测试。 fn main() { // 安装 panic hook,打印崩溃发生时正在运行的测试。 @@ -174,11 +178,13 @@ fn run_tests() -> bool { .map(|n| n.min(total)) .unwrap_or(total); // 缺省 256:每 kernel 生命周期 realm 计数不超 512 上界(属性键符号空间约束), - // 留一倍余量防重建边界 off-by-one 触发 debug 断言。 + // 留一倍余量防重建边界 off-by-one 触发 debug 断言;用户配置超上界时钳到 + // MAX_KERNEL_BATCH(断言要求编号 < 512,即每 kernel 生命周期至多 512 个 Vm)。 let kernel_batch = std::env::var("OXIDE_TEST262_KERNEL_BATCH") .ok() .and_then(|s| s.parse::().ok()) .filter(|&n| n > 0) + .map(|n| n.min(MAX_KERNEL_BATCH)) .unwrap_or(256); let chunk_size = std::env::var("OXIDE_TEST262_CHUNK_SIZE") .ok()