65 releases (24 stable)

new 1.11.0 Apr 5, 2024
1.11.0-alpha.2 Mar 28, 2024
1.10.0 Feb 12, 2024
1.8.0 Dec 8, 2023
0.5.1 Jul 29, 2021

#97 in Simulation

Download history 304/week @ 2023-12-18 37/week @ 2023-12-25 194/week @ 2024-01-01 1110/week @ 2024-01-08 555/week @ 2024-01-15 1175/week @ 2024-01-22 504/week @ 2024-01-29 658/week @ 2024-02-05 452/week @ 2024-02-12 209/week @ 2024-02-19 1229/week @ 2024-02-26 1650/week @ 2024-03-04 243/week @ 2024-03-11 1001/week @ 2024-03-18 678/week @ 2024-03-25 1204/week @ 2024-04-01

3,182 downloads per month
Used in 17 crates


12K SLoC


roqoqo is a toolkit to represent quantum circuits by HQS Quantum Simulations.

For a detailed introduction see the user documentation and the qoqo examples repository

What roqoqo is:

  • A toolkit to represent quantum programs including circuits and measurement information
  • A thin runtime to run quantum measurements
  • A way to serialize quantum circuits and measurement information
  • A set of optional interfaces to devices, simulators and toolkits (e.g. qoqo_quest, qoqo_mock, qoqo_qasm)

What roqoqo is not:

  • A decomposer translating circuits to a specific set of gates
  • A quantum circuit optimizer
  • A collection of quantum algorithms


Crates.io GitHub Workflow Status docs.rs Crates.io codecov

roqoqo provides:

  • A Circuit struct to represent quantum circuits
  • A QuantumProgram enum to represent quantum programs using different measurement methods
  • Structs representing single-qubit, two-qubit, multi-qubit and measurement operations that can be executed (decomposed) on any universal quantum computer
  • Structs representing so-called PRAGMA operations that only apply to certain hardware, simulators or annotate circuits with additional information
  • Enums that group operations based on the properties of operations (e.g. Operation for all operations or SingleQubitGateOperation for all unitary operations acting on a single qubit)
  • Support for symbolic variables
  • Readout based on classical registers
  • Measurement structs for evaluating observable measurements based on raw readout date returned by quantum computer backends
  • An EvaluatingBackend trait defining a standard for interfacing from qoqo to hardware and simulators that can return measured values
  • A Device trait defining a standard to obtain connectivity information and a noise model for quantum computing devices
  • Serialize and deserialize support for Circuit and QuantumProgram via the serde crate.

This software is still in the beta stage. Functions and documentation are not yet complete and breaking changes can occur.

This project is partly supported by PlanQK.


To use roqoqo in a Rust project simply add

roqoqo = {version="1.0"}

to the [dependencies] section of the project Cargo.toml.


~198K SLoC