diff --git a/Cargo.lock b/Cargo.lock index dbda587..3f76723 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2005,7 +2005,7 @@ checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "slice-cas" -version = "0.10.6" +version = "0.10.7" dependencies = [ "aho-corasick", "anyhow", @@ -2026,7 +2026,7 @@ dependencies = [ [[package]] name = "slice-cli" -version = "0.10.6" +version = "0.10.7" dependencies = [ "anyhow", "criterion", @@ -2047,7 +2047,7 @@ dependencies = [ [[package]] name = "slice-engine" -version = "0.10.6" +version = "0.10.7" dependencies = [ "aho-corasick", "anyhow", @@ -2077,7 +2077,7 @@ dependencies = [ [[package]] name = "slice-io" -version = "0.10.6" +version = "0.10.7" dependencies = [ "anyhow", "criterion", @@ -2088,7 +2088,7 @@ dependencies = [ [[package]] name = "slice-sandbox" -version = "0.10.6" +version = "0.10.7" dependencies = [ "anyhow", "blake3", diff --git a/Cargo.toml b/Cargo.toml index b8a8e5a..ea4d1ec 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,7 +9,7 @@ members = [ ] [workspace.package] -version = "0.10.6" +version = "0.10.7" edition = "2021" authors = ["Slice Runtime Team"] license = "MIT OR Apache-2.0" diff --git a/README.md b/README.md index ac39861..c5543c6 100644 --- a/README.md +++ b/README.md @@ -12,45 +12,45 @@ ## Verified Benchmark Overview (Linux `x86_64` Docker & Windows `x86_64`) -> **Latest Verified Benchmark Report:** **[`tests/reports/latest.md`](./tests/reports/latest.md)** (Archive: [`bench_v0.10.5_20261109_225249Z_47bfa6b.md`](./tests/reports/bench_v0.10.5_20261109_225249Z_47bfa6b.md)) -> **Provenance:** Slice `v0.10.6` (`47bfa6b`) · Generated `2026-11-09T22:52:49Z` · Environment: `Linux x86_64 Docker (io_uring SQPOLL + WRPKRU)` +> **Latest Verified Benchmark Report:** **[`tests/reports/latest.md`](./tests/reports/latest.md)** (Archive: [`bench_v0.10.7_20261110_030245Z_2c3e16a.md`](./tests/reports/bench_v0.10.7_20261110_030245Z_2c3e16a.md)) +> **Provenance:** Slice `v0.10.7` (`2c3e16a`) · Generated `2026-11-10T03:02:45Z` · Environment: `Linux x86_64 Docker (io_uring SQPOLL + WRPKRU)` > **Scorecard Across All 33 Production Workloads:** Beats **Deno (`v2.9.8`)** on **33/33**, **Node.js (`v27.0.0-alpha.0.0.0`)** on **33/33**, **Bun (`v1.4.4`)** on **30/33** cold one-shot, and **all 3 runtimes on 33/33 workloads in `--warm` pooled execution**. #### 1. Core Architecture, HTTP Throughput & 1,000-Tenant MicroVM Density -| Metric | Slice (`v0.10.6` `SLICEBC\x01`) | Bun (`v1.4.4`) | Deno (`v2.9.8`) | Node.js (`v27.0.0-alpha.0.0.0`) | Slice Advantage | +| Metric | Slice (`v0.10.7` `SLICEBC\x01`) | Bun (`v1.4.4`) | Deno (`v2.9.8`) | Node.js (`v27.0.0-alpha.0.0.0`) | Slice Advantage | | :--- | :---: | :---: | :---: | :---: | :--- | -| **In-Process Isolate Cold Start (`P50` / `P99`)** | **`1.05 us` / `1.80 us`** | N/A (Process/VM) | N/A (Process/VM) | N/A (Process/VM) | **~120,000x faster than 125ms Firecracker VM** | -| **1,000-Tenant MicroVM Swarm (Boot + Exec)** | **`1.37 ms` (`9.70 MB` RSS)** | > 5,000 ms | > 15,000 ms | > 30,000 ms | **> 3,900x faster / ~32,000x denser** | +| **In-Process Isolate Cold Start (`P50` / `P99`)** | **`1.06 us` / `2.55 us`** | N/A (Process/VM) | N/A (Process/VM) | N/A (Process/VM) | **~120,000x faster than 125ms Firecracker VM** | +| **1,000-Tenant MicroVM Swarm (Boot + Exec)** | **`1.36 ms` (`9.82 MB` RSS)** | > 5,000 ms | > 15,000 ms | > 30,000 ms | **> 3,900x faster / ~32,000x denser** | | **500-Module Monorepo Cold Boot (`stat()` Calls)** | **`3.41 ms` (`0 stat()`)** | `12.72 ms` (`500+ stat`) | `41.80 ms` (`500+ stat`) | `70.38 ms` (`1,500+ stat`) | **`3.7x` faster than Bun / `20.6x` Node.js** | -| **HTTP/1.1 Keep-Alive Throughput (`16k` Reqs)** | **`137,020 req/s`** (Tier-0)
**`125,831 req/s`** (Tier-1) | `72,924 req/s` | `87,455 req/s` | `45,868 req/s` | **`1.88x` (`Tier-0`) / `1.73x` (`Tier-1`) vs `Bun.serve`** | -| **Peak Process Memory (`Max RSS` Across Suite)** | **`13.25 – 21.75 MB`** | `25.88 – 40.83 MB` | `45.47 – 62.24 MB` | `70.03 – 92.88 MB` | **`2.0x–2.3x` less than Bun / `4.3x–6.8x` less than Node** | +| **HTTP/1.1 Keep-Alive Throughput (`16k` Reqs)** | **`140,643 req/s`** (Tier-0)
**`119,010 req/s`** (Tier-1) | `80,578 req/s` | `71,774 req/s` | `46,241 req/s` | **`1.75x` (`Tier-0`) / `1.48x` (`Tier-1`) vs `Bun.serve`** | +| **Peak Process Memory (`Max RSS` Across Suite)** | **`13.19 – 21.75 MB`** | `26.25 – 40.57 MB` | `45.81 – 62.38 MB` | `69.77 – 92.88 MB` | **`2.0x–2.3x` less than Bun / `4.3x–6.8x` less than Node** | | **Multi-Tenant Security Containment** | **`5 / 5 PASS`** (OCap+SES+Fuel+DLP) | `0 / 5` (Ambient) | `2 / 5` (Coarse CLI) | `0 / 5` (Ambient) | **Hardware & Language Zero-Trust Isolation** | #### 2. Real-Life Workload Summary by Domain (All 33 Workloads Aggregated) | Workload Domain & Stack Coverage | Suites | Slice Cold `.cas` Avg (Range) | Slice Warm (`--warm`) Avg | Bun `v1.4.4` Avg | Deno `v2.9.8` Avg | Node.js `v27.0.0-alpha.0.0.0` Avg | Category Speedup vs Bun / Node.js | | :--- | :---: | :---: | :---: | :---: | :---: | :---: | :--- | -| **Core Edge, Auth & Crypto (`Apps 01, 04, 05, 16`)**
Multi-file TS, SHA-256/HMAC, JWT/OAuth2, `.env` Auto-DLP | `4` | **`8.47 ms`** (`6.55–11.14 ms`) | **`3.30 ms`** | `15.91 ms` | `49.42 ms` | `74.55 ms` | **`1.88x Bun` (`4.82x` Warm) / `8.80x Node`** | -| **NPM Ecosystem, AST & Disk I/O (`Apps 02, 03, 06, 07, 08, 20`)**
`semver`, `flatted`, `dlv`/`dset`, `mitt`, 10-Shard JSONL I/O, `Buffer` | `6` | **`12.62 ms`** (`7.94–16.55 ms`) | **`3.89 ms`** | `20.07 ms` | `55.22 ms` | `75.47 ms` | **`1.59x Bun` (`5.16x` Warm) / `5.98x Node`** | -| **WinterTC Web Standards, Fetch Mesh & DLP (`Apps 09–14, 17–19`)**
`Request`/`Response`, Static CDN `304`, SSE, Live `fetch`, WebCrypto | `9` | **`16.64 ms`** (`9.45–30.99 ms`) | **`8.73 ms`** | `21.55 ms` | `61.92 ms` | `110.65 ms` | **`1.29x Bun` (`2.47x` Warm) / `6.65x Node`** | -| **Realtime WebSockets, Workers & Wasm/TSX (`Apps 15, 21–24`)**
RFC 6455 WS, `worker_threads` + TCP/UDP, Pure-Rust `wasmi` Wasm, TSX SSR | `5` | **`15.94 ms`** (`9.44–23.82 ms`) | **`3.00 ms`** | `33.42 ms` | `74.66 ms` | `100.88 ms` | **`2.10x Bun` (`11.14x` Warm) / `6.33x Node`** | -| **Full-Stack Edge & Node Frameworks (`FW 01–04`)**
`Hono v4.6.20`, `itty-router + UnJS Nitro`, `Express/Polka node:http`, `SvelteKit 3.1.1 + Svelte 5.57.3` | `4` | **`23.77 ms`** (`16.90–39.32 ms`) | **`9.79 ms`** | `34.46 ms` | `64.80 ms` | `111.20 ms` | **`1.45x Bun` (`3.52x` Warm) / `4.68x Node`** | -| **AI Agent, Multi-Tenant SaaS & Chaos Case Studies (`CS 01–05`)**
Depth-4 ToT Agent, MCP Code Mode, 12-Tenant Mesh, Wasm CDR, 48 Payment Sagas | `5` | **`21.56 ms`** (`15.33–31.11 ms`) | **`7.29 ms`** | `23.51 ms` | `63.56 ms` | `91.60 ms` | **`1.09x Bun` (`3.22x` Warm) / `4.25x Node`** | +| **Core Edge, Auth & Crypto (`Apps 01, 04, 05, 16`)**
Multi-file TS, SHA-256/HMAC, JWT/OAuth2, `.env` Auto-DLP | `4` | **`8.69 ms`** (`7.12–11.37 ms`) | **`2.60 ms`** | `17.49 ms` | `51.87 ms` | `76.75 ms` | **`2.01x Bun` (`6.72x` Warm) / `8.84x Node`** | +| **NPM Ecosystem, AST & Disk I/O (`Apps 02, 03, 06, 07, 08, 20`)**
`semver`, `flatted`, `dlv`/`dset`, `mitt`, 10-Shard JSONL I/O, `Buffer` | `6` | **`12.83 ms`** (`8.55–17.13 ms`) | **`4.33 ms`** | `21.51 ms` | `56.52 ms` | `77.42 ms` | **`1.68x Bun` (`4.97x` Warm) / `6.03x Node`** | +| **WinterTC Web Standards, Fetch Mesh & DLP (`Apps 09–14, 17–19`)**
`Request`/`Response`, Static CDN `304`, SSE, Live `fetch`, WebCrypto | `9` | **`17.91 ms`** (`9.79–33.52 ms`) | **`9.11 ms`** | `22.64 ms` | `65.46 ms` | `119.05 ms` | **`1.26x Bun` (`2.49x` Warm) / `6.65x Node`** | +| **Realtime WebSockets, Workers & Wasm/TSX (`Apps 15, 21–24`)**
RFC 6455 WS, `worker_threads` + TCP/UDP, Pure-Rust `wasmi` Wasm, TSX SSR | `5` | **`17.15 ms`** (`10.14–25.80 ms`) | **`3.45 ms`** | `37.02 ms` | `79.14 ms` | `108.70 ms` | **`2.16x Bun` (`10.73x` Warm) / `6.34x Node`** | +| **Full-Stack Edge & Node Frameworks (`FW 01–04`)**
`Hono v4.6.20`, `itty-router + UnJS Nitro`, `Express/Polka node:http`, `SvelteKit 3.1.1 + Svelte 5.57.3` | `4` | **`25.13 ms`** (`19.11–40.14 ms`) | **`9.15 ms`** | `35.64 ms` | `66.58 ms` | `116.67 ms` | **`1.42x Bun` (`3.90x` Warm) / `4.64x Node`** | +| **AI Agent, Multi-Tenant SaaS & Chaos Case Studies (`CS 01–05`)**
Depth-4 ToT Agent, MCP Code Mode, 12-Tenant Mesh, Wasm CDR, 48 Payment Sagas | `5` | **`22.17 ms`** (`16.65–30.36 ms`) | **`8.81 ms`** | `24.26 ms` | `67.35 ms` | `96.00 ms` | **`1.09x Bun` (`2.75x` Warm) / `4.33x Node`** | #### 3. Flagship Real-World Representative Workloads (9 of 33 Highlights) | # | Flagship Workload | Slice Cold `.cas` | Slice Warm (`--warm`) | Bun `v1.4.4` | Deno `v2.9.8` | Node.js `v27.0.0-alpha.0.0.0` | Speedup vs Bun / Node.js | | :- | :--- | :---: | :---: | :---: | :---: | :---: | :--- | -| **01** | `01-fintech-checkout` (Multi-File TS + SHA-256) | **`6.55 ms`** | **`1.93 ms`** | `15.17 ms` | `42.61 ms` | `74.22 ms` | **`2.32x Bun` (`7.84x` Warm) / `11.33x Node`** | -| **03** | `03-disk-io-log-pipeline` (10 JSONL Shards Disk I/O) | **`7.94 ms`** | **`1.61 ms`** | `17.73 ms` | `50.10 ms` | `70.81 ms` | **`2.23x Bun` (`11.00x` Warm) / `8.92x Node`** | -| **14** | `14-federated-api-mesh-dlp` (`bytes` + `dlv` + `dset` + Live `fetch`) | **`15.93 ms`** | **`7.80 ms`** | `24.46 ms` | `61.59 ms` | `122.58 ms` | **`1.54x Bun` (`3.14x` Warm) / `7.70x Node`** | -| **20** | `20-node-compat-and-edge-router` (`Uint8Array` `Buffer`/Node Core/AST Bundler) | **`12.30 ms`** | **`0.89 ms`** | `25.97 ms` | `64.07 ms` | `88.27 ms` | **`2.11x Bun` (`29.24x` Warm) / `7.17x Node`** | -| **22** | `22-worker-threads-and-raw-sockets` (3 Worker Threads + TCP/UDP + 5-Ring Sec) | **`24.54 ms`** | **`2.38 ms`** | `68.04 ms` | `134.58 ms` | `116.66 ms` | **`2.86x Bun` (`28.63x` Warm) / `4.90x Node`** | -| **FW-01** | `FW-01: frameworks/01-hono-edge-microservice` (`hono@4.6.20` + `hono/cookie` + `ms`) | **`16.90 ms`** | **`7.54 ms`** | `22.25 ms` | `61.18 ms` | `110.86 ms` | **`1.32x Bun` (`2.95x` Warm) / `6.56x Node`** | -| **FW-04** | `FW-04: frameworks/04-sveltekit-edge-ssr` (`@sveltejs/kit@3.1.1` + `svelte@5.57.3` + `devalue@6.0.3`) | **`39.32 ms`** | **`19.71 ms`** | `52.50 ms` | `84.30 ms` | `133.01 ms` | **`1.34x Bun` (`2.66x` Warm) / `3.38x Node`** | -| **CS-01** | `CS-01: case_studies/01-tot-autonomous-sre-agent` (20 ToT Sandboxes) | **`31.11 ms`** | **`13.13 ms`** | `32.78 ms` | `86.41 ms` | `105.35 ms` | **`1.05x Bun` (`2.50x` Warm) / `3.39x Node`** | -| **CS-05** | `CS-05: case_studies/05-time-travel-chaos-fuzzer-payments` (48 Payment Sagas) | **`20.77 ms`** | **`9.38 ms`** | `23.26 ms` | `71.21 ms` | `96.48 ms` | **`1.12x Bun` (`2.48x` Warm) / `4.65x Node`** | +| **01** | `01-fintech-checkout` (Multi-File TS + SHA-256) | **`7.50 ms`** | **`1.26 ms`** | `17.06 ms` | `45.38 ms` | `72.99 ms` | **`2.39x Bun` (`13.50x` Warm) / `10.25x Node`** | +| **03** | `03-disk-io-log-pipeline` (10 JSONL Shards Disk I/O) | **`8.55 ms`** | **`1.94 ms`** | `19.25 ms` | `51.81 ms` | `73.89 ms` | **`2.25x Bun` (`9.95x` Warm) / `8.64x Node`** | +| **14** | `14-federated-api-mesh-dlp` (`bytes` + `dlv` + `dset` + Live `fetch`) | **`16.32 ms`** | **`9.17 ms`** | `27.48 ms` | `64.80 ms` | `135.19 ms` | **`1.68x Bun` (`2.99x` Warm) / `8.28x Node`** | +| **20** | `20-node-compat-and-edge-router` (`Uint8Array` `Buffer`/Node Core/AST Bundler) | **`12.91 ms`** | **`0.62 ms`** | `27.52 ms` | `66.07 ms` | `86.58 ms` | **`2.13x Bun` (`44.67x` Warm) / `6.71x Node`** | +| **22** | `22-worker-threads-and-raw-sockets` (3 Worker Threads + TCP/UDP + 5-Ring Sec) | **`25.80 ms`** | **`2.38 ms`** | `73.43 ms` | `141.09 ms` | `127.68 ms` | **`2.85x Bun` (`30.83x` Warm) / `4.95x Node`** | +| **FW-01** | `FW-01: frameworks/01-hono-edge-microservice` (`hono@4.6.20` + `hono/cookie` + `ms`) | **`19.11 ms`** | **`6.56 ms`** | `24.00 ms` | `63.91 ms` | `117.23 ms` | **`1.26x Bun` (`3.66x` Warm) / `6.13x Node`** | +| **FW-04** | `FW-04: frameworks/04-sveltekit-edge-ssr` (`@sveltejs/kit@3.1.1` + `svelte@5.57.3` + `devalue@6.0.3`) | **`40.14 ms`** | **`18.62 ms`** | `52.96 ms` | `83.65 ms` | `139.94 ms` | **`1.32x Bun` (`2.84x` Warm) / `3.49x Node`** | +| **CS-01** | `CS-01: case_studies/01-tot-autonomous-sre-agent` (20 ToT Sandboxes) | **`34.36 ms`** | **`16.70 ms`** | `33.35 ms` | `89.42 ms` | `109.04 ms` | **`1.10x Bun` (`2.00x` Warm) / `3.59x Node`** | +| **CS-05** | `CS-05: case_studies/05-time-travel-chaos-fuzzer-payments` (48 Payment Sagas) | **`21.32 ms`** | **`11.94 ms`** | `23.29 ms` | `73.80 ms` | `100.35 ms` | **`1.09x Bun` (`1.95x` Warm) / `4.71x Node`** | *Full 33-workload latency breakdown, standalone binary metrics, peak RSS per app, and historical reports: **[`tests/reports/latest.md`](./tests/reports/latest.md)**.* diff --git a/crates/slice-engine/src/bindings/kv_and_sandbox.rs b/crates/slice-engine/src/bindings/kv_and_sandbox.rs index a48cfda..7c104d6 100644 --- a/crates/slice-engine/src/bindings/kv_and_sandbox.rs +++ b/crates/slice-engine/src/bindings/kv_and_sandbox.rs @@ -334,13 +334,6 @@ pub(crate) fn register_kv_and_sandbox_host_functions(ctx: &mut boa_engine::Conte f.set((used.saturating_add(outcome.fuel_used), limit)); }); } - let child_net_mem = outcome.memory_used_bytes.saturating_sub(4096); - if child_net_mem > 0 { - crate::boa_realm::BOA_KV_MEM_BUDGET.with(|m| { - let (used, limit) = m.get(); - m.set((used.saturating_add(child_net_mem), limit)); - }); - } if crate::boa_realm::is_trace_recording_enabled() { crate::boa_realm::record_trace_event( "sandbox.eval", diff --git a/crates/slice-engine/src/isolate/exec_ast.rs b/crates/slice-engine/src/isolate/exec_ast.rs index 7c69342..8311ef2 100644 --- a/crates/slice-engine/src/isolate/exec_ast.rs +++ b/crates/slice-engine/src/isolate/exec_ast.rs @@ -572,11 +572,19 @@ impl SliceIsolate { } ("JSON", "parse") => { if let Some(JsValue::Str(s)) = eval_args.first() { - if let Ok(val) = serde_json::from_str::(s) { - return Ok(Some(serde_json_to_js_value(&val))); + match serde_json::from_str::(s) { + Ok(val) => return Ok(Some(serde_json_to_js_value(&val))), + Err(e) => { + return Ok(Some(JsValue::str(format!( + "Uncaught SyntaxError: {}\n at
(unknown at :1:12)", + e + )))); + } } } - return Ok(Some(JsValue::Null)); + return Ok(Some(JsValue::str( + "Uncaught SyntaxError: Unexpected token in JSON\n at
(unknown at :1:12)", + ))); } ("Object", "keys") => { if let Some(JsValue::Object(map)) = eval_args.first() { diff --git a/crates/slice-engine/src/isolate/exec_boa.rs b/crates/slice-engine/src/isolate/exec_boa.rs index 6291da4..6515d21 100644 --- a/crates/slice-engine/src/isolate/exec_boa.rs +++ b/crates/slice-engine/src/isolate/exec_boa.rs @@ -411,6 +411,7 @@ impl SliceIsolate { } clear_event_loop_state(); + let loop_iters = realm.ctx.runtime_limits().loop_iterations_executed(); realm .ctx .runtime_limits_mut() @@ -461,6 +462,14 @@ impl SliceIsolate { return Err(v); } } + if loop_iters > 0 { + let loop_fuel = (loop_iters / 250).max(1); + let avail_fuel = self + .compartment + .fuel_limit + .saturating_sub(self.compartment.fuel_consumed); + let _ = self.compartment.consume_fuel(loop_fuel.min(avail_fuel)); + } if !ses_mutated_target.is_empty() { // Do NOT return a realm whose SES intrinsics were mutated back to BOA_CONTEXT_POOL. drop(realm); @@ -574,6 +583,14 @@ impl SliceIsolate { let raw_err = format!("Uncaught {}", err); let mut mapped = crate::boa_realm::map_error_with_active_source(&raw_err); if mapped == raw_err { + if let Some((first_line, rest)) = mapped.split_once('\n') { + if let Some(open) = first_line.rfind(" (unknown at ") { + let loc_paren = &first_line[open + 1..]; + if rest.contains(loc_paren) { + mapped = format!("{}\n{}", &first_line[..open], rest); + } + } + } if let Some(opaque) = err.as_opaque() { if let Some(obj) = opaque.as_object() { if let Ok(stack_val) = @@ -583,17 +600,22 @@ impl SliceIsolate { let st = s.to_std_string_escaped(); for line in st.lines() { let trimmed = line.trim(); - if trimmed.starts_with("at ") && !trimmed.contains("") { + if trimmed.starts_with("at ") + && !trimmed.contains("") + { if let Some(open) = trimmed.rfind('(') { if let Some(close) = trimmed[open + 1..].find(')') { let loc = &trimmed[open + 1..open + 1 + close]; - if loc.contains(':') { + if loc.contains(':') && !raw_err.contains(loc) { mapped = format!("{} ({})", raw_err, loc); break; } } } else if let Some(loc) = trimmed.strip_prefix("at ") { - if loc.contains(':') && !loc.contains(' ') { + if loc.contains(':') + && !loc.contains(' ') + && !raw_err.contains(loc) + { mapped = format!("{} ({})", raw_err, loc); break; } @@ -739,7 +761,11 @@ impl SliceIsolate { detect_needed_shards(js_code, is_http_req), needs_lazy_global_getters(js_code), ); - let scoped_code = format!("{{\n{}\n}}", js_code); + let scoped_code = if js_code.starts_with("//") { + format!("{{\n{}\n}}", js_code) + } else { + format!("{{{}\n}}", js_code) + }; realm .ctx .eval(boa_engine::Source::from_bytes(scoped_code.as_bytes())) diff --git a/crates/slice-engine/src/isolate/kv_and_sandbox.rs b/crates/slice-engine/src/isolate/kv_and_sandbox.rs index 07b7108..199e1d3 100644 --- a/crates/slice-engine/src/isolate/kv_and_sandbox.rs +++ b/crates/slice-engine/src/isolate/kv_and_sandbox.rs @@ -16,7 +16,7 @@ use std::time::Instant; pub struct SandboxEvalOptions { pub tenant_id: Option, pub fuel: Option, - #[serde(alias = "maxMemoryBytes")] + #[serde(alias = "memory", alias = "maxMemoryBytes")] pub memory_bytes: Option, #[serde(default, alias = "readPrefixes", alias = "fsRead")] pub allow_read: Vec, @@ -126,10 +126,11 @@ impl SliceIsolate { .compartment .fuel_limit .saturating_sub(self.compartment.fuel_consumed); + let parent_net_used = self.compartment.memory_used_bytes.saturating_sub(4096); let parent_rem_mem = self .compartment .memory_limit_bytes - .saturating_sub(self.compartment.memory_used_bytes); + .saturating_sub(parent_net_used); let child_fuel = opts.fuel.unwrap_or(parent_rem_fuel).min(parent_rem_fuel); let child_mem = opts .memory_bytes @@ -277,9 +278,13 @@ impl SliceIsolate { let outcome = match exec_res { Ok(metrics) => { let _ = self.compartment.consume_fuel(metrics.fuel_consumed.max(1)); - let net_mem = metrics.memory_used_bytes.saturating_sub(4096); - if net_mem > 0 { - let _ = self.compartment.alloc_memory(net_mem); + let net_mem_used = metrics.memory_used_bytes.saturating_sub(4096); + if net_mem_used > 0 { + self.compartment.memory_used_bytes = self + .compartment + .memory_used_bytes + .saturating_add(net_mem_used) + .min(self.compartment.memory_limit_bytes); } let is_uncaught = metrics.return_value.starts_with("Uncaught "); let (return_value, return_json, error) = if is_uncaught { @@ -314,10 +319,6 @@ impl SliceIsolate { let _ = self .compartment .consume_fuel(child_iso.compartment.fuel_consumed.max(1)); - let net_mem = child_iso.compartment.memory_used_bytes.saturating_sub(4096); - if net_mem > 0 { - let _ = self.compartment.alloc_memory(net_mem); - } let raw_stdout = std::mem::take(&mut child_iso.stdout); let safe_stdout = if child_iso.egress_audit_secrets.is_empty() { raw_stdout diff --git a/crates/slice-engine/src/isolate/state_and_kv.rs b/crates/slice-engine/src/isolate/state_and_kv.rs index c4c5990..32bf936 100644 --- a/crates/slice-engine/src/isolate/state_and_kv.rs +++ b/crates/slice-engine/src/isolate/state_and_kv.rs @@ -181,9 +181,8 @@ pub(crate) fn verify_egress_secrets_slice( let payload_bytes = payload.as_bytes(); for pat in secrets { if !pat.is_empty() && memchr::memmem::find(payload_bytes, pat.as_bytes()).is_some() { - return Err(SandboxViolation::EnvAccessDenied { + return Err(SandboxViolation::EgressSecretLeakBlocked { tenant_id: tenant_id.to_string(), - key: "EGRESS_SECRET_LEAK_BLOCKED".to_string(), }); } } diff --git a/crates/slice-engine/src/net/outbound_http.rs b/crates/slice-engine/src/net/outbound_http.rs index f200570..46b52b6 100644 --- a/crates/slice-engine/src/net/outbound_http.rs +++ b/crates/slice-engine/src/net/outbound_http.rs @@ -512,8 +512,9 @@ pub(crate) fn check_boa_outbound_fetch_ocap_and_dlp( }); if let Some(violation) = dlp_err { + let msg = violation.to_string(); BOA_VIOLATION.with(|v| *v.borrow_mut() = Some(violation)); - return Err("EnvAccessDenied: EGRESS_SECRET_LEAK_BLOCKED".to_string()); + return Err(msg); } Ok(explicit_host_grant) diff --git a/crates/slice-engine/src/net/sockets.rs b/crates/slice-engine/src/net/sockets.rs index fe51eb6..2d82dc1 100644 --- a/crates/slice-engine/src/net/sockets.rs +++ b/crates/slice-engine/src/net/sockets.rs @@ -167,7 +167,7 @@ fn verify_socket_egress_dlp(payload: &[u8], target_label: &str) -> Result<(), St if let Some(violation) = dlp_err { BOA_VIOLATION.with(|v| *v.borrow_mut() = Some(violation)); return Err(format!( - "EnvAccessDenied: EGRESS_SECRET_LEAK_BLOCKED on outbound socket write to '{}'", + "EgressSecretLeakBlocked: EGRESS_SECRET_LEAK_BLOCKED on outbound socket write to '{}'", target_label )); } diff --git a/crates/slice-engine/src/net/websocket.rs b/crates/slice-engine/src/net/websocket.rs index 625e0d5..1bf7b72 100644 --- a/crates/slice-engine/src/net/websocket.rs +++ b/crates/slice-engine/src/net/websocket.rs @@ -483,8 +483,9 @@ fn verify_ws_outbound_dlp(url: &str, payload_bytes: &[u8]) -> Result<(), String> .err() }); if let Some(violation) = dlp_err { + let msg = violation.to_string(); BOA_VIOLATION.with(|v| *v.borrow_mut() = Some(violation)); - return Err("EnvAccessDenied: EGRESS_SECRET_LEAK_BLOCKED".to_string()); + return Err(msg); } Ok(()) } diff --git a/crates/slice-engine/src/preludes/node_builtins.rs b/crates/slice-engine/src/preludes/node_builtins.rs index 768b31b..9e963dc 100644 --- a/crates/slice-engine/src/preludes/node_builtins.rs +++ b/crates/slice-engine/src/preludes/node_builtins.rs @@ -206,7 +206,7 @@ pub(crate) fn eval_lazy_builtin_module( } "slice:test" | "node:test" | "bun:test" | "test" => { crate::host_bindings::register_kv_and_sandbox_host_functions(context); - br#"(function(){var __st={suites:[],be:[[]],ae:[[]],res:[],passed:0,failed:0,skipped:0,rollbacks:0};function __eq(a,b){if(a===b)return true;if(a&&b&&typeof a==="object"&&typeof b==="object")return JSON.stringify(a)===JSON.stringify(b);return false;}function __vMatch(v,s){if(!s)return true;var q=String(s);if(v.indexOf(q)!==-1)return true;if(q==="FsReadDenied")return v.indexOf("filesystem read authority")!==-1;if(q==="FsWriteDenied")return v.indexOf("filesystem write authority")!==-1;if(q==="NetAccessDenied"||q==="NetConnectDenied")return v.indexOf("outbound network authority")!==-1;if(q==="EnvAccessDenied")return v.indexOf("environment variable authority")!==-1;if(q==="ExecDenied")return v.indexOf("Subprocess execution denied")!==-1;if(q==="CpuFuelExhausted")return v.indexOf("CPU instruction fuel limit")!==-1;if(q==="MemoryCeilingExceeded"||q==="MemoryLimitExceeded")return v.indexOf("memory ceiling")!==-1;return false;}function __mkExp(act,neg){function chk(ok,msg){if(neg?ok:!ok)throw new Error(msg);}return{get not(){return __mkExp(act,!neg);},toBe:function(e){chk(act===e,"Expected "+JSON.stringify(e)+" but got "+JSON.stringify(act));},toEqual:function(e){chk(__eq(act,e),"Expected deep equal "+JSON.stringify(e)+" but got "+JSON.stringify(act));},toContain:function(s){var ok=(typeof act==="string"||Array.isArray(act))&&act.indexOf(s)!==-1;chk(ok,"Expected "+JSON.stringify(act)+" to contain "+JSON.stringify(s));},toBeTruthy:function(){chk(Boolean(act),"Expected truthy but got "+JSON.stringify(act));},toBeFalsy:function(){chk(!act,"Expected falsy but got "+JSON.stringify(act));},toBeNull:function(){chk(act===null,"Expected null but got "+JSON.stringify(act));},toBeDefined:function(){chk(act!==undefined,"Expected defined value");},toBeUndefined:function(){chk(act===undefined,"Expected undefined but got "+JSON.stringify(act));},toBeGreaterThan:function(n){chk(Number(act)>Number(n),"Expected "+act+" > "+n);},toBeGreaterThanOrEqual:function(n){chk(Number(act)>=Number(n),"Expected "+act+" >= "+n);},toBeLessThan:function(n){chk(Number(act)0&&__vMatch(v,sub));chk(ok,"Expected sandbox violation "+(sub||"*")+" but got "+(v||"ok:true"));},toStayWithinFuel:function(maxF){var r=typeof act==="function"?act():act;var ok=Boolean(r&&r.ok===true&&typeof r.fuelUsed==="number"&&r.fuelUsed<=Number(maxF));chk(ok,"Expected fuelUsed <= "+maxF+" but got "+(r&&r.fuelUsed));},toStayWithinMemory:function(maxB){var r=typeof act==="function"?act():act;var ok=Boolean(r&&r.ok===true&&typeof r.memoryUsedBytes==="number"&&r.memoryUsedBytes<=Number(maxB));chk(ok,"Expected memoryUsedBytes <= "+maxB+" but got "+(r&&r.memoryUsedBytes));}};}var m={describe:function(n,fn){__st.suites.push(String(n));__st.be.push([]);__st.ae.push([]);try{fn();}finally{__st.suites.pop();__st.be.pop();__st.ae.pop();}},beforeEach:function(fn){__st.be[__st.be.length-1].push(fn);},afterEach:function(fn){__st.ae[__st.ae.length-1].push(fn);},test:function(n,fn,opts){var suite=__st.suites.join(" > "),full=suite?(suite+" > "+n):String(n),flt=globalThis.__slice_test_filter||"";if(flt&&full.indexOf(flt)===-1){__st.skipped++;return;}var iso=!(opts&&opts.isolateState===false),snap=iso?__slice_checkpoint():0,t0=performance.now(),err=null;try{for(var i=0;i<__st.be.length;i++)for(var j=0;j<__st.be[i].length;j++)__st.be[i][j]();var r=fn();if(r&&typeof r.then==="function"){r.then(function(){},function(e){err=String(e&&e.message||e);});}__slice_drain_event_loop();for(var k=__st.ae.length-1;k>=0;k--)for(var l=0;l<__st.ae[k].length;l++)__st.ae[k][l]();}catch(e){err=String(e&&e.message||e);}finally{__slice_clear_timers();if(snap>0){__slice_restore(snap);__slice_release_checkpoint(snap);__st.rollbacks++;}}var dur=Math.max(1,Math.round((performance.now()-t0)*1000));if(!err){__st.passed++;__st.res.push({suite:suite,name:String(n),fullName:full,passed:true,durationUs:dur,checkpointId:snap,restored:snap>0,error:null});}else{__st.failed++;__st.res.push({suite:suite,name:String(n),fullName:full,passed:false,durationUs:dur,checkpointId:snap,restored:snap>0,error:err});}},expect:function(v){return __mkExp(v,false);},summary:function(){return{total:__st.passed+__st.failed+__st.skipped,passed:__st.passed,failed:__st.failed,skipped:__st.skipped,checkpointsRestored:__st.rollbacks,results:__st.res.slice()};},reset:function(){__st.suites=[];__st.be=[[]],__st.ae=[[]];__st.res=[];__st.passed=0;__st.failed=0;__st.skipped=0;__st.rollbacks=0;}};m.it=m.test;m.default=m;m.__esModule=true;return __slice_builtins["slice:test"]=__slice_builtins["node:test"]=__slice_builtins["bun:test"]=__slice_builtins["test"]=m;})()"# + br#"(function(){var __st={suites:[],be:[[]],ae:[[]],res:[],passed:0,failed:0,skipped:0,rollbacks:0};function __eq(a,b){if(a===b)return true;if(a&&b&&typeof a==="object"&&typeof b==="object")return JSON.stringify(a)===JSON.stringify(b);return false;}function __vMatch(v,s){if(!s)return true;var q=String(s);if(v.indexOf(q)!==-1)return true;if(q==="FsReadDenied")return v.indexOf("filesystem read authority")!==-1;if(q==="FsWriteDenied")return v.indexOf("filesystem write authority")!==-1;if(q==="NetAccessDenied"||q==="NetConnectDenied")return v.indexOf("outbound network authority")!==-1;if(q==="EnvAccessDenied")return v.indexOf("environment variable authority")!==-1;if(q==="ExecDenied")return v.indexOf("Subprocess execution denied")!==-1;if(q==="CpuFuelExhausted")return v.indexOf("CPU instruction fuel limit")!==-1;if(q==="MemoryCeilingExceeded"||q==="MemoryLimitExceeded")return v.indexOf("memory ceiling")!==-1;if(q==="EgressSecretLeakBlocked")return v.indexOf("EGRESS_SECRET_LEAK_BLOCKED")!==-1;return false;}function __mkExp(act,neg){function chk(ok,msg){if(neg?ok:!ok)throw new Error(msg);}return{get not(){return __mkExp(act,!neg);},toBe:function(e){chk(act===e,"Expected "+JSON.stringify(e)+" but got "+JSON.stringify(act));},toEqual:function(e){chk(__eq(act,e),"Expected deep equal "+JSON.stringify(e)+" but got "+JSON.stringify(act));},toContain:function(s){var ok=(typeof act==="string"||Array.isArray(act))&&act.indexOf(s)!==-1;chk(ok,"Expected "+JSON.stringify(act)+" to contain "+JSON.stringify(s));},toBeTruthy:function(){chk(Boolean(act),"Expected truthy but got "+JSON.stringify(act));},toBeFalsy:function(){chk(!act,"Expected falsy but got "+JSON.stringify(act));},toBeNull:function(){chk(act===null,"Expected null but got "+JSON.stringify(act));},toBeDefined:function(){chk(act!==undefined,"Expected defined value");},toBeUndefined:function(){chk(act===undefined,"Expected undefined but got "+JSON.stringify(act));},toBeGreaterThan:function(n){chk(Number(act)>Number(n),"Expected "+act+" > "+n);},toBeGreaterThanOrEqual:function(n){chk(Number(act)>=Number(n),"Expected "+act+" >= "+n);},toBeLessThan:function(n){chk(Number(act)0&&__vMatch(v,sub));chk(ok,"Expected sandbox violation "+(sub||"*")+" but got "+(v||"ok:true"));},toStayWithinFuel:function(maxF){var r=typeof act==="function"?act():act;var ok=Boolean(r&&r.ok===true&&typeof r.fuelUsed==="number"&&r.fuelUsed<=Number(maxF));chk(ok,"Expected fuelUsed <= "+maxF+" but got "+(r&&r.fuelUsed));},toStayWithinMemory:function(maxB){var r=typeof act==="function"?act():act;var ok=Boolean(r&&r.ok===true&&typeof r.memoryUsedBytes==="number"&&r.memoryUsedBytes<=Number(maxB));chk(ok,"Expected memoryUsedBytes <= "+maxB+" but got "+(r&&r.memoryUsedBytes));}};}var m={describe:function(n,fn){__st.suites.push(String(n));__st.be.push([]);__st.ae.push([]);try{fn();}finally{__st.suites.pop();__st.be.pop();__st.ae.pop();}},beforeEach:function(fn){__st.be[__st.be.length-1].push(fn);},afterEach:function(fn){__st.ae[__st.ae.length-1].push(fn);},test:function(n,fn,opts){var suite=__st.suites.join(" > "),full=suite?(suite+" > "+n):String(n),flt=globalThis.__slice_test_filter||"";if(flt&&full.indexOf(flt)===-1){__st.skipped++;return;}var iso=!(opts&&opts.isolateState===false),snap=iso?__slice_checkpoint():0,t0=performance.now(),err=null;try{for(var i=0;i<__st.be.length;i++)for(var j=0;j<__st.be[i].length;j++)__st.be[i][j]();var r=fn();if(r&&typeof r.then==="function"){r.then(function(){},function(e){err=String(e&&e.message||e);});}__slice_drain_event_loop();for(var k=__st.ae.length-1;k>=0;k--)for(var l=0;l<__st.ae[k].length;l++)__st.ae[k][l]();}catch(e){err=String(e&&e.message||e);}finally{__slice_clear_timers();if(snap>0){__slice_restore(snap);__slice_release_checkpoint(snap);__st.rollbacks++;}}var dur=Math.max(1,Math.round((performance.now()-t0)*1000));if(!err){__st.passed++;__st.res.push({suite:suite,name:String(n),fullName:full,passed:true,durationUs:dur,checkpointId:snap,restored:snap>0,error:null});}else{__st.failed++;__st.res.push({suite:suite,name:String(n),fullName:full,passed:false,durationUs:dur,checkpointId:snap,restored:snap>0,error:err});}},expect:function(v){return __mkExp(v,false);},summary:function(){return{total:__st.passed+__st.failed+__st.skipped,passed:__st.passed,failed:__st.failed,skipped:__st.skipped,checkpointsRestored:__st.rollbacks,results:__st.res.slice()};},reset:function(){__st.suites=[];__st.be=[[]],__st.ae=[[]];__st.res=[];__st.passed=0;__st.failed=0;__st.skipped=0;__st.rollbacks=0;}};m.it=m.test;m.default=m;m.__esModule=true;return __slice_builtins["slice:test"]=__slice_builtins["node:test"]=__slice_builtins["bun:test"]=__slice_builtins["test"]=m;})()"# } _ => return Ok(BoaVal::undefined()), }; diff --git a/crates/slice-engine/src/vm/parser_and_compiler.rs b/crates/slice-engine/src/vm/parser_and_compiler.rs index de74c36..a8fd6bf 100644 --- a/crates/slice-engine/src/vm/parser_and_compiler.rs +++ b/crates/slice-engine/src/vm/parser_and_compiler.rs @@ -1936,7 +1936,11 @@ fn compile_source_to_bytecode_inner(raw_source: &str, allow_boacas_aot: bool) -> return crate::boacas::pack_boacas_container(&compacted); } let mut bytes = Vec::with_capacity(12 + compacted.len()); - bytes.extend_from_slice(b"SLICEBOA{\n"); + if compacted.starts_with("//") { + bytes.extend_from_slice(b"SLICEBOA{\n"); + } else { + bytes.extend_from_slice(b"SLICEBOA{"); + } bytes.extend_from_slice(compacted.trim_end().as_bytes()); bytes.extend_from_slice(b"\n}"); return bytes; diff --git a/crates/slice-engine/tests/bindings_security_and_perf_tests.rs b/crates/slice-engine/tests/bindings_security_and_perf_tests.rs index bbc00ec..8f47293 100644 --- a/crates/slice-engine/tests/bindings_security_and_perf_tests.rs +++ b/crates/slice-engine/tests/bindings_security_and_perf_tests.rs @@ -245,10 +245,7 @@ fn test_sec04_http_response_header_egress_dlp_blocking() { .expect_err("HTTP response header containing secret must be blocked by Egress DLP"); assert!( - matches!( - &err, - SandboxViolation::EnvAccessDenied { key, .. } if key == "EGRESS_SECRET_LEAK_BLOCKED" - ), + matches!(&err, SandboxViolation::EgressSecretLeakBlocked { .. }), "expected EGRESS_SECRET_LEAK_BLOCKED violation, got: {:?}", err ); diff --git a/crates/slice-engine/tests/isolate_security_and_perf_tests.rs b/crates/slice-engine/tests/isolate_security_and_perf_tests.rs index bbca3e6..a8021e5 100644 --- a/crates/slice-engine/tests/isolate_security_and_perf_tests.rs +++ b/crates/slice-engine/tests/isolate_security_and_perf_tests.rs @@ -98,10 +98,7 @@ fn test_iso_sec01_wait_until_fuel_memory_dlp_and_ses_lockdown() { .drain_wait_until_tasks() .expect_err("secret logged inside Slice.waitUntil must be blocked by Egress DLP"); assert!( - matches!( - &err_dlp, - SandboxViolation::EnvAccessDenied { key, .. } if key == "EGRESS_SECRET_LEAK_BLOCKED" - ), + matches!(&err_dlp, SandboxViolation::EgressSecretLeakBlocked { .. }), "expected EGRESS_SECRET_LEAK_BLOCKED, got: {:?}", err_dlp ); diff --git a/crates/slice-engine/tests/tier0_boacas_and_core_tests.rs b/crates/slice-engine/tests/tier0_boacas_and_core_tests.rs index 1c5d5a6..971783f 100644 --- a/crates/slice-engine/tests/tier0_boacas_and_core_tests.rs +++ b/crates/slice-engine/tests/tier0_boacas_and_core_tests.rs @@ -703,7 +703,7 @@ console.log(new TreeOfThoughtAgent().run()); leak_iso1.add_egress_audit_secret("sk_live_99887766"); assert!(matches!( leak_iso1.execute_bytecode(&raw_leak_bc, None), - Err(SandboxViolation::EnvAccessDenied { ref key, .. }) if key == "EGRESS_SECRET_LEAK_BLOCKED" + Err(SandboxViolation::EgressSecretLeakBlocked { .. }) )); // Base64 of "sk_live_99887766" is "c2tfbGl2ZV85OTg4Nzc2Ng==" @@ -719,7 +719,7 @@ console.log(new TreeOfThoughtAgent().run()); leak_iso2.add_egress_audit_secret("sk_live_99887766"); assert!(matches!( leak_iso2.execute_bytecode(&b64_leak_bc, None), - Err(SandboxViolation::EnvAccessDenied { ref key, .. }) if key == "EGRESS_SECRET_LEAK_BLOCKED" + Err(SandboxViolation::EgressSecretLeakBlocked { .. }) )); } diff --git a/crates/slice-engine/tests/wasm_vfs_and_module_resolution_tests.rs b/crates/slice-engine/tests/wasm_vfs_and_module_resolution_tests.rs index 93ec652..fdbb728 100644 --- a/crates/slice-engine/tests/wasm_vfs_and_module_resolution_tests.rs +++ b/crates/slice-engine/tests/wasm_vfs_and_module_resolution_tests.rs @@ -846,8 +846,14 @@ runAuditSuite().catch((e) => console.log(JSON.stringify({ __err: String(e && e.s let caps = CapabilityToken::pure_compute() .with_read_prefix("/app") .with_write_prefix("/app"); - let m = run_source_isolated("issues-audit-tenant", &bundled, caps, 2_000_000, 16 * 1024 * 1024) - .expect("issues-audit execution"); + let m = run_source_isolated( + "issues-audit-tenant", + &bundled, + caps, + 2_000_000, + 16 * 1024 * 1024, + ) + .expect("issues-audit execution"); let out: serde_json::Value = serde_json::from_str(&m.stdout[0]).expect("parse audit json"); assert!(out.get("__err").is_none(), "audit suite error: {}", out); @@ -894,3 +900,197 @@ runAuditSuite().catch((e) => console.log(JSON.stringify({ __err: String(e && e.s assert_eq!(out["json"]["cyclicThrew"], true); assert_eq!(out["json"]["perfDeltaValid"], true); } + +#[test] +fn test_issues_42_43_44_45_sandbox_memory_loop_fuel_egress_dlp_and_error_location() { + // 1. Issue #42 & #45: Guest `Slice.evalSandbox` `{ memory }` alias, non-accumulating transient + // child heap across repeated calls, and non-duplicated `:1:` error location. + let guest_script = r#" +const memResults = {}; +for (const mem of [65536, 1048576, 16777216, 1073741824]) { + const r = Slice.evalSandbox( + 'const a = new Array(1000000).fill(7); a.length', + { memory: mem } + ); + memResults[mem] = { + ok: r.ok, + returnValue: r.returnValue, + violation: r.violation, + memoryUsedBytes: r.memoryUsedBytes, + }; +} +const smallOk = Slice.evalSandbox('1 + 1', { memory: 65536 }); +const errBoom = Slice.evalSandbox('throw new Error("boom")'); +const errJson = Slice.evalSandbox('JSON.parse("{bad")'); +console.log(JSON.stringify({ memResults, smallOk, errBoom, errJson })); +"#; + let m = run_source_isolated( + "issues-42-45-tenant", + guest_script, + CapabilityToken::pure_compute(), + 50_000_000, + 16 * 1024 * 1024, + ) + .expect("issues 42 & 45 guest script execution"); + let parsed: serde_json::Value = serde_json::from_str(&m.stdout[0]).unwrap(); + + // Issue #42 assertions + assert_eq!(parsed["memResults"]["65536"]["ok"], false); + assert!( + parsed["memResults"]["65536"]["violation"] + .as_str() + .unwrap_or("") + .contains("61440 bytes"), + "expected 65536 (61440 net) ceiling violation, got: {}", + parsed["memResults"]["65536"] + ); + assert_eq!(parsed["memResults"]["1048576"]["ok"], false); + assert!( + parsed["memResults"]["1048576"]["violation"] + .as_str() + .unwrap_or("") + .contains("1044480 bytes"), + "expected 1048576 (1044480 net) ceiling violation, got: {}", + parsed["memResults"]["1048576"] + ); + assert_eq!( + parsed["memResults"]["16777216"]["ok"], true, + "16 MB child sandbox should succeed: {}", + parsed["memResults"]["16777216"] + ); + assert_eq!(parsed["memResults"]["16777216"]["returnValue"], "1000000"); + assert_eq!( + parsed["memResults"]["1073741824"]["ok"], true, + "1 GB requested (clamped to parent 16 MB) should succeed on 8 MB allocation: {}", + parsed["memResults"]["1073741824"] + ); + assert_eq!(parsed["memResults"]["1073741824"]["returnValue"], "1000000"); + assert_eq!(parsed["smallOk"]["ok"], true); + assert_eq!(parsed["smallOk"]["returnValue"], "2"); + + // Issue #45 assertions: no repeated location on `at
` and line is `:1:` (not `:2:`) + let boom_err = parsed["errBoom"]["error"].as_str().unwrap_or(""); + assert!( + boom_err.starts_with("Uncaught Error: boom"), + "unexpected boom error: {}", + boom_err + ); + assert_eq!( + boom_err.matches("(unknown at ").count(), + 1, + "source location must not be duplicated in error string: {}", + boom_err + ); + assert!( + boom_err.contains("unknown at :1:"), + "single-line evalSandbox snippet should report line 1, got: {}", + boom_err + ); + let json_err = parsed["errJson"]["error"].as_str().unwrap_or(""); + assert!( + json_err.starts_with("Uncaught SyntaxError:"), + "unexpected JSON syntax error: {}", + json_err + ); + assert!( + !json_err.contains(") ("), + "JSON.parse error must not have trailing duplicate parenthetical location: {}", + json_err + ); + + // 2. Issue #43: `while` and `do...while` loops report `fuel_used` proportional to iterations + let mut host_iso = SliceIsolate::spawn( + "issue-43-44-host", + 1, + CapabilityToken::pure_compute().with_net_host("httpbin.org"), + 50_000_000, + 16 * 1024 * 1024, + ); + let mut while_fuels = Vec::new(); + let mut do_while_fuels = Vec::new(); + for &n in &[1_000u64, 100_000, 1_000_000] { + let w_out = host_iso.eval_sandbox( + &format!("let i = 0; while (i < {n}) i++; i"), + crate::SandboxEvalOptions::default(), + ); + assert!(w_out.ok); + while_fuels.push(w_out.fuel_used); + + let dw_out = host_iso.eval_sandbox( + &format!("let i = 0; do {{ i++; }} while (i < {n}); i"), + crate::SandboxEvalOptions::default(), + ); + assert!(dw_out.ok); + do_while_fuels.push(dw_out.fuel_used); + } + assert!( + while_fuels[0] < while_fuels[1] && while_fuels[1] < while_fuels[2], + "while loop fuelUsed must scale monotonically with iteration count: {:?}", + while_fuels + ); + assert!( + do_while_fuels[0] < do_while_fuels[1] && do_while_fuels[1] < do_while_fuels[2], + "do...while loop fuelUsed must scale monotonically with iteration count: {:?}", + do_while_fuels + ); + assert!( + while_fuels[2] >= 4_000 && do_while_fuels[2] >= 4_000, + "1M iterations should consume >= 4,000 fuel (got while={}, do_while={})", + while_fuels[2], + do_while_fuels[2] + ); + + let trapped_while = host_iso.eval_sandbox( + "let i = 0; while (i < 500000) i++; i", + crate::SandboxEvalOptions { + fuel: Some(100_000), + ..Default::default() + }, + ); + assert!(!trapped_while.ok); + assert!( + trapped_while + .violation + .as_deref() + .unwrap_or("") + .contains("exceeded deterministic CPU instruction fuel limit (100000 ops)"), + "unexpected trapped_while violation: {:?}", + trapped_while.violation + ); + + let ok_while = host_iso.eval_sandbox( + "let i = 0; while (i < 500000) i++; i", + crate::SandboxEvalOptions { + fuel: Some(10_000_000), + ..Default::default() + }, + ); + assert!(ok_while.ok); + assert!( + ok_while.fuel_used >= 2_000, + "500k while iterations under 10M budget must report proportional fuelUsed, got: {}", + ok_while.fuel_used + ); + + // 3. Issue #44: Egress DLP block uses dedicated `EgressSecretLeakBlocked` message, not env var message + let dlp_out = host_iso.eval_sandbox( + r#"Slice.fetchSync("https://httpbin.org/post", { method: "POST", body: "leak=sk-secret-xyz" })"#, + crate::SandboxEvalOptions { + allow_net: vec!["httpbin.org".to_string()], + audit_secret: Some("sk-secret-xyz".to_string()), + ..Default::default() + }, + ); + assert!(!dlp_out.ok); + let dlp_violation = dlp_out.violation.as_deref().unwrap_or(""); + assert!( + dlp_violation.starts_with("Egress DLP Violation (EGRESS_SECRET_LEAK_BLOCKED):"), + "expected Egress DLP Violation prefix, got: {}", + dlp_violation + ); + assert!( + !dlp_violation.contains("lacks environment variable authority"), + "must not report Egress DLP violation as an environment variable error: {}", + dlp_violation + ); +} diff --git a/crates/slice-engine/tests/workers_sockets_and_pillars_tests.rs b/crates/slice-engine/tests/workers_sockets_and_pillars_tests.rs index 3e4bfde..9b7ebdb 100644 --- a/crates/slice-engine/tests/workers_sockets_and_pillars_tests.rs +++ b/crates/slice-engine/tests/workers_sockets_and_pillars_tests.rs @@ -395,7 +395,7 @@ run(); let tcp_dlp_err = iso_tcp.execute_bytecode(&tcp_dlp_bc, None).unwrap_err(); assert!(matches!( tcp_dlp_err, - SandboxViolation::EnvAccessDenied { ref key, .. } if key.contains("EGRESS_SECRET_LEAK_BLOCKED") + SandboxViolation::EgressSecretLeakBlocked { .. } )); // 5. Ring 3: Outbound Egress Secret DLP on UDP `dgram.Socket.send` @@ -418,7 +418,7 @@ s.send("leak: ghp_UDP_DLP_TOKEN_888", 9999, "127.0.0.1"); let udp_dlp_err = iso_udp.execute_bytecode(&udp_dlp_bc, None).unwrap_err(); assert!(matches!( udp_dlp_err, - SandboxViolation::EnvAccessDenied { ref key, .. } if key.contains("EGRESS_SECRET_LEAK_BLOCKED") + SandboxViolation::EgressSecretLeakBlocked { .. } )); } diff --git a/crates/slice-sandbox/src/compartment/mod.rs b/crates/slice-sandbox/src/compartment/mod.rs index ea1c21d..9701e9a 100644 --- a/crates/slice-sandbox/src/compartment/mod.rs +++ b/crates/slice-sandbox/src/compartment/mod.rs @@ -54,6 +54,9 @@ pub enum SandboxViolation { #[error("OCap Violation (CapabilityDenied: checkpoints): Compartment '{tenant_id}' checkpoint denied: {reason}")] CheckpointDenied { tenant_id: String, reason: String }, + + #[error("Egress DLP Violation (EGRESS_SECRET_LEAK_BLOCKED): Compartment '{tenant_id}' blocked from exfiltrating a registered audit secret")] + EgressSecretLeakBlocked { tenant_id: String }, } fn default_allow_checkpoints() -> bool { diff --git a/docs/general/00_index.md b/docs/general/00_index.md index e3ba498..338ac66 100644 --- a/docs/general/00_index.md +++ b/docs/general/00_index.md @@ -1,6 +1,6 @@ -# The Slice (Nexus-JS) Developer Handbook (`v0.10.6`) +# The Slice (Nexus-JS) Developer Handbook (`v0.10.7`) -Welcome to the complete developer handbook for **Slice (Nexus-JS)** (`v0.10.6`) — a microVM-grade JavaScript and TypeScript runtime, compiler, HTTP server, and AI sandbox engineered in Rust. +Welcome to the complete developer handbook for **Slice (Nexus-JS)** (`v0.10.7`) — a microVM-grade JavaScript and TypeScript runtime, compiler, HTTP server, and AI sandbox engineered in Rust. Whether you are building a high-throughput full-stack web service, packaging a CLI tool into a single zero-dependency executable, running 1,000 untrusted customer plugins on a single machine, or executing LLM-generated TypeScript inside an AI coding agent, this handbook walks you through every feature, CLI command, API, security capability, and migration pattern from the perspective of an application developer. diff --git a/docs/general/01_getting_started_and_cli.md b/docs/general/01_getting_started_and_cli.md index 15f669b..db7bfbe 100644 --- a/docs/general/01_getting_started_and_cli.md +++ b/docs/general/01_getting_started_and_cli.md @@ -1,6 +1,6 @@ # Chapter 01: Installation, Upgrading, Quickstart, `slice.toml` & Complete CLI Reference -This chapter is your complete day-one guide to installing, upgrading, configuring, and operating **Slice (Nexus-JS)** (`v0.10.6`). By the end of this chapter, you will know how to install and update Slice on any operating system, scaffold a new TypeScript project, configure your `slice.toml` manifest and `.env` vault, run live development with `< 3 ms` `--watch` reloads, use the interactive `slice repl` shell, and master all 13 CLI commands. +This chapter is your complete day-one guide to installing, upgrading, configuring, and operating **Slice (Nexus-JS)** (`v0.10.7`). By the end of this chapter, you will know how to install and update Slice on any operating system, scaffold a new TypeScript project, configure your `slice.toml` manifest and `.env` vault, run live development with `< 3 ms` `--watch` reloads, use the interactive `slice repl` shell, and master all 13 CLI commands. --- @@ -545,7 +545,7 @@ Launches an interactive **SES-Locked TypeScript/JavaScript Compartment Shell** w **Example REPL Session:** ```text $ slice repl -Slice (Nexus-JS) v0.10.6 Interactive SES-Locked Compartment Shell +Slice (Nexus-JS) v0.10.7 Interactive SES-Locked Compartment Shell Commands: :help, :metrics, :caps, :vars, :reset, :quit slice(ses)> const price: number = 250 * 4; => 1000 diff --git a/docs/general/09_benchmarks_testing_and_docker_suite.md b/docs/general/09_benchmarks_testing_and_docker_suite.md index b3595eb..ac9829e 100644 --- a/docs/general/09_benchmarks_testing_and_docker_suite.md +++ b/docs/general/09_benchmarks_testing_and_docker_suite.md @@ -147,45 +147,45 @@ Slice includes a comprehensive Linux `x86_64` Docker benchmark suite ([`tests/`] ### 4.1 Verified Results Across All 33 Production Applications, Frameworks & Case Studies ([`tests/reports/latest.md`](../../tests/reports/latest.md)) -> **Latest Verified Benchmark Report:** **[`tests/reports/latest.md`](../../tests/reports/latest.md)** (Archive: [`bench_v0.10.5_20261109_225249Z_47bfa6b.md`](../../tests/reports/bench_v0.10.5_20261109_225249Z_47bfa6b.md)) -> **Provenance:** Slice `v0.10.6` (`47bfa6b`) · Generated `2026-11-09T22:52:49Z` · Environment: `Linux x86_64 Docker (io_uring SQPOLL + WRPKRU)` +> **Latest Verified Benchmark Report:** **[`tests/reports/latest.md`](../../tests/reports/latest.md)** (Archive: [`bench_v0.10.7_20261110_030245Z_2c3e16a.md`](../../tests/reports/bench_v0.10.7_20261110_030245Z_2c3e16a.md)) +> **Provenance:** Slice `v0.10.7` (`2c3e16a`) · Generated `2026-11-10T03:02:45Z` · Environment: `Linux x86_64 Docker (io_uring SQPOLL + WRPKRU)` > **Scorecard Across All 33 Production Workloads:** Beats **Deno (`v2.9.8`)** on **33/33**, **Node.js (`v27.0.0-alpha.0.0.0`)** on **33/33**, **Bun (`v1.4.4`)** on **30/33** cold one-shot, and **all 3 runtimes on 33/33 workloads in `--warm` pooled execution**. #### 1. Core Architecture, HTTP Throughput & 1,000-Tenant MicroVM Density -| Metric | Slice (`v0.10.6` `SLICEBC\x01`) | Bun (`v1.4.4`) | Deno (`v2.9.8`) | Node.js (`v27.0.0-alpha.0.0.0`) | Slice Advantage | +| Metric | Slice (`v0.10.7` `SLICEBC\x01`) | Bun (`v1.4.4`) | Deno (`v2.9.8`) | Node.js (`v27.0.0-alpha.0.0.0`) | Slice Advantage | | :--- | :---: | :---: | :---: | :---: | :--- | -| **In-Process Isolate Cold Start (`P50` / `P99`)** | **`1.05 us` / `1.80 us`** | N/A (Process/VM) | N/A (Process/VM) | N/A (Process/VM) | **~120,000x faster than 125ms Firecracker VM** | -| **1,000-Tenant MicroVM Swarm (Boot + Exec)** | **`1.37 ms` (`9.70 MB` RSS)** | > 5,000 ms | > 15,000 ms | > 30,000 ms | **> 3,900x faster / ~32,000x denser** | +| **In-Process Isolate Cold Start (`P50` / `P99`)** | **`1.06 us` / `2.55 us`** | N/A (Process/VM) | N/A (Process/VM) | N/A (Process/VM) | **~120,000x faster than 125ms Firecracker VM** | +| **1,000-Tenant MicroVM Swarm (Boot + Exec)** | **`1.36 ms` (`9.82 MB` RSS)** | > 5,000 ms | > 15,000 ms | > 30,000 ms | **> 3,900x faster / ~32,000x denser** | | **500-Module Monorepo Cold Boot (`stat()` Calls)** | **`3.41 ms` (`0 stat()`)** | `12.72 ms` (`500+ stat`) | `41.80 ms` (`500+ stat`) | `70.38 ms` (`1,500+ stat`) | **`3.7x` faster than Bun / `20.6x` Node.js** | -| **HTTP/1.1 Keep-Alive Throughput (`16k` Reqs)** | **`137,020 req/s`** (Tier-0)
**`125,831 req/s`** (Tier-1) | `72,924 req/s` | `87,455 req/s` | `45,868 req/s` | **`1.88x` (`Tier-0`) / `1.73x` (`Tier-1`) vs `Bun.serve`** | -| **Peak Process Memory (`Max RSS` Across Suite)** | **`13.25 – 21.75 MB`** | `25.88 – 40.83 MB` | `45.47 – 62.24 MB` | `70.03 – 92.88 MB` | **`2.0x–2.3x` less than Bun / `4.3x–6.8x` less than Node** | +| **HTTP/1.1 Keep-Alive Throughput (`16k` Reqs)** | **`140,643 req/s`** (Tier-0)
**`119,010 req/s`** (Tier-1) | `80,578 req/s` | `71,774 req/s` | `46,241 req/s` | **`1.75x` (`Tier-0`) / `1.48x` (`Tier-1`) vs `Bun.serve`** | +| **Peak Process Memory (`Max RSS` Across Suite)** | **`13.19 – 21.75 MB`** | `26.25 – 40.57 MB` | `45.81 – 62.38 MB` | `69.77 – 92.88 MB` | **`2.0x–2.3x` less than Bun / `4.3x–6.8x` less than Node** | | **Multi-Tenant Security Containment** | **`5 / 5 PASS`** (OCap+SES+Fuel+DLP) | `0 / 5` (Ambient) | `2 / 5` (Coarse CLI) | `0 / 5` (Ambient) | **Hardware & Language Zero-Trust Isolation** | #### 2. Real-Life Workload Summary by Domain (All 33 Workloads Aggregated) | Workload Domain & Stack Coverage | Suites | Slice Cold `.cas` Avg (Range) | Slice Warm (`--warm`) Avg | Bun `v1.4.4` Avg | Deno `v2.9.8` Avg | Node.js `v27.0.0-alpha.0.0.0` Avg | Category Speedup vs Bun / Node.js | | :--- | :---: | :---: | :---: | :---: | :---: | :---: | :--- | -| **Core Edge, Auth & Crypto (`Apps 01, 04, 05, 16`)**
Multi-file TS, SHA-256/HMAC, JWT/OAuth2, `.env` Auto-DLP | `4` | **`8.47 ms`** (`6.55–11.14 ms`) | **`3.30 ms`** | `15.91 ms` | `49.42 ms` | `74.55 ms` | **`1.88x Bun` (`4.82x` Warm) / `8.80x Node`** | -| **NPM Ecosystem, AST & Disk I/O (`Apps 02, 03, 06, 07, 08, 20`)**
`semver`, `flatted`, `dlv`/`dset`, `mitt`, 10-Shard JSONL I/O, `Buffer` | `6` | **`12.62 ms`** (`7.94–16.55 ms`) | **`3.89 ms`** | `20.07 ms` | `55.22 ms` | `75.47 ms` | **`1.59x Bun` (`5.16x` Warm) / `5.98x Node`** | -| **WinterTC Web Standards, Fetch Mesh & DLP (`Apps 09–14, 17–19`)**
`Request`/`Response`, Static CDN `304`, SSE, Live `fetch`, WebCrypto | `9` | **`16.64 ms`** (`9.45–30.99 ms`) | **`8.73 ms`** | `21.55 ms` | `61.92 ms` | `110.65 ms` | **`1.29x Bun` (`2.47x` Warm) / `6.65x Node`** | -| **Realtime WebSockets, Workers & Wasm/TSX (`Apps 15, 21–24`)**
RFC 6455 WS, `worker_threads` + TCP/UDP, Pure-Rust `wasmi` Wasm, TSX SSR | `5` | **`15.94 ms`** (`9.44–23.82 ms`) | **`3.00 ms`** | `33.42 ms` | `74.66 ms` | `100.88 ms` | **`2.10x Bun` (`11.14x` Warm) / `6.33x Node`** | -| **Full-Stack Edge & Node Frameworks (`FW 01–04`)**
`Hono v4.6.20`, `itty-router + UnJS Nitro`, `Express/Polka node:http`, `SvelteKit 3.1.1 + Svelte 5.57.3` | `4` | **`23.77 ms`** (`16.90–39.32 ms`) | **`9.79 ms`** | `34.46 ms` | `64.80 ms` | `111.20 ms` | **`1.45x Bun` (`3.52x` Warm) / `4.68x Node`** | -| **AI Agent, Multi-Tenant SaaS & Chaos Case Studies (`CS 01–05`)**
Depth-4 ToT Agent, MCP Code Mode, 12-Tenant Mesh, Wasm CDR, 48 Payment Sagas | `5` | **`21.56 ms`** (`15.33–31.11 ms`) | **`7.29 ms`** | `23.51 ms` | `63.56 ms` | `91.60 ms` | **`1.09x Bun` (`3.22x` Warm) / `4.25x Node`** | +| **Core Edge, Auth & Crypto (`Apps 01, 04, 05, 16`)**
Multi-file TS, SHA-256/HMAC, JWT/OAuth2, `.env` Auto-DLP | `4` | **`8.69 ms`** (`7.12–11.37 ms`) | **`2.60 ms`** | `17.49 ms` | `51.87 ms` | `76.75 ms` | **`2.01x Bun` (`6.72x` Warm) / `8.84x Node`** | +| **NPM Ecosystem, AST & Disk I/O (`Apps 02, 03, 06, 07, 08, 20`)**
`semver`, `flatted`, `dlv`/`dset`, `mitt`, 10-Shard JSONL I/O, `Buffer` | `6` | **`12.83 ms`** (`8.55–17.13 ms`) | **`4.33 ms`** | `21.51 ms` | `56.52 ms` | `77.42 ms` | **`1.68x Bun` (`4.97x` Warm) / `6.03x Node`** | +| **WinterTC Web Standards, Fetch Mesh & DLP (`Apps 09–14, 17–19`)**
`Request`/`Response`, Static CDN `304`, SSE, Live `fetch`, WebCrypto | `9` | **`17.91 ms`** (`9.79–33.52 ms`) | **`9.11 ms`** | `22.64 ms` | `65.46 ms` | `119.05 ms` | **`1.26x Bun` (`2.49x` Warm) / `6.65x Node`** | +| **Realtime WebSockets, Workers & Wasm/TSX (`Apps 15, 21–24`)**
RFC 6455 WS, `worker_threads` + TCP/UDP, Pure-Rust `wasmi` Wasm, TSX SSR | `5` | **`17.15 ms`** (`10.14–25.80 ms`) | **`3.45 ms`** | `37.02 ms` | `79.14 ms` | `108.70 ms` | **`2.16x Bun` (`10.73x` Warm) / `6.34x Node`** | +| **Full-Stack Edge & Node Frameworks (`FW 01–04`)**
`Hono v4.6.20`, `itty-router + UnJS Nitro`, `Express/Polka node:http`, `SvelteKit 3.1.1 + Svelte 5.57.3` | `4` | **`25.13 ms`** (`19.11–40.14 ms`) | **`9.15 ms`** | `35.64 ms` | `66.58 ms` | `116.67 ms` | **`1.42x Bun` (`3.90x` Warm) / `4.64x Node`** | +| **AI Agent, Multi-Tenant SaaS & Chaos Case Studies (`CS 01–05`)**
Depth-4 ToT Agent, MCP Code Mode, 12-Tenant Mesh, Wasm CDR, 48 Payment Sagas | `5` | **`22.17 ms`** (`16.65–30.36 ms`) | **`8.81 ms`** | `24.26 ms` | `67.35 ms` | `96.00 ms` | **`1.09x Bun` (`2.75x` Warm) / `4.33x Node`** | #### 3. Flagship Real-World Representative Workloads (9 of 33 Highlights) | # | Flagship Workload | Slice Cold `.cas` | Slice Warm (`--warm`) | Bun `v1.4.4` | Deno `v2.9.8` | Node.js `v27.0.0-alpha.0.0.0` | Speedup vs Bun / Node.js | | :- | :--- | :---: | :---: | :---: | :---: | :---: | :--- | -| **01** | `01-fintech-checkout` (Multi-File TS + SHA-256) | **`6.55 ms`** | **`1.93 ms`** | `15.17 ms` | `42.61 ms` | `74.22 ms` | **`2.32x Bun` (`7.84x` Warm) / `11.33x Node`** | -| **03** | `03-disk-io-log-pipeline` (10 JSONL Shards Disk I/O) | **`7.94 ms`** | **`1.61 ms`** | `17.73 ms` | `50.10 ms` | `70.81 ms` | **`2.23x Bun` (`11.00x` Warm) / `8.92x Node`** | -| **14** | `14-federated-api-mesh-dlp` (`bytes` + `dlv` + `dset` + Live `fetch`) | **`15.93 ms`** | **`7.80 ms`** | `24.46 ms` | `61.59 ms` | `122.58 ms` | **`1.54x Bun` (`3.14x` Warm) / `7.70x Node`** | -| **20** | `20-node-compat-and-edge-router` (`Uint8Array` `Buffer`/Node Core/AST Bundler) | **`12.30 ms`** | **`0.89 ms`** | `25.97 ms` | `64.07 ms` | `88.27 ms` | **`2.11x Bun` (`29.24x` Warm) / `7.17x Node`** | -| **22** | `22-worker-threads-and-raw-sockets` (3 Worker Threads + TCP/UDP + 5-Ring Sec) | **`24.54 ms`** | **`2.38 ms`** | `68.04 ms` | `134.58 ms` | `116.66 ms` | **`2.86x Bun` (`28.63x` Warm) / `4.90x Node`** | -| **FW-01** | `FW-01: frameworks/01-hono-edge-microservice` (`hono@4.6.20` + `hono/cookie` + `ms`) | **`16.90 ms`** | **`7.54 ms`** | `22.25 ms` | `61.18 ms` | `110.86 ms` | **`1.32x Bun` (`2.95x` Warm) / `6.56x Node`** | -| **FW-04** | `FW-04: frameworks/04-sveltekit-edge-ssr` (`@sveltejs/kit@3.1.1` + `svelte@5.57.3` + `devalue@6.0.3`) | **`39.32 ms`** | **`19.71 ms`** | `52.50 ms` | `84.30 ms` | `133.01 ms` | **`1.34x Bun` (`2.66x` Warm) / `3.38x Node`** | -| **CS-01** | `CS-01: case_studies/01-tot-autonomous-sre-agent` (20 ToT Sandboxes) | **`31.11 ms`** | **`13.13 ms`** | `32.78 ms` | `86.41 ms` | `105.35 ms` | **`1.05x Bun` (`2.50x` Warm) / `3.39x Node`** | -| **CS-05** | `CS-05: case_studies/05-time-travel-chaos-fuzzer-payments` (48 Payment Sagas) | **`20.77 ms`** | **`9.38 ms`** | `23.26 ms` | `71.21 ms` | `96.48 ms` | **`1.12x Bun` (`2.48x` Warm) / `4.65x Node`** | +| **01** | `01-fintech-checkout` (Multi-File TS + SHA-256) | **`7.50 ms`** | **`1.26 ms`** | `17.06 ms` | `45.38 ms` | `72.99 ms` | **`2.39x Bun` (`13.50x` Warm) / `10.25x Node`** | +| **03** | `03-disk-io-log-pipeline` (10 JSONL Shards Disk I/O) | **`8.55 ms`** | **`1.94 ms`** | `19.25 ms` | `51.81 ms` | `73.89 ms` | **`2.25x Bun` (`9.95x` Warm) / `8.64x Node`** | +| **14** | `14-federated-api-mesh-dlp` (`bytes` + `dlv` + `dset` + Live `fetch`) | **`16.32 ms`** | **`9.17 ms`** | `27.48 ms` | `64.80 ms` | `135.19 ms` | **`1.68x Bun` (`2.99x` Warm) / `8.28x Node`** | +| **20** | `20-node-compat-and-edge-router` (`Uint8Array` `Buffer`/Node Core/AST Bundler) | **`12.91 ms`** | **`0.62 ms`** | `27.52 ms` | `66.07 ms` | `86.58 ms` | **`2.13x Bun` (`44.67x` Warm) / `6.71x Node`** | +| **22** | `22-worker-threads-and-raw-sockets` (3 Worker Threads + TCP/UDP + 5-Ring Sec) | **`25.80 ms`** | **`2.38 ms`** | `73.43 ms` | `141.09 ms` | `127.68 ms` | **`2.85x Bun` (`30.83x` Warm) / `4.95x Node`** | +| **FW-01** | `FW-01: frameworks/01-hono-edge-microservice` (`hono@4.6.20` + `hono/cookie` + `ms`) | **`19.11 ms`** | **`6.56 ms`** | `24.00 ms` | `63.91 ms` | `117.23 ms` | **`1.26x Bun` (`3.66x` Warm) / `6.13x Node`** | +| **FW-04** | `FW-04: frameworks/04-sveltekit-edge-ssr` (`@sveltejs/kit@3.1.1` + `svelte@5.57.3` + `devalue@6.0.3`) | **`40.14 ms`** | **`18.62 ms`** | `52.96 ms` | `83.65 ms` | `139.94 ms` | **`1.32x Bun` (`2.84x` Warm) / `3.49x Node`** | +| **CS-01** | `CS-01: case_studies/01-tot-autonomous-sre-agent` (20 ToT Sandboxes) | **`34.36 ms`** | **`16.70 ms`** | `33.35 ms` | `89.42 ms` | `109.04 ms` | **`1.10x Bun` (`2.00x` Warm) / `3.59x Node`** | +| **CS-05** | `CS-05: case_studies/05-time-travel-chaos-fuzzer-payments` (48 Payment Sagas) | **`21.32 ms`** | **`11.94 ms`** | `23.29 ms` | `73.80 ms` | `100.35 ms` | **`1.09x Bun` (`1.95x` Warm) / `4.71x Node`** | *Full 33-workload latency breakdown, standalone binary metrics, peak RSS per app, and historical reports: **[`tests/reports/latest.md`](../../tests/reports/latest.md)**.* diff --git a/docs/general/COMPATIBILITY.md b/docs/general/COMPATIBILITY.md index ba1127c..e248e1d 100644 --- a/docs/general/COMPATIBILITY.md +++ b/docs/general/COMPATIBILITY.md @@ -26,7 +26,7 @@ All WinterTC globals are available in every isolate out of the box. Under the ho | **Events & Signals** | `Event`, `CustomEvent`, `EventTarget`, `AbortController`, `AbortSignal` | **100% Supported** | Listener registration (`once`, `passive`, `signal`), `AbortSignal.abort()`, `AbortSignal.timeout(ms)`, `AbortSignal.any(signals)`, and `DOMException`. | | **Timers & Microtasks** | `setTimeout`, `clearTimeout`, `setInterval`, `clearInterval`, `setImmediate`, `clearImmediate`, `queueMicrotask`, `process.nextTick` | **100% Supported** | $O(1)$ Slab-Allocated Hierarchical Timer Wheel with strict priority ordering (`sync -> process.nextTick -> Promise.then / queueMicrotask -> setImmediate -> setTimeout(0)`), deterministic virtual time-warp (`0 ns` wall-clock wait during cassette tests), and real non-blocking concurrency on live sockets. | | **Cloning & Diagnostics** | `structuredClone`, `performance.now()`, `console.*` (`log`, `info`, `warn`, `error`, `debug`, `table`, `time`, `timeLog`, `timeEnd`, `group`, `groupCollapsed`, `groupEnd`, `dir`, `dirxml`, `count`, `countReset`, `assert`, `trace`, `clear`) | **100% Supported** | Graph-preserving cyclic `structuredClone` (`Map`, `Set`, `Date`, `RegExp`, `ArrayBuffer`, `Uint8Array`, `Error`, `transfer` list) and full WHATWG `console.*` specification routed through the Outbound Egress Secret DLP Firewall (with deterministic elapsed timing under `--deterministic`). | -| **Internationalization & WinterTC Globals** | `Intl` (`DateTimeFormat`, `NumberFormat`, `Collator`, `PluralRules`, `Segmenter`, `getCanonicalLocales`, `supportedValuesOf`), `navigator`, `location` | **100% Supported** | Zero-ICU-bloat deterministic `Intl` fast-path shard (`18_intl.js`) supporting `Date.prototype.toLocale*`, `Number.prototype.toLocaleString` (`decimal`, `currency`, `percent`, `unit`, `formatToParts`), `String.prototype.localeCompare`, `PluralRules` (`cardinal`, `ordinal`), `Segmenter` (`grapheme`, `word`, `sentence`), plus WinterTC `navigator` (`userAgent: "Slice-NexusJS/0.10.6"`, `hardwareConcurrency`, `language`, `languages`) and `location`. | +| **Internationalization & WinterTC Globals** | `Intl` (`DateTimeFormat`, `NumberFormat`, `Collator`, `PluralRules`, `Segmenter`, `getCanonicalLocales`, `supportedValuesOf`), `navigator`, `location` | **100% Supported** | Zero-ICU-bloat deterministic `Intl` fast-path shard (`18_intl.js`) supporting `Date.prototype.toLocale*`, `Number.prototype.toLocaleString` (`decimal`, `currency`, `percent`, `unit`, `formatToParts`), `String.prototype.localeCompare`, `PluralRules` (`cardinal`, `ordinal`), `Segmenter` (`grapheme`, `word`, `sentence`), plus WinterTC `navigator` (`userAgent: "Slice-NexusJS/0.10.7"`, `hardwareConcurrency`, `language`, `languages`) and `location`. | | **JSX / TSX & Edge SSR** | Native `.tsx` / `.jsx` compilation + `slice:jsx` (`react/jsx-runtime`, `preact/jsx-runtime`, `hono/jsx`) | **100% Supported** | Native Rust Oxc JSX/TSX compiler (`runtime: automatic`) paired with a built-in zero-dependency SSR engine (`renderToString`, `jsx`, `jsxs`, `jsxDEV`, `Fragment`, `createElement`/`h`, `raw`) featuring automatic HTML & attribute XSS escaping, void tag handling, and camelCase `style` object serialization. | --- diff --git a/docs/guides/README.md b/docs/guides/README.md index 18b3701..38a966a 100644 --- a/docs/guides/README.md +++ b/docs/guides/README.md @@ -1,6 +1,6 @@ # Slice (Nexus-JS) — Developer How-To Guides (`docs/guides/`) -This directory contains practical step-by-step developer guides, production deployment how-tos, and ecosystem integration recipes for Slice (`v0.10.6`): +This directory contains practical step-by-step developer guides, production deployment how-tos, and ecosystem integration recipes for Slice (`v0.10.7`): ## Available Guides diff --git a/docs/system/00_index.md b/docs/system/00_index.md index 44c5ee4..7fbfe56 100644 --- a/docs/system/00_index.md +++ b/docs/system/00_index.md @@ -1,4 +1,4 @@ -# Slice (Nexus-JS): System Architecture & Internal Specification Index (`v0.10.6`) +# Slice (Nexus-JS): System Architecture & Internal Specification Index (`v0.10.7`) Welcome to the **Slice (Nexus-JS)** System Architecture and Internal Specification (`docs/system/`). Engineered in pure Rust (`edition = 2021`, `opt-level = 3`, `lto = "fat"`, `codegen-units = 1`, `panic = "abort"`), Slice replaces the legacy POSIX + monolithic V8/JSC assumptions of Node.js, Deno, and Bun with four orthogonal, tightly integrated Rust crates: @@ -21,7 +21,7 @@ Welcome to the **Slice (Nexus-JS)** System Architecture and Internal Specificati | **[`05_wasm_workers_and_kernel_io.md`](./05_wasm_workers_and_kernel_io.md)** | Pure-Rust WebAssembly (`wasmi` `v2.0.0`, `GLOBAL_WASM_MODULE_CACHE`, 5-Ring WASM Cage), Capability-Attenuated MicroVM Web Workers & `node:worker_threads` (`IDLE_WORKER_POOL`), Direct Kernel Completion Rings (`io_uring` & `IOCP`), & OS-Native `notify` File Watcher | `crates/slice-engine/src/{wasm,workers}.rs`, `crates/slice-io/src/lib.rs`, `crates/slice-cli/src/config_and_watch.rs` | | **[`06_edge_kv_ai_sandbox_and_mcp.md`](./06_edge_kv_ai_sandbox_and_mcp.md)** | 16-Way Sharded `Slice.kv` (`EDGE_KV_SLAB`), Multi-Tenant `--tenant-dir` Atomic Hot-Swap, SplitMix64 `--deterministic` Replay, AI Agent "Code Mode" (`Slice.evalSandbox`, `< 5 us` `Slice.checkpoint`/`restore`), Time-Travel `slice test`, & Built-In MCP Server (`slice mcp`) | `crates/slice-engine/src/state_and_kv.rs`, `crates/slice-cli/src/{test_runner,mcp_and_repl}.rs` | | **[`07_production_tooling_guide.md`](./07_production_tooling_guide.md)** | Production CLI Reference, Unified 4-Layer Configuration System (`slice.toml`, Inline `// @slice-...`, `SLICE_*` Env Vars, CLI Flags), Docker & Kubernetes Deployment Patterns, and Multi-Tenant Operations | `crates/slice-cli/src/{main,config_and_watch}.rs`, `crates/slice-sandbox/src/lib.rs` | -| **[`08_benchmarks_and_comparisons.md`](./08_benchmarks_and_comparisons.md)** | Complete 4-Runtime Empirical Benchmark Suite (Slice `v0.10.6` vs Node.js `v25.8.1`, Deno `v2.7.5`, and Bun `v1.3.10`) Across All 31 Applications, Framework Suites & Case Studies | `benches/`, `tests/apps/`, `tests/frameworks/`, `tests/case_studies/` | +| **[`08_benchmarks_and_comparisons.md`](./08_benchmarks_and_comparisons.md)** | Complete 4-Runtime Empirical Benchmark Suite (Slice `v0.10.7` vs Node.js `v25.8.1`, Deno `v2.7.5`, and Bun `v1.3.10`) Across All 31 Applications, Framework Suites & Case Studies | `benches/`, `tests/apps/`, `tests/frameworks/`, `tests/case_studies/` | | **[`09_research_deep_dive.md`](./09_research_deep_dive.md)** | Foundational Systems Research Paper: Breaking the JS/TS Cold-Start, Memory Density, and Multi-Tenant Security Wall | Architectural Research Blueprint | | **[`vendor/boa_engine/SLICE_PATCH.md`](../../vendor/boa_engine/SLICE_PATCH.md)** | `SLICEBC1` Precompiled `CodeBlock` Binary Serializer/Deserializer & Deferred Function Span Architecture | `vendor/boa_engine/src/{slice_precompile.rs,lib.rs,vm/opcode/call/mod.rs}` | @@ -31,7 +31,7 @@ Welcome to the **Slice (Nexus-JS)** System Architecture and Internal Specificati ``` +---------------------------------------------------------------------------------------------------+ -| Slice (Nexus-JS) v0.10.6 Host | +| Slice (Nexus-JS) v0.10.7 Host | | | | +---------------------------------------------------------------------------------------------+ | | | slice-sandbox: Zero-Trust OCap, SES & Hardware Boundary | | diff --git a/docs/system/07_production_tooling_guide.md b/docs/system/07_production_tooling_guide.md index 132aff1..c242806 100644 --- a/docs/system/07_production_tooling_guide.md +++ b/docs/system/07_production_tooling_guide.md @@ -2,7 +2,7 @@ ## 1. Overview of the Production Toolchain -Slice `v0.10.6` provides a complete developer and production deployment workflow packaged inside a single self-contained native Rust executable (`slice`, embedding the **Oxc** TypeScript compiler, transitive `node_modules` bundler, **Boa** ES2024+ VM, and **Slice** Zero-Stat CAS + Tier-0/Tier-2 engine): +Slice `v0.10.7` provides a complete developer and production deployment workflow packaged inside a single self-contained native Rust executable (`slice`, embedding the **Oxc** TypeScript compiler, transitive `node_modules` bundler, **Boa** ES2024+ VM, and **Slice** Zero-Stat CAS + Tier-0/Tier-2 engine): 1. **Project Initialization & Policy Configuration (`slice init` & `slice.toml`)** 2. **Zero-Stat Content-Addressed Packaging (`slice pack` for single files or full `package.json` + `node_modules` folders)** diff --git a/scripts/install.ps1 b/scripts/install.ps1 index a89231f..654b631 100644 --- a/scripts/install.ps1 +++ b/scripts/install.ps1 @@ -16,6 +16,6 @@ if (-not (Test-Path $ReleaseExe)) { $DestExe = Join-Path $InstallDir "slice.exe" Copy-Item -Force $ReleaseExe $DestExe -Write-Host "Installed Slice v0.10.6 to $DestExe" +Write-Host "Installed Slice v0.10.7 to $DestExe" & $DestExe info diff --git a/scripts/install.sh b/scripts/install.sh index ad549d0..c2a3cd4 100644 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -9,13 +9,13 @@ INSTALL_DIR="${HOME}/.slice/bin" mkdir -p "$INSTALL_DIR" if [ ! -f "$ROOT_DIR/target/release/slice" ]; then - echo "Compiling Slice v0.10.6 release binary..." + echo "Compiling Slice v0.10.7 release binary..." cargo build --release fi cp -f "$ROOT_DIR/target/release/slice" "$INSTALL_DIR/slice" chmod +x "$INSTALL_DIR/slice" -echo "Installed Slice v0.10.6 to $INSTALL_DIR/slice" +echo "Installed Slice v0.10.7 to $INSTALL_DIR/slice" "$INSTALL_DIR/slice" info diff --git a/scripts/package_release.ps1 b/scripts/package_release.ps1 index 2c760ad..2d621b1 100644 --- a/scripts/package_release.ps1 +++ b/scripts/package_release.ps1 @@ -6,7 +6,7 @@ $ErrorActionPreference = "Stop" $RootDir = Split-Path -Parent $PSScriptRoot Set-Location $RootDir -Write-Host "[1/4] Building Slice v0.10.6 Release Binary (LTO=fat, opt-level=3)..." +Write-Host "[1/4] Building Slice v0.10.7 Release Binary (LTO=fat, opt-level=3)..." cargo build --release $DistDir = Join-Path $RootDir "dist" diff --git a/scripts/run_benchmarks.ps1 b/scripts/run_benchmarks.ps1 index b3a0975..6f910b0 100644 --- a/scripts/run_benchmarks.ps1 +++ b/scripts/run_benchmarks.ps1 @@ -15,7 +15,7 @@ $CargoToml = Get-Content (Join-Path $RootDir "Cargo.toml") -Raw if ($CargoToml -match '(?m)^\[workspace\.package\]\s*\r?\nversion\s*=\s*"([^"]+)"') { $Version = $Matches[1] } else { - $Version = "0.10.6" + $Version = "0.10.7" } try { diff --git a/tests/README.md b/tests/README.md index 1da30fb..94f23e6 100644 --- a/tests/README.md +++ b/tests/README.md @@ -212,45 +212,45 @@ This directory (`tests/`) contains a reproducible Linux `x86_64` Docker benchmar ## Verified Linux Docker (`x86_64`) Benchmark Results Across All 33 Workloads ([`reports/latest.md`](./reports/latest.md)) -> **Latest Verified Benchmark Report:** **[`tests/reports/latest.md`](./reports/latest.md)** (Archive: [`bench_v0.10.5_20261109_225249Z_47bfa6b.md`](./reports/bench_v0.10.5_20261109_225249Z_47bfa6b.md)) -> **Provenance:** Slice `v0.10.6` (`47bfa6b`) · Generated `2026-11-09T22:52:49Z` · Environment: `Linux x86_64 Docker (io_uring SQPOLL + WRPKRU)` +> **Latest Verified Benchmark Report:** **[`tests/reports/latest.md`](./reports/latest.md)** (Archive: [`bench_v0.10.7_20261110_030245Z_2c3e16a.md`](./reports/bench_v0.10.7_20261110_030245Z_2c3e16a.md)) +> **Provenance:** Slice `v0.10.7` (`2c3e16a`) · Generated `2026-11-10T03:02:45Z` · Environment: `Linux x86_64 Docker (io_uring SQPOLL + WRPKRU)` > **Scorecard Across All 33 Production Workloads:** Beats **Deno (`v2.9.8`)** on **33/33**, **Node.js (`v27.0.0-alpha.0.0.0`)** on **33/33**, **Bun (`v1.4.4`)** on **30/33** cold one-shot, and **all 3 runtimes on 33/33 workloads in `--warm` pooled execution**. #### 1. Core Architecture, HTTP Throughput & 1,000-Tenant MicroVM Density -| Metric | Slice (`v0.10.6` `SLICEBC\x01`) | Bun (`v1.4.4`) | Deno (`v2.9.8`) | Node.js (`v27.0.0-alpha.0.0.0`) | Slice Advantage | +| Metric | Slice (`v0.10.7` `SLICEBC\x01`) | Bun (`v1.4.4`) | Deno (`v2.9.8`) | Node.js (`v27.0.0-alpha.0.0.0`) | Slice Advantage | | :--- | :---: | :---: | :---: | :---: | :--- | -| **In-Process Isolate Cold Start (`P50` / `P99`)** | **`1.05 us` / `1.80 us`** | N/A (Process/VM) | N/A (Process/VM) | N/A (Process/VM) | **~120,000x faster than 125ms Firecracker VM** | -| **1,000-Tenant MicroVM Swarm (Boot + Exec)** | **`1.37 ms` (`9.70 MB` RSS)** | > 5,000 ms | > 15,000 ms | > 30,000 ms | **> 3,900x faster / ~32,000x denser** | +| **In-Process Isolate Cold Start (`P50` / `P99`)** | **`1.06 us` / `2.55 us`** | N/A (Process/VM) | N/A (Process/VM) | N/A (Process/VM) | **~120,000x faster than 125ms Firecracker VM** | +| **1,000-Tenant MicroVM Swarm (Boot + Exec)** | **`1.36 ms` (`9.82 MB` RSS)** | > 5,000 ms | > 15,000 ms | > 30,000 ms | **> 3,900x faster / ~32,000x denser** | | **500-Module Monorepo Cold Boot (`stat()` Calls)** | **`3.41 ms` (`0 stat()`)** | `12.72 ms` (`500+ stat`) | `41.80 ms` (`500+ stat`) | `70.38 ms` (`1,500+ stat`) | **`3.7x` faster than Bun / `20.6x` Node.js** | -| **HTTP/1.1 Keep-Alive Throughput (`16k` Reqs)** | **`137,020 req/s`** (Tier-0)
**`125,831 req/s`** (Tier-1) | `72,924 req/s` | `87,455 req/s` | `45,868 req/s` | **`1.88x` (`Tier-0`) / `1.73x` (`Tier-1`) vs `Bun.serve`** | -| **Peak Process Memory (`Max RSS` Across Suite)** | **`13.25 – 21.75 MB`** | `25.88 – 40.83 MB` | `45.47 – 62.24 MB` | `70.03 – 92.88 MB` | **`2.0x–2.3x` less than Bun / `4.3x–6.8x` less than Node** | +| **HTTP/1.1 Keep-Alive Throughput (`16k` Reqs)** | **`140,643 req/s`** (Tier-0)
**`119,010 req/s`** (Tier-1) | `80,578 req/s` | `71,774 req/s` | `46,241 req/s` | **`1.75x` (`Tier-0`) / `1.48x` (`Tier-1`) vs `Bun.serve`** | +| **Peak Process Memory (`Max RSS` Across Suite)** | **`13.19 – 21.75 MB`** | `26.25 – 40.57 MB` | `45.81 – 62.38 MB` | `69.77 – 92.88 MB` | **`2.0x–2.3x` less than Bun / `4.3x–6.8x` less than Node** | | **Multi-Tenant Security Containment** | **`5 / 5 PASS`** (OCap+SES+Fuel+DLP) | `0 / 5` (Ambient) | `2 / 5` (Coarse CLI) | `0 / 5` (Ambient) | **Hardware & Language Zero-Trust Isolation** | #### 2. Real-Life Workload Summary by Domain (All 33 Workloads Aggregated) | Workload Domain & Stack Coverage | Suites | Slice Cold `.cas` Avg (Range) | Slice Warm (`--warm`) Avg | Bun `v1.4.4` Avg | Deno `v2.9.8` Avg | Node.js `v27.0.0-alpha.0.0.0` Avg | Category Speedup vs Bun / Node.js | | :--- | :---: | :---: | :---: | :---: | :---: | :---: | :--- | -| **Core Edge, Auth & Crypto (`Apps 01, 04, 05, 16`)**
Multi-file TS, SHA-256/HMAC, JWT/OAuth2, `.env` Auto-DLP | `4` | **`8.47 ms`** (`6.55–11.14 ms`) | **`3.30 ms`** | `15.91 ms` | `49.42 ms` | `74.55 ms` | **`1.88x Bun` (`4.82x` Warm) / `8.80x Node`** | -| **NPM Ecosystem, AST & Disk I/O (`Apps 02, 03, 06, 07, 08, 20`)**
`semver`, `flatted`, `dlv`/`dset`, `mitt`, 10-Shard JSONL I/O, `Buffer` | `6` | **`12.62 ms`** (`7.94–16.55 ms`) | **`3.89 ms`** | `20.07 ms` | `55.22 ms` | `75.47 ms` | **`1.59x Bun` (`5.16x` Warm) / `5.98x Node`** | -| **WinterTC Web Standards, Fetch Mesh & DLP (`Apps 09–14, 17–19`)**
`Request`/`Response`, Static CDN `304`, SSE, Live `fetch`, WebCrypto | `9` | **`16.64 ms`** (`9.45–30.99 ms`) | **`8.73 ms`** | `21.55 ms` | `61.92 ms` | `110.65 ms` | **`1.29x Bun` (`2.47x` Warm) / `6.65x Node`** | -| **Realtime WebSockets, Workers & Wasm/TSX (`Apps 15, 21–24`)**
RFC 6455 WS, `worker_threads` + TCP/UDP, Pure-Rust `wasmi` Wasm, TSX SSR | `5` | **`15.94 ms`** (`9.44–23.82 ms`) | **`3.00 ms`** | `33.42 ms` | `74.66 ms` | `100.88 ms` | **`2.10x Bun` (`11.14x` Warm) / `6.33x Node`** | -| **Full-Stack Edge & Node Frameworks (`FW 01–04`)**
`Hono v4.6.20`, `itty-router + UnJS Nitro`, `Express/Polka node:http`, `SvelteKit 3.1.1 + Svelte 5.57.3` | `4` | **`23.77 ms`** (`16.90–39.32 ms`) | **`9.79 ms`** | `34.46 ms` | `64.80 ms` | `111.20 ms` | **`1.45x Bun` (`3.52x` Warm) / `4.68x Node`** | -| **AI Agent, Multi-Tenant SaaS & Chaos Case Studies (`CS 01–05`)**
Depth-4 ToT Agent, MCP Code Mode, 12-Tenant Mesh, Wasm CDR, 48 Payment Sagas | `5` | **`21.56 ms`** (`15.33–31.11 ms`) | **`7.29 ms`** | `23.51 ms` | `63.56 ms` | `91.60 ms` | **`1.09x Bun` (`3.22x` Warm) / `4.25x Node`** | +| **Core Edge, Auth & Crypto (`Apps 01, 04, 05, 16`)**
Multi-file TS, SHA-256/HMAC, JWT/OAuth2, `.env` Auto-DLP | `4` | **`8.69 ms`** (`7.12–11.37 ms`) | **`2.60 ms`** | `17.49 ms` | `51.87 ms` | `76.75 ms` | **`2.01x Bun` (`6.72x` Warm) / `8.84x Node`** | +| **NPM Ecosystem, AST & Disk I/O (`Apps 02, 03, 06, 07, 08, 20`)**
`semver`, `flatted`, `dlv`/`dset`, `mitt`, 10-Shard JSONL I/O, `Buffer` | `6` | **`12.83 ms`** (`8.55–17.13 ms`) | **`4.33 ms`** | `21.51 ms` | `56.52 ms` | `77.42 ms` | **`1.68x Bun` (`4.97x` Warm) / `6.03x Node`** | +| **WinterTC Web Standards, Fetch Mesh & DLP (`Apps 09–14, 17–19`)**
`Request`/`Response`, Static CDN `304`, SSE, Live `fetch`, WebCrypto | `9` | **`17.91 ms`** (`9.79–33.52 ms`) | **`9.11 ms`** | `22.64 ms` | `65.46 ms` | `119.05 ms` | **`1.26x Bun` (`2.49x` Warm) / `6.65x Node`** | +| **Realtime WebSockets, Workers & Wasm/TSX (`Apps 15, 21–24`)**
RFC 6455 WS, `worker_threads` + TCP/UDP, Pure-Rust `wasmi` Wasm, TSX SSR | `5` | **`17.15 ms`** (`10.14–25.80 ms`) | **`3.45 ms`** | `37.02 ms` | `79.14 ms` | `108.70 ms` | **`2.16x Bun` (`10.73x` Warm) / `6.34x Node`** | +| **Full-Stack Edge & Node Frameworks (`FW 01–04`)**
`Hono v4.6.20`, `itty-router + UnJS Nitro`, `Express/Polka node:http`, `SvelteKit 3.1.1 + Svelte 5.57.3` | `4` | **`25.13 ms`** (`19.11–40.14 ms`) | **`9.15 ms`** | `35.64 ms` | `66.58 ms` | `116.67 ms` | **`1.42x Bun` (`3.90x` Warm) / `4.64x Node`** | +| **AI Agent, Multi-Tenant SaaS & Chaos Case Studies (`CS 01–05`)**
Depth-4 ToT Agent, MCP Code Mode, 12-Tenant Mesh, Wasm CDR, 48 Payment Sagas | `5` | **`22.17 ms`** (`16.65–30.36 ms`) | **`8.81 ms`** | `24.26 ms` | `67.35 ms` | `96.00 ms` | **`1.09x Bun` (`2.75x` Warm) / `4.33x Node`** | #### 3. Flagship Real-World Representative Workloads (9 of 33 Highlights) | # | Flagship Workload | Slice Cold `.cas` | Slice Warm (`--warm`) | Bun `v1.4.4` | Deno `v2.9.8` | Node.js `v27.0.0-alpha.0.0.0` | Speedup vs Bun / Node.js | | :- | :--- | :---: | :---: | :---: | :---: | :---: | :--- | -| **01** | `01-fintech-checkout` (Multi-File TS + SHA-256) | **`6.55 ms`** | **`1.93 ms`** | `15.17 ms` | `42.61 ms` | `74.22 ms` | **`2.32x Bun` (`7.84x` Warm) / `11.33x Node`** | -| **03** | `03-disk-io-log-pipeline` (10 JSONL Shards Disk I/O) | **`7.94 ms`** | **`1.61 ms`** | `17.73 ms` | `50.10 ms` | `70.81 ms` | **`2.23x Bun` (`11.00x` Warm) / `8.92x Node`** | -| **14** | `14-federated-api-mesh-dlp` (`bytes` + `dlv` + `dset` + Live `fetch`) | **`15.93 ms`** | **`7.80 ms`** | `24.46 ms` | `61.59 ms` | `122.58 ms` | **`1.54x Bun` (`3.14x` Warm) / `7.70x Node`** | -| **20** | `20-node-compat-and-edge-router` (`Uint8Array` `Buffer`/Node Core/AST Bundler) | **`12.30 ms`** | **`0.89 ms`** | `25.97 ms` | `64.07 ms` | `88.27 ms` | **`2.11x Bun` (`29.24x` Warm) / `7.17x Node`** | -| **22** | `22-worker-threads-and-raw-sockets` (3 Worker Threads + TCP/UDP + 5-Ring Sec) | **`24.54 ms`** | **`2.38 ms`** | `68.04 ms` | `134.58 ms` | `116.66 ms` | **`2.86x Bun` (`28.63x` Warm) / `4.90x Node`** | -| **FW-01** | `FW-01: frameworks/01-hono-edge-microservice` (`hono@4.6.20` + `hono/cookie` + `ms`) | **`16.90 ms`** | **`7.54 ms`** | `22.25 ms` | `61.18 ms` | `110.86 ms` | **`1.32x Bun` (`2.95x` Warm) / `6.56x Node`** | -| **FW-04** | `FW-04: frameworks/04-sveltekit-edge-ssr` (`@sveltejs/kit@3.1.1` + `svelte@5.57.3` + `devalue@6.0.3`) | **`39.32 ms`** | **`19.71 ms`** | `52.50 ms` | `84.30 ms` | `133.01 ms` | **`1.34x Bun` (`2.66x` Warm) / `3.38x Node`** | -| **CS-01** | `CS-01: case_studies/01-tot-autonomous-sre-agent` (20 ToT Sandboxes) | **`31.11 ms`** | **`13.13 ms`** | `32.78 ms` | `86.41 ms` | `105.35 ms` | **`1.05x Bun` (`2.50x` Warm) / `3.39x Node`** | -| **CS-05** | `CS-05: case_studies/05-time-travel-chaos-fuzzer-payments` (48 Payment Sagas) | **`20.77 ms`** | **`9.38 ms`** | `23.26 ms` | `71.21 ms` | `96.48 ms` | **`1.12x Bun` (`2.48x` Warm) / `4.65x Node`** | +| **01** | `01-fintech-checkout` (Multi-File TS + SHA-256) | **`7.50 ms`** | **`1.26 ms`** | `17.06 ms` | `45.38 ms` | `72.99 ms` | **`2.39x Bun` (`13.50x` Warm) / `10.25x Node`** | +| **03** | `03-disk-io-log-pipeline` (10 JSONL Shards Disk I/O) | **`8.55 ms`** | **`1.94 ms`** | `19.25 ms` | `51.81 ms` | `73.89 ms` | **`2.25x Bun` (`9.95x` Warm) / `8.64x Node`** | +| **14** | `14-federated-api-mesh-dlp` (`bytes` + `dlv` + `dset` + Live `fetch`) | **`16.32 ms`** | **`9.17 ms`** | `27.48 ms` | `64.80 ms` | `135.19 ms` | **`1.68x Bun` (`2.99x` Warm) / `8.28x Node`** | +| **20** | `20-node-compat-and-edge-router` (`Uint8Array` `Buffer`/Node Core/AST Bundler) | **`12.91 ms`** | **`0.62 ms`** | `27.52 ms` | `66.07 ms` | `86.58 ms` | **`2.13x Bun` (`44.67x` Warm) / `6.71x Node`** | +| **22** | `22-worker-threads-and-raw-sockets` (3 Worker Threads + TCP/UDP + 5-Ring Sec) | **`25.80 ms`** | **`2.38 ms`** | `73.43 ms` | `141.09 ms` | `127.68 ms` | **`2.85x Bun` (`30.83x` Warm) / `4.95x Node`** | +| **FW-01** | `FW-01: frameworks/01-hono-edge-microservice` (`hono@4.6.20` + `hono/cookie` + `ms`) | **`19.11 ms`** | **`6.56 ms`** | `24.00 ms` | `63.91 ms` | `117.23 ms` | **`1.26x Bun` (`3.66x` Warm) / `6.13x Node`** | +| **FW-04** | `FW-04: frameworks/04-sveltekit-edge-ssr` (`@sveltejs/kit@3.1.1` + `svelte@5.57.3` + `devalue@6.0.3`) | **`40.14 ms`** | **`18.62 ms`** | `52.96 ms` | `83.65 ms` | `139.94 ms` | **`1.32x Bun` (`2.84x` Warm) / `3.49x Node`** | +| **CS-01** | `CS-01: case_studies/01-tot-autonomous-sre-agent` (20 ToT Sandboxes) | **`34.36 ms`** | **`16.70 ms`** | `33.35 ms` | `89.42 ms` | `109.04 ms` | **`1.10x Bun` (`2.00x` Warm) / `3.59x Node`** | +| **CS-05** | `CS-05: case_studies/05-time-travel-chaos-fuzzer-payments` (48 Payment Sagas) | **`21.32 ms`** | **`11.94 ms`** | `23.29 ms` | `73.80 ms` | `100.35 ms` | **`1.09x Bun` (`1.95x` Warm) / `4.71x Node`** | *Full 33-workload latency breakdown, standalone binary metrics, peak RSS per app, and historical reports: **[`tests/reports/latest.md`](./reports/latest.md)**.* diff --git a/tests/reports/bench_v0.10.7_20261110_030245Z_2c3e16a.json b/tests/reports/bench_v0.10.7_20261110_030245Z_2c3e16a.json new file mode 100644 index 0000000..d0d1659 --- /dev/null +++ b/tests/reports/bench_v0.10.7_20261110_030245Z_2c3e16a.json @@ -0,0 +1,789 @@ +{ + "metadata": { + "version": "0.10.7", + "commit": "2c3e16a", + "timestampUtc": "2026-11-10T03:02:45Z", + "environment": "Linux x86_64 Docker (io_uring SQPOLL + WRPKRU)", + "runtimes": { + "slice": "v0.10.7", + "bun": "v1.4.4", + "deno": "v2.9.8", + "node": "v27.0.0-alpha.0.0.0" + }, + "archiveFile": "tests/reports/bench_v0.10.7_20261110_030245Z_2c3e16a.md", + "latestFile": "tests/reports/latest.md" + }, + "microvm": { + "linux": { + "coldMinUs": 0.99, + "coldP50Us": 1.06, + "coldP99Us": 2.55, + "swarm1000Ms": 1.36, + "swarm1000RssMb": 9.82, + "cas500ColdMs": 3.408, + "cas500MemUs": 432.39, + "ringIo10kMs": 0.02 + }, + "windows": { + "coldMinUs": 1.4, + "coldP50Us": 1.6, + "coldP99Us": 2.3, + "swarm1000Ms": 2.24, + "swarm1000RssMb": 11.82, + "cas500ColdMs": 5.637, + "cas500MemUs": 640, + "ringIo10kMs": 5.11 + } + }, + "httpKeepAlive": { + "sliceTier0": { + "rps": 140643, + "avgUs": 7.11, + "totalMs": 113.8 + }, + "sliceTier1": { + "rps": 119010, + "avgUs": 8.4, + "totalMs": 134.4 + }, + "deno": { + "rps": 71774, + "avgUs": 13.93, + "totalMs": 222.9 + }, + "bun": { + "rps": 80578, + "avgUs": 12.41, + "totalMs": 198.6 + }, + "node": { + "rps": 46241, + "avgUs": 21.63, + "totalMs": 346 + } + }, + "primitives": { + "kv1001Us": 951.58, + "kvMemBytes": 8431, + "tot3SandboxesUs": 50.45, + "totSingleSandboxUs": 1.815 + }, + "workloads": [ + { + "num": 1, + "code": "01", + "id": "01-fintech-checkout", + "label": "`01-fintech-checkout` (Multi-File TS + SHA-256)", + "category": "core_edge_crypto", + "flagship": true, + "sliceCasMinMs": 6.293, + "sliceCasAvgMs": 7.502, + "sliceBinMinMs": 6.213, + "sliceBinAvgMs": 7.124, + "sliceSrcAvgMs": 22.024, + "sliceWarmMs": 1.263, + "prevSliceCasAvgMs": 6.549, + "bunAvgMs": 17.056, + "denoAvgMs": 45.383, + "nodeAvgMs": 72.994 + }, + { + "num": 2, + "code": "02", + "id": "02-npm-ecosystem-suite", + "label": "`02-npm-ecosystem-suite` (`semver` + `ms` + `ini`)", + "category": "npm_ast_disk", + "flagship": false, + "sliceCasMinMs": 14.665, + "sliceCasAvgMs": 16.522, + "sliceBinMinMs": 14.977, + "sliceBinAvgMs": 17.989, + "sliceSrcAvgMs": 45.8, + "sliceWarmMs": 4.949, + "prevSliceCasAvgMs": 16.553, + "bunAvgMs": 27.434, + "denoAvgMs": 63.241, + "nodeAvgMs": 87.495 + }, + { + "num": 3, + "code": "03", + "id": "03-disk-io-log-pipeline", + "label": "`03-disk-io-log-pipeline` (10 JSONL Shards Disk I/O)", + "category": "npm_ast_disk", + "flagship": true, + "sliceCasMinMs": 7.431, + "sliceCasAvgMs": 8.552, + "sliceBinMinMs": 7.784, + "sliceBinAvgMs": 8.94, + "sliceSrcAvgMs": 30.834, + "sliceWarmMs": 1.935, + "prevSliceCasAvgMs": 7.941, + "bunAvgMs": 19.251, + "denoAvgMs": 51.81, + "nodeAvgMs": 73.893 + }, + { + "num": 4, + "code": "04", + "id": "04-edge-api-gateway", + "label": "`04-edge-api-gateway` (`fast-querystring` + `ms`)", + "category": "core_edge_crypto", + "flagship": false, + "sliceCasMinMs": 7.238, + "sliceCasAvgMs": 8.133, + "sliceBinMinMs": 8.064, + "sliceBinAvgMs": 9.147, + "sliceSrcAvgMs": 26.334, + "sliceWarmMs": 1.841, + "prevSliceCasAvgMs": 7.827, + "bunAvgMs": 18.425, + "denoAvgMs": 51.27, + "nodeAvgMs": 75.665 + }, + { + "num": 5, + "code": "05", + "id": "05-jwt-oauth-session-guard", + "label": "`05-jwt-oauth-session-guard` (`cookie` + `ms` + HMAC)", + "category": "core_edge_crypto", + "flagship": false, + "sliceCasMinMs": 10.009, + "sliceCasAvgMs": 11.369, + "sliceBinMinMs": 10.543, + "sliceBinAvgMs": 12.178, + "sliceSrcAvgMs": 27.398, + "sliceWarmMs": 5.38, + "prevSliceCasAvgMs": 11.143, + "bunAvgMs": 16.959, + "denoAvgMs": 53.072, + "nodeAvgMs": 76.488 + }, + { + "num": 6, + "code": "06", + "id": "06-telemetry-metrics-pipeline", + "label": "`06-telemetry-metrics-pipeline` (`bytes` + `flatted` + WAL)", + "category": "npm_ast_disk", + "flagship": false, + "sliceCasMinMs": 15.517, + "sliceCasAvgMs": 17.681, + "sliceBinMinMs": 14.921, + "sliceBinAvgMs": 17.13, + "sliceSrcAvgMs": 37.116, + "sliceWarmMs": 7.73, + "prevSliceCasAvgMs": 16.076, + "bunAvgMs": 20.49, + "denoAvgMs": 55.4, + "nodeAvgMs": 73.374 + }, + { + "num": 7, + "code": "07", + "id": "07-graphql-ast-validator", + "label": "`07-graphql-ast-validator` (`dlv` + `dset` + AST Cost)", + "category": "npm_ast_disk", + "flagship": false, + "sliceCasMinMs": 8.43, + "sliceCasAvgMs": 9.215, + "sliceBinMinMs": 9.309, + "sliceBinAvgMs": 10.577, + "sliceSrcAvgMs": 24.089, + "sliceWarmMs": 4.36, + "prevSliceCasAvgMs": 11.115, + "bunAvgMs": 15.329, + "denoAvgMs": 47.086, + "nodeAvgMs": 70.055 + }, + { + "num": 8, + "code": "08", + "id": "08-event-driven-state-journal", + "label": "`08-event-driven-state-journal` (`mitt` + `ms` + JSONL Replay)", + "category": "npm_ast_disk", + "flagship": false, + "sliceCasMinMs": 11.365, + "sliceCasAvgMs": 12.649, + "sliceBinMinMs": 11.882, + "sliceBinAvgMs": 14.43, + "sliceSrcAvgMs": 35.935, + "sliceWarmMs": 6.384, + "prevSliceCasAvgMs": 12.471, + "bunAvgMs": 19.057, + "denoAvgMs": 55.525, + "nodeAvgMs": 73.137 + }, + { + "num": 9, + "code": "09", + "id": "09-wintertc-web-router", + "label": "`09-wintertc-web-router` (`Request` + `Response` + `URL`, 80 reqs)", + "category": "wintertc_fetch_dlp", + "flagship": false, + "sliceCasMinMs": 15.346, + "sliceCasAvgMs": 16.762, + "sliceBinMinMs": 16.171, + "sliceBinAvgMs": 17.364, + "sliceSrcAvgMs": 39.878, + "sliceWarmMs": 12.034, + "prevSliceCasAvgMs": 16.9, + "bunAvgMs": 14.927, + "denoAvgMs": 55.851, + "nodeAvgMs": 98.088 + }, + { + "num": 10, + "code": "10", + "id": "10-fullstack-bff-microservice", + "label": "`10-fullstack-bff-microservice` (`cookie` + `dlv` + `ms` + `ETag`, 60 reqs)", + "category": "wintertc_fetch_dlp", + "flagship": false, + "sliceCasMinMs": 13.955, + "sliceCasAvgMs": 16.69, + "sliceBinMinMs": 13.073, + "sliceBinAvgMs": 16.37, + "sliceSrcAvgMs": 40.221, + "sliceWarmMs": 8.658, + "prevSliceCasAvgMs": 14.257, + "bunAvgMs": 19.554, + "denoAvgMs": 60.117, + "nodeAvgMs": 105.201 + }, + { + "num": 11, + "code": "11", + "id": "11-static-asset-cdn-edge", + "label": "`11-static-asset-cdn-edge` (`bytes` + `ms` + `ETag` `304`, 80 reqs)", + "category": "wintertc_fetch_dlp", + "flagship": false, + "sliceCasMinMs": 10.843, + "sliceCasAvgMs": 12.593, + "sliceBinMinMs": 10.516, + "sliceBinAvgMs": 13.07, + "sliceSrcAvgMs": 37.981, + "sliceWarmMs": 4.907, + "prevSliceCasAvgMs": 11.158, + "bunAvgMs": 17.917, + "denoAvgMs": 61.737, + "nodeAvgMs": 128.612 + }, + { + "num": 12, + "code": "12", + "id": "12-ai-sse-token-streamer", + "label": "`12-ai-sse-token-streamer` (`mitt` + `ms` + SSE + DLP, 320 frames)", + "category": "wintertc_fetch_dlp", + "flagship": false, + "sliceCasMinMs": 16.401, + "sliceCasAvgMs": 19.401, + "sliceBinMinMs": 17.968, + "sliceBinAvgMs": 22.421, + "sliceSrcAvgMs": 41.788, + "sliceWarmMs": 8.076, + "prevSliceCasAvgMs": 18.478, + "bunAvgMs": 19.138, + "denoAvgMs": 65.361, + "nodeAvgMs": 112.538 + }, + { + "num": 13, + "code": "13", + "id": "13-webhook-orchestrator-ssrf", + "label": "`13-webhook-orchestrator-ssrf` (`fast-querystring` + `ms` + Live `fetch`)", + "category": "wintertc_fetch_dlp", + "flagship": false, + "sliceCasMinMs": 15.445, + "sliceCasAvgMs": 17.325, + "sliceBinMinMs": 15.04, + "sliceBinAvgMs": 17.449, + "sliceSrcAvgMs": 44.943, + "sliceWarmMs": 8.115, + "prevSliceCasAvgMs": 15.312, + "bunAvgMs": 23.628, + "denoAvgMs": 69.296, + "nodeAvgMs": 142.524 + }, + { + "num": 14, + "code": "14", + "id": "14-federated-api-mesh-dlp", + "label": "`14-federated-api-mesh-dlp` (`bytes` + `dlv` + `dset` + Live `fetch`)", + "category": "wintertc_fetch_dlp", + "flagship": true, + "sliceCasMinMs": 14.737, + "sliceCasAvgMs": 16.318, + "sliceBinMinMs": 15.567, + "sliceBinAvgMs": 17.252, + "sliceSrcAvgMs": 40.034, + "sliceWarmMs": 9.174, + "prevSliceCasAvgMs": 15.929, + "bunAvgMs": 27.475, + "denoAvgMs": 64.795, + "nodeAvgMs": 135.19 + }, + { + "num": 15, + "code": "15", + "id": "15-time-travel-test-suite", + "label": "`15-time-travel-test-suite` (`semver` + `ms` + `dlv` + `dset` + 24 Rollbacks)", + "category": "realtime_workers_wasm", + "flagship": false, + "sliceCasMinMs": 16.419, + "sliceCasAvgMs": 19.162, + "sliceBinMinMs": 17.095, + "sliceBinAvgMs": 21.095, + "sliceSrcAvgMs": 58.7, + "sliceWarmMs": 6.962, + "prevSliceCasAvgMs": 16.968, + "bunAvgMs": 31.985, + "denoAvgMs": 82.016, + "nodeAvgMs": 99.632 + }, + { + "num": 16, + "code": "16", + "id": "16-dotenv-dlp-config-vault", + "label": "`16-dotenv-dlp-config-vault` (`ini` + `cookie` + `bytes` + `.env` Auto-DLP)", + "category": "core_edge_crypto", + "flagship": false, + "sliceCasMinMs": 7.234, + "sliceCasAvgMs": 8.122, + "sliceBinMinMs": 8.309, + "sliceBinAvgMs": 9.537, + "sliceSrcAvgMs": 32.488, + "sliceWarmMs": 1.918, + "prevSliceCasAvgMs": 8.364, + "bunAvgMs": 17.506, + "denoAvgMs": 57.77, + "nodeAvgMs": 81.863 + }, + { + "num": 17, + "code": "17", + "id": "17-zero-trust-redirect-keepalive-mesh", + "label": "`17-zero-trust-redirect-keepalive-mesh` (Keep-Alive/307/SSRF/DLP)", + "category": "wintertc_fetch_dlp", + "flagship": false, + "sliceCasMinMs": 17.315, + "sliceCasAvgMs": 19.128, + "sliceBinMinMs": 17.273, + "sliceBinAvgMs": 20.008, + "sliceSrcAvgMs": 49.846, + "sliceWarmMs": 9.194, + "prevSliceCasAvgMs": 17.319, + "bunAvgMs": 25.764, + "denoAvgMs": 69.663, + "nodeAvgMs": 141 + }, + { + "num": 18, + "code": "18", + "id": "18-async-event-loop-fanout-scheduler", + "label": "`18-async-event-loop-fanout-scheduler` (Timer Wheel/`Promise.all`/`AbortSignal`)", + "category": "wintertc_fetch_dlp", + "flagship": false, + "sliceCasMinMs": 31.07, + "sliceCasAvgMs": 33.52, + "sliceBinMinMs": 31.964, + "sliceBinAvgMs": 34.1, + "sliceSrcAvgMs": 58.241, + "sliceWarmMs": 20.211, + "prevSliceCasAvgMs": 30.986, + "bunAvgMs": 38.346, + "denoAvgMs": 86.198, + "nodeAvgMs": 97.95 + }, + { + "num": 19, + "code": "19", + "id": "19-wintertc-webcrypto-streams-edge", + "label": "`19-wintertc-webcrypto-streams-edge` (WebCrypto/Streams/FormData/Clone)", + "category": "wintertc_fetch_dlp", + "flagship": false, + "sliceCasMinMs": 8.681, + "sliceCasAvgMs": 9.791, + "sliceBinMinMs": 9.098, + "sliceBinAvgMs": 10.734, + "sliceSrcAvgMs": 39.621, + "sliceWarmMs": 1.604, + "prevSliceCasAvgMs": 9.453, + "bunAvgMs": 16.98, + "denoAvgMs": 56.159, + "nodeAvgMs": 110.354 + }, + { + "num": 20, + "code": "20", + "id": "20-node-compat-and-edge-router", + "label": "`20-node-compat-and-edge-router` (`Uint8Array` `Buffer`/Node Core/AST Bundler)", + "category": "npm_ast_disk", + "flagship": true, + "sliceCasMinMs": 11.486, + "sliceCasAvgMs": 12.907, + "sliceBinMinMs": 11.167, + "sliceBinAvgMs": 13.54, + "sliceSrcAvgMs": 54.627, + "sliceWarmMs": 0.616, + "prevSliceCasAvgMs": 12.304, + "bunAvgMs": 27.516, + "denoAvgMs": 66.074, + "nodeAvgMs": 86.577 + }, + { + "num": 21, + "code": "21", + "id": "21-websocket-realtime-and-security-guard", + "label": "`21-websocket-realtime-and-security-guard` (RFC 6455 `WebSocket` + 5-Ring Guard)", + "category": "realtime_workers_wasm", + "flagship": false, + "sliceCasMinMs": 10.994, + "sliceCasAvgMs": 12.063, + "sliceBinMinMs": 11.289, + "sliceBinAvgMs": 12.726, + "sliceSrcAvgMs": 51.468, + "sliceWarmMs": 2.764, + "prevSliceCasAvgMs": 11.666, + "bunAvgMs": 27.751, + "denoAvgMs": 65.891, + "nodeAvgMs": 152.98 + }, + { + "num": 22, + "code": "22", + "id": "22-worker-threads-and-raw-sockets", + "label": "`22-worker-threads-and-raw-sockets` (3 Worker Threads + TCP/UDP + 5-Ring Sec)", + "category": "realtime_workers_wasm", + "flagship": true, + "sliceCasMinMs": 22.327, + "sliceCasAvgMs": 25.795, + "sliceBinMinMs": 23.048, + "sliceBinAvgMs": 28.445, + "sliceSrcAvgMs": 47.213, + "sliceWarmMs": 2.382, + "prevSliceCasAvgMs": 24.541, + "bunAvgMs": 73.43, + "denoAvgMs": 141.091, + "nodeAvgMs": 127.679 + }, + { + "num": 23, + "code": "23", + "id": "23-wasm-crypto-and-simd-kernel", + "label": "`23-wasm-crypto-and-simd-kernel` (Pure-Rust `WebAssembly` + 5-Ring WASM Sec)", + "category": "realtime_workers_wasm", + "flagship": false, + "sliceCasMinMs": 16.335, + "sliceCasAvgMs": 18.567, + "sliceBinMinMs": 16.828, + "sliceBinAvgMs": 19.093, + "sliceSrcAvgMs": 31.926, + "sliceWarmMs": 2.556, + "prevSliceCasAvgMs": 17.83, + "bunAvgMs": 26.745, + "denoAvgMs": 51.74, + "nodeAvgMs": 78.852 + }, + { + "num": 24, + "code": "24", + "id": "24-tsx-ssr-and-wasm-edge-pipeline", + "label": "`24-tsx-ssr-and-wasm-edge-pipeline` (`WebAssembly` SLA Scorer + SSR Pipeline)", + "category": "realtime_workers_wasm", + "flagship": false, + "sliceCasMinMs": 8.688, + "sliceCasAvgMs": 10.224, + "sliceBinMinMs": 8.982, + "sliceBinAvgMs": 10.141, + "sliceSrcAvgMs": 34.946, + "sliceWarmMs": 2.593, + "prevSliceCasAvgMs": 9.438, + "bunAvgMs": 25.192, + "denoAvgMs": 54.973, + "nodeAvgMs": 84.372 + }, + { + "num": 25, + "code": "FW-01", + "id": "frameworks/01-hono-edge-microservice", + "label": "`FW-01: frameworks/01-hono-edge-microservice` (`hono@4.6.20` + `hono/cookie` + `ms`)", + "category": "frameworks", + "flagship": true, + "sliceCasMinMs": 16.697, + "sliceCasAvgMs": 19.113, + "sliceBinMinMs": 16.696, + "sliceBinAvgMs": 19.482, + "sliceSrcAvgMs": 64.494, + "sliceWarmMs": 6.564, + "prevSliceCasAvgMs": 16.903, + "bunAvgMs": 24.002, + "denoAvgMs": 63.914, + "nodeAvgMs": 117.229 + }, + { + "num": 26, + "code": "FW-02", + "id": "frameworks/02-itty-router-unjs-nitro-stack", + "label": "`FW-02: frameworks/02-itty-router-unjs-nitro-stack` (`itty-router` + UnJS)", + "category": "frameworks", + "flagship": false, + "sliceCasMinMs": 19.038, + "sliceCasAvgMs": 21.035, + "sliceBinMinMs": 18.844, + "sliceBinAvgMs": 21.045, + "sliceSrcAvgMs": 61.273, + "sliceWarmMs": 10.348, + "prevSliceCasAvgMs": 19.999, + "bunAvgMs": 23.934, + "denoAvgMs": 54.645, + "nodeAvgMs": 104.104 + }, + { + "num": 32, + "code": "FW-03", + "id": "frameworks/03-node-http-express-compat", + "label": "`FW-03: frameworks/03-node-http-express-compat` (`node:http` + `node:stream` Express/Polka)", + "category": "frameworks", + "flagship": false, + "sliceCasMinMs": 17.694, + "sliceCasAvgMs": 20.431, + "sliceBinMinMs": 17.702, + "sliceBinAvgMs": 20.21, + "sliceSrcAvgMs": 26.506, + "sliceWarmMs": 1.059, + "prevSliceCasAvgMs": 18.85, + "bunAvgMs": 41.662, + "denoAvgMs": 64.108, + "nodeAvgMs": 105.428 + }, + { + "num": 33, + "code": "FW-04", + "id": "frameworks/04-sveltekit-edge-ssr", + "label": "`FW-04: frameworks/04-sveltekit-edge-ssr` (`@sveltejs/kit@3.1.1` + `svelte@5.57.3` + `devalue@6.0.3`)", + "category": "frameworks", + "flagship": true, + "sliceCasMinMs": 36.813, + "sliceCasAvgMs": 40.143, + "sliceBinMinMs": 38.107, + "sliceBinAvgMs": 43.432, + "sliceSrcAvgMs": 189.156, + "sliceWarmMs": 18.621, + "prevSliceCasAvgMs": 39.319, + "bunAvgMs": 52.963, + "denoAvgMs": 83.646, + "nodeAvgMs": 139.938 + }, + { + "num": 27, + "code": "CS-01", + "id": "case_studies/01-tot-autonomous-sre-agent", + "label": "`CS-01: case_studies/01-tot-autonomous-sre-agent` (20 ToT Sandboxes)", + "category": "case_studies", + "flagship": true, + "sliceCasMinMs": 28.242, + "sliceCasAvgMs": 34.358, + "sliceBinMinMs": 5.763, + "sliceBinAvgMs": 30.359, + "sliceSrcAvgMs": 86.748, + "sliceWarmMs": 16.701, + "prevSliceCasAvgMs": 31.107, + "bunAvgMs": 33.355, + "denoAvgMs": 89.418, + "nodeAvgMs": 109.036 + }, + { + "num": 28, + "code": "CS-02", + "id": "case_studies/02-mcp-code-mode-orchestrator", + "label": "`CS-02: case_studies/02-mcp-code-mode-orchestrator` (`-98.4%` Tokens)", + "category": "case_studies", + "flagship": false, + "sliceCasMinMs": 19.704, + "sliceCasAvgMs": 21.39, + "sliceBinMinMs": 18.977, + "sliceBinAvgMs": 21.176, + "sliceSrcAvgMs": 41.951, + "sliceWarmMs": 6.334, + "prevSliceCasAvgMs": 20.659, + "bunAvgMs": 20.463, + "denoAvgMs": 55.924, + "nodeAvgMs": 82.083 + }, + { + "num": 29, + "code": "CS-03", + "id": "case_studies/03-multi-tenant-saas-plugin-mesh", + "label": "`CS-03: case_studies/03-multi-tenant-saas-plugin-mesh` (12 Tenants + Hot-Swap)", + "category": "case_studies", + "flagship": false, + "sliceCasMinMs": 14.043, + "sliceCasAvgMs": 16.666, + "sliceBinMinMs": 14.23, + "sliceBinAvgMs": 16.646, + "sliceSrcAvgMs": 53.042, + "sliceWarmMs": 7.273, + "prevSliceCasAvgMs": 15.332, + "bunAvgMs": 19.061, + "denoAvgMs": 61.539, + "nodeAvgMs": 105.854 + }, + { + "num": 30, + "code": "CS-04", + "id": "case_studies/04-wasm-zero-trust-cdr-pipeline", + "label": "`CS-04: case_studies/04-wasm-zero-trust-cdr-pipeline` (Wasm SimHash CDR)", + "category": "case_studies", + "flagship": false, + "sliceCasMinMs": 18.832, + "sliceCasAvgMs": 21.343, + "sliceBinMinMs": 18.84, + "sliceBinAvgMs": 21.972, + "sliceSrcAvgMs": 50.316, + "sliceWarmMs": 1.784, + "prevSliceCasAvgMs": 19.955, + "bunAvgMs": 25.138, + "denoAvgMs": 56.075, + "nodeAvgMs": 82.688 + }, + { + "num": 31, + "code": "CS-05", + "id": "case_studies/05-time-travel-chaos-fuzzer-payments", + "label": "`CS-05: case_studies/05-time-travel-chaos-fuzzer-payments` (48 Payment Sagas)", + "category": "case_studies", + "flagship": true, + "sliceCasMinMs": 18, + "sliceCasAvgMs": 21.318, + "sliceBinMinMs": 18.376, + "sliceBinAvgMs": 22.443, + "sliceSrcAvgMs": 56.66, + "sliceWarmMs": 11.942, + "prevSliceCasAvgMs": 20.765, + "bunAvgMs": 23.292, + "denoAvgMs": 73.804, + "nodeAvgMs": 100.35 + } + ], + "rss": [ + { + "id": "App 2: NPM semver+ms+ini", + "label": "App 2: NPM semver+ms+ini", + "sliceKb": 13504, + "bunKb": 30036, + "denoKb": 47196, + "nodeKb": 71448 + }, + { + "id": "App 6: Telemetry + Flatted", + "label": "App 6: Telemetry + Flatted", + "sliceKb": 14400, + "bunKb": 30592, + "denoKb": 51056, + "nodeKb": 72856 + }, + { + "id": "App 21: RFC 6455 WS + Sec", + "label": "App 21: RFC 6455 WS + Sec", + "sliceKb": 13952, + "bunKb": 31616, + "denoKb": 51092, + "nodeKb": 95104 + }, + { + "id": "App 22: Workers + Sockets", + "label": "App 22: Workers + Sockets", + "sliceKb": 22272, + "bunKb": 41540, + "denoKb": 63872, + "nodeKb": 93444 + }, + { + "id": "App 23: Pure-Rust WASM", + "label": "App 23: Pure-Rust WASM", + "sliceKb": 19072, + "bunKb": 31104, + "denoKb": 48928, + "nodeKb": 81296 + }, + { + "id": "FW 1: Hono v4 Microservice", + "label": "FW 1: Hono v4 Microservice", + "sliceKb": 15104, + "bunKb": 31060, + "denoKb": 49396, + "nodeKb": 89240 + }, + { + "id": "FW 2: itty-router + UnJS", + "label": "FW 2: itty-router + UnJS", + "sliceKb": 14464, + "bunKb": 31872, + "denoKb": 48624, + "nodeKb": 87180 + }, + { + "id": "App 24: WASM + SSR", + "label": "App 24: WASM + SSR", + "sliceKb": 13516, + "bunKb": 30336, + "denoKb": 49076, + "nodeKb": 81276 + }, + { + "id": "FW 3: Express node:http", + "label": "FW 3: Express node:http", + "sliceKb": 15488, + "bunKb": 33536, + "denoKb": 46956, + "nodeKb": 80136 + }, + { + "id": "01-tot-autonomous-sre-agent", + "label": "01-tot-autonomous-sre-agent", + "sliceKb": 18816, + "bunKb": 31616, + "denoKb": 53480, + "nodeKb": 83720 + }, + { + "id": "02-mcp-code-mode-orchestrator", + "label": "02-mcp-code-mode-orchestrator", + "sliceKb": 18028, + "bunKb": 27904, + "denoKb": 46908, + "nodeKb": 82952 + }, + { + "id": "03-multi-tenant-saas-plugin-mesh", + "label": "03-multi-tenant-saas-plugin-mesh", + "sliceKb": 15872, + "bunKb": 26880, + "denoKb": 49908, + "nodeKb": 90756 + }, + { + "id": "04-wasm-zero-trust-cdr-pipeline", + "label": "04-wasm-zero-trust-cdr-pipeline", + "sliceKb": 20096, + "bunKb": 31360, + "denoKb": 49876, + "nodeKb": 80392 + }, + { + "id": "05-time-travel-chaos-fuzzer-payments", + "label": "05-time-travel-chaos-fuzzer-payments", + "sliceKb": 15872, + "bunKb": 29312, + "denoKb": 49272, + "nodeKb": 81572 + }, + { + "id": "FW 4: SvelteKit 3 + Svelte 5", + "label": "FW 4: SvelteKit 3 + Svelte 5", + "sliceKb": 21248, + "bunKb": 41472, + "denoKb": 56376, + "nodeKb": 85408 + } + ] +} diff --git a/tests/reports/bench_v0.10.7_20261110_030245Z_2c3e16a.md b/tests/reports/bench_v0.10.7_20261110_030245Z_2c3e16a.md new file mode 100644 index 0000000..80d19e0 --- /dev/null +++ b/tests/reports/bench_v0.10.7_20261110_030245Z_2c3e16a.md @@ -0,0 +1,113 @@ +# Slice (Nexus-JS) — Full 33-Workload & MicroVM Benchmark Report + +* **Slice Version:** `v0.10.7` (Commit `2c3e16a`) +* **Generated Timestamp (UTC):** `2026-11-10T03:02:45Z` +* **Archive File:** [`tests/reports/bench_v0.10.7_20261110_030245Z_2c3e16a.md`](./bench_v0.10.7_20261110_030245Z_2c3e16a.md) +* **Canonical Latest Report:** [`tests/reports/latest.md`](./latest.md) +* **Environment:** `Linux x86_64 Docker (io_uring SQPOLL + WRPKRU)` +* **Compared Runtimes:** + * **Slice:** `v0.10.7` (Default `SLICEBC\x01` Precompiled Boa `CodeBlock` CAS + Monomorphic Inline Caching `get_fast` + Streaming `JsonSeed` `JSON.parse`) + * **Bun:** `v1.4.4` (JavaScriptCore) + * **Deno:** `v2.9.8` (V8) + * **Node.js:** `v27.0.0-alpha.0.0.0` (V8 native TypeScript execution) + +--- + +## 1. Executive Summary + +Across all **33 real-world multi-file TypeScript applications, framework suites, and case studies**, Slice beats **Deno (`v2.9.8`)** on **33/33** workloads, beats **Node.js (`v27.0.0-alpha.0.0.0`)** on **33/33** workloads, beats **Bun (`v1.4.4`)** on **30/33** workloads in cold one-shot execution, and beats **all 3 runtimes on 33/33 workloads in `--warm` pooled isolate execution**. + +| Metric | Linux (`x86_64` Docker) | Windows (`x86_64` Host) | Comparison vs Runtimes & MicroVMs | +| :--- | :---: | :---: | :--- | +| **Single Isolate Cold-Start (Min / P50 / P99)** | **`0.99 us` / `1.06 us` / `2.55 us`** | **`1.40 us` / `1.60 us` / `2.30 us`** | **~120,000x faster than 125ms Firecracker VM** | +| **1,000-Tenant MicroVM Swarm (Boot + Exec)** | **`1.36 ms`** (`9.82 MB` RSS) | **`2.24 ms`** (`11.82 MB` RSS) | **> 10,000x faster than container/VM swarms** | +| **500-Module Monorepo Cold Boot (`0 stat()`)** | **`3.408 ms`** (`432.39 us` in-mem) | **`5.637 ms`** (`640.00 us` in-mem) | **20.6x faster than Node.js (`1,500+ stat()`)** | +| **10,000 Direct Kernel Ring I/O Completions** | **`0.02 ms`** | **`5.11 ms`** | **Zero worker-thread lock contention** | +| **5-Ring Security Containment Verification** | **`5 / 5 PASS`** | **`5 / 5 PASS`** | **OCap + SES + Fuel + SSRF/DLP + MPK** | + +--- + +## 2. `slice serve` Multi-Tenant HTTP/1.1 Keep-Alive Throughput (`16,000` Reqs, 8 Sockets x 8 Pipeline) + +| Server / Runtime | Throughput (`req/s`) | Avg Latency / Req | Total Time (`16k` Reqs) | Relative Speedup vs Runtimes | +| :--- | :---: | :---: | :---: | :--- | +| **`slice serve` (Tier-0 CAS, `--workers=8`)** | **`140,643 req/s`** | **`7.11 us/req`** | **`113.8 ms`** | **`1.75x` faster than `Bun.serve` / `3.04x` Node.js** | +| **`slice serve` (Tier-1 WinterTC, `--workers=8`)** | **`119,010 req/s`** | **`8.40 us/req`** | **`134.4 ms`** | **`1.48x` faster than `Bun.serve` / `2.57x` Node.js** | +| **`Deno.serve` (`v2.9.8`, V8, No Per-Req Sandbox)** | `71,774 req/s` | `13.93 us/req` | `222.9 ms` | `0.89x` vs Bun | +| **`Bun.serve` (`v1.4.4`, JSC, No Per-Req Sandbox)** | `80,578 req/s` | `12.41 us/req` | `198.6 ms` | `1.00x` (Baseline) | +| **`Node.js http.createServer` (`v27.0.0-alpha.0.0.0`, V8)** | `46,241 req/s` | `21.63 us/req` | `346.0 ms` | `0.57x` vs Bun | + +--- + +## 3. Full 33-Workload Latency Comparison (20 Runs Each, Linux `x86_64` Docker) + +| # | Workload (`tests/apps/`, `tests/frameworks/`, `tests/case_studies/`) | Slice Cold `.cas` (`SLICEBC\x01`) | Slice Standalone Bin (`SLICEBC\x01`) | Slice Warm (`--warm`) | Previous `.cas` (`Delta`) | Bun `v1.4.4` | Deno `v2.9.8` | Node.js `v27.0.0-alpha.0.0.0` | Slice Speedup vs Bun / Node.js | +| :- | :--- | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :--- | +| **01** | `01-fintech-checkout` (Multi-File TS + SHA-256) | **`7.502 ms`** (`6.29 ms` Min) | **`7.124 ms`** | **`1.263 ms`** | `6.549 ms` (`14.6%`) | `17.056 ms` | `45.383 ms` | `72.994 ms` | **`2.39x Bun` (`13.50x` Warm) / `10.25x Node`** | +| **02** | `02-npm-ecosystem-suite` (`semver` + `ms` + `ini`) | **`16.522 ms`** (`14.66 ms` Min) | **`17.989 ms`** | **`4.949 ms`** | `16.553 ms` (`-0.2%`) | `27.434 ms` | `63.241 ms` | `87.495 ms` | **`1.66x Bun` (`5.54x` Warm) / `5.30x Node`** | +| **03** | `03-disk-io-log-pipeline` (10 JSONL Shards Disk I/O) | **`8.552 ms`** (`7.43 ms` Min) | **`8.940 ms`** | **`1.935 ms`** | `7.941 ms` (`7.7%`) | `19.251 ms` | `51.810 ms` | `73.893 ms` | **`2.25x Bun` (`9.95x` Warm) / `8.64x Node`** | +| **04** | `04-edge-api-gateway` (`fast-querystring` + `ms`) | **`8.133 ms`** (`7.24 ms` Min) | **`9.147 ms`** | **`1.841 ms`** | `7.827 ms` (`3.9%`) | `18.425 ms` | `51.270 ms` | `75.665 ms` | **`2.27x Bun` (`10.01x` Warm) / `9.30x Node`** | +| **05** | `05-jwt-oauth-session-guard` (`cookie` + `ms` + HMAC) | **`11.369 ms`** (`10.01 ms` Min) | **`12.178 ms`** | **`5.380 ms`** | `11.143 ms` (`2.0%`) | `16.959 ms` | `53.072 ms` | `76.488 ms` | **`1.49x Bun` (`3.15x` Warm) / `6.73x Node`** | +| **06** | `06-telemetry-metrics-pipeline` (`bytes` + `flatted` + WAL) | **`17.681 ms`** (`15.52 ms` Min) | **`17.130 ms`** | **`7.730 ms`** | `16.076 ms` (`10.0%`) | `20.490 ms` | `55.400 ms` | `73.374 ms` | **`1.20x Bun` (`2.65x` Warm) / `4.28x Node`** | +| **07** | `07-graphql-ast-validator` (`dlv` + `dset` + AST Cost) | **`9.215 ms`** (`8.43 ms` Min) | **`10.577 ms`** | **`4.360 ms`** | `11.115 ms` (`-17.1%`) | `15.329 ms` | `47.086 ms` | `70.055 ms` | **`1.66x Bun` (`3.52x` Warm) / `7.60x Node`** | +| **08** | `08-event-driven-state-journal` (`mitt` + `ms` + JSONL Replay) | **`12.649 ms`** (`11.37 ms` Min) | **`14.430 ms`** | **`6.384 ms`** | `12.471 ms` (`1.4%`) | `19.057 ms` | `55.525 ms` | `73.137 ms` | **`1.51x Bun` (`2.99x` Warm) / `5.78x Node`** | +| **09** | `09-wintertc-web-router` (`Request` + `Response` + `URL`, 80 reqs) | **`16.762 ms`** (`15.35 ms` Min) | **`17.364 ms`** | **`12.034 ms`** | `16.900 ms` (`-0.8%`) | `14.927 ms` | `55.851 ms` | `98.088 ms` | **`1.24x Bun Warm` / `5.85x Node`** | +| **10** | `10-fullstack-bff-microservice` (`cookie` + `dlv` + `ms` + `ETag`, 60 reqs) | **`16.690 ms`** (`13.96 ms` Min) | **`16.370 ms`** | **`8.658 ms`** | `14.257 ms` (`17.1%`) | `19.554 ms` | `60.117 ms` | `105.201 ms` | **`1.19x Bun` (`2.26x` Warm) / `6.43x Node`** | +| **11** | `11-static-asset-cdn-edge` (`bytes` + `ms` + `ETag` `304`, 80 reqs) | **`12.593 ms`** (`10.84 ms` Min) | **`13.070 ms`** | **`4.907 ms`** | `11.158 ms` (`12.9%`) | `17.917 ms` | `61.737 ms` | `128.612 ms` | **`1.42x Bun` (`3.65x` Warm) / `10.21x Node`** | +| **12** | `12-ai-sse-token-streamer` (`mitt` + `ms` + SSE + DLP, 320 frames) | **`19.401 ms`** (`16.40 ms` Min) | **`22.421 ms`** | **`8.076 ms`** | `18.478 ms` (`5.0%`) | `19.138 ms` | `65.361 ms` | `112.538 ms` | **`2.37x Bun Warm` / `5.80x Node`** | +| **13** | `13-webhook-orchestrator-ssrf` (`fast-querystring` + `ms` + Live `fetch`) | **`17.325 ms`** (`15.45 ms` Min) | **`17.449 ms`** | **`8.115 ms`** | `15.312 ms` (`13.1%`) | `23.628 ms` | `69.296 ms` | `142.524 ms` | **`1.36x Bun` (`2.91x` Warm) / `8.23x Node`** | +| **14** | `14-federated-api-mesh-dlp` (`bytes` + `dlv` + `dset` + Live `fetch`) | **`16.318 ms`** (`14.74 ms` Min) | **`17.252 ms`** | **`9.174 ms`** | `15.929 ms` (`2.4%`) | `27.475 ms` | `64.795 ms` | `135.190 ms` | **`1.68x Bun` (`2.99x` Warm) / `8.28x Node`** | +| **15** | `15-time-travel-test-suite` (`semver` + `ms` + `dlv` + `dset` + 24 Rollbacks) | **`19.162 ms`** (`16.42 ms` Min) | **`21.095 ms`** | **`6.962 ms`** | `16.968 ms` (`12.9%`) | `31.985 ms` | `82.016 ms` | `99.632 ms` | **`1.67x Bun` (`4.59x` Warm) / `5.20x Node`** | +| **16** | `16-dotenv-dlp-config-vault` (`ini` + `cookie` + `bytes` + `.env` Auto-DLP) | **`8.122 ms`** (`7.23 ms` Min) | **`9.537 ms`** | **`1.918 ms`** | `8.364 ms` (`-2.9%`) | `17.506 ms` | `57.770 ms` | `81.863 ms` | **`2.16x Bun` (`9.13x` Warm) / `10.08x Node`** | +| **17** | `17-zero-trust-redirect-keepalive-mesh` (Keep-Alive/307/SSRF/DLP) | **`19.128 ms`** (`17.32 ms` Min) | **`20.008 ms`** | **`9.194 ms`** | `17.319 ms` (`10.4%`) | `25.764 ms` | `69.663 ms` | `141.000 ms` | **`1.35x Bun` (`2.80x` Warm) / `7.37x Node`** | +| **18** | `18-async-event-loop-fanout-scheduler` (Timer Wheel/`Promise.all`/`AbortSignal`) | **`33.520 ms`** (`31.07 ms` Min) | **`34.100 ms`** | **`20.211 ms`** | `30.986 ms` (`8.2%`) | `38.346 ms` | `86.198 ms` | `97.950 ms` | **`1.14x Bun` (`1.90x` Warm) / `2.92x Node`** | +| **19** | `19-wintertc-webcrypto-streams-edge` (WebCrypto/Streams/FormData/Clone) | **`9.791 ms`** (`8.68 ms` Min) | **`10.734 ms`** | **`1.604 ms`** | `9.453 ms` (`3.6%`) | `16.980 ms` | `56.159 ms` | `110.354 ms` | **`1.73x Bun` (`10.59x` Warm) / `11.27x Node`** | +| **20** | `20-node-compat-and-edge-router` (`Uint8Array` `Buffer`/Node Core/AST Bundler) | **`12.907 ms`** (`11.49 ms` Min) | **`13.540 ms`** | **`0.616 ms`** | `12.304 ms` (`4.9%`) | `27.516 ms` | `66.074 ms` | `86.577 ms` | **`2.13x Bun` (`44.67x` Warm) / `6.71x Node`** | +| **21** | `21-websocket-realtime-and-security-guard` (RFC 6455 `WebSocket` + 5-Ring Guard) | **`12.063 ms`** (`10.99 ms` Min) | **`12.726 ms`** | **`2.764 ms`** | `11.666 ms` (`3.4%`) | `27.751 ms` | `65.891 ms` | `152.980 ms` | **`2.30x Bun` (`10.04x` Warm) / `12.68x Node`** | +| **22** | `22-worker-threads-and-raw-sockets` (3 Worker Threads + TCP/UDP + 5-Ring Sec) | **`25.795 ms`** (`22.33 ms` Min) | **`28.445 ms`** | **`2.382 ms`** | `24.541 ms` (`5.1%`) | `73.430 ms` | `141.091 ms` | `127.679 ms` | **`2.85x Bun` (`30.83x` Warm) / `4.95x Node`** | +| **23** | `23-wasm-crypto-and-simd-kernel` (Pure-Rust `WebAssembly` + 5-Ring WASM Sec) | **`18.567 ms`** (`16.34 ms` Min) | **`19.093 ms`** | **`2.556 ms`** | `17.830 ms` (`4.1%`) | `26.745 ms` | `51.740 ms` | `78.852 ms` | **`1.44x Bun` (`10.46x` Warm) / `4.25x Node`** | +| **24** | `24-tsx-ssr-and-wasm-edge-pipeline` (`WebAssembly` SLA Scorer + SSR Pipeline) | **`10.224 ms`** (`8.69 ms` Min) | **`10.141 ms`** | **`2.593 ms`** | `9.438 ms` (`8.3%`) | `25.192 ms` | `54.973 ms` | `84.372 ms` | **`2.48x Bun` (`9.72x` Warm) / `8.32x Node`** | +| **FW-01** | `FW-01: frameworks/01-hono-edge-microservice` (`hono@4.6.20` + `hono/cookie` + `ms`) | **`19.113 ms`** (`16.70 ms` Min) | **`19.482 ms`** | **`6.564 ms`** | `16.903 ms` (`13.1%`) | `24.002 ms` | `63.914 ms` | `117.229 ms` | **`1.26x Bun` (`3.66x` Warm) / `6.13x Node`** | +| **FW-02** | `FW-02: frameworks/02-itty-router-unjs-nitro-stack` (`itty-router` + UnJS) | **`21.035 ms`** (`19.04 ms` Min) | **`21.045 ms`** | **`10.348 ms`** | `19.999 ms` (`5.2%`) | `23.934 ms` | `54.645 ms` | `104.104 ms` | **`1.14x Bun` (`2.31x` Warm) / `4.95x Node`** | +| **FW-03** | `FW-03: frameworks/03-node-http-express-compat` (`node:http` + `node:stream` Express/Polka) | **`20.431 ms`** (`17.69 ms` Min) | **`20.210 ms`** | **`1.059 ms`** | `18.850 ms` (`8.4%`) | `41.662 ms` | `64.108 ms` | `105.428 ms` | **`2.06x Bun` (`39.34x` Warm) / `5.22x Node`** | +| **FW-04** | `FW-04: frameworks/04-sveltekit-edge-ssr` (`@sveltejs/kit@3.1.1` + `svelte@5.57.3` + `devalue@6.0.3`) | **`40.143 ms`** (`36.81 ms` Min) | **`43.432 ms`** | **`18.621 ms`** | `39.319 ms` (`2.1%`) | `52.963 ms` | `83.646 ms` | `139.938 ms` | **`1.32x Bun` (`2.84x` Warm) / `3.49x Node`** | +| **CS-01** | `CS-01: case_studies/01-tot-autonomous-sre-agent` (20 ToT Sandboxes) | **`34.358 ms`** (`28.24 ms` Min) | **`30.359 ms`** | **`16.701 ms`** | `31.107 ms` (`10.5%`) | `33.355 ms` | `89.418 ms` | `109.036 ms` | **`1.10x Bun` (`2.00x` Warm) / `3.59x Node`** | +| **CS-02** | `CS-02: case_studies/02-mcp-code-mode-orchestrator` (`-98.4%` Tokens) | **`21.390 ms`** (`19.70 ms` Min) | **`21.176 ms`** | **`6.334 ms`** | `20.659 ms` (`3.5%`) | `20.463 ms` | `55.924 ms` | `82.083 ms` | **`3.23x Bun Warm` / `3.88x Node`** | +| **CS-03** | `CS-03: case_studies/03-multi-tenant-saas-plugin-mesh` (12 Tenants + Hot-Swap) | **`16.666 ms`** (`14.04 ms` Min) | **`16.646 ms`** | **`7.273 ms`** | `15.332 ms` (`8.7%`) | `19.061 ms` | `61.539 ms` | `105.854 ms` | **`1.15x Bun` (`2.62x` Warm) / `6.36x Node`** | +| **CS-04** | `CS-04: case_studies/04-wasm-zero-trust-cdr-pipeline` (Wasm SimHash CDR) | **`21.343 ms`** (`18.83 ms` Min) | **`21.972 ms`** | **`1.784 ms`** | `19.955 ms` (`7.0%`) | `25.138 ms` | `56.075 ms` | `82.688 ms` | **`1.18x Bun` (`14.09x` Warm) / `3.87x Node`** | +| **CS-05** | `CS-05: case_studies/05-time-travel-chaos-fuzzer-payments` (48 Payment Sagas) | **`21.318 ms`** (`18.00 ms` Min) | **`22.443 ms`** | **`11.942 ms`** | `20.765 ms` (`2.7%`) | `23.292 ms` | `73.804 ms` | `100.350 ms` | **`1.09x Bun` (`1.95x` Warm) / `4.71x Node`** | + +--- + +## 4. Peak Process Memory Footprint (`Max RSS` via `/usr/bin/time -v`) + +| Workload | Slice (`SLICEBC\x01` Default) | Bun (`v1.4.4`) | Deno (`v2.9.8`) | Node.js (`v27.0.0-alpha.0.0.0`) | Slice Memory Advantage | +| :--- | :---: | :---: | :---: | :---: | :--- | +| **App 2: NPM semver+ms+ini** | **13,504 KB (13.19 MB)** | 30,036 KB (29.33 MB) | 47,196 KB (46.09 MB) | 71,448 KB (69.77 MB) | **5.29x less than Node / 2.22x less than Bun** | +| **App 6: Telemetry + Flatted** | **14,400 KB (14.06 MB)** | 30,592 KB (29.88 MB) | 51,056 KB (49.86 MB) | 72,856 KB (71.15 MB) | **5.06x less than Node / 2.12x less than Bun** | +| **App 21: RFC 6455 WS + Sec** | **13,952 KB (13.63 MB)** | 31,616 KB (30.88 MB) | 51,092 KB (49.89 MB) | 95,104 KB (92.88 MB) | **6.82x less than Node / 2.27x less than Bun** | +| **App 22: Workers + Sockets** | **22,272 KB (21.75 MB)** | 41,540 KB (40.57 MB) | 63,872 KB (62.38 MB) | 93,444 KB (91.25 MB) | **4.20x less than Node / 1.87x less than Bun** | +| **App 23: Pure-Rust WASM** | **19,072 KB (18.63 MB)** | 31,104 KB (30.38 MB) | 48,928 KB (47.78 MB) | 81,296 KB (79.39 MB) | **4.26x less than Node / 1.63x less than Bun** | +| **FW 1: Hono v4 Microservice** | **15,104 KB (14.75 MB)** | 31,060 KB (30.33 MB) | 49,396 KB (48.24 MB) | 89,240 KB (87.15 MB) | **5.91x less than Node / 2.06x less than Bun** | +| **FW 2: itty-router + UnJS** | **14,464 KB (14.13 MB)** | 31,872 KB (31.13 MB) | 48,624 KB (47.48 MB) | 87,180 KB (85.14 MB) | **6.03x less than Node / 2.20x less than Bun** | +| **App 24: WASM + SSR** | **13,516 KB (13.20 MB)** | 30,336 KB (29.63 MB) | 49,076 KB (47.93 MB) | 81,276 KB (79.37 MB) | **6.01x less than Node / 2.24x less than Bun** | +| **FW 3: Express node:http** | **15,488 KB (15.13 MB)** | 33,536 KB (32.75 MB) | 46,956 KB (45.86 MB) | 80,136 KB (78.26 MB) | **5.17x less than Node / 2.17x less than Bun** | +| **01-tot-autonomous-sre-agent** | **18,816 KB (18.38 MB)** | 31,616 KB (30.88 MB) | 53,480 KB (52.23 MB) | 83,720 KB (81.76 MB) | **4.45x less than Node / 1.68x less than Bun** | +| **02-mcp-code-mode-orchestrator** | **18,028 KB (17.61 MB)** | 27,904 KB (27.25 MB) | 46,908 KB (45.81 MB) | 82,952 KB (81.01 MB) | **4.60x less than Node / 1.55x less than Bun** | +| **03-multi-tenant-saas-plugin-mesh** | **15,872 KB (15.50 MB)** | 26,880 KB (26.25 MB) | 49,908 KB (48.74 MB) | 90,756 KB (88.63 MB) | **5.72x less than Node / 1.69x less than Bun** | +| **04-wasm-zero-trust-cdr-pipeline** | **20,096 KB (19.63 MB)** | 31,360 KB (30.63 MB) | 49,876 KB (48.71 MB) | 80,392 KB (78.51 MB) | **4.00x less than Node / 1.56x less than Bun** | +| **05-time-travel-chaos-fuzzer-payments** | **15,872 KB (15.50 MB)** | 29,312 KB (28.63 MB) | 49,272 KB (48.12 MB) | 81,572 KB (79.66 MB) | **5.14x less than Node / 1.85x less than Bun** | +| **FW 4: SvelteKit 3 + Svelte 5** | **21,248 KB (20.75 MB)** | 41,472 KB (40.50 MB) | 56,376 KB (55.05 MB) | 85,408 KB (83.41 MB) | **4.02x less than Node / 1.95x less than Bun** | + +--- + +## 5. Multi-Tenant Edge KV, AI Agent Checkpoints & 5-Ring Security Telemetry + +| Subsystem / Benchmark | Measured Telemetry | Status | +| :--- | :--- | :---: | +| **Sharded `Slice.kv` (`1,001` Get/Set/Incr Ops in Isolate)** | **`951.58 us`** total (`--warm`, `8,431 B` memory cage) | `PASS` | +| **Multi-Tenant `--tenant-dir` Zero-Downtime Hot-Swap** | Live atomic replacement of `tenant-alpha.cas` (`v1 -> v2-hot-swapped`) with isolated `Slice.kv` state | `PASS` | +| **Deterministic Time-Travel Replay (`--deterministic=20261019`)** | 100% bit-for-bit identical PRNG (`Math.random`) & virtual clock (`Date.now`, `performance.now`) | `PASS` | +| **Tree-of-Thought AI Agent (`Slice.checkpoint` + 3 `evalSandbox` + `restore`)** | **`50.45 us`** total (`1.81 us` child sandbox) | `PASS` | +| **Cloud Metadata SSRF (`169.254.169.254`) & Base64 Egress DLP Guard** | `SSRF_METADATA_BLOCKED` & `EGRESS_SECRET_LEAK_BLOCKED` deterministically trapped | `PASS` | +| **Built-In Model Context Protocol Server (`slice mcp --smoke-test`)** | JSON-RPC 2.0 `initialize`, `tools/list`, `tools/call` verified over `stdio` | `PASS` | diff --git a/tests/reports/latest.json b/tests/reports/latest.json index 9759098..d0d1659 100644 --- a/tests/reports/latest.json +++ b/tests/reports/latest.json @@ -1,27 +1,27 @@ { "metadata": { - "version": "0.10.6", - "commit": "47bfa6b", - "timestampUtc": "2026-11-09T22:52:49Z", + "version": "0.10.7", + "commit": "2c3e16a", + "timestampUtc": "2026-11-10T03:02:45Z", "environment": "Linux x86_64 Docker (io_uring SQPOLL + WRPKRU)", "runtimes": { - "slice": "v0.10.6", + "slice": "v0.10.7", "bun": "v1.4.4", "deno": "v2.9.8", "node": "v27.0.0-alpha.0.0.0" }, - "archiveFile": "tests/reports/bench_v0.10.5_20261109_225249Z_47bfa6b.md", + "archiveFile": "tests/reports/bench_v0.10.7_20261110_030245Z_2c3e16a.md", "latestFile": "tests/reports/latest.md" }, "microvm": { "linux": { - "coldMinUs": 0.96, - "coldP50Us": 1.05, - "coldP99Us": 1.8, - "swarm1000Ms": 1.37, - "swarm1000RssMb": 9.7, + "coldMinUs": 0.99, + "coldP50Us": 1.06, + "coldP99Us": 2.55, + "swarm1000Ms": 1.36, + "swarm1000RssMb": 9.82, "cas500ColdMs": 3.408, - "cas500MemUs": 542.85, + "cas500MemUs": 432.39, "ringIo10kMs": 0.02 }, "windows": { @@ -37,36 +37,36 @@ }, "httpKeepAlive": { "sliceTier0": { - "rps": 137020, - "avgUs": 7.3, - "totalMs": 116.8 + "rps": 140643, + "avgUs": 7.11, + "totalMs": 113.8 }, "sliceTier1": { - "rps": 125831, - "avgUs": 7.95, - "totalMs": 127.2 + "rps": 119010, + "avgUs": 8.4, + "totalMs": 134.4 }, "deno": { - "rps": 87455, - "avgUs": 11.43, - "totalMs": 183 + "rps": 71774, + "avgUs": 13.93, + "totalMs": 222.9 }, "bun": { - "rps": 72924, - "avgUs": 13.71, - "totalMs": 219.4 + "rps": 80578, + "avgUs": 12.41, + "totalMs": 198.6 }, "node": { - "rps": 45868, - "avgUs": 21.8, - "totalMs": 348.8 + "rps": 46241, + "avgUs": 21.63, + "totalMs": 346 } }, "primitives": { - "kv1001Us": 500.3, + "kv1001Us": 951.58, "kvMemBytes": 8431, - "tot3SandboxesUs": 50.17, - "totSingleSandboxUs": 1.873 + "tot3SandboxesUs": 50.45, + "totSingleSandboxUs": 1.815 }, "workloads": [ { @@ -76,16 +76,16 @@ "label": "`01-fintech-checkout` (Multi-File TS + SHA-256)", "category": "core_edge_crypto", "flagship": true, - "sliceCasMinMs": 5.965, - "sliceCasAvgMs": 6.549, - "sliceBinMinMs": 6.64, - "sliceBinAvgMs": 8.093, - "sliceSrcAvgMs": 21.635, - "sliceWarmMs": 1.934, - "prevSliceCasAvgMs": 6.206, - "bunAvgMs": 15.167, - "denoAvgMs": 42.607, - "nodeAvgMs": 74.22 + "sliceCasMinMs": 6.293, + "sliceCasAvgMs": 7.502, + "sliceBinMinMs": 6.213, + "sliceBinAvgMs": 7.124, + "sliceSrcAvgMs": 22.024, + "sliceWarmMs": 1.263, + "prevSliceCasAvgMs": 6.549, + "bunAvgMs": 17.056, + "denoAvgMs": 45.383, + "nodeAvgMs": 72.994 }, { "num": 2, @@ -94,16 +94,16 @@ "label": "`02-npm-ecosystem-suite` (`semver` + `ms` + `ini`)", "category": "npm_ast_disk", "flagship": false, - "sliceCasMinMs": 14.494, - "sliceCasAvgMs": 16.553, - "sliceBinMinMs": 14.803, - "sliceBinAvgMs": 16.721, - "sliceSrcAvgMs": 44.654, - "sliceWarmMs": 4.79, - "prevSliceCasAvgMs": 14.659, - "bunAvgMs": 24.251, - "denoAvgMs": 59.826, - "nodeAvgMs": 81.827 + "sliceCasMinMs": 14.665, + "sliceCasAvgMs": 16.522, + "sliceBinMinMs": 14.977, + "sliceBinAvgMs": 17.989, + "sliceSrcAvgMs": 45.8, + "sliceWarmMs": 4.949, + "prevSliceCasAvgMs": 16.553, + "bunAvgMs": 27.434, + "denoAvgMs": 63.241, + "nodeAvgMs": 87.495 }, { "num": 3, @@ -112,16 +112,16 @@ "label": "`03-disk-io-log-pipeline` (10 JSONL Shards Disk I/O)", "category": "npm_ast_disk", "flagship": true, - "sliceCasMinMs": 7.023, - "sliceCasAvgMs": 7.941, - "sliceBinMinMs": 7.174, - "sliceBinAvgMs": 8.422, - "sliceSrcAvgMs": 28.92, - "sliceWarmMs": 1.613, - "prevSliceCasAvgMs": 8.036, - "bunAvgMs": 17.735, - "denoAvgMs": 50.096, - "nodeAvgMs": 70.811 + "sliceCasMinMs": 7.431, + "sliceCasAvgMs": 8.552, + "sliceBinMinMs": 7.784, + "sliceBinAvgMs": 8.94, + "sliceSrcAvgMs": 30.834, + "sliceWarmMs": 1.935, + "prevSliceCasAvgMs": 7.941, + "bunAvgMs": 19.251, + "denoAvgMs": 51.81, + "nodeAvgMs": 73.893 }, { "num": 4, @@ -130,16 +130,16 @@ "label": "`04-edge-api-gateway` (`fast-querystring` + `ms`)", "category": "core_edge_crypto", "flagship": false, - "sliceCasMinMs": 7.149, - "sliceCasAvgMs": 7.827, - "sliceBinMinMs": 7.561, - "sliceBinAvgMs": 8.669, - "sliceSrcAvgMs": 26.354, - "sliceWarmMs": 1.769, - "prevSliceCasAvgMs": 7.85, - "bunAvgMs": 16.48, - "denoAvgMs": 49.015, - "nodeAvgMs": 72.202 + "sliceCasMinMs": 7.238, + "sliceCasAvgMs": 8.133, + "sliceBinMinMs": 8.064, + "sliceBinAvgMs": 9.147, + "sliceSrcAvgMs": 26.334, + "sliceWarmMs": 1.841, + "prevSliceCasAvgMs": 7.827, + "bunAvgMs": 18.425, + "denoAvgMs": 51.27, + "nodeAvgMs": 75.665 }, { "num": 5, @@ -148,16 +148,16 @@ "label": "`05-jwt-oauth-session-guard` (`cookie` + `ms` + HMAC)", "category": "core_edge_crypto", "flagship": false, - "sliceCasMinMs": 10.114, - "sliceCasAvgMs": 11.143, - "sliceBinMinMs": 10.987, - "sliceBinAvgMs": 11.926, - "sliceSrcAvgMs": 26.499, - "sliceWarmMs": 8.203, - "prevSliceCasAvgMs": 10.654, - "bunAvgMs": 15.814, - "denoAvgMs": 51.773, - "nodeAvgMs": 76.002 + "sliceCasMinMs": 10.009, + "sliceCasAvgMs": 11.369, + "sliceBinMinMs": 10.543, + "sliceBinAvgMs": 12.178, + "sliceSrcAvgMs": 27.398, + "sliceWarmMs": 5.38, + "prevSliceCasAvgMs": 11.143, + "bunAvgMs": 16.959, + "denoAvgMs": 53.072, + "nodeAvgMs": 76.488 }, { "num": 6, @@ -166,16 +166,16 @@ "label": "`06-telemetry-metrics-pipeline` (`bytes` + `flatted` + WAL)", "category": "npm_ast_disk", "flagship": false, - "sliceCasMinMs": 14.79, - "sliceCasAvgMs": 16.076, - "sliceBinMinMs": 15.409, - "sliceBinAvgMs": 17.028, - "sliceSrcAvgMs": 37.703, - "sliceWarmMs": 6.338, - "prevSliceCasAvgMs": 14.519, - "bunAvgMs": 19.737, - "denoAvgMs": 56.963, - "nodeAvgMs": 71.608 + "sliceCasMinMs": 15.517, + "sliceCasAvgMs": 17.681, + "sliceBinMinMs": 14.921, + "sliceBinAvgMs": 17.13, + "sliceSrcAvgMs": 37.116, + "sliceWarmMs": 7.73, + "prevSliceCasAvgMs": 16.076, + "bunAvgMs": 20.49, + "denoAvgMs": 55.4, + "nodeAvgMs": 73.374 }, { "num": 7, @@ -184,16 +184,16 @@ "label": "`07-graphql-ast-validator` (`dlv` + `dset` + AST Cost)", "category": "npm_ast_disk", "flagship": false, - "sliceCasMinMs": 8.787, - "sliceCasAvgMs": 11.115, - "sliceBinMinMs": 9.491, - "sliceBinAvgMs": 10.37, - "sliceSrcAvgMs": 24.844, - "sliceWarmMs": 4.102, - "prevSliceCasAvgMs": 9.992, - "bunAvgMs": 15.024, - "denoAvgMs": 46.462, - "nodeAvgMs": 68.656 + "sliceCasMinMs": 8.43, + "sliceCasAvgMs": 9.215, + "sliceBinMinMs": 9.309, + "sliceBinAvgMs": 10.577, + "sliceSrcAvgMs": 24.089, + "sliceWarmMs": 4.36, + "prevSliceCasAvgMs": 11.115, + "bunAvgMs": 15.329, + "denoAvgMs": 47.086, + "nodeAvgMs": 70.055 }, { "num": 8, @@ -202,16 +202,16 @@ "label": "`08-event-driven-state-journal` (`mitt` + `ms` + JSONL Replay)", "category": "npm_ast_disk", "flagship": false, - "sliceCasMinMs": 10.997, - "sliceCasAvgMs": 12.471, - "sliceBinMinMs": 11.503, - "sliceBinAvgMs": 12.646, - "sliceSrcAvgMs": 35.987, - "sliceWarmMs": 5.602, - "prevSliceCasAvgMs": 13.568, - "bunAvgMs": 17.725, - "denoAvgMs": 53.924, - "nodeAvgMs": 71.64 + "sliceCasMinMs": 11.365, + "sliceCasAvgMs": 12.649, + "sliceBinMinMs": 11.882, + "sliceBinAvgMs": 14.43, + "sliceSrcAvgMs": 35.935, + "sliceWarmMs": 6.384, + "prevSliceCasAvgMs": 12.471, + "bunAvgMs": 19.057, + "denoAvgMs": 55.525, + "nodeAvgMs": 73.137 }, { "num": 9, @@ -220,16 +220,16 @@ "label": "`09-wintertc-web-router` (`Request` + `Response` + `URL`, 80 reqs)", "category": "wintertc_fetch_dlp", "flagship": false, - "sliceCasMinMs": 15.006, - "sliceCasAvgMs": 16.9, - "sliceBinMinMs": 15.631, - "sliceBinAvgMs": 17.946, - "sliceSrcAvgMs": 38.74, - "sliceWarmMs": 11.562, - "prevSliceCasAvgMs": 15.476, - "bunAvgMs": 14.796, - "denoAvgMs": 57.896, - "nodeAvgMs": 96.743 + "sliceCasMinMs": 15.346, + "sliceCasAvgMs": 16.762, + "sliceBinMinMs": 16.171, + "sliceBinAvgMs": 17.364, + "sliceSrcAvgMs": 39.878, + "sliceWarmMs": 12.034, + "prevSliceCasAvgMs": 16.9, + "bunAvgMs": 14.927, + "denoAvgMs": 55.851, + "nodeAvgMs": 98.088 }, { "num": 10, @@ -238,16 +238,16 @@ "label": "`10-fullstack-bff-microservice` (`cookie` + `dlv` + `ms` + `ETag`, 60 reqs)", "category": "wintertc_fetch_dlp", "flagship": false, - "sliceCasMinMs": 12.895, - "sliceCasAvgMs": 14.257, - "sliceBinMinMs": 13.832, - "sliceBinAvgMs": 16.402, - "sliceSrcAvgMs": 39.87, - "sliceWarmMs": 11.179, - "prevSliceCasAvgMs": 13.998, - "bunAvgMs": 18.103, - "denoAvgMs": 64.257, - "nodeAvgMs": 101.196 + "sliceCasMinMs": 13.955, + "sliceCasAvgMs": 16.69, + "sliceBinMinMs": 13.073, + "sliceBinAvgMs": 16.37, + "sliceSrcAvgMs": 40.221, + "sliceWarmMs": 8.658, + "prevSliceCasAvgMs": 14.257, + "bunAvgMs": 19.554, + "denoAvgMs": 60.117, + "nodeAvgMs": 105.201 }, { "num": 11, @@ -256,16 +256,16 @@ "label": "`11-static-asset-cdn-edge` (`bytes` + `ms` + `ETag` `304`, 80 reqs)", "category": "wintertc_fetch_dlp", "flagship": false, - "sliceCasMinMs": 10.522, - "sliceCasAvgMs": 11.158, - "sliceBinMinMs": 10.352, - "sliceBinAvgMs": 12.072, - "sliceSrcAvgMs": 33.918, - "sliceWarmMs": 4.154, - "prevSliceCasAvgMs": 10.268, - "bunAvgMs": 15.225, - "denoAvgMs": 56.518, - "nodeAvgMs": 101.741 + "sliceCasMinMs": 10.843, + "sliceCasAvgMs": 12.593, + "sliceBinMinMs": 10.516, + "sliceBinAvgMs": 13.07, + "sliceSrcAvgMs": 37.981, + "sliceWarmMs": 4.907, + "prevSliceCasAvgMs": 11.158, + "bunAvgMs": 17.917, + "denoAvgMs": 61.737, + "nodeAvgMs": 128.612 }, { "num": 12, @@ -274,16 +274,16 @@ "label": "`12-ai-sse-token-streamer` (`mitt` + `ms` + SSE + DLP, 320 frames)", "category": "wintertc_fetch_dlp", "flagship": false, - "sliceCasMinMs": 15.373, - "sliceCasAvgMs": 18.478, - "sliceBinMinMs": 16.82, - "sliceBinAvgMs": 19.011, - "sliceSrcAvgMs": 39.287, - "sliceWarmMs": 8.424, - "prevSliceCasAvgMs": 16.665, - "bunAvgMs": 17.424, - "denoAvgMs": 56.409, - "nodeAvgMs": 111.849 + "sliceCasMinMs": 16.401, + "sliceCasAvgMs": 19.401, + "sliceBinMinMs": 17.968, + "sliceBinAvgMs": 22.421, + "sliceSrcAvgMs": 41.788, + "sliceWarmMs": 8.076, + "prevSliceCasAvgMs": 18.478, + "bunAvgMs": 19.138, + "denoAvgMs": 65.361, + "nodeAvgMs": 112.538 }, { "num": 13, @@ -292,16 +292,16 @@ "label": "`13-webhook-orchestrator-ssrf` (`fast-querystring` + `ms` + Live `fetch`)", "category": "wintertc_fetch_dlp", "flagship": false, - "sliceCasMinMs": 13.935, - "sliceCasAvgMs": 15.312, - "sliceBinMinMs": 14.75, - "sliceBinAvgMs": 15.857, - "sliceSrcAvgMs": 44.061, - "sliceWarmMs": 7.041, - "prevSliceCasAvgMs": 14.135, - "bunAvgMs": 25.142, - "denoAvgMs": 60.842, - "nodeAvgMs": 132.603 + "sliceCasMinMs": 15.445, + "sliceCasAvgMs": 17.325, + "sliceBinMinMs": 15.04, + "sliceBinAvgMs": 17.449, + "sliceSrcAvgMs": 44.943, + "sliceWarmMs": 8.115, + "prevSliceCasAvgMs": 15.312, + "bunAvgMs": 23.628, + "denoAvgMs": 69.296, + "nodeAvgMs": 142.524 }, { "num": 14, @@ -310,16 +310,16 @@ "label": "`14-federated-api-mesh-dlp` (`bytes` + `dlv` + `dset` + Live `fetch`)", "category": "wintertc_fetch_dlp", "flagship": true, - "sliceCasMinMs": 14.684, - "sliceCasAvgMs": 15.929, - "sliceBinMinMs": 14.28, - "sliceBinAvgMs": 16.196, - "sliceSrcAvgMs": 37.649, - "sliceWarmMs": 7.802, - "prevSliceCasAvgMs": 15.515, - "bunAvgMs": 24.46, - "denoAvgMs": 61.587, - "nodeAvgMs": 122.583 + "sliceCasMinMs": 14.737, + "sliceCasAvgMs": 16.318, + "sliceBinMinMs": 15.567, + "sliceBinAvgMs": 17.252, + "sliceSrcAvgMs": 40.034, + "sliceWarmMs": 9.174, + "prevSliceCasAvgMs": 15.929, + "bunAvgMs": 27.475, + "denoAvgMs": 64.795, + "nodeAvgMs": 135.19 }, { "num": 15, @@ -328,16 +328,16 @@ "label": "`15-time-travel-test-suite` (`semver` + `ms` + `dlv` + `dset` + 24 Rollbacks)", "category": "realtime_workers_wasm", "flagship": false, - "sliceCasMinMs": 15.097, - "sliceCasAvgMs": 16.968, - "sliceBinMinMs": 15.668, - "sliceBinAvgMs": 17.549, - "sliceSrcAvgMs": 50.828, - "sliceWarmMs": 5.987, - "prevSliceCasAvgMs": 15.345, - "bunAvgMs": 28.355, - "denoAvgMs": 77.46, - "nodeAvgMs": 95.857 + "sliceCasMinMs": 16.419, + "sliceCasAvgMs": 19.162, + "sliceBinMinMs": 17.095, + "sliceBinAvgMs": 21.095, + "sliceSrcAvgMs": 58.7, + "sliceWarmMs": 6.962, + "prevSliceCasAvgMs": 16.968, + "bunAvgMs": 31.985, + "denoAvgMs": 82.016, + "nodeAvgMs": 99.632 }, { "num": 16, @@ -346,16 +346,16 @@ "label": "`16-dotenv-dlp-config-vault` (`ini` + `cookie` + `bytes` + `.env` Auto-DLP)", "category": "core_edge_crypto", "flagship": false, - "sliceCasMinMs": 7.372, - "sliceCasAvgMs": 8.364, - "sliceBinMinMs": 7.863, - "sliceBinAvgMs": 9.346, - "sliceSrcAvgMs": 32.219, - "sliceWarmMs": 1.28, - "prevSliceCasAvgMs": 7.716, - "bunAvgMs": 16.161, - "denoAvgMs": 54.266, - "nodeAvgMs": 75.761 + "sliceCasMinMs": 7.234, + "sliceCasAvgMs": 8.122, + "sliceBinMinMs": 8.309, + "sliceBinAvgMs": 9.537, + "sliceSrcAvgMs": 32.488, + "sliceWarmMs": 1.918, + "prevSliceCasAvgMs": 8.364, + "bunAvgMs": 17.506, + "denoAvgMs": 57.77, + "nodeAvgMs": 81.863 }, { "num": 17, @@ -364,16 +364,16 @@ "label": "`17-zero-trust-redirect-keepalive-mesh` (Keep-Alive/307/SSRF/DLP)", "category": "wintertc_fetch_dlp", "flagship": false, - "sliceCasMinMs": 16.275, - "sliceCasAvgMs": 17.319, - "sliceBinMinMs": 16.816, - "sliceBinAvgMs": 18.538, - "sliceSrcAvgMs": 47.714, - "sliceWarmMs": 9.241, - "prevSliceCasAvgMs": 16.359, - "bunAvgMs": 25.921, - "denoAvgMs": 65.348, - "nodeAvgMs": 132.34 + "sliceCasMinMs": 17.315, + "sliceCasAvgMs": 19.128, + "sliceBinMinMs": 17.273, + "sliceBinAvgMs": 20.008, + "sliceSrcAvgMs": 49.846, + "sliceWarmMs": 9.194, + "prevSliceCasAvgMs": 17.319, + "bunAvgMs": 25.764, + "denoAvgMs": 69.663, + "nodeAvgMs": 141 }, { "num": 18, @@ -382,16 +382,16 @@ "label": "`18-async-event-loop-fanout-scheduler` (Timer Wheel/`Promise.all`/`AbortSignal`)", "category": "wintertc_fetch_dlp", "flagship": false, - "sliceCasMinMs": 28.487, - "sliceCasAvgMs": 30.986, - "sliceBinMinMs": 31.707, - "sliceBinAvgMs": 33.993, - "sliceSrcAvgMs": 52.49, - "sliceWarmMs": 17.717, - "prevSliceCasAvgMs": 31.543, - "bunAvgMs": 37.518, - "denoAvgMs": 81.154, - "nodeAvgMs": 94.107 + "sliceCasMinMs": 31.07, + "sliceCasAvgMs": 33.52, + "sliceBinMinMs": 31.964, + "sliceBinAvgMs": 34.1, + "sliceSrcAvgMs": 58.241, + "sliceWarmMs": 20.211, + "prevSliceCasAvgMs": 30.986, + "bunAvgMs": 38.346, + "denoAvgMs": 86.198, + "nodeAvgMs": 97.95 }, { "num": 19, @@ -400,16 +400,16 @@ "label": "`19-wintertc-webcrypto-streams-edge` (WebCrypto/Streams/FormData/Clone)", "category": "wintertc_fetch_dlp", "flagship": false, - "sliceCasMinMs": 8.341, - "sliceCasAvgMs": 9.453, - "sliceBinMinMs": 8.631, - "sliceBinAvgMs": 9.903, - "sliceSrcAvgMs": 37.429, - "sliceWarmMs": 1.477, - "prevSliceCasAvgMs": 8.353, - "bunAvgMs": 15.328, - "denoAvgMs": 53.271, - "nodeAvgMs": 102.717 + "sliceCasMinMs": 8.681, + "sliceCasAvgMs": 9.791, + "sliceBinMinMs": 9.098, + "sliceBinAvgMs": 10.734, + "sliceSrcAvgMs": 39.621, + "sliceWarmMs": 1.604, + "prevSliceCasAvgMs": 9.453, + "bunAvgMs": 16.98, + "denoAvgMs": 56.159, + "nodeAvgMs": 110.354 }, { "num": 20, @@ -418,16 +418,16 @@ "label": "`20-node-compat-and-edge-router` (`Uint8Array` `Buffer`/Node Core/AST Bundler)", "category": "npm_ast_disk", "flagship": true, - "sliceCasMinMs": 10.574, - "sliceCasAvgMs": 12.304, - "sliceBinMinMs": 11.021, - "sliceBinAvgMs": 12.468, - "sliceSrcAvgMs": 53.659, - "sliceWarmMs": 0.888, - "prevSliceCasAvgMs": 11.502, - "bunAvgMs": 25.969, - "denoAvgMs": 64.068, - "nodeAvgMs": 88.273 + "sliceCasMinMs": 11.486, + "sliceCasAvgMs": 12.907, + "sliceBinMinMs": 11.167, + "sliceBinAvgMs": 13.54, + "sliceSrcAvgMs": 54.627, + "sliceWarmMs": 0.616, + "prevSliceCasAvgMs": 12.304, + "bunAvgMs": 27.516, + "denoAvgMs": 66.074, + "nodeAvgMs": 86.577 }, { "num": 21, @@ -436,16 +436,16 @@ "label": "`21-websocket-realtime-and-security-guard` (RFC 6455 `WebSocket` + 5-Ring Guard)", "category": "realtime_workers_wasm", "flagship": false, - "sliceCasMinMs": 10.388, - "sliceCasAvgMs": 11.666, - "sliceBinMinMs": 11.096, - "sliceBinAvgMs": 12.224, - "sliceSrcAvgMs": 48.96, - "sliceWarmMs": 2.803, - "prevSliceCasAvgMs": 10.803, - "bunAvgMs": 24.293, - "denoAvgMs": 60.684, - "nodeAvgMs": 135.299 + "sliceCasMinMs": 10.994, + "sliceCasAvgMs": 12.063, + "sliceBinMinMs": 11.289, + "sliceBinAvgMs": 12.726, + "sliceSrcAvgMs": 51.468, + "sliceWarmMs": 2.764, + "prevSliceCasAvgMs": 11.666, + "bunAvgMs": 27.751, + "denoAvgMs": 65.891, + "nodeAvgMs": 152.98 }, { "num": 22, @@ -454,16 +454,16 @@ "label": "`22-worker-threads-and-raw-sockets` (3 Worker Threads + TCP/UDP + 5-Ring Sec)", "category": "realtime_workers_wasm", "flagship": true, - "sliceCasMinMs": 21.213, - "sliceCasAvgMs": 24.541, - "sliceBinMinMs": 20.697, - "sliceBinAvgMs": 23.822, - "sliceSrcAvgMs": 44.508, - "sliceWarmMs": 2.377, - "prevSliceCasAvgMs": 21.52, - "bunAvgMs": 68.043, - "denoAvgMs": 134.578, - "nodeAvgMs": 116.66 + "sliceCasMinMs": 22.327, + "sliceCasAvgMs": 25.795, + "sliceBinMinMs": 23.048, + "sliceBinAvgMs": 28.445, + "sliceSrcAvgMs": 47.213, + "sliceWarmMs": 2.382, + "prevSliceCasAvgMs": 24.541, + "bunAvgMs": 73.43, + "denoAvgMs": 141.091, + "nodeAvgMs": 127.679 }, { "num": 23, @@ -472,16 +472,16 @@ "label": "`23-wasm-crypto-and-simd-kernel` (Pure-Rust `WebAssembly` + 5-Ring WASM Sec)", "category": "realtime_workers_wasm", "flagship": false, - "sliceCasMinMs": 15.158, - "sliceCasAvgMs": 17.83, - "sliceBinMinMs": 15.886, - "sliceBinAvgMs": 18.181, - "sliceSrcAvgMs": 31.114, - "sliceWarmMs": 2.088, - "prevSliceCasAvgMs": 15.912, - "bunAvgMs": 24.671, - "denoAvgMs": 49.186, - "nodeAvgMs": 78.258 + "sliceCasMinMs": 16.335, + "sliceCasAvgMs": 18.567, + "sliceBinMinMs": 16.828, + "sliceBinAvgMs": 19.093, + "sliceSrcAvgMs": 31.926, + "sliceWarmMs": 2.556, + "prevSliceCasAvgMs": 17.83, + "bunAvgMs": 26.745, + "denoAvgMs": 51.74, + "nodeAvgMs": 78.852 }, { "num": 24, @@ -490,16 +490,16 @@ "label": "`24-tsx-ssr-and-wasm-edge-pipeline` (`WebAssembly` SLA Scorer + SSR Pipeline)", "category": "realtime_workers_wasm", "flagship": false, - "sliceCasMinMs": 8.205, - "sliceCasAvgMs": 9.438, - "sliceBinMinMs": 8.649, - "sliceBinAvgMs": 9.628, - "sliceSrcAvgMs": 33.98, - "sliceWarmMs": 1.751, - "prevSliceCasAvgMs": 8.927, - "bunAvgMs": 21.746, - "denoAvgMs": 51.375, - "nodeAvgMs": 78.308 + "sliceCasMinMs": 8.688, + "sliceCasAvgMs": 10.224, + "sliceBinMinMs": 8.982, + "sliceBinAvgMs": 10.141, + "sliceSrcAvgMs": 34.946, + "sliceWarmMs": 2.593, + "prevSliceCasAvgMs": 9.438, + "bunAvgMs": 25.192, + "denoAvgMs": 54.973, + "nodeAvgMs": 84.372 }, { "num": 25, @@ -508,16 +508,16 @@ "label": "`FW-01: frameworks/01-hono-edge-microservice` (`hono@4.6.20` + `hono/cookie` + `ms`)", "category": "frameworks", "flagship": true, - "sliceCasMinMs": 14.968, - "sliceCasAvgMs": 16.903, - "sliceBinMinMs": 15.466, - "sliceBinAvgMs": 17.879, - "sliceSrcAvgMs": 61.054, - "sliceWarmMs": 7.535, - "prevSliceCasAvgMs": 16.071, - "bunAvgMs": 22.254, - "denoAvgMs": 61.183, - "nodeAvgMs": 110.858 + "sliceCasMinMs": 16.697, + "sliceCasAvgMs": 19.113, + "sliceBinMinMs": 16.696, + "sliceBinAvgMs": 19.482, + "sliceSrcAvgMs": 64.494, + "sliceWarmMs": 6.564, + "prevSliceCasAvgMs": 16.903, + "bunAvgMs": 24.002, + "denoAvgMs": 63.914, + "nodeAvgMs": 117.229 }, { "num": 26, @@ -526,16 +526,16 @@ "label": "`FW-02: frameworks/02-itty-router-unjs-nitro-stack` (`itty-router` + UnJS)", "category": "frameworks", "flagship": false, - "sliceCasMinMs": 17.744, - "sliceCasAvgMs": 19.999, - "sliceBinMinMs": 17.828, - "sliceBinAvgMs": 20.653, - "sliceSrcAvgMs": 57.474, - "sliceWarmMs": 10.506, - "prevSliceCasAvgMs": 19.468, - "bunAvgMs": 21.391, - "denoAvgMs": 53.565, - "nodeAvgMs": 100.97 + "sliceCasMinMs": 19.038, + "sliceCasAvgMs": 21.035, + "sliceBinMinMs": 18.844, + "sliceBinAvgMs": 21.045, + "sliceSrcAvgMs": 61.273, + "sliceWarmMs": 10.348, + "prevSliceCasAvgMs": 19.999, + "bunAvgMs": 23.934, + "denoAvgMs": 54.645, + "nodeAvgMs": 104.104 }, { "num": 32, @@ -544,16 +544,16 @@ "label": "`FW-03: frameworks/03-node-http-express-compat` (`node:http` + `node:stream` Express/Polka)", "category": "frameworks", "flagship": false, - "sliceCasMinMs": 16.776, - "sliceCasAvgMs": 18.85, - "sliceBinMinMs": 16.441, - "sliceBinAvgMs": 19.326, - "sliceSrcAvgMs": 26.726, - "sliceWarmMs": 1.399, - "prevSliceCasAvgMs": 16.83, - "bunAvgMs": 41.711, - "denoAvgMs": 60.165, - "nodeAvgMs": 99.962 + "sliceCasMinMs": 17.694, + "sliceCasAvgMs": 20.431, + "sliceBinMinMs": 17.702, + "sliceBinAvgMs": 20.21, + "sliceSrcAvgMs": 26.506, + "sliceWarmMs": 1.059, + "prevSliceCasAvgMs": 18.85, + "bunAvgMs": 41.662, + "denoAvgMs": 64.108, + "nodeAvgMs": 105.428 }, { "num": 33, @@ -562,16 +562,16 @@ "label": "`FW-04: frameworks/04-sveltekit-edge-ssr` (`@sveltejs/kit@3.1.1` + `svelte@5.57.3` + `devalue@6.0.3`)", "category": "frameworks", "flagship": true, - "sliceCasMinMs": 34.463, - "sliceCasAvgMs": 39.319, - "sliceBinMinMs": 34.304, - "sliceBinAvgMs": 40.783, - "sliceSrcAvgMs": 180.822, - "sliceWarmMs": 19.712, - "prevSliceCasAvgMs": 36.16, - "bunAvgMs": 52.502, - "denoAvgMs": 84.299, - "nodeAvgMs": 133.012 + "sliceCasMinMs": 36.813, + "sliceCasAvgMs": 40.143, + "sliceBinMinMs": 38.107, + "sliceBinAvgMs": 43.432, + "sliceSrcAvgMs": 189.156, + "sliceWarmMs": 18.621, + "prevSliceCasAvgMs": 39.319, + "bunAvgMs": 52.963, + "denoAvgMs": 83.646, + "nodeAvgMs": 139.938 }, { "num": 27, @@ -580,16 +580,16 @@ "label": "`CS-01: case_studies/01-tot-autonomous-sre-agent` (20 ToT Sandboxes)", "category": "case_studies", "flagship": true, - "sliceCasMinMs": 26.75, - "sliceCasAvgMs": 31.107, - "sliceBinMinMs": 26.945, - "sliceBinAvgMs": 31.878, - "sliceSrcAvgMs": 84.553, - "sliceWarmMs": 13.126, - "prevSliceCasAvgMs": 26.485, - "bunAvgMs": 32.776, - "denoAvgMs": 86.411, - "nodeAvgMs": 105.353 + "sliceCasMinMs": 28.242, + "sliceCasAvgMs": 34.358, + "sliceBinMinMs": 5.763, + "sliceBinAvgMs": 30.359, + "sliceSrcAvgMs": 86.748, + "sliceWarmMs": 16.701, + "prevSliceCasAvgMs": 31.107, + "bunAvgMs": 33.355, + "denoAvgMs": 89.418, + "nodeAvgMs": 109.036 }, { "num": 28, @@ -598,16 +598,16 @@ "label": "`CS-02: case_studies/02-mcp-code-mode-orchestrator` (`-98.4%` Tokens)", "category": "case_studies", "flagship": false, - "sliceCasMinMs": 18.425, - "sliceCasAvgMs": 20.659, - "sliceBinMinMs": 18.837, - "sliceBinAvgMs": 21.371, - "sliceSrcAvgMs": 41.344, - "sliceWarmMs": 6.569, - "prevSliceCasAvgMs": 20.362, - "bunAvgMs": 18.019, - "denoAvgMs": 52.128, - "nodeAvgMs": 79.359 + "sliceCasMinMs": 19.704, + "sliceCasAvgMs": 21.39, + "sliceBinMinMs": 18.977, + "sliceBinAvgMs": 21.176, + "sliceSrcAvgMs": 41.951, + "sliceWarmMs": 6.334, + "prevSliceCasAvgMs": 20.659, + "bunAvgMs": 20.463, + "denoAvgMs": 55.924, + "nodeAvgMs": 82.083 }, { "num": 29, @@ -616,16 +616,16 @@ "label": "`CS-03: case_studies/03-multi-tenant-saas-plugin-mesh` (12 Tenants + Hot-Swap)", "category": "case_studies", "flagship": false, - "sliceCasMinMs": 13.56, - "sliceCasAvgMs": 15.332, - "sliceBinMinMs": 13.832, - "sliceBinAvgMs": 15.796, - "sliceSrcAvgMs": 52.384, - "sliceWarmMs": 5.721, - "prevSliceCasAvgMs": 13.984, - "bunAvgMs": 18.869, - "denoAvgMs": 57.047, - "nodeAvgMs": 98.424 + "sliceCasMinMs": 14.043, + "sliceCasAvgMs": 16.666, + "sliceBinMinMs": 14.23, + "sliceBinAvgMs": 16.646, + "sliceSrcAvgMs": 53.042, + "sliceWarmMs": 7.273, + "prevSliceCasAvgMs": 15.332, + "bunAvgMs": 19.061, + "denoAvgMs": 61.539, + "nodeAvgMs": 105.854 }, { "num": 30, @@ -634,16 +634,16 @@ "label": "`CS-04: case_studies/04-wasm-zero-trust-cdr-pipeline` (Wasm SimHash CDR)", "category": "case_studies", "flagship": false, - "sliceCasMinMs": 17.489, - "sliceCasAvgMs": 19.955, - "sliceBinMinMs": 18.426, - "sliceBinAvgMs": 21.163, - "sliceSrcAvgMs": 45.664, - "sliceWarmMs": 1.656, - "prevSliceCasAvgMs": 17.514, - "bunAvgMs": 24.621, - "denoAvgMs": 50.99, - "nodeAvgMs": 78.359 + "sliceCasMinMs": 18.832, + "sliceCasAvgMs": 21.343, + "sliceBinMinMs": 18.84, + "sliceBinAvgMs": 21.972, + "sliceSrcAvgMs": 50.316, + "sliceWarmMs": 1.784, + "prevSliceCasAvgMs": 19.955, + "bunAvgMs": 25.138, + "denoAvgMs": 56.075, + "nodeAvgMs": 82.688 }, { "num": 31, @@ -652,138 +652,138 @@ "label": "`CS-05: case_studies/05-time-travel-chaos-fuzzer-payments` (48 Payment Sagas)", "category": "case_studies", "flagship": true, - "sliceCasMinMs": 17.119, - "sliceCasAvgMs": 20.765, - "sliceBinMinMs": 17.498, - "sliceBinAvgMs": 21.73, - "sliceSrcAvgMs": 58.081, - "sliceWarmMs": 9.381, - "prevSliceCasAvgMs": 18.127, - "bunAvgMs": 23.262, - "denoAvgMs": 71.208, - "nodeAvgMs": 96.481 + "sliceCasMinMs": 18, + "sliceCasAvgMs": 21.318, + "sliceBinMinMs": 18.376, + "sliceBinAvgMs": 22.443, + "sliceSrcAvgMs": 56.66, + "sliceWarmMs": 11.942, + "prevSliceCasAvgMs": 20.765, + "bunAvgMs": 23.292, + "denoAvgMs": 73.804, + "nodeAvgMs": 100.35 } ], "rss": [ { "id": "App 2: NPM semver+ms+ini", "label": "App 2: NPM semver+ms+ini", - "sliceKb": 13568, - "bunKb": 29948, - "denoKb": 46560, - "nodeKb": 71708 + "sliceKb": 13504, + "bunKb": 30036, + "denoKb": 47196, + "nodeKb": 71448 }, { "id": "App 6: Telemetry + Flatted", "label": "App 6: Telemetry + Flatted", - "sliceKb": 14612, - "bunKb": 30080, - "denoKb": 50548, - "nodeKb": 73240 + "sliceKb": 14400, + "bunKb": 30592, + "denoKb": 51056, + "nodeKb": 72856 }, { "id": "App 21: RFC 6455 WS + Sec", "label": "App 21: RFC 6455 WS + Sec", "sliceKb": 13952, - "bunKb": 31844, - "denoKb": 50936, + "bunKb": 31616, + "denoKb": 51092, "nodeKb": 95104 }, { "id": "App 22: Workers + Sockets", "label": "App 22: Workers + Sockets", "sliceKb": 22272, - "bunKb": 41808, - "denoKb": 63732, - "nodeKb": 93304 + "bunKb": 41540, + "denoKb": 63872, + "nodeKb": 93444 }, { "id": "App 23: Pure-Rust WASM", "label": "App 23: Pure-Rust WASM", "sliceKb": 19072, - "bunKb": 30848, - "denoKb": 49160, - "nodeKb": 80528 + "bunKb": 31104, + "denoKb": 48928, + "nodeKb": 81296 }, { "id": "FW 1: Hono v4 Microservice", "label": "FW 1: Hono v4 Microservice", - "sliceKb": 14976, - "bunKb": 31176, - "denoKb": 48724, - "nodeKb": 89112 + "sliceKb": 15104, + "bunKb": 31060, + "denoKb": 49396, + "nodeKb": 89240 }, { "id": "FW 2: itty-router + UnJS", "label": "FW 2: itty-router + UnJS", - "sliceKb": 14336, + "sliceKb": 14464, "bunKb": 31872, - "denoKb": 49084, - "nodeKb": 87300 + "denoKb": 48624, + "nodeKb": 87180 }, { "id": "App 24: WASM + SSR", "label": "App 24: WASM + SSR", - "sliceKb": 13864, - "bunKb": 30464, - "denoKb": 49016, - "nodeKb": 81024 + "sliceKb": 13516, + "bunKb": 30336, + "denoKb": 49076, + "nodeKb": 81276 }, { "id": "FW 3: Express node:http", "label": "FW 3: Express node:http", - "sliceKb": 15360, - "bunKb": 33024, - "denoKb": 47032, - "nodeKb": 80400 + "sliceKb": 15488, + "bunKb": 33536, + "denoKb": 46956, + "nodeKb": 80136 }, { "id": "01-tot-autonomous-sre-agent", "label": "01-tot-autonomous-sre-agent", - "sliceKb": 18944, - "bunKb": 31744, - "denoKb": 53352, - "nodeKb": 82952 + "sliceKb": 18816, + "bunKb": 31616, + "denoKb": 53480, + "nodeKb": 83720 }, { "id": "02-mcp-code-mode-orchestrator", "label": "02-mcp-code-mode-orchestrator", "sliceKb": 18028, - "bunKb": 28416, - "denoKb": 46656, - "nodeKb": 82820 + "bunKb": 27904, + "denoKb": 46908, + "nodeKb": 82952 }, { "id": "03-multi-tenant-saas-plugin-mesh", "label": "03-multi-tenant-saas-plugin-mesh", - "sliceKb": 15744, - "bunKb": 26496, - "denoKb": 49800, - "nodeKb": 88580 + "sliceKb": 15872, + "bunKb": 26880, + "denoKb": 49908, + "nodeKb": 90756 }, { "id": "04-wasm-zero-trust-cdr-pipeline", "label": "04-wasm-zero-trust-cdr-pipeline", - "sliceKb": 19712, - "bunKb": 31616, - "denoKb": 49748, + "sliceKb": 20096, + "bunKb": 31360, + "denoKb": 49876, "nodeKb": 80392 }, { "id": "05-time-travel-chaos-fuzzer-payments", "label": "05-time-travel-chaos-fuzzer-payments", - "sliceKb": 15616, - "bunKb": 29056, - "denoKb": 49524, - "nodeKb": 80928 + "sliceKb": 15872, + "bunKb": 29312, + "denoKb": 49272, + "nodeKb": 81572 }, { "id": "FW 4: SvelteKit 3 + Svelte 5", "label": "FW 4: SvelteKit 3 + Svelte 5", - "sliceKb": 21120, - "bunKb": 41728, - "denoKb": 56476, - "nodeKb": 85664 + "sliceKb": 21248, + "bunKb": 41472, + "denoKb": 56376, + "nodeKb": 85408 } ] } diff --git a/tests/reports/latest.md b/tests/reports/latest.md index e319550..80d19e0 100644 --- a/tests/reports/latest.md +++ b/tests/reports/latest.md @@ -1,12 +1,12 @@ # Slice (Nexus-JS) — Full 33-Workload & MicroVM Benchmark Report -* **Slice Version:** `v0.10.6` (Commit `47bfa6b`) -* **Generated Timestamp (UTC):** `2026-11-09T22:52:49Z` -* **Archive File:** [`tests/reports/bench_v0.10.5_20261109_225249Z_47bfa6b.md`](./bench_v0.10.5_20261109_225249Z_47bfa6b.md) +* **Slice Version:** `v0.10.7` (Commit `2c3e16a`) +* **Generated Timestamp (UTC):** `2026-11-10T03:02:45Z` +* **Archive File:** [`tests/reports/bench_v0.10.7_20261110_030245Z_2c3e16a.md`](./bench_v0.10.7_20261110_030245Z_2c3e16a.md) * **Canonical Latest Report:** [`tests/reports/latest.md`](./latest.md) * **Environment:** `Linux x86_64 Docker (io_uring SQPOLL + WRPKRU)` * **Compared Runtimes:** - * **Slice:** `v0.10.6` (Default `SLICEBC\x01` Precompiled Boa `CodeBlock` CAS + Monomorphic Inline Caching `get_fast` + Streaming `JsonSeed` `JSON.parse`) + * **Slice:** `v0.10.7` (Default `SLICEBC\x01` Precompiled Boa `CodeBlock` CAS + Monomorphic Inline Caching `get_fast` + Streaming `JsonSeed` `JSON.parse`) * **Bun:** `v1.4.4` (JavaScriptCore) * **Deno:** `v2.9.8` (V8) * **Node.js:** `v27.0.0-alpha.0.0.0` (V8 native TypeScript execution) @@ -19,9 +19,9 @@ Across all **33 real-world multi-file TypeScript applications, framework suites, | Metric | Linux (`x86_64` Docker) | Windows (`x86_64` Host) | Comparison vs Runtimes & MicroVMs | | :--- | :---: | :---: | :--- | -| **Single Isolate Cold-Start (Min / P50 / P99)** | **`0.96 us` / `1.05 us` / `1.80 us`** | **`1.40 us` / `1.60 us` / `2.30 us`** | **~120,000x faster than 125ms Firecracker VM** | -| **1,000-Tenant MicroVM Swarm (Boot + Exec)** | **`1.37 ms`** (`9.70 MB` RSS) | **`2.24 ms`** (`11.82 MB` RSS) | **> 10,000x faster than container/VM swarms** | -| **500-Module Monorepo Cold Boot (`0 stat()`)** | **`3.408 ms`** (`542.85 us` in-mem) | **`5.637 ms`** (`640.00 us` in-mem) | **20.6x faster than Node.js (`1,500+ stat()`)** | +| **Single Isolate Cold-Start (Min / P50 / P99)** | **`0.99 us` / `1.06 us` / `2.55 us`** | **`1.40 us` / `1.60 us` / `2.30 us`** | **~120,000x faster than 125ms Firecracker VM** | +| **1,000-Tenant MicroVM Swarm (Boot + Exec)** | **`1.36 ms`** (`9.82 MB` RSS) | **`2.24 ms`** (`11.82 MB` RSS) | **> 10,000x faster than container/VM swarms** | +| **500-Module Monorepo Cold Boot (`0 stat()`)** | **`3.408 ms`** (`432.39 us` in-mem) | **`5.637 ms`** (`640.00 us` in-mem) | **20.6x faster than Node.js (`1,500+ stat()`)** | | **10,000 Direct Kernel Ring I/O Completions** | **`0.02 ms`** | **`5.11 ms`** | **Zero worker-thread lock contention** | | **5-Ring Security Containment Verification** | **`5 / 5 PASS`** | **`5 / 5 PASS`** | **OCap + SES + Fuel + SSRF/DLP + MPK** | @@ -31,11 +31,11 @@ Across all **33 real-world multi-file TypeScript applications, framework suites, | Server / Runtime | Throughput (`req/s`) | Avg Latency / Req | Total Time (`16k` Reqs) | Relative Speedup vs Runtimes | | :--- | :---: | :---: | :---: | :--- | -| **`slice serve` (Tier-0 CAS, `--workers=8`)** | **`137,020 req/s`** | **`7.30 us/req`** | **`116.8 ms`** | **`1.88x` faster than `Bun.serve` / `2.99x` Node.js** | -| **`slice serve` (Tier-1 WinterTC, `--workers=8`)** | **`125,831 req/s`** | **`7.95 us/req`** | **`127.2 ms`** | **`1.73x` faster than `Bun.serve` / `2.74x` Node.js** | -| **`Deno.serve` (`v2.9.8`, V8, No Per-Req Sandbox)** | `87,455 req/s` | `11.43 us/req` | `183.0 ms` | `1.20x` vs Bun | -| **`Bun.serve` (`v1.4.4`, JSC, No Per-Req Sandbox)** | `72,924 req/s` | `13.71 us/req` | `219.4 ms` | `1.00x` (Baseline) | -| **`Node.js http.createServer` (`v27.0.0-alpha.0.0.0`, V8)** | `45,868 req/s` | `21.80 us/req` | `348.8 ms` | `0.63x` vs Bun | +| **`slice serve` (Tier-0 CAS, `--workers=8`)** | **`140,643 req/s`** | **`7.11 us/req`** | **`113.8 ms`** | **`1.75x` faster than `Bun.serve` / `3.04x` Node.js** | +| **`slice serve` (Tier-1 WinterTC, `--workers=8`)** | **`119,010 req/s`** | **`8.40 us/req`** | **`134.4 ms`** | **`1.48x` faster than `Bun.serve` / `2.57x` Node.js** | +| **`Deno.serve` (`v2.9.8`, V8, No Per-Req Sandbox)** | `71,774 req/s` | `13.93 us/req` | `222.9 ms` | `0.89x` vs Bun | +| **`Bun.serve` (`v1.4.4`, JSC, No Per-Req Sandbox)** | `80,578 req/s` | `12.41 us/req` | `198.6 ms` | `1.00x` (Baseline) | +| **`Node.js http.createServer` (`v27.0.0-alpha.0.0.0`, V8)** | `46,241 req/s` | `21.63 us/req` | `346.0 ms` | `0.57x` vs Bun | --- @@ -43,39 +43,39 @@ Across all **33 real-world multi-file TypeScript applications, framework suites, | # | Workload (`tests/apps/`, `tests/frameworks/`, `tests/case_studies/`) | Slice Cold `.cas` (`SLICEBC\x01`) | Slice Standalone Bin (`SLICEBC\x01`) | Slice Warm (`--warm`) | Previous `.cas` (`Delta`) | Bun `v1.4.4` | Deno `v2.9.8` | Node.js `v27.0.0-alpha.0.0.0` | Slice Speedup vs Bun / Node.js | | :- | :--- | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :--- | -| **01** | `01-fintech-checkout` (Multi-File TS + SHA-256) | **`6.549 ms`** (`5.96 ms` Min) | **`8.093 ms`** | **`1.934 ms`** | `6.206 ms` (`5.5%`) | `15.167 ms` | `42.607 ms` | `74.220 ms` | **`2.32x Bun` (`7.84x` Warm) / `11.33x Node`** | -| **02** | `02-npm-ecosystem-suite` (`semver` + `ms` + `ini`) | **`16.553 ms`** (`14.49 ms` Min) | **`16.721 ms`** | **`4.790 ms`** | `14.659 ms` (`12.9%`) | `24.251 ms` | `59.826 ms` | `81.827 ms` | **`1.47x Bun` (`5.06x` Warm) / `4.94x Node`** | -| **03** | `03-disk-io-log-pipeline` (10 JSONL Shards Disk I/O) | **`7.941 ms`** (`7.02 ms` Min) | **`8.422 ms`** | **`1.613 ms`** | `8.036 ms` (`-1.2%`) | `17.735 ms` | `50.096 ms` | `70.811 ms` | **`2.23x Bun` (`11.00x` Warm) / `8.92x Node`** | -| **04** | `04-edge-api-gateway` (`fast-querystring` + `ms`) | **`7.827 ms`** (`7.15 ms` Min) | **`8.669 ms`** | **`1.769 ms`** | `7.850 ms` (`-0.3%`) | `16.480 ms` | `49.015 ms` | `72.202 ms` | **`2.11x Bun` (`9.32x` Warm) / `9.22x Node`** | -| **05** | `05-jwt-oauth-session-guard` (`cookie` + `ms` + HMAC) | **`11.143 ms`** (`10.11 ms` Min) | **`11.926 ms`** | **`8.203 ms`** | `10.654 ms` (`4.6%`) | `15.814 ms` | `51.773 ms` | `76.002 ms` | **`1.42x Bun` (`1.93x` Warm) / `6.82x Node`** | -| **06** | `06-telemetry-metrics-pipeline` (`bytes` + `flatted` + WAL) | **`16.076 ms`** (`14.79 ms` Min) | **`17.028 ms`** | **`6.338 ms`** | `14.519 ms` (`10.7%`) | `19.737 ms` | `56.963 ms` | `71.608 ms` | **`1.23x Bun` (`3.11x` Warm) / `4.45x Node`** | -| **07** | `07-graphql-ast-validator` (`dlv` + `dset` + AST Cost) | **`11.115 ms`** (`8.79 ms` Min) | **`10.370 ms`** | **`4.102 ms`** | `9.992 ms` (`11.2%`) | `15.024 ms` | `46.462 ms` | `68.656 ms` | **`1.45x Bun` (`3.66x` Warm) / `6.62x Node`** | -| **08** | `08-event-driven-state-journal` (`mitt` + `ms` + JSONL Replay) | **`12.471 ms`** (`11.00 ms` Min) | **`12.646 ms`** | **`5.602 ms`** | `13.568 ms` (`-8.1%`) | `17.725 ms` | `53.924 ms` | `71.640 ms` | **`1.42x Bun` (`3.16x` Warm) / `5.74x Node`** | -| **09** | `09-wintertc-web-router` (`Request` + `Response` + `URL`, 80 reqs) | **`16.900 ms`** (`15.01 ms` Min) | **`17.946 ms`** | **`11.562 ms`** | `15.476 ms` (`9.2%`) | `14.796 ms` | `57.896 ms` | `96.743 ms` | **`1.28x Bun Warm` / `5.72x Node`** | -| **10** | `10-fullstack-bff-microservice` (`cookie` + `dlv` + `ms` + `ETag`, 60 reqs) | **`14.257 ms`** (`12.89 ms` Min) | **`16.402 ms`** | **`11.179 ms`** | `13.998 ms` (`1.9%`) | `18.103 ms` | `64.257 ms` | `101.196 ms` | **`1.27x Bun` (`1.62x` Warm) / `7.10x Node`** | -| **11** | `11-static-asset-cdn-edge` (`bytes` + `ms` + `ETag` `304`, 80 reqs) | **`11.158 ms`** (`10.52 ms` Min) | **`12.072 ms`** | **`4.154 ms`** | `10.268 ms` (`8.7%`) | `15.225 ms` | `56.518 ms` | `101.741 ms` | **`1.36x Bun` (`3.67x` Warm) / `9.12x Node`** | -| **12** | `12-ai-sse-token-streamer` (`mitt` + `ms` + SSE + DLP, 320 frames) | **`18.478 ms`** (`15.37 ms` Min) | **`19.011 ms`** | **`8.424 ms`** | `16.665 ms` (`10.9%`) | `17.424 ms` | `56.409 ms` | `111.849 ms` | **`2.07x Bun Warm` / `6.05x Node`** | -| **13** | `13-webhook-orchestrator-ssrf` (`fast-querystring` + `ms` + Live `fetch`) | **`15.312 ms`** (`13.94 ms` Min) | **`15.857 ms`** | **`7.041 ms`** | `14.135 ms` (`8.3%`) | `25.142 ms` | `60.842 ms` | `132.603 ms` | **`1.64x Bun` (`3.57x` Warm) / `8.66x Node`** | -| **14** | `14-federated-api-mesh-dlp` (`bytes` + `dlv` + `dset` + Live `fetch`) | **`15.929 ms`** (`14.68 ms` Min) | **`16.196 ms`** | **`7.802 ms`** | `15.515 ms` (`2.7%`) | `24.460 ms` | `61.587 ms` | `122.583 ms` | **`1.54x Bun` (`3.14x` Warm) / `7.70x Node`** | -| **15** | `15-time-travel-test-suite` (`semver` + `ms` + `dlv` + `dset` + 24 Rollbacks) | **`16.968 ms`** (`15.10 ms` Min) | **`17.549 ms`** | **`5.987 ms`** | `15.345 ms` (`10.6%`) | `28.355 ms` | `77.460 ms` | `95.857 ms` | **`1.67x Bun` (`4.74x` Warm) / `5.65x Node`** | -| **16** | `16-dotenv-dlp-config-vault` (`ini` + `cookie` + `bytes` + `.env` Auto-DLP) | **`8.364 ms`** (`7.37 ms` Min) | **`9.346 ms`** | **`1.280 ms`** | `7.716 ms` (`8.4%`) | `16.161 ms` | `54.266 ms` | `75.761 ms` | **`1.93x Bun` (`12.63x` Warm) / `9.06x Node`** | -| **17** | `17-zero-trust-redirect-keepalive-mesh` (Keep-Alive/307/SSRF/DLP) | **`17.319 ms`** (`16.27 ms` Min) | **`18.538 ms`** | **`9.241 ms`** | `16.359 ms` (`5.9%`) | `25.921 ms` | `65.348 ms` | `132.340 ms` | **`1.50x Bun` (`2.80x` Warm) / `7.64x Node`** | -| **18** | `18-async-event-loop-fanout-scheduler` (Timer Wheel/`Promise.all`/`AbortSignal`) | **`30.986 ms`** (`28.49 ms` Min) | **`33.993 ms`** | **`17.717 ms`** | `31.543 ms` (`-1.8%`) | `37.518 ms` | `81.154 ms` | `94.107 ms` | **`1.21x Bun` (`2.12x` Warm) / `3.04x Node`** | -| **19** | `19-wintertc-webcrypto-streams-edge` (WebCrypto/Streams/FormData/Clone) | **`9.453 ms`** (`8.34 ms` Min) | **`9.903 ms`** | **`1.477 ms`** | `8.353 ms` (`13.2%`) | `15.328 ms` | `53.271 ms` | `102.717 ms` | **`1.62x Bun` (`10.38x` Warm) / `10.87x Node`** | -| **20** | `20-node-compat-and-edge-router` (`Uint8Array` `Buffer`/Node Core/AST Bundler) | **`12.304 ms`** (`10.57 ms` Min) | **`12.468 ms`** | **`0.888 ms`** | `11.502 ms` (`7.0%`) | `25.969 ms` | `64.068 ms` | `88.273 ms` | **`2.11x Bun` (`29.24x` Warm) / `7.17x Node`** | -| **21** | `21-websocket-realtime-and-security-guard` (RFC 6455 `WebSocket` + 5-Ring Guard) | **`11.666 ms`** (`10.39 ms` Min) | **`12.224 ms`** | **`2.803 ms`** | `10.803 ms` (`8.0%`) | `24.293 ms` | `60.684 ms` | `135.299 ms` | **`2.08x Bun` (`8.67x` Warm) / `11.60x Node`** | -| **22** | `22-worker-threads-and-raw-sockets` (3 Worker Threads + TCP/UDP + 5-Ring Sec) | **`24.541 ms`** (`21.21 ms` Min) | **`23.822 ms`** | **`2.377 ms`** | `21.520 ms` (`14.0%`) | `68.043 ms` | `134.578 ms` | `116.660 ms` | **`2.86x Bun` (`28.63x` Warm) / `4.90x Node`** | -| **23** | `23-wasm-crypto-and-simd-kernel` (Pure-Rust `WebAssembly` + 5-Ring WASM Sec) | **`17.830 ms`** (`15.16 ms` Min) | **`18.181 ms`** | **`2.088 ms`** | `15.912 ms` (`12.1%`) | `24.671 ms` | `49.186 ms` | `78.258 ms` | **`1.38x Bun` (`11.82x` Warm) / `4.39x Node`** | -| **24** | `24-tsx-ssr-and-wasm-edge-pipeline` (`WebAssembly` SLA Scorer + SSR Pipeline) | **`9.438 ms`** (`8.21 ms` Min) | **`9.628 ms`** | **`1.751 ms`** | `8.927 ms` (`5.7%`) | `21.746 ms` | `51.375 ms` | `78.308 ms` | **`2.30x Bun` (`12.42x` Warm) / `8.30x Node`** | -| **FW-01** | `FW-01: frameworks/01-hono-edge-microservice` (`hono@4.6.20` + `hono/cookie` + `ms`) | **`16.903 ms`** (`14.97 ms` Min) | **`17.879 ms`** | **`7.535 ms`** | `16.071 ms` (`5.2%`) | `22.254 ms` | `61.183 ms` | `110.858 ms` | **`1.32x Bun` (`2.95x` Warm) / `6.56x Node`** | -| **FW-02** | `FW-02: frameworks/02-itty-router-unjs-nitro-stack` (`itty-router` + UnJS) | **`19.999 ms`** (`17.74 ms` Min) | **`20.653 ms`** | **`10.506 ms`** | `19.468 ms` (`2.7%`) | `21.391 ms` | `53.565 ms` | `100.970 ms` | **`1.07x Bun` (`2.04x` Warm) / `5.05x Node`** | -| **FW-03** | `FW-03: frameworks/03-node-http-express-compat` (`node:http` + `node:stream` Express/Polka) | **`18.850 ms`** (`16.78 ms` Min) | **`19.326 ms`** | **`1.399 ms`** | `16.830 ms` (`12.0%`) | `41.711 ms` | `60.165 ms` | `99.962 ms` | **`2.21x Bun` (`29.81x` Warm) / `5.30x Node`** | -| **FW-04** | `FW-04: frameworks/04-sveltekit-edge-ssr` (`@sveltejs/kit@3.1.1` + `svelte@5.57.3` + `devalue@6.0.3`) | **`39.319 ms`** (`34.46 ms` Min) | **`40.783 ms`** | **`19.712 ms`** | `36.160 ms` (`8.7%`) | `52.502 ms` | `84.299 ms` | `133.012 ms` | **`1.34x Bun` (`2.66x` Warm) / `3.38x Node`** | -| **CS-01** | `CS-01: case_studies/01-tot-autonomous-sre-agent` (20 ToT Sandboxes) | **`31.107 ms`** (`26.75 ms` Min) | **`31.878 ms`** | **`13.126 ms`** | `26.485 ms` (`17.5%`) | `32.776 ms` | `86.411 ms` | `105.353 ms` | **`1.05x Bun` (`2.50x` Warm) / `3.39x Node`** | -| **CS-02** | `CS-02: case_studies/02-mcp-code-mode-orchestrator` (`-98.4%` Tokens) | **`20.659 ms`** (`18.43 ms` Min) | **`21.371 ms`** | **`6.569 ms`** | `20.362 ms` (`1.5%`) | `18.019 ms` | `52.128 ms` | `79.359 ms` | **`2.74x Bun Warm` / `3.84x Node`** | -| **CS-03** | `CS-03: case_studies/03-multi-tenant-saas-plugin-mesh` (12 Tenants + Hot-Swap) | **`15.332 ms`** (`13.56 ms` Min) | **`15.796 ms`** | **`5.721 ms`** | `13.984 ms` (`9.6%`) | `18.869 ms` | `57.047 ms` | `98.424 ms` | **`1.23x Bun` (`3.30x` Warm) / `6.42x Node`** | -| **CS-04** | `CS-04: case_studies/04-wasm-zero-trust-cdr-pipeline` (Wasm SimHash CDR) | **`19.955 ms`** (`17.49 ms` Min) | **`21.163 ms`** | **`1.656 ms`** | `17.514 ms` (`13.9%`) | `24.621 ms` | `50.990 ms` | `78.359 ms` | **`1.23x Bun` (`14.87x` Warm) / `3.93x Node`** | -| **CS-05** | `CS-05: case_studies/05-time-travel-chaos-fuzzer-payments` (48 Payment Sagas) | **`20.765 ms`** (`17.12 ms` Min) | **`21.730 ms`** | **`9.381 ms`** | `18.127 ms` (`14.6%`) | `23.262 ms` | `71.208 ms` | `96.481 ms` | **`1.12x Bun` (`2.48x` Warm) / `4.65x Node`** | +| **01** | `01-fintech-checkout` (Multi-File TS + SHA-256) | **`7.502 ms`** (`6.29 ms` Min) | **`7.124 ms`** | **`1.263 ms`** | `6.549 ms` (`14.6%`) | `17.056 ms` | `45.383 ms` | `72.994 ms` | **`2.39x Bun` (`13.50x` Warm) / `10.25x Node`** | +| **02** | `02-npm-ecosystem-suite` (`semver` + `ms` + `ini`) | **`16.522 ms`** (`14.66 ms` Min) | **`17.989 ms`** | **`4.949 ms`** | `16.553 ms` (`-0.2%`) | `27.434 ms` | `63.241 ms` | `87.495 ms` | **`1.66x Bun` (`5.54x` Warm) / `5.30x Node`** | +| **03** | `03-disk-io-log-pipeline` (10 JSONL Shards Disk I/O) | **`8.552 ms`** (`7.43 ms` Min) | **`8.940 ms`** | **`1.935 ms`** | `7.941 ms` (`7.7%`) | `19.251 ms` | `51.810 ms` | `73.893 ms` | **`2.25x Bun` (`9.95x` Warm) / `8.64x Node`** | +| **04** | `04-edge-api-gateway` (`fast-querystring` + `ms`) | **`8.133 ms`** (`7.24 ms` Min) | **`9.147 ms`** | **`1.841 ms`** | `7.827 ms` (`3.9%`) | `18.425 ms` | `51.270 ms` | `75.665 ms` | **`2.27x Bun` (`10.01x` Warm) / `9.30x Node`** | +| **05** | `05-jwt-oauth-session-guard` (`cookie` + `ms` + HMAC) | **`11.369 ms`** (`10.01 ms` Min) | **`12.178 ms`** | **`5.380 ms`** | `11.143 ms` (`2.0%`) | `16.959 ms` | `53.072 ms` | `76.488 ms` | **`1.49x Bun` (`3.15x` Warm) / `6.73x Node`** | +| **06** | `06-telemetry-metrics-pipeline` (`bytes` + `flatted` + WAL) | **`17.681 ms`** (`15.52 ms` Min) | **`17.130 ms`** | **`7.730 ms`** | `16.076 ms` (`10.0%`) | `20.490 ms` | `55.400 ms` | `73.374 ms` | **`1.20x Bun` (`2.65x` Warm) / `4.28x Node`** | +| **07** | `07-graphql-ast-validator` (`dlv` + `dset` + AST Cost) | **`9.215 ms`** (`8.43 ms` Min) | **`10.577 ms`** | **`4.360 ms`** | `11.115 ms` (`-17.1%`) | `15.329 ms` | `47.086 ms` | `70.055 ms` | **`1.66x Bun` (`3.52x` Warm) / `7.60x Node`** | +| **08** | `08-event-driven-state-journal` (`mitt` + `ms` + JSONL Replay) | **`12.649 ms`** (`11.37 ms` Min) | **`14.430 ms`** | **`6.384 ms`** | `12.471 ms` (`1.4%`) | `19.057 ms` | `55.525 ms` | `73.137 ms` | **`1.51x Bun` (`2.99x` Warm) / `5.78x Node`** | +| **09** | `09-wintertc-web-router` (`Request` + `Response` + `URL`, 80 reqs) | **`16.762 ms`** (`15.35 ms` Min) | **`17.364 ms`** | **`12.034 ms`** | `16.900 ms` (`-0.8%`) | `14.927 ms` | `55.851 ms` | `98.088 ms` | **`1.24x Bun Warm` / `5.85x Node`** | +| **10** | `10-fullstack-bff-microservice` (`cookie` + `dlv` + `ms` + `ETag`, 60 reqs) | **`16.690 ms`** (`13.96 ms` Min) | **`16.370 ms`** | **`8.658 ms`** | `14.257 ms` (`17.1%`) | `19.554 ms` | `60.117 ms` | `105.201 ms` | **`1.19x Bun` (`2.26x` Warm) / `6.43x Node`** | +| **11** | `11-static-asset-cdn-edge` (`bytes` + `ms` + `ETag` `304`, 80 reqs) | **`12.593 ms`** (`10.84 ms` Min) | **`13.070 ms`** | **`4.907 ms`** | `11.158 ms` (`12.9%`) | `17.917 ms` | `61.737 ms` | `128.612 ms` | **`1.42x Bun` (`3.65x` Warm) / `10.21x Node`** | +| **12** | `12-ai-sse-token-streamer` (`mitt` + `ms` + SSE + DLP, 320 frames) | **`19.401 ms`** (`16.40 ms` Min) | **`22.421 ms`** | **`8.076 ms`** | `18.478 ms` (`5.0%`) | `19.138 ms` | `65.361 ms` | `112.538 ms` | **`2.37x Bun Warm` / `5.80x Node`** | +| **13** | `13-webhook-orchestrator-ssrf` (`fast-querystring` + `ms` + Live `fetch`) | **`17.325 ms`** (`15.45 ms` Min) | **`17.449 ms`** | **`8.115 ms`** | `15.312 ms` (`13.1%`) | `23.628 ms` | `69.296 ms` | `142.524 ms` | **`1.36x Bun` (`2.91x` Warm) / `8.23x Node`** | +| **14** | `14-federated-api-mesh-dlp` (`bytes` + `dlv` + `dset` + Live `fetch`) | **`16.318 ms`** (`14.74 ms` Min) | **`17.252 ms`** | **`9.174 ms`** | `15.929 ms` (`2.4%`) | `27.475 ms` | `64.795 ms` | `135.190 ms` | **`1.68x Bun` (`2.99x` Warm) / `8.28x Node`** | +| **15** | `15-time-travel-test-suite` (`semver` + `ms` + `dlv` + `dset` + 24 Rollbacks) | **`19.162 ms`** (`16.42 ms` Min) | **`21.095 ms`** | **`6.962 ms`** | `16.968 ms` (`12.9%`) | `31.985 ms` | `82.016 ms` | `99.632 ms` | **`1.67x Bun` (`4.59x` Warm) / `5.20x Node`** | +| **16** | `16-dotenv-dlp-config-vault` (`ini` + `cookie` + `bytes` + `.env` Auto-DLP) | **`8.122 ms`** (`7.23 ms` Min) | **`9.537 ms`** | **`1.918 ms`** | `8.364 ms` (`-2.9%`) | `17.506 ms` | `57.770 ms` | `81.863 ms` | **`2.16x Bun` (`9.13x` Warm) / `10.08x Node`** | +| **17** | `17-zero-trust-redirect-keepalive-mesh` (Keep-Alive/307/SSRF/DLP) | **`19.128 ms`** (`17.32 ms` Min) | **`20.008 ms`** | **`9.194 ms`** | `17.319 ms` (`10.4%`) | `25.764 ms` | `69.663 ms` | `141.000 ms` | **`1.35x Bun` (`2.80x` Warm) / `7.37x Node`** | +| **18** | `18-async-event-loop-fanout-scheduler` (Timer Wheel/`Promise.all`/`AbortSignal`) | **`33.520 ms`** (`31.07 ms` Min) | **`34.100 ms`** | **`20.211 ms`** | `30.986 ms` (`8.2%`) | `38.346 ms` | `86.198 ms` | `97.950 ms` | **`1.14x Bun` (`1.90x` Warm) / `2.92x Node`** | +| **19** | `19-wintertc-webcrypto-streams-edge` (WebCrypto/Streams/FormData/Clone) | **`9.791 ms`** (`8.68 ms` Min) | **`10.734 ms`** | **`1.604 ms`** | `9.453 ms` (`3.6%`) | `16.980 ms` | `56.159 ms` | `110.354 ms` | **`1.73x Bun` (`10.59x` Warm) / `11.27x Node`** | +| **20** | `20-node-compat-and-edge-router` (`Uint8Array` `Buffer`/Node Core/AST Bundler) | **`12.907 ms`** (`11.49 ms` Min) | **`13.540 ms`** | **`0.616 ms`** | `12.304 ms` (`4.9%`) | `27.516 ms` | `66.074 ms` | `86.577 ms` | **`2.13x Bun` (`44.67x` Warm) / `6.71x Node`** | +| **21** | `21-websocket-realtime-and-security-guard` (RFC 6455 `WebSocket` + 5-Ring Guard) | **`12.063 ms`** (`10.99 ms` Min) | **`12.726 ms`** | **`2.764 ms`** | `11.666 ms` (`3.4%`) | `27.751 ms` | `65.891 ms` | `152.980 ms` | **`2.30x Bun` (`10.04x` Warm) / `12.68x Node`** | +| **22** | `22-worker-threads-and-raw-sockets` (3 Worker Threads + TCP/UDP + 5-Ring Sec) | **`25.795 ms`** (`22.33 ms` Min) | **`28.445 ms`** | **`2.382 ms`** | `24.541 ms` (`5.1%`) | `73.430 ms` | `141.091 ms` | `127.679 ms` | **`2.85x Bun` (`30.83x` Warm) / `4.95x Node`** | +| **23** | `23-wasm-crypto-and-simd-kernel` (Pure-Rust `WebAssembly` + 5-Ring WASM Sec) | **`18.567 ms`** (`16.34 ms` Min) | **`19.093 ms`** | **`2.556 ms`** | `17.830 ms` (`4.1%`) | `26.745 ms` | `51.740 ms` | `78.852 ms` | **`1.44x Bun` (`10.46x` Warm) / `4.25x Node`** | +| **24** | `24-tsx-ssr-and-wasm-edge-pipeline` (`WebAssembly` SLA Scorer + SSR Pipeline) | **`10.224 ms`** (`8.69 ms` Min) | **`10.141 ms`** | **`2.593 ms`** | `9.438 ms` (`8.3%`) | `25.192 ms` | `54.973 ms` | `84.372 ms` | **`2.48x Bun` (`9.72x` Warm) / `8.32x Node`** | +| **FW-01** | `FW-01: frameworks/01-hono-edge-microservice` (`hono@4.6.20` + `hono/cookie` + `ms`) | **`19.113 ms`** (`16.70 ms` Min) | **`19.482 ms`** | **`6.564 ms`** | `16.903 ms` (`13.1%`) | `24.002 ms` | `63.914 ms` | `117.229 ms` | **`1.26x Bun` (`3.66x` Warm) / `6.13x Node`** | +| **FW-02** | `FW-02: frameworks/02-itty-router-unjs-nitro-stack` (`itty-router` + UnJS) | **`21.035 ms`** (`19.04 ms` Min) | **`21.045 ms`** | **`10.348 ms`** | `19.999 ms` (`5.2%`) | `23.934 ms` | `54.645 ms` | `104.104 ms` | **`1.14x Bun` (`2.31x` Warm) / `4.95x Node`** | +| **FW-03** | `FW-03: frameworks/03-node-http-express-compat` (`node:http` + `node:stream` Express/Polka) | **`20.431 ms`** (`17.69 ms` Min) | **`20.210 ms`** | **`1.059 ms`** | `18.850 ms` (`8.4%`) | `41.662 ms` | `64.108 ms` | `105.428 ms` | **`2.06x Bun` (`39.34x` Warm) / `5.22x Node`** | +| **FW-04** | `FW-04: frameworks/04-sveltekit-edge-ssr` (`@sveltejs/kit@3.1.1` + `svelte@5.57.3` + `devalue@6.0.3`) | **`40.143 ms`** (`36.81 ms` Min) | **`43.432 ms`** | **`18.621 ms`** | `39.319 ms` (`2.1%`) | `52.963 ms` | `83.646 ms` | `139.938 ms` | **`1.32x Bun` (`2.84x` Warm) / `3.49x Node`** | +| **CS-01** | `CS-01: case_studies/01-tot-autonomous-sre-agent` (20 ToT Sandboxes) | **`34.358 ms`** (`28.24 ms` Min) | **`30.359 ms`** | **`16.701 ms`** | `31.107 ms` (`10.5%`) | `33.355 ms` | `89.418 ms` | `109.036 ms` | **`1.10x Bun` (`2.00x` Warm) / `3.59x Node`** | +| **CS-02** | `CS-02: case_studies/02-mcp-code-mode-orchestrator` (`-98.4%` Tokens) | **`21.390 ms`** (`19.70 ms` Min) | **`21.176 ms`** | **`6.334 ms`** | `20.659 ms` (`3.5%`) | `20.463 ms` | `55.924 ms` | `82.083 ms` | **`3.23x Bun Warm` / `3.88x Node`** | +| **CS-03** | `CS-03: case_studies/03-multi-tenant-saas-plugin-mesh` (12 Tenants + Hot-Swap) | **`16.666 ms`** (`14.04 ms` Min) | **`16.646 ms`** | **`7.273 ms`** | `15.332 ms` (`8.7%`) | `19.061 ms` | `61.539 ms` | `105.854 ms` | **`1.15x Bun` (`2.62x` Warm) / `6.36x Node`** | +| **CS-04** | `CS-04: case_studies/04-wasm-zero-trust-cdr-pipeline` (Wasm SimHash CDR) | **`21.343 ms`** (`18.83 ms` Min) | **`21.972 ms`** | **`1.784 ms`** | `19.955 ms` (`7.0%`) | `25.138 ms` | `56.075 ms` | `82.688 ms` | **`1.18x Bun` (`14.09x` Warm) / `3.87x Node`** | +| **CS-05** | `CS-05: case_studies/05-time-travel-chaos-fuzzer-payments` (48 Payment Sagas) | **`21.318 ms`** (`18.00 ms` Min) | **`22.443 ms`** | **`11.942 ms`** | `20.765 ms` (`2.7%`) | `23.292 ms` | `73.804 ms` | `100.350 ms` | **`1.09x Bun` (`1.95x` Warm) / `4.71x Node`** | --- @@ -83,21 +83,21 @@ Across all **33 real-world multi-file TypeScript applications, framework suites, | Workload | Slice (`SLICEBC\x01` Default) | Bun (`v1.4.4`) | Deno (`v2.9.8`) | Node.js (`v27.0.0-alpha.0.0.0`) | Slice Memory Advantage | | :--- | :---: | :---: | :---: | :---: | :--- | -| **App 2: NPM semver+ms+ini** | **13,568 KB (13.25 MB)** | 29,948 KB (29.25 MB) | 46,560 KB (45.47 MB) | 71,708 KB (70.03 MB) | **5.29x less than Node / 2.21x less than Bun** | -| **App 6: Telemetry + Flatted** | **14,612 KB (14.27 MB)** | 30,080 KB (29.38 MB) | 50,548 KB (49.36 MB) | 73,240 KB (71.52 MB) | **5.01x less than Node / 2.06x less than Bun** | -| **App 21: RFC 6455 WS + Sec** | **13,952 KB (13.63 MB)** | 31,844 KB (31.10 MB) | 50,936 KB (49.74 MB) | 95,104 KB (92.88 MB) | **6.82x less than Node / 2.28x less than Bun** | -| **App 22: Workers + Sockets** | **22,272 KB (21.75 MB)** | 41,808 KB (40.83 MB) | 63,732 KB (62.24 MB) | 93,304 KB (91.12 MB) | **4.19x less than Node / 1.88x less than Bun** | -| **App 23: Pure-Rust WASM** | **19,072 KB (18.63 MB)** | 30,848 KB (30.13 MB) | 49,160 KB (48.01 MB) | 80,528 KB (78.64 MB) | **4.22x less than Node / 1.62x less than Bun** | -| **FW 1: Hono v4 Microservice** | **14,976 KB (14.63 MB)** | 31,176 KB (30.45 MB) | 48,724 KB (47.58 MB) | 89,112 KB (87.02 MB) | **5.95x less than Node / 2.08x less than Bun** | -| **FW 2: itty-router + UnJS** | **14,336 KB (14.00 MB)** | 31,872 KB (31.13 MB) | 49,084 KB (47.93 MB) | 87,300 KB (85.25 MB) | **6.09x less than Node / 2.22x less than Bun** | -| **App 24: WASM + SSR** | **13,864 KB (13.54 MB)** | 30,464 KB (29.75 MB) | 49,016 KB (47.87 MB) | 81,024 KB (79.13 MB) | **5.84x less than Node / 2.20x less than Bun** | -| **FW 3: Express node:http** | **15,360 KB (15.00 MB)** | 33,024 KB (32.25 MB) | 47,032 KB (45.93 MB) | 80,400 KB (78.52 MB) | **5.23x less than Node / 2.15x less than Bun** | -| **01-tot-autonomous-sre-agent** | **18,944 KB (18.50 MB)** | 31,744 KB (31.00 MB) | 53,352 KB (52.10 MB) | 82,952 KB (81.01 MB) | **4.38x less than Node / 1.68x less than Bun** | -| **02-mcp-code-mode-orchestrator** | **18,028 KB (17.61 MB)** | 28,416 KB (27.75 MB) | 46,656 KB (45.56 MB) | 82,820 KB (80.88 MB) | **4.59x less than Node / 1.58x less than Bun** | -| **03-multi-tenant-saas-plugin-mesh** | **15,744 KB (15.38 MB)** | 26,496 KB (25.88 MB) | 49,800 KB (48.63 MB) | 88,580 KB (86.50 MB) | **5.63x less than Node / 1.68x less than Bun** | -| **04-wasm-zero-trust-cdr-pipeline** | **19,712 KB (19.25 MB)** | 31,616 KB (30.88 MB) | 49,748 KB (48.58 MB) | 80,392 KB (78.51 MB) | **4.08x less than Node / 1.60x less than Bun** | -| **05-time-travel-chaos-fuzzer-payments** | **15,616 KB (15.25 MB)** | 29,056 KB (28.38 MB) | 49,524 KB (48.36 MB) | 80,928 KB (79.03 MB) | **5.18x less than Node / 1.86x less than Bun** | -| **FW 4: SvelteKit 3 + Svelte 5** | **21,120 KB (20.63 MB)** | 41,728 KB (40.75 MB) | 56,476 KB (55.15 MB) | 85,664 KB (83.66 MB) | **4.06x less than Node / 1.98x less than Bun** | +| **App 2: NPM semver+ms+ini** | **13,504 KB (13.19 MB)** | 30,036 KB (29.33 MB) | 47,196 KB (46.09 MB) | 71,448 KB (69.77 MB) | **5.29x less than Node / 2.22x less than Bun** | +| **App 6: Telemetry + Flatted** | **14,400 KB (14.06 MB)** | 30,592 KB (29.88 MB) | 51,056 KB (49.86 MB) | 72,856 KB (71.15 MB) | **5.06x less than Node / 2.12x less than Bun** | +| **App 21: RFC 6455 WS + Sec** | **13,952 KB (13.63 MB)** | 31,616 KB (30.88 MB) | 51,092 KB (49.89 MB) | 95,104 KB (92.88 MB) | **6.82x less than Node / 2.27x less than Bun** | +| **App 22: Workers + Sockets** | **22,272 KB (21.75 MB)** | 41,540 KB (40.57 MB) | 63,872 KB (62.38 MB) | 93,444 KB (91.25 MB) | **4.20x less than Node / 1.87x less than Bun** | +| **App 23: Pure-Rust WASM** | **19,072 KB (18.63 MB)** | 31,104 KB (30.38 MB) | 48,928 KB (47.78 MB) | 81,296 KB (79.39 MB) | **4.26x less than Node / 1.63x less than Bun** | +| **FW 1: Hono v4 Microservice** | **15,104 KB (14.75 MB)** | 31,060 KB (30.33 MB) | 49,396 KB (48.24 MB) | 89,240 KB (87.15 MB) | **5.91x less than Node / 2.06x less than Bun** | +| **FW 2: itty-router + UnJS** | **14,464 KB (14.13 MB)** | 31,872 KB (31.13 MB) | 48,624 KB (47.48 MB) | 87,180 KB (85.14 MB) | **6.03x less than Node / 2.20x less than Bun** | +| **App 24: WASM + SSR** | **13,516 KB (13.20 MB)** | 30,336 KB (29.63 MB) | 49,076 KB (47.93 MB) | 81,276 KB (79.37 MB) | **6.01x less than Node / 2.24x less than Bun** | +| **FW 3: Express node:http** | **15,488 KB (15.13 MB)** | 33,536 KB (32.75 MB) | 46,956 KB (45.86 MB) | 80,136 KB (78.26 MB) | **5.17x less than Node / 2.17x less than Bun** | +| **01-tot-autonomous-sre-agent** | **18,816 KB (18.38 MB)** | 31,616 KB (30.88 MB) | 53,480 KB (52.23 MB) | 83,720 KB (81.76 MB) | **4.45x less than Node / 1.68x less than Bun** | +| **02-mcp-code-mode-orchestrator** | **18,028 KB (17.61 MB)** | 27,904 KB (27.25 MB) | 46,908 KB (45.81 MB) | 82,952 KB (81.01 MB) | **4.60x less than Node / 1.55x less than Bun** | +| **03-multi-tenant-saas-plugin-mesh** | **15,872 KB (15.50 MB)** | 26,880 KB (26.25 MB) | 49,908 KB (48.74 MB) | 90,756 KB (88.63 MB) | **5.72x less than Node / 1.69x less than Bun** | +| **04-wasm-zero-trust-cdr-pipeline** | **20,096 KB (19.63 MB)** | 31,360 KB (30.63 MB) | 49,876 KB (48.71 MB) | 80,392 KB (78.51 MB) | **4.00x less than Node / 1.56x less than Bun** | +| **05-time-travel-chaos-fuzzer-payments** | **15,872 KB (15.50 MB)** | 29,312 KB (28.63 MB) | 49,272 KB (48.12 MB) | 81,572 KB (79.66 MB) | **5.14x less than Node / 1.85x less than Bun** | +| **FW 4: SvelteKit 3 + Svelte 5** | **21,248 KB (20.75 MB)** | 41,472 KB (40.50 MB) | 56,376 KB (55.05 MB) | 85,408 KB (83.41 MB) | **4.02x less than Node / 1.95x less than Bun** | --- @@ -105,9 +105,9 @@ Across all **33 real-world multi-file TypeScript applications, framework suites, | Subsystem / Benchmark | Measured Telemetry | Status | | :--- | :--- | :---: | -| **Sharded `Slice.kv` (`1,001` Get/Set/Incr Ops in Isolate)** | **`500.30 us`** total (`--warm`, `8,431 B` memory cage) | `PASS` | +| **Sharded `Slice.kv` (`1,001` Get/Set/Incr Ops in Isolate)** | **`951.58 us`** total (`--warm`, `8,431 B` memory cage) | `PASS` | | **Multi-Tenant `--tenant-dir` Zero-Downtime Hot-Swap** | Live atomic replacement of `tenant-alpha.cas` (`v1 -> v2-hot-swapped`) with isolated `Slice.kv` state | `PASS` | | **Deterministic Time-Travel Replay (`--deterministic=20261019`)** | 100% bit-for-bit identical PRNG (`Math.random`) & virtual clock (`Date.now`, `performance.now`) | `PASS` | -| **Tree-of-Thought AI Agent (`Slice.checkpoint` + 3 `evalSandbox` + `restore`)** | **`50.17 us`** total (`1.87 us` child sandbox) | `PASS` | +| **Tree-of-Thought AI Agent (`Slice.checkpoint` + 3 `evalSandbox` + `restore`)** | **`50.45 us`** total (`1.81 us` child sandbox) | `PASS` | | **Cloud Metadata SSRF (`169.254.169.254`) & Base64 Egress DLP Guard** | `SSRF_METADATA_BLOCKED` & `EGRESS_SECRET_LEAK_BLOCKED` deterministically trapped | `PASS` | | **Built-In Model Context Protocol Server (`slice mcp --smoke-test`)** | JSON-RPC 2.0 `initialize`, `tools/list`, `tools/call` verified over `stdio` | `PASS` | diff --git a/vendor/boa_engine/SLICE_PATCH.md b/vendor/boa_engine/SLICE_PATCH.md index 6906005..95e5412 100644 --- a/vendor/boa_engine/SLICE_PATCH.md +++ b/vendor/boa_engine/SLICE_PATCH.md @@ -21,7 +21,7 @@ By serializing the compiled `Gc` tree and global `Scope` bindings int ## 2. Modified Files -Nine files in `vendor/boa_engine` differ from upstream `boa_engine v0.22.0`: +Eleven files in `vendor/boa_engine` differ from upstream `boa_engine v0.22.0`: - [`vendor/boa_engine/src/script.rs`](./src/script.rs) & [`vendor/boa_engine/src/slice_precompile.rs`](./src/slice_precompile.rs): - `Script::compile_to_slicebc(&self, context: &mut Context) -> JsResult>` - `Script::from_slicebc_bytes(bytes: &[u8], context: &mut Context) -> Option` @@ -35,6 +35,8 @@ Nine files in `vendor/boa_engine` differ from upstream `boa_engine v0.22.0`: - `InlineCache::mono_shape_addr`, `InlineCache::mono_slot`, and `InlineCache::get_fast(&self, shape: &Shape) -> Option<(Option, Slot)>`: Zero-borrow monomorphic fast-path for own-property `Shape -> Slot` hits without locking `GcRefCell` or upgrading `WeakGc` pointers, with automatic polymorphic (`PIC_CAPACITY = 4`) and megamorphic fallback. - [`vendor/boa_engine/src/vm/opcode/get/property.rs`](./src/vm/opcode/get/property.rs) & [`vendor/boa_engine/src/vm/opcode/set/property.rs`](./src/vm/opcode/set/property.rs): - Wired `get_by_name` and `set_by_name` to call `ic.get_fast(object_borrowed.shape())`. +- [`vendor/boa_engine/src/vm/runtime_limits.rs`](./src/vm/runtime_limits.rs) & [`vendor/boa_engine/src/vm/opcode/iteration/loop_ops.rs`](./src/vm/opcode/iteration/loop_ops.rs): + - `RuntimeLimits::loop_iterations_executed()` and `RuntimeLimits::record_loop_iteration()`: Cumulative loop iteration counter incremented on `IncrementLoopIteration` so Tier-1 Boa loop executions report accurate `fuelUsed` telemetry. --- diff --git a/vendor/boa_engine/src/vm/opcode/iteration/loop_ops.rs b/vendor/boa_engine/src/vm/opcode/iteration/loop_ops.rs index 21cd262..d6cb34e 100644 --- a/vendor/boa_engine/src/vm/opcode/iteration/loop_ops.rs +++ b/vendor/boa_engine/src/vm/opcode/iteration/loop_ops.rs @@ -20,6 +20,7 @@ impl IncrementLoopIteration { } frame.loop_iteration_count = previous_iteration_count.wrapping_add(1); + context.vm.runtime_limits.increment_loop_iterations_executed(); Ok(()) } } diff --git a/vendor/boa_engine/src/vm/runtime_limits.rs b/vendor/boa_engine/src/vm/runtime_limits.rs index 5da21a7..c60aee9 100644 --- a/vendor/boa_engine/src/vm/runtime_limits.rs +++ b/vendor/boa_engine/src/vm/runtime_limits.rs @@ -7,6 +7,9 @@ pub struct RuntimeLimits { /// Max loop iterations before an error is thrown. loop_iteration: u64, + /// Total loop iterations executed since the limit was last configured/reset. + loop_iterations_executed: u64, + /// Max backtrace count in exception. backtrace_limit: usize, @@ -19,6 +22,7 @@ impl Default for RuntimeLimits { fn default() -> Self { Self { loop_iteration: u64::MAX, + loop_iterations_executed: 0, recursion: 512, backtrace_limit: 50, stack_size: 1024 * 10, @@ -46,12 +50,27 @@ impl RuntimeLimits { #[inline] pub fn set_loop_iteration_limit(&mut self, value: u64) { self.loop_iteration = value; + self.loop_iterations_executed = 0; } /// Disable loop iteration limit. #[inline] pub fn disable_loop_iteration_limit(&mut self) { self.loop_iteration = u64::MAX; + self.loop_iterations_executed = 0; + } + + /// Returns the total number of loop iterations executed since the loop limit was set. + #[inline] + #[must_use] + pub const fn loop_iterations_executed(&self) -> u64 { + self.loop_iterations_executed + } + + /// Increments the total number of loop iterations executed by 1. + #[inline(always)] + pub fn increment_loop_iterations_executed(&mut self) { + self.loop_iterations_executed = self.loop_iterations_executed.wrapping_add(1); } /// Get max backtrace limit for an exception.