[package] name = "wai-wasmq" version = "0.2.0" edition = "2024" license = "Apache-2.0" description = "wasmQ: a deterministic, metered, receipted WebAssembly profile for hybrid quantum-classical programs. An OpenQASM 3 program and the WebAssembly its `extern` calls run travel in one content-addressed WAI envelope, run with the same bytes and the same fuel on every host, and seal a signed receipt." repository = "https://git.transaction.science/Transaction-Science/open-standards" homepage = "https://wai.transaction.science/quantum-run" keywords = ["quantum", "webassembly", "deterministic", "openqasm", "receipts"] categories = ["science", "wasm", "simulation"] readme = "README.md" # Hold to the package the tests that read files outside it (the conformance set # in quantum-conformance/wasmq/ and extensions/quantum-wasmq.wit) or call the # reference modules' own crates, which are not published: they run in the # repository only, as the engine's do. exclude = ["tests/fuzz.rs", "tests/reference.rs", "tests/vectors.rs", "tests/wit.rs"] [lib] name = "wai_wasmq" path = "src/lib.rs" [[bin]] name = "wasmq_vectors" path = "src/bin/wasmq_vectors.rs" [features] default = ["wasmtime"] # The native engine, one of the two the crate runs a module on: the pinned # release of wasmtime, compiling with Cranelift. The interpreter (src/interp.rs) # is always there; on wasm32 it is the only engine. wasmtime = ["dep:wasmtime"] [dependencies] blake3 = "1" serde_json = { version = "1", features = ["float_roundtrip"] } wai-quantum = { version = "0.10.0", path = "../wai-quantum", default-features = false, features = ["quantum_engine", "quantum_receipt"] } wasmparser = { version = "0.263", default-features = false, features = ["std", "validate", "features", "simd"] } # scripts/check-wasmtime-pin.py holds this to the release every workflow runs. [target.'cfg(not(target_arch = "wasm32"))'.dependencies] wasmtime = { version = "=50.0.1", optional = true, default-features = false, features = ["cranelift", "runtime", "std"] } [dev-dependencies] wat = "1" # The WIT file (extensions/quantum-wasmq.wit), read so a test holds the modules' exports # and the callouts' lowering to it. wit-parser = "0.263" # The reference modules' own code, compiled natively: the tests hold each module's results # equal to it. wasmq-qldpc-decoder = { path = "modules/qldpc-decoder", default-features = false } wasmq-atom-planner = { path = "modules/atom-planner", default-features = false } wai-quantum = { version = "0.10.0", path = "../wai-quantum", default-features = false, features = ["quantum_engine", "quantum_receipt", "quantum_qec", "quantum_atom"] }