Today, the Quantinuum software team is excited to announce Guppy, a new quantum programming language for the next generation of quantum computing—designed to work with upcoming hardware like Helios, our most powerful system yet. You can download Guppy today and start experimenting with it using our custom-built Selene emulator. Both Guppy and Selene are open source and are capable of handling everything from traditional circuits to dynamic, measurement-dependent programs such as quantum error correction protocols.
What is Guppy?
Guppy is a quantum-first programming language designed from the ground up to meet the needs of state-of-the-art quantum computers. Embedded in Python, it uses syntax that closely resembles Python, making it instantly familiar to developers. Guppy also provides powerful abstractions and compile-time safety that go far beyond traditional circuit builders like pytket or Qiskit.
Key Features
- Pythonic & Embedded
Guppy integrates seamlessly with existing Python codebases and libraries, offering a concise and expressive alternative to imperative builder patterns. Its source language approach supports higher levels of abstraction—unlocking algorithmic innovations that may not be discovered otherwise.
- Safety by Design
Quantum computers are scarce, and access is limited—often involving long queues to run programs. Debugging runtime errors on real hardware isn't just time-consuming; it's costly. Guppy is statically compiled and strongly typed, helping catch bugs early in development. It enforces principles like no-cloning, prevents qubit memory leaks, and offers clear, actionable error messages.
- Beyond Circuits: The Quantum Kernel
Guppy programs are more than circuit descriptions—they are quantum kernels, supporting rich control flow based on measurement outcomes, function calls, and complex data types. This is essential for implementing adaptive quantum algorithms.
Example Program
Guppy is designed to be readable and expressive, while enabling precise, low-level quantum programming.
This example implements the gate V3 = (I + 2iZ)/√5 using a probabilistic repeat-until-success scheme[1].

If both X-basis measurements on the top two qubits return 0, the V3 gate is successfully applied to the input state |ψ⟩; otherwise, the identity is applied. Since this succeeds with a probability of 5/8, we can repeat the procedure until success.
Let’s implement this in Guppy.
First, we’ll define a helper function to prepare a scratch qubit in the |+⟩ state:
@guppy
def plus_q() -> qubit:
"""Allocate and prepare a qubit in the |+> state"""
q = qubit()
h(q)
return q
Next, a function for performing X-basis measurement:
@guppy
def x_measure(q: qubit @ owned) -> bool:
"""Measure the qubit in the X basis and return the result."""
h(q)
return measure(q)
The @owned annotation tells the Guppy compiler that we’re taking ownership of the qubit, not just borrowing it—a concept familiar to Rust programmers. This is required because measurement deallocates the qubit, and the compiler uses this information to track lifetimes and prevent memory leaks.
The @guppy deecorator marks functions as Guppy source code. Oustide these functions, we can use regular Python - like setting a maximum attempt limit:
MAX_ATTEMPTS = 1000
With these pieces in place, we can now implement the full protocol:
@guppy
def v3_rus(q: qubit) -> int:
attempt = 0
while attempt < comptime(MAX_ATTEMPTS):
attempt += 1
a, b = plus_q(), plus_q()
toffoli(a, b, q)
s(q)
toffoli(a, b, q)
a_x, b_x = x_measure(a), x_measure(b)
if not (a_x or b_x):
break
z(q)
return attempt
What’s happening here?

Learn More
There's a lot more to Guppy, including:
- Polymorphism and generics
- Linear typing and ownership tracking
- Statically sized arrays and custom data types
- Compile-time metaprogramming via Python
Explore more in the Guppy documentation
Why We Built Guppy for Helios
Helios represents a major leap forward for Quantinuum hardware—with more qubits, lower error rates, and advanced runtime features that require a new class of programming tools. Guppy provides the expressive power needed to fully harness Helios's capabilities—features that traditional circuit-building tools simply can't support.
See our latest roadmap update for more on Helios and what's coming.
Simulate Today with Selene
Quantum hardware access is limited—but development shouldn't be. Selene is our new open-source emulator, designed to run compiled Guppy programs accurately—including support for noise modeling. Unlike generic simulators, Selene models advanced runtime behavior unique to Helios, such as measurement-dependent control flow and hybrid quantum-classical logic.
Selene supports multiple simulation backends:
- Statevector simulation (via Quest)
- Stabilizer simulation (via Stim)
- Classical replay: replay simple programs by providing measurement outcomes
- More plugins coming soon.
Whether you're prototyping new algorithms or testing low-level error correction, Selene offers a realistic, flexible environment to build and iterate.
Get Started
Guppy is available now on GitHub and PyPi under the Apache 2 license. Try it out with Selene, read the docs, and start building for the future of quantum computing today.
👉 Getting started with Guppy and Selene
1. Paetznick, A., & Svore, K. M. (2014). Repeat-Until-Success: Non-deterministic decomposition of single-qubit unitaries. arXiv preprint arXiv:1311.1074 ↩