Parent: #459 Depends on: #460, #462 Related: #461, #503
Goal
Validate zig-js performance against independent, pinned, out-of-tree benchmark suites and additional engines without making any suite or engine a build/runtime dependency.
Why
#460 defines rigorous repository-owned application-shaped workloads and anti-specialization variants. Broad leadership claims also need independent workloads whose structure was not designed around zig-js, plus controls showing whether a result is specific to system JSC.
Scope
- Inventory candidate language/runtime suites by license, host API requirements, determinism, workload coverage, run duration, maintenance, and compatibility with a non-browser embedder.
- Select pinned script/Wasm subsets that can run unchanged or through a minimal documented host adapter; classify excluded browser/Node APIs rather than silently patching semantics.
- Run suites from explicit temporary or sibling checkouts with exact revision/checksum. Do not vendor them, resolve them during ordinary builds, or make them package dependencies.
- Add optional comparison adapters for system JSC and independently installed V8, SpiderMonkey, and QuickJS where exact programming models/timed boundaries are possible.
- Preserve official scores where valid, plus per-test wall/CPU/RSS/tier/GC data and exact failures/skips.
- Keep engines in separate executables/processes so zig-js's JSC-shaped exports cannot interpose.
- Publish suite-specific results and geometric aggregates only after every included row, exclusion, patch, and host difference is visible.
No-workaround rules
- No editing workload logic to favor zig-js, unsupported test deletion, dependency bundled into zig-js, browser score claimed by a non-browser subset, fake public-API equivalence, or “win” based only on an aggregate hiding losses.
Acceptance
- A machine-readable inventory records suite/engine pins, licenses, checksums, adapters, applicable rows, exclusions, and reasons.
- Acquisition and execution are explicit, offline-after-fetch, checksum-verified, and quarantined from normal build/runtime dependencies by #462.
- Results retain every applicable row, failure, skip, raw sample, dispersion, checksum/output validation, and exact timed boundary.
- Anti-specialization mutations and tier attribution show no suite/source recognizer.
- Broad performance wording distinguishes repository-owned, independent-suite, JSC, and multi-engine evidence.
Foundation
The symmetric cross-engine process/timing protocol is established by #44/#45/#50 and tools/benchmark-comparison.py; its owned replacement is tracked by #497.