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

function overloading

Generics (type_var/nat_var)

nat_vars are less useful without runtime array support

First class or higher order functions

get_current_shot

Recursive functions or loops within @guppy.comptime

As long as compilation to HUGR succeeds

Recursive functions or loops within @guppy

*️⃣

Only if unrollable/serializable through chosen LLVM optimization level

measure_array or discard_array

Use non-comptime arrays internally

barrier

Uses non-comptime arrays internally

exit and panic

Currently unsupported on H2 hardware

RNG: __new__, discard, random_int/_bounded

Specific to Quantinuum hardware

RNG: random_advance

Currently unsupported on H2 hardware

RNG: shuffle

Uses non-comptime arrays internally

RNG: random(_clifford)_angle, random_float

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 * returns an array, so only at comptime

The more detailed rules behind the partial entries are covered in Collections and structs.