open-standards/wai/quantum-conformance/qasm3
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Transaction Science 37dfe98d2d wai quantum-conformance/qasm3: the OpenQASM 3 corpus, run natively, under wasm32-wasip2 and in the browser
59 programs, each with what the reader must do with it: the language
specification's 21 example programs, unchanged (those that run held to
their results, the rest to the code that names the first construct the
reader cannot hold exactly, or the example's own error), and a program for
each construct with a reference written without it. stdgates.qasm applies
every standard gate once, and its reference writes each in U and CX alone.

Expectations: refused (a code), warns (every warning's code), deterministic
(every shot's outcome), distribution (exact outcome probabilities),
expectations (exact Pauli values), equivalent (a reference's unitary up to a
global phase), exact (the bit-exact circuit takes it or refuses it with a
code), outputs, timing and calibrations. bundle.json holds the cases with
their text inline for builds that read no files; a test holds it equal to
the files.

CI: wai-quantum-lang.yml runs the reader's tests, the corpus natively, the
reader built without the lowerings, and the corpus under wasm32-wasip2 by
wasmtime; wai-web's wasm32 tests read every case through the page's engine
(the wasm32 count goes from 8 to 9).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 19:51:34 -04:00
..
lang wai quantum-conformance/qasm3: the OpenQASM 3 corpus, run natively, under wasm32-wasip2 and in the browser 2026-10-27 19:51:34 -04:00
spec wai quantum-conformance/qasm3: the OpenQASM 3 corpus, run natively, under wasm32-wasip2 and in the browser 2026-10-27 19:51:34 -04:00
bundle.json wai quantum-conformance/qasm3: the OpenQASM 3 corpus, run natively, under wasm32-wasip2 and in the browser 2026-10-27 19:51:34 -04:00
manifest.json wai quantum-conformance/qasm3: the OpenQASM 3 corpus, run natively, under wasm32-wasip2 and in the browser 2026-10-27 19:51:34 -04:00
README.md wai quantum-conformance/qasm3: the OpenQASM 3 corpus, run natively, under wasm32-wasip2 and in the browser 2026-10-27 19:51:34 -04:00

OpenQASM 3 conformance

OpenQASM 3 programs, each with what the reader (wai_quantum::qasm) must do with it: read it to an exact result, read it to the unitary of a reference program, or refuse it with a given diagnostic code.

Path What
spec/ The OpenQASM 3 specification's example programs, unchanged (Apache-2.0, as the specification is published). Those that run are held to their results; those that cannot be run exactly are held to the code the reader refuses them with, which names the first construct it cannot hold (an extern, durationof, a while on measured bits with no bound) or the example's own error (arrays.qasm indexes past its array; cphase.qasm and defcal.qasm are fragments that declare no qubits).
lang/ A program for each construct the reader lowers, carries, preserves or refuses, and *.ref.qasm references written without the construct. stdgates.qasm applies every standard gate once; its reference writes each in U and CX alone.
manifest.json Each case: its file, what it covers, and its expectations (the manifest's expectations says what each kind means).
bundle.json The manifest's cases with each program's text inline, for builds that read no files.

An expectation is one or more of: refused (a code), warns (the codes of every warning and note, sorted), deterministic (every shot's outcome), distribution (exact outcome probabilities, within 1e-9), expectations (exact Pauli expectation values), equivalent (the reference's unitary, up to a global phase, within 1e-9), exact (the bit-exact circuit takes it, or refuses it with a code), outputs, timing and calibrations.

Native

cd wai/wai-quantum
cargo test --release --features full --test qasm3_conformance

Two tests: every case against its expectations, and the bundle held equal to the files. After changing a program or the manifest, write the bundle:

WAI_QASM3_BUNDLE_WRITE=1 cargo test --release --features full --test qasm3_conformance the_bundle_is_the_corpus

WASI (the edge)

CARGO_TARGET_WASM32_WASIP2_RUNNER=wasmtime \
  cargo test --target wasm32-wasip2 --features full --test qasm3_conformance

The cases come from the bundle compiled into the test.

Browser

wai-web's wasm32 tests (--features quantum_engine, under wasm-bindgen-test-runner) read every case of the bundle through the page's engine: each refusal's code, each program's warnings, and each program with one outcome run to it.

CI: wai-quantum-lang.yml (native and wasm32-wasip2) and wai-web-wasm.yml (the browser build).