Browse documentation

Unified performance barometer with a frozen JetStream subset

Date: 2026-07-12 Area: benchmarking, ci, website Issue: #858 Related: ADR 0087, ADR 0090

GocciaScript will add a JetStream 3 reference lane and present its retained main-branch history together with AWFY on one public Performance Barometer. The barometer treats QuickJS and Node.js as reference engines: they provide scale and direction, but their product goals are not assumed to match GocciaScript's and the dashboard is not a ranking.

The JetStream input is a frozen, manifest-owned subset of six pure-JavaScript workloads from pinned JetStream 3.0 commit 3967678fa8ab98d847ab33cf3728dba726fa854b. Upstream workload files remain unchanged. A generic shell adapter supplies only timing, deterministic randomness where required, and result serialization. Workloads that require Wasm, DOM, workers, host filesystem access, duplicate the Web Tooling lane, or do not fit the execution budget are outside this lane. The reduced three-iteration protocol with five process repetitions preserves JetStream's First/Worst/Average score shape but is explicitly not the official full-suite JetStream score.

AWFY and JetStream keep their native measurement units in retained reports. The dashboard exposes one directional reference-ratio convention: 1.00× means aligned performance and values above one mean GocciaScript was proportionally slower. AWFY calculates Goccia time / reference time; JetStream calculates reference score / Goccia score. QuickJS and Node.js ratios remain separate.

Retained history is segmented by its measurement contract. Corpus commit, selected subset, driver version, QuickJS version, or Node.js version changes break trend lines rather than connecting unlike points. Failed reports remain structurally publishable and visible as gaps. When the newest run is incomplete, the last complete result is labeled stale instead of being presented as current. AWFY and JetStream use separate Blob namespaces while the website reads both into the unified /performance route.

Consequences:

  • JetStream expands the external performance barometer without making its full browser harness or web APIs compatibility requirements for GocciaScript.
  • The public dashboard communicates direction and reproducibility, not a winner or an absolute performance claim.
  • Measurement-version changes and failures are visible parts of the historical record instead of being smoothed over.
  • Web Tooling stays a separate Goccia-only viability lane.