Skip to content

Conversation

@ss2165
Copy link
Member

@ss2165 ss2165 commented Jul 8, 2025

Replaces validator and executor

Part of #1074 but user facing API will be a follow up

Final commit adds a new test that makes sure constants are loaded by llvm lowering - this cannot be tested in hugr-py using validation only

there's a lot of noise from ruff format in the second commit so might be easier to go one at a time after that one

@ss2165 ss2165 requested a review from a team as a code owner July 8, 2025 16:37
@ss2165 ss2165 requested a review from doug-q July 8, 2025 16:37
ss2165 added 5 commits July 8, 2025 17:39
update run_int in test_arithmetic

test: update tracing/test_arithmetic

test: update test_array

needs CQCL/tket2#958
to be fixed to pass

test: replace remaining uses of run_int_fn

test: replace remaining uses of run_float_fn

refactor: use old names for fixtures
@ss2165 ss2165 force-pushed the ss/push-ptnzyloqxzyx branch from a3b07fc to c8c112a Compare July 8, 2025 16:39
@ss2165 ss2165 requested review from mark-koch and removed request for doug-q July 8, 2025 16:40
@codecov-commenter
Copy link

codecov-commenter commented Jul 8, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 92.37%. Comparing base (721e3dd) to head (c8b0d2a).
Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1081      +/-   ##
==========================================
+ Coverage   92.35%   92.37%   +0.01%     
==========================================
  Files         112      112              
  Lines       10813    10813              
==========================================
+ Hits         9986     9988       +2     
+ Misses        827      825       -2     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not using devenv so I'll have to trust you on this one 😅


entry = flt_entry if is_flt else int_entry

# em = guppy.build_emulator(entry, n_qubits=1)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# em = guppy.build_emulator(entry, n_qubits=1)


# em = guppy.build_emulator(entry, n_qubits=1)
em = guppy.compile(entry)
instance = build(em)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this checking that the Hugr is valid?

Copy link
Member Author

@ss2165 ss2165 Jul 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes sorry should have said in PR description, the check_hugr function is called by the compile_to_llvm (which is called by build)

# TODO: Enable execution test once LLVM lowering is done:
# https://github.com/CQCL/hugr/issues/1973
#run_int_fn(compiled, 42)
# emulate_int_fn(compiled, 42)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is done now, so we could enable the tests. Happy for that to be a different PR though

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@ss2165 ss2165 added this pull request to the merge queue Jul 10, 2025
Merged via the queue into main with commit cefc70e Jul 10, 2025
4 checks passed
@ss2165 ss2165 deleted the ss/push-ptnzyloqxzyx branch July 10, 2025 09:06
github-merge-queue bot pushed a commit that referenced this pull request Aug 4, 2025
🤖 I have created a release *beep* *boop*
---


##
[0.21.0](guppylang-v0.20.0...guppylang-v0.21.0)
(2025-08-04)


### ⚠ BREAKING CHANGES

* All compiler-internal and non-userfacing functionality is moved into a
new `guppylang_internals` package
* `guppy.compile(foo)` and `guppy.check(foo)` replaced with
`foo.check()` and `foo.compile()`
* default HUGR output uses compressed binary encoding.
* `guppylang.tracing.object.GuppyDefinition` moved to
`guppylang.defs.GuppyDefinition`
`guppylang.tracing.object.TypeVarGuppyDefinition` moved and renamed to
`guppylang.defs.GuppyTypeVarDefinition`
* All `to_hugr` methods on types, arguments, and parameters now require
a `ToHugrContext` `CompileableDef.compile_outer` now requires a
`ToHugrContext` `guppy.hugr_op` now passes the compiler context to the
function generating the op `CheckedFunctionDef` now implements
`MonomorphizableDef` instead of `CompileableDef`
`CompilerContext.build_compiled_def` now requires an instantiation for
the definition's type parameters The `ToHugrContext` protocol now
requires two additional methods: `type_var_to_hugr` and
`const_var_to_hugr` `CompilerContext.{compiled, worklist}` and
`CompilationEngine.compiled` are now indexed by a tuple of `DefId` and
optional `PartiallyMonomorphizedArgs`
* comptime code that previously used constant integers outside i64 will
now fail to compile.
* Capturing closures are now disabled by default. Enabling them requires
calling `guppylang.enable_experimental_features()`, however note that
they are not supported throughout the stack.

### Features

* Add `Future` type
([#1075](#1075))
([5ad7673](5ad7673))
* add error when constant integer out of bounds
([#1084](#1084))
([eee77ae](eee77ae))
* Add guppy version metadata to hugr entrypoint
([#1039](#1039))
([0eafbd9](0eafbd9)),
closes [#1037](#1037)
* Add manual registration of extensions
([#1045](#1045))
([4b42936](4b42936))
* add qsystem op for measure leaked
([#1057](#1057))
([c555727](c555727))
* add selene via optional feature and use for testing
([#1081](#1081))
([cefc70e](cefc70e))
* Add support for V and Vdg.
([#1094](#1094))
([6b0d44a](6b0d44a))
* Allow indexing on tuples
([#1038](#1038))
([0e9097e](0e9097e)),
closes [#711](#711)
* Declare WASM modules in guppy
([#942](#942))
([e1240fb](e1240fb))
* Extend comptime arguments to arbitrary non-linear types
([#1110](#1110))
([384dd8c](384dd8c))
* Make decorator return types more precise
([#1115](#1115))
([c84e8b1](c84e8b1))
* set hugr entrypoint to compiled function
([#1063](#1063))
([16bd267](16bd267))
* store used extensions and versions in HUGR metadata
([#1049](#1049))
([a9a300c](a9a300c)),
closes [#1048](#1048)
* Support arbitrary const generics via monomorphisation
([#1033](#1033))
([bcf9865](bcf9865))
* Support Python 3.12 generic syntax
([#1051](#1051))
([ab2e118](ab2e118)),
closes [#823](#823)
* Top level compile + emulate Interface
([#1127](#1127))
([5e2f595](5e2f595))
* update to hugr-py v0.13
([#1083](#1083))
([8f071c8](8f071c8))
* use `core.` prefix for metadata keys
([#1055](#1055))
([2bf0d68](2bf0d68))


### Bug Fixes

* Allow array comprehension syntax in comptime functions
([#1068](#1068))
([da8f04a](da8f04a)),
closes [#1067](#1067)
* Allow struct redefinitions for Python < 3.13
([#1108](#1108))
([959a4e4](959a4e4)),
closes [#1107](#1107)
* Correctly detect
`[@Custom](https://github.com/custom)_guppy_decorator` in nested scopes
([#1086](#1086))
([678583c](678583c))
* Fix diagnostics rendering for comptime entrypoints
([#1099](#1099))
([fdd2676](fdd2676)),
closes [#1097](#1097)
* Fix frame lookup for Python 3.12 annotation scopes
([#1120](#1120))
([a69e489](a69e489)),
closes [#1116](#1116)
* Fix hugr conversion and bounds checks on numeric literals
([#1100](#1100))
([73d5e92](73d5e92))
* Fix Jupyter notebook diagnostic rendering
([#1109](#1109))
([6002474](6002474))
* Fix nested function definitions in Python 3.12
([#1064](#1064))
([090f920](090f920))
* Stop showing temporary variables in comptime diagnostics
([#1112](#1112))
([63854c5](63854c5)),
closes [#1111](#1111)
* support comptime entrypoint
([#1079](#1079))
([721e3dd](721e3dd))
* Turn capturing closures into experimental feature
([#1065](#1065))
([a959b18](a959b18))


### Documentation

* add docstrings for emulator module
([#1131](#1131))
([b33e065](b33e065))
* add quantum and qsystem gate definitions
([#912](#912))
([32a4bbc](32a4bbc))
* Fix docstrings
([#1128](#1128))
([0aded85](0aded85))
* Improve RNG docs
([#1043](#1043))
([8640f06](8640f06))
* replace `compile_module` usage in README
([#1041](#1041))
([03ccf3a](03ccf3a))
* Update guppy examples
([#1121](#1121))
([b994655](b994655))


### Code Refactoring

* Split up into `guppylang_internals` package
([#1126](#1126))
([81d50c0](81d50c0))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: Seyon Sivarajah <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants