feat!: Replace CircuitHash with hugr's implementation#1420
Conversation
|
This PR contains breaking changes to the public Rust API. cargo-semver-checks summary |
acl-cqc
left a comment
There was a problem hiding this comment.
Looks good, thanks @aborgna-q
| g.bench_with_input(BenchmarkId::new("hash_simple", size), &size, |b, size| { | ||
| let circ = make_cnot_layers(8, *size); | ||
| b.iter(|| black_box(circ.circuit_hash(circ.entrypoint()))) | ||
| let hugr = make_cnot_layers(8, *size); |
There was a problem hiding this comment.
Does this benchmark still belong here? Quantinuum/hugr#2840 has its own benchmarks
There was a problem hiding this comment.
I had added a comment, but forgot to push it.
//! TODO: This is already being done in the Hugr repository, so we could remove it from here.
//! We don't delete it yet to keep an example for writing benchmarks. Remove it once other benchmarks are written.
|
|
||
| use std::thread::{self, JoinHandle}; | ||
|
|
||
| use crate::circuit::CircuitHash; |
There was a problem hiding this comment.
Presumably you don't need to import anything else instead because of the new Circuit::circuit_hash(&self, T::Node) ?
There was a problem hiding this comment.
Yep, it's a struct method rather than a trait now.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #1420 +/- ##
========================================
Coverage 79.60% 79.60%
========================================
Files 156 155 -1
Lines 20432 20332 -100
Branches 19443 19343 -100
========================================
- Hits 16264 16185 -79
+ Misses 3197 3187 -10
+ Partials 971 960 -11
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:
|
## 🤖 New release * `tket`: 0.17.0 -> 0.18.0 (✓ API compatible changes) * `tket-qsystem`: 0.23.0 -> 0.24.0 (✓ API compatible changes) <details><summary><i><b>Changelog</b></i></summary><p> ## `tket` <blockquote> ## [0.18.0](tket-v0.17.0...tket-v0.18.0) - 2026-04-02 ### Bug Fixes - *(pytket decoder)* Panic on repeated bit registers in pytket decoded output ([#1445](#1445)) - pytket encoder drops order edges to the output node ([#1466](#1466)) ### Documentation - Fix tket README introductory example ([#1463](#1463)) ### New Features - [**breaking**] Use raw Hugrs in pytket encoding/decoding API ([#1418](#1418)) - [**breaking**] Remove unused `lower_to_pytket` pass ([#1431](#1431)) - [**breaking**] Replace CircuitHash with hugr's implementation ([#1420](#1420)) - [**breaking**] Update MSRV to rust 1.91 ([#1446](#1446)) - [**breaking**] Update to hugr 0.26.0 ([#1448](#1448)) - [**breaking**] Follow pass scopes in composable passes ([#1429](#1429)) - Implemented `post_opdef` for `RotationOp` for constant folding ([#1468](#1468)) - [**breaking**] Reorganize `tket::passes` and add `hugr_passes` re-exports ([#1472](#1472)) - [**breaking**] Bump `hugr` dependency to 0.27.0 ([#1488](#1488)) - Move hugr-passes implementations to tket::passes ([#1487](#1487)) - Pass scopes in python API, update to hugr-py 0.16 ([#1464](#1464)) ### Refactor - *(llvm)* use llvm.is.fpclass for from_halfturns ([#1457](#1457)) ### Testing - Fixed signatures when decoding pytket circuits ([#1405](#1405)) </blockquote> ## `tket-qsystem` <blockquote> ## [0.24.0](tket-qsystem-v0.23.0...tket-qsystem-v0.24.0) - 2026-04-02 ### Bug Fixes - pytket encoder drops order edges to the output node ([#1466](#1466)) - Constant Folding with PassScope::Global should act globally, not just beneath the entrypoint ([#1470](#1470)) ### New Features - [**breaking**] Use raw Hugrs in pytket encoding/decoding API ([#1418](#1418)) - Add qsystem.rz pytket decoder ([#1432](#1432)) - [**breaking**] Update MSRV to rust 1.91 ([#1446](#1446)) - [**breaking**] Update to hugr 0.26.0 ([#1448](#1448)) - [**breaking**] Follow pass scopes in composable passes ([#1429](#1429)) - [**breaking**] Reorganize `tket::passes` and add `hugr_passes` re-exports ([#1472](#1472)) - Move hugr-passes implementations to tket::passes ([#1487](#1487)) </blockquote> </p></details> --- This PR was generated with [release-plz](https://github.com/release-plz/release-plz/). --------- Co-authored-by: Agustín Borgna <[email protected]>
The hashing code was copied and improved in
hugr-passes(Quantinuum/hugr#2840).This breaking PR removes the old code from here. I added a new
circuit_hashmethod toCircuitthat should cover previous usages.BREAKING CHANGE: Removed
CircuitHashtrait, useCircuit::circuit_hashorhugr::algorithms::hash::HugrHashinstead.Performance is the same between both implementations: bench