feat!: Interval is independent of resource IDs and scope position#1205
feat!: Interval is independent of resource IDs and scope position#1205
Conversation
|
This PR contains breaking changes to the public Rust API. cargo-semver-checks summary |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1205 +/- ##
==========================================
+ Coverage 78.73% 79.07% +0.34%
==========================================
Files 159 159
Lines 20157 20290 +133
Branches 19055 19188 +133
==========================================
+ Hits 15870 16045 +175
+ Misses 3310 3260 -50
- Partials 977 985 +8
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
e02fb3a to
de2ffcf
Compare
|
@mariagg-quantinuum Could you review this please? I cannot requests from you atm 🫠 |
|
Checked this PR, all seems to work and make sense to me 👍 @lmondada |
|
Cheers, and
yes indeed, I can 🎉 |
|
@doug-q this was reviewed by @mariagg-quantinuum, but as she's not an owner of the repo, we would still need your approval. A second pair of eyes is always good anyways! Thanks in advance 😊 |
I want to define a `Subcircuit` as a combination of `Interval`s on resource paths (the parts with linear, non-copyable data), and ASTs of fully classical, copyable data. - PR #1205 was opened to refine the notion of `Interval` - this PR creates the `CopyableExpressionAST` type that corresponds to ASTs of classical data in hugr graphs. --------- Co-authored-by: Alan Lawrence <[email protected]>
|
@doug-q could you please review this when you have a moment? |
## 🤖 New release * `tket`: 0.16.0 -> 0.17.0 (✓ API compatible changes) * `tket-qsystem`: 0.22.0 -> 0.23.0 (✓ API compatible changes) <details><summary><i><b>Changelog</b></i></summary><p> ## `tket` <blockquote> ## [0.17.0](tket-v0.16.0...tket-v0.17.0) - 2026-02-02 ### Bug Fixes - *(encoded-circ)* Track unsupported wires between input and output ([#1224](#1224)) - Multiple fixes to the pytket encoder ([#1226](#1226)) - Don't use opgroup in pytket barrier encoding ([#1251](#1251)) - guppy_to_circuit always returns num_operations = 0 ([#1200](#1200)) - *(pytket-decoder)* Avoid QAllocating and immediately freeing qubits ([#1256](#1256)) - Encoding of opaque subgraphs with no associated qubit/bit ([#1295](#1295)) - [**breaking**] Don't rely on command params for pytket barriers ([#1298](#1298)) - Track output qubits in CircuitInfo ([#1304](#1304)) - Wrongly reused qubit IDs in pytket encoding ([#1358](#1358)) ### New Features - Deprecate local find_tuple_unpack rewrite ([#1188](#1188)) - Add CopyableExpressionAST ([#1209](#1209)) - `NormalizeGuppy` pass to simplify generated structure ([#1220](#1220)) - [**breaking**] pytket EncodedCircuit struct for in-place pytket optimisation ([#1211](#1211)) - [**breaking**] Interval is independent of resource IDs and scope position ([#1205](#1205)) - Don't translate usizes to pytket ([#1241](#1241)) - BorrowSquashPass to elide redundant borrow/return ops ([#1159](#1159)) - [**breaking**] Bump hugr to 0.25.0 ([#1325](#1325)) - Remove order edges in NormalizeGuppy pass ([#1326](#1326)) - [**breaking**] Remove deprecated unpack tuple pass ([#1387](#1387)) ### Refactor - Remove contain_qubits, use TypeUnpacker ([#1283](#1283)) - [**breaking**] Replace Subcircuit with SiblingSubgraph ([#1288](#1288)) - *(metadata)* [**breaking**] Migrate all metadata keys onto the new metadata traits ([#1328](#1328)) </blockquote> ## `tket-qsystem` <blockquote> ## [0.23.0](tket-qsystem-v0.22.0...tket-qsystem-v0.23.0) - 2026-02-02 ### Bug Fixes - [**breaking**] Don't rely on command params for pytket barriers ([#1298](#1298)) - Wrongly reused qubit IDs in pytket encoding ([#1358](#1358)) ### New Features - `NormalizeGuppy` pass to simplify generated structure ([#1220](#1220)) - Allow running arbitrary serializable pytket passes on hugrs ([#1266](#1266)) - BorrowSquashPass to elide redundant borrow/return ops ([#1159](#1159)) - [**breaking**] Bump hugr to 0.25.0 ([#1325](#1325)) - Remove order edges in NormalizeGuppy pass ([#1326](#1326)) - hide new public funcs introduced by linearization ([#1333](#1333)) ### Testing - regenerate guppy_opt examples, and count gates ([#1249](#1249)) - run pytket on guppy_opt tests, measure (very limited) success ([#1250](#1250)) </blockquote> </p></details> --- This PR was generated with [release-plz](https://github.com/release-plz/release-plz/).
Previously,
Intervals were storingResourceIds andPositions. This made them only valid for a specificResourceScope. This data is no longer stored, so thatIntervals are now valid independently of the choice ofResourceIds andPositions. See the docstring ofIntervaland the added test.BREAKING CHANGE: most methods of resource::Interval now take a
ResourceScopeargument; Interval::singleton constructor renamed to Interval::new_singleton