-
Notifications
You must be signed in to change notification settings - Fork 6
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!: Track circuit extensions and read/write packages #680
Conversation
This PR contains breaking changes to the public Rust API. cargo-semver-checks summary
|
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #680 +/- ##
==========================================
+ Coverage 82.17% 82.87% +0.69%
==========================================
Files 62 62
Lines 7028 7128 +100
Branches 6781 6875 +94
==========================================
+ Hits 5775 5907 +132
+ Misses 889 848 -41
- Partials 364 373 +9
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🍌
self.hugr[self.hugr.root].op = ops.FuncDefn( | ||
function_name, inputs=dfg_op.inputs, _outputs=dfg_op.outputs | ||
) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
hugr rewriting is so much easier in python 🤔
} | ||
/// The [IGNORED_EXTENSION_OPS] definition depends on the buggy behaviour of [`NamedOp::name`], which returns bare names instead of scoped names on some cases. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nice comment 🙏
/// Error type for conversion between `Op` and `OpType`. | ||
#[derive(Debug, Display, Error, From)] | ||
#[non_exhaustive] | ||
pub enum CircuitStoreError { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
when are we dropping the word "Circuit" 👀
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Soon™️
(it should be my next PR)
tket2/src/serialize.rs
Outdated
}, | ||
} | ||
|
||
/// Error type for conversion between `Op` and `OpType`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe add tket2/tket1 prefixes to Op and OpType to distinguish
let mut mod2 = ModuleBuilder::new(); | ||
define("foo", &mut mod2); | ||
define("bar", &mut mod2); | ||
define("banana", &mut mod2); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🍌
tket2/src/serialize.rs
Outdated
} | ||
|
||
#[rstest] | ||
fn serialize_errors(multi_module_pkg: Package) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
there's still a few errors missing coverage, up to you about adding more tests
7e093dd
to
63f3e1f
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🍌
🤖 I have created a release *beep* *boop* --- ## [0.5.0](tket2-py-v0.4.1...tket2-py-v0.5.0) (2024-11-11) ### ⚠ BREAKING CHANGES * Removed `load_guppy_*` methods. Use Circuit::load_function_reader instead. ### Features * move extensions to auxillary package ([#682](#682)) ([dd78f9a](dd78f9a)) * Track circuit extensions and read/write packages ([#680](#680)) ([5e87dd9](5e87dd9)) ### Reverts * "Support python 3.13 ([#653](#653))" ([#657](#657)) ([3fb67ac](3fb67ac)) --- 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]> Co-authored-by: Agustín Borgna <[email protected]>
## 🤖 New release * `tket2`: 0.6.0 -> 0.7.0 (⚠️ API breaking changes) * `tket2-hseries`: 0.6.0 -> 0.7.0 (⚠️ API breaking changes) ###⚠️ `tket2` breaking changes ``` --- failure auto_trait_impl_removed: auto trait no longer implemented --- Description: A public type has stopped implementing one or more auto traits. This can break downstream code that depends on the traits being implemented. ref: https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/auto_trait_impl_removed.ron Failed in: type Units is no longer UnwindSafe, in /tmp/.tmpfB4eOr/tket2/tket2/src/circuit/units.rs:62 type Units is no longer RefUnwindSafe, in /tmp/.tmpfB4eOr/tket2/tket2/src/circuit/units.rs:62 --- failure enum_missing: pub enum removed or renamed --- Description: A publicly-visible enum cannot be imported by its prior path. A `pub use` may have been removed, or the enum itself may have been renamed or removed entirely. ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/enum_missing.ron Failed in: enum tket2::serialize::guppy::CircuitLoadError, previously in file /tmp/.tmphWIpmA/tket2/src/serialize/guppy.rs:114 --- failure enum_no_repr_variant_discriminant_changed: enum variant had its discriminant change value --- Description: The enum's variant had its discriminant value change. This breaks downstream code that used its value via a numeric cast like `as isize`. ref: https://doc.rust-lang.org/reference/items/enumerations.html#assigning-discriminant-values impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/enum_no_repr_variant_discriminant_changed.ron Failed in: variant Tk2Op::QAlloc 17 -> 18 in /tmp/.tmpfB4eOr/tket2/tket2/src/ops.rs:61 variant Tk2Op::QFree 18 -> 20 in /tmp/.tmpfB4eOr/tket2/tket2/src/ops.rs:63 variant Tk2Op::Reset 19 -> 21 in /tmp/.tmpfB4eOr/tket2/tket2/src/ops.rs:64 --- failure enum_variant_missing: pub enum variant removed or renamed --- Description: A publicly-visible enum has at least one variant that is no longer available under its prior name. It may have been renamed or removed entirely. ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/enum_variant_missing.ron Failed in: variant CircuitLoadError::ValError, previously in file /tmp/.tmphWIpmA/tket2/src/serialize/guppy.rs:156 variant RewriterSerialisationError::OpaqueOp, previously in file /tmp/.tmphWIpmA/tket2/src/rewrite/ecc_rewriter.rs:221 --- failure function_missing: pub fn removed or renamed --- Description: A publicly-visible function cannot be imported by its prior path. A `pub use` may have been removed, or the function itself may have been renamed or removed entirely. ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/function_missing.ron Failed in: function tket2::serialize::guppy::load_guppy_json_reader, previously in file /tmp/.tmphWIpmA/tket2/src/serialize/guppy.rs:32 function tket2::serialize::load_guppy_json_reader, previously in file /tmp/.tmphWIpmA/tket2/src/serialize/guppy.rs:32 function tket2::serialize::guppy::load_guppy_json_str, previously in file /tmp/.tmphWIpmA/tket2/src/serialize/guppy.rs:26 function tket2::serialize::load_guppy_json_str, previously in file /tmp/.tmphWIpmA/tket2/src/serialize/guppy.rs:26 function tket2::serialize::guppy::load_guppy_json_file, previously in file /tmp/.tmphWIpmA/tket2/src/serialize/guppy.rs:16 function tket2::serialize::load_guppy_json_file, previously in file /tmp/.tmphWIpmA/tket2/src/serialize/guppy.rs:16 function tket2::serialize::guppy::find_function, previously in file /tmp/.tmphWIpmA/tket2/src/serialize/guppy.rs:58 --- failure module_missing: pub module removed or renamed --- Description: A publicly-visible module cannot be imported by its prior path. A `pub use` may have been removed, or the module may have been renamed, removed, or made non-public. ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/module_missing.ron Failed in: mod tket2::serialize::guppy, previously in file /tmp/.tmphWIpmA/tket2/src/serialize/guppy.rs:1 --- failure pub_module_level_const_missing: pub module-level const is missing --- Description: A public const is missing, renamed, or changed from const to static. ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/pub_module_level_const_missing.ron Failed in: ROTATION_TYPE in file /tmp/.tmphWIpmA/tket2/src/extension/rotation.rs:39 ROTATION_CUSTOM_TYPE in file /tmp/.tmphWIpmA/tket2/src/extension/rotation.rs:35 --- failure struct_missing: pub struct removed or renamed --- Description: A publicly-visible struct cannot be imported by its prior path. A `pub use` may have been removed, or the struct itself may have been renamed or removed entirely. ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/struct_missing.ron Failed in: struct tket2::extension::REGISTRY, previously in file /tmp/.tmphWIpmA/tket2/src/extension.rs:37 ``` ###⚠️ `tket2-hseries` breaking changes ``` --- failure auto_trait_impl_removed: auto trait no longer implemented --- Description: A public type has stopped implementing one or more auto traits. This can break downstream code that depends on the traits being implemented. ref: https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/auto_trait_impl_removed.ron Failed in: type FutureOp is no longer UnwindSafe, in /tmp/.tmpfB4eOr/tket2/tket2-hseries/src/extension/futures.rs:164 type FutureOp is no longer RefUnwindSafe, in /tmp/.tmpfB4eOr/tket2/tket2-hseries/src/extension/futures.rs:164 --- failure enum_missing: pub enum removed or renamed --- Description: A publicly-visible enum cannot be imported by its prior path. A `pub use` may have been removed, or the enum itself may have been renamed or removed entirely. ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/enum_missing.ron Failed in: enum tket2_hseries::extension::hseries::HSeriesOp, previously in file /tmp/.tmphWIpmA/tket2-hseries/src/extension/hseries.rs:79 enum tket2_hseries::extension::hseries::LowerTk2Error, previously in file /tmp/.tmphWIpmA/tket2-hseries/src/extension/hseries/lower.rs:41 enum tket2_hseries::HSeriesPassError, previously in file /tmp/.tmphWIpmA/tket2-hseries/src/lib.rs:38 --- failure function_missing: pub fn removed or renamed --- Description: A publicly-visible function cannot be imported by its prior path. A `pub use` may have been removed, or the function itself may have been renamed or removed entirely. ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/function_missing.ron Failed in: function tket2_hseries::extension::hseries::lower_tk2_op, previously in file /tmp/.tmphWIpmA/tket2-hseries/src/extension/hseries/lower.rs:113 function tket2_hseries::extension::hseries::check_lowered, previously in file /tmp/.tmphWIpmA/tket2-hseries/src/extension/hseries/lower.rs:153 --- failure function_parameter_count_changed: pub fn parameter count changed --- Description: A publicly-visible function now takes a different number of parameters. ref: https://doc.rust-lang.org/cargo/reference/semver.html#fn-change-arity impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/function_parameter_count_changed.ron Failed in: tket2_hseries::extension::futures::future_custom_type now takes 2 parameters instead of 1, in /tmp/.tmpfB4eOr/tket2/tket2-hseries/src/extension/futures.rs:59 --- failure method_parameter_count_changed: pub method parameter count changed --- Description: A publicly-visible method now takes a different number of parameters. ref: https://doc.rust-lang.org/cargo/reference/semver.html#fn-change-arity impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/method_parameter_count_changed.ron Failed in: tket2_hseries::lazify_measure::LazifyMeasurePass::run now takes 2 parameters instead of 3, in /tmp/.tmpfB4eOr/tket2/tket2-hseries/src/lazify_measure.rs:54 --- failure module_missing: pub module removed or renamed --- Description: A publicly-visible module cannot be imported by its prior path. A `pub use` may have been removed, or the module may have been renamed, removed, or made non-public. ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/module_missing.ron Failed in: mod tket2_hseries::extension::hseries, previously in file /tmp/.tmphWIpmA/tket2-hseries/src/extension/hseries.rs:1 --- failure pub_module_level_const_missing: pub module-level const is missing --- Description: A public const is missing, renamed, or changed from const to static. ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/pub_module_level_const_missing.ron Failed in: EXTENSION_VERSION in file /tmp/.tmphWIpmA/tket2-hseries/src/extension/hseries.rs:38 EXTENSION_ID in file /tmp/.tmphWIpmA/tket2-hseries/src/extension/hseries.rs:36 --- failure struct_missing: pub struct removed or renamed --- Description: A publicly-visible struct cannot be imported by its prior path. A `pub use` may have been removed, or the struct itself may have been renamed or removed entirely. ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/struct_missing.ron Failed in: struct tket2_hseries::extension::futures::REGISTRY, previously in file /tmp/.tmphWIpmA/tket2-hseries/src/extension/futures.rs:30 struct tket2_hseries::extension::result::REGISTRY, previously in file /tmp/.tmphWIpmA/tket2-hseries/src/extension/result.rs:36 struct tket2_hseries::extension::hseries::LowerTket2ToHSeriesPass, previously in file /tmp/.tmphWIpmA/tket2-hseries/src/extension/hseries/lower.rs:177 struct tket2_hseries::extension::hseries::REGISTRY, previously in file /tmp/.tmphWIpmA/tket2-hseries/src/extension/hseries.rs:40 struct tket2_hseries::extension::hseries::HSeriesOpIter, previously in file /tmp/.tmphWIpmA/tket2-hseries/src/extension/hseries.rs:73 struct tket2_hseries::HSeriesPass, previously in file /tmp/.tmphWIpmA/tket2-hseries/src/lib.rs:31 struct tket2_hseries::extension::hseries::EXTENSION, previously in file /tmp/.tmphWIpmA/tket2-hseries/src/extension/hseries.rs:40 --- failure trait_missing: pub trait removed or renamed --- Description: A publicly-visible trait cannot be imported by its prior path. A `pub use` may have been removed, or the trait itself may have been renamed or removed entirely. ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/trait_missing.ron Failed in: trait tket2_hseries::extension::hseries::HSeriesOpBuilder, previously in file /tmp/.tmphWIpmA/tket2-hseries/src/extension/hseries.rs:131 ``` <details><summary><i><b>Changelog</b></i></summary><p> ## `tket2` <blockquote> ## [0.7.0](tket2-v0.6.0...tket2-v0.7.0) - 2024-12-16 ### New Features - [**breaking**] Track circuit extensions and read/write packages (#680) - [**breaking**] update measurement and alloc operations (#702) ### Refactor - [**breaking**] update to hugr 0.14 (#700) </blockquote> ## `tket2-hseries` <blockquote> ## [0.7.0](tket2-hseries-v0.6.0...tket2-hseries-v0.7.0) - 2024-12-16 ### New Features - [**breaking**] update measurement and alloc operations (#702) ### Refactor - [**breaking**] update to hugr 0.14 (#700) - [**breaking**] rename hseries to qsystem (#703) </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]>
## 🤖 New release * `tket2`: 0.7.0 -> 0.7.1 (✓ API compatible changes) * `tket2-hseries`: 0.7.0 -> 0.7.1 (✓ API compatible changes) <details><summary><i><b>Changelog</b></i></summary><p> ## `tket2` <blockquote> ## [0.7.0](tket2-v0.6.0...tket2-v0.7.0) - 2024-12-16 ### ⚠ BREAKING CHANGES - Removed `load_guppy_*` methods. Use `Circuit::load_function_reader` instead. - Extension definitions and registries now use `Arc`s for sharing ### New Features - [**breaking**] Track circuit extensions and read/write packages (#680) - [**breaking**] update measurement and alloc operations (#702) ### Refactor - [**breaking**] update to hugr 0.14 (#700) </blockquote> ## `tket2-hseries` <blockquote> ## [0.7.1](tket2-hseries-v0.7.0...tket2-hseries-v0.7.1) - 2024-12-18 ### New Features - Add monomorphization and constant folding to QSystemPass (#730) </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]>
Removes the guppy-specific and adds supports for loading functions packages and standalone hugrs.
Temporarily keeps track of the required extensions for the hugr in an optional
Circuit::required_extensions
field until CQCL/hugr#1613 gets implemented. Fallbacks to a default set when loading bare hugrs.Note that storing a circuit with a non-root parent is currently an error. We'll need to store some pointer to the entrypoint on the hugr's metadata, and that'll require some serialization-stable path encoding. I'll open an issue for that .
blocked-by: CQCL/hugr#1621. I'll remove the patch in cargo.toml once that gets released.
drive-by: Use
circuit_hash
for thePartialEq
implementation of circuits. The derived equality failed on graphs with different node indices.BREAKING CHANGE: Removed
load_guppy_*
methods. UseCircuit::load_function_reader
instead.