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 |
|---|---|---|
|
✅ |
|
Measurement objects from |
✅ |
Read the classical value with |
Scalar and array |
*️⃣ |
Supports booleans and unsigned integers; see Result recording |
Angle values and arithmetic |
✅ |
Supported for gate parameters such as |
|
✅ |
|
|
✅ |
Accepts only individual qubits and qubit arrays |
Function overloading |
✅ |
|
Generics ( |
✅ |
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 |
|
✅ |
Payload types must be supported |
|
✅ |
|
Dagger modifier |
✅ |
|
Control modifier |
✅ |
|
|
✅ |
|
RNG: |
✅ |
|
Recursive functions or loops within |
✅ |
As long as Guppy compilation succeeds |
RNG: |
✅ |
|
Recursive functions or loops within |
*️⃣ |
Loops must have a fixed upper bound and be fully unrolled; the default limit is 800 iterations |
|
*️⃣ |
Fixed operation sequences are supported when their internal storage and control flow can be fully simplified |
|
❌ |
Its internal storage cannot currently be removed completely |
|
❌ |
Early exit is unsupported on H-Series |
RNG: |
❌ |
Its array accesses cannot be made static |
RNG: |
❌ |
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 |
✅ |
|
|
✅ |
|
|
✅ |
|
|
✅ |
See Integers, Collections and structs, and Arrays for the rules behind the partial entries.