Support Matrix

This matrix summarizes the Guppy features supported when targeting H-Series systems with hugr-qir.

✅ = full support, *️⃣ = partial support, ❌ = unsupported

Guppy features

Feature

Support

Remarks

if / elif / else

✅

Measurement objects from measure(q)

✅

Read the classical value with .read()

Scalar and array output

*️⃣

Supports booleans and unsigned integers; see Result recording

Angle values and arithmetic

✅

Supported for gate parameters such as rz

measure_array and discard_array

✅

barrier

✅

Accepts only individual qubits and qubit arrays

Function overloading

✅

Generics (type_var / nat_var)

✅

Fixed-size generic arrays follow the normal array rules

Function type annotations

✅

First-class and higher-order functions

✅

Protocols

✅

Type aliases

✅

The expanded type must be supported

Option, Result, and Either

✅

Payload types must be supported

mem_swap

✅

Dagger modifier

✅

Control modifier

✅

get_current_shot

✅

RNG: __new__, discard, random_int/_bounded

✅

Recursive functions or loops within @guppy.comptime

✅

As long as Guppy compilation succeeds

RNG: random_advance

✅

Recursive functions or loops within @guppy

*️⃣

Loops must have a fixed upper bound and be fully unrolled; the default limit is 800 iterations

Stack and Queue

*️⃣

Fixed operation sequences are supported when their internal storage and control flow can be fully simplified

PriorityQueue

❌

Its internal storage cannot currently be removed completely

exit and panic

❌

Early exit is unsupported on H-Series

RNG: shuffle

❌

Its array accesses cannot be made static

RNG: random(_clifford)_angle, random_float

❌

Dynamic floating-point values are unsupported on H-Series

Data types

Data type

Support

Caveats

int/nat

*️⃣

There are restrictions on division and modulo operations, see Integers

float

*️⃣

May be used as a constant gate parameter; calculations and output are unsupported

array

*️⃣

Fixed-size arrays are supported when element accesses can be made static

bool

✅

struct

✅

tuple

✅

enum

✅

Option

✅

Result

✅

Either

✅

See Integers, Collections and structs, and Arrays for the rules behind the partial entries.