Support Matrix¶
This matrix summarizes the current Guppylang subset that can be lowered through HUGR into QIR for H-Series targets.
✅ = full support, *️⃣ = partial support, ❌ = unsupported
Guppy features¶
Features |
Support |
Remarks |
|---|---|---|
if elif else constructs |
✅ |
|
Measurement objects from |
✅ |
Read the classical value with |
Angle values and arithmetic |
✅ |
Supported for gate parameters such as |
function overloading |
✅ |
|
Generics ( |
✅ |
|
Function type annotations |
✅ |
|
First class or higher order functions |
✅ |
|
Protocols |
✅ |
|
Type aliases |
✅ |
Avoid aliases that expand to runtime arrays |
|
✅ |
Supported when payload types are supported |
|
✅ |
|
Dagger modifier |
✅ |
|
Control modifier |
❌ |
Lowers to an array of control qubits |
|
✅ |
|
Recursive functions or loops within |
✅ |
As long as compilation to HUGR succeeds |
Recursive functions or loops within |
*️⃣ |
Only if unrollable/serializable through chosen LLVM optimization level |
|
❌ |
Backed by runtime arrays |
|
❌ |
Use non-comptime arrays internally |
|
❌ |
Uses non-comptime arrays internally |
|
❌ |
Currently unsupported on H2 hardware |
RNG: |
✅ |
Specific to Quantinuum hardware |
RNG: |
❌ |
Currently unsupported on H2 hardware |
RNG: |
❌ |
Uses non-comptime arrays internally |
RNG: |
❌ |
No dynamic float support planned for H2 hardware |
Data types¶
Data Types |
Support |
Caveats |
|---|---|---|
int |
✅ |
|
bool |
✅ |
|
nat |
✅ |
|
struct |
✅ |
Cannot contain arrays |
float |
*️⃣ |
Must be runtime constant, arithmetic comptime only |
array |
*️⃣ |
Comptime only |
tuple |
*️⃣ |
Unpacking with |
enum |
✅ |
Supported when variant payloads are supported |
|
✅ |
Supported when payload type is supported |
|
✅ |
Supported when payload types are supported |
|
✅ |
Supported when payload types are supported |
The more detailed rules behind the partial entries are covered in Collections and structs.