Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat!: qsystem std functions with updated primitives #679

Merged
merged 8 commits into from
Dec 2, 2024
Merged

Conversation

ss2165
Copy link
Member

@ss2165 ss2165 commented Dec 2, 2024

Closes #625 Closes #645

  • hseries renamed to qsystem

BREAKING CHANGE: hseries primitive functions moved to std.qsystem
BREAKING CHANGE: measure_return renamed to project_z

@ss2165 ss2165 requested a review from a team as a code owner December 2, 2024 14:59
@ss2165 ss2165 requested a review from qartik December 2, 2024 14:59
@codecov-commenter
Copy link

codecov-commenter commented Dec 2, 2024

Codecov Report

Attention: Patch coverage is 79.66102% with 24 lines in your changes missing coverage. Please review.

Project coverage is 92.75%. Comparing base (1a86be6) to head (e46226f).
Report is 19 commits behind head on main.

Files with missing lines Patch % Lines
guppylang/std/qsystem/functional.py 69.38% 15 Missing ⚠️
guppylang/std/qsystem/__init__.py 86.53% 7 Missing ⚠️
guppylang/std/quantum.py 83.33% 1 Missing ⚠️
guppylang/std/quantum_functional.py 50.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #679      +/-   ##
==========================================
+ Coverage   92.48%   92.75%   +0.26%     
==========================================
  Files          66       68       +2     
  Lines        7549     7720     +171     
==========================================
+ Hits         6982     7161     +179     
+ Misses        567      559       -8     

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

Copy link
Member

@qartik qartik left a comment

Choose a reason for hiding this comment

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

Overall LGTM.

Question: Is qsystem broadly agreed upon as a term to refer to quantinuum-specific hardware? Why not just call it quantinuum, let's say? I must be missing some context here.

@@ -34,7 +33,7 @@ def measure(self: "qubit" @ owned) -> bool:
@guppy
@no_type_check
def measure_return(self: "qubit") -> bool:
return measure_return(self)
return project_z(self)
Copy link
Member

Choose a reason for hiding this comment

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

Just a comment, no change needed. From this wrapper, it looks like project_z is not exposed directly to the user, so I think it's a nice rename. I wouldn't want users to have to use project_z call for measurements.

Copy link
Member Author

Choose a reason for hiding this comment

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

oh this has been overlooked, measure_return should be removed really. measure_return is a confusing name, so I wanted to replace with project_z. measure is still there as the standard user facing measure function, but it consumes the qubit.

measure_reset was not correctly defined
@ss2165 ss2165 requested a review from qartik December 2, 2024 15:42
@ss2165 ss2165 added this pull request to the merge queue Dec 2, 2024
Merged via the queue into main with commit b0f041f Dec 2, 2024
3 checks passed
@ss2165 ss2165 deleted the ss/measure-alloc branch December 2, 2024 18:14
github-merge-queue bot pushed a commit that referenced this pull request Dec 19, 2024
🤖 I have created a release *beep* *boop*
---


## [0.14.0](v0.13.1...v0.14.0)
(2024-12-19)


### ⚠ BREAKING CHANGES

* Lists in `py(...)` expressions are now turned into Guppy arrays
instead of lists.
* `dirty_qubit` function removed
* measure_return renamed to `project_z`

### Features

* add `maybe_qubit` stdlib function
([#705](#705))
([a49f70e](a49f70e)),
closes [#627](#627)
* add measure_array and discard_array quantum function
([#710](#710))
([3ad49ff](3ad49ff))
* Add method to load pytket circuit without function stub
([#712](#712))
([ee1e3de](ee1e3de))
* Add Option type to standard library
([#696](#696))
([45ea6b7](45ea6b7))
* Allow generic nat args in statically sized ranges
([#706](#706))
([f441bb8](f441bb8)),
closes [#663](#663)
* Array comprehension
([#613](#613))
([fdc0526](fdc0526)),
closes [#614](#614)
[#616](#616)
[#612](#612)
* Implicit coercion of numeric types
([#702](#702))
([df4745b](df4745b)),
closes [#701](#701)
* Load `pytket` circuit as a function definition
([#672](#672))
([b21b7e1](b21b7e1))
* Make arrays iterable
([#632](#632))
([07b9871](07b9871))
* qsystem std functions with updated primitives
([#679](#679))
([b0f041f](b0f041f))
* remove dirty_qubit
([#698](#698))
([78e366b](78e366b))
* Turn py expression lists into arrays
([#697](#697))
([d52a00a](d52a00a))
* Unpacking assignment of iterable types with static size
([#688](#688))
([602e243](602e243))
* update to hugr 0.10 and tket2 0.6
([#725](#725))
([63ea7a7](63ea7a7))


### Bug Fixes

* Accept non-negative int literals and py expressions as nats
([#708](#708))
([a93d4fe](a93d4fe)),
closes [#704](#704)
* Allow borrowing inside comprehensions
([#723](#723))
([02b6ab0](02b6ab0)),
closes [#719](#719)
* Detect unsupported default arguments
([#659](#659))
([94ac7e3](94ac7e3)),
closes [#658](#658)
* docs build command
([#729](#729))
([471b74c](471b74c))
* Ensure `int`s can be treated as booleans
([#709](#709))
([6ef6d60](6ef6d60)),
closes [#681](#681)
* Fix array execution bugs
([#731](#731))
([0f6ceaa](0f6ceaa))
* Fix implicit modules in IPython shells
([#662](#662))
([4ecb5f2](4ecb5f2)),
closes [#661](#661)
* Properly report error for unsupported constants
([#724](#724))
([d0c2da4](d0c2da4)),
closes [#721](#721)
* Properly report errors for unsupported expressions
([#692](#692))
([7f24264](7f24264)),
closes [#691](#691)
* remove use of deprecated Ellipsis
([#699](#699))
([b819a84](b819a84))


### Documentation

* Fix docs build ([#700](#700))
([684f485](684f485)),
closes [#680](#680)
* fix README.md and quickstart.md
([#654](#654))
([abb0221](abb0221))

---
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.

Add project_z and hseries.measure_and_reset functions Get rid of measure_return
3 participants