-
Notifications
You must be signed in to change notification settings - Fork 7
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!: used_extensions
calls for both ops and signatures
#1739
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1739 +/- ##
==========================================
+ Coverage 86.28% 86.29% +0.01%
==========================================
Files 177 179 +2
Lines 32087 32662 +575
Branches 28999 29574 +575
==========================================
+ Hits 27687 28187 +500
- Misses 2775 2797 +22
- Partials 1625 1678 +53
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
Done |
update_type_row_exts(node, &mut db.other_outputs, extensions, used_extensions)?; | ||
for row in db.sum_rows.iter_mut() { | ||
update_type_row_exts(node, row, extensions, used_extensions)?; | ||
collect_type_row_exts(&db.inputs, &mut used, &mut missing); |
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.
Doesn't the signature of a DataflowBlock include all the elements of the inputs
, other_outputs
and sum_rows
? So can't you just collect_signature_exts
on the block's signature, and the same for e.g. TailLoop, Conditional, and so on, like OpaqueOp and most other blocks?
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.
Yes, but that requires allocating a Signature
, cloning all row elements, computing the concrete input/output rows, and immediately destructuring them to run this same logic.
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.
Is this true even with Cow
of signature? I mean, we're gonna be computing that signature a good few times anyway...
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.
Hmmmm, even when we have Cow<Signature>
? I mean, we are gonna be constructing that thing a few times, clearly it's gonna help to cache it in the op. OK don't add that for this PR, but if you're optimizing that anyway and could use that here...
/// signature. The extension deltas added via [`Self::with_extension_delta`] | ||
/// refer to _runtime_ extensions, which may not be in all places that | ||
/// manipulate a HUGR. | ||
pub fn used_extensions(&self) -> Result<ExtensionRegistry, ExtensionCollectionError> { |
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.
So the other way to do this - is to put the collect_blah_exts
methods as impls of a single method in a trait, and then you can add a trait-default method (or a method taking an impl ExtensionCollectionTrait
) that does this...that'd get you the two used_extensions
methods that you have plus a load more with only having to write this once. (I wasn't going to suggest the trait approach until I saw this...)
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.
This doesn't work if you change OpType::used_extensions
to take the extra Option<Node>
parameter I suggested elsewhere, though. So feel free to drop.
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 opted for keeping all the logic in a single module, as it's short and quite similar between all the ops.
let mut collected_exts = ExtensionRegistry::default(); | ||
for node in hugr.nodes() { | ||
let op = hugr.get_optype(node); | ||
collected_exts.extend(collect_op_extensions(Some(node), op).unwrap()); |
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.
If you changed OpType::used_extensions to take the Option<Node>
param as extra, which seems reasonable, then you could call that here and remove all direct calls to collect_op_
(type_
)extensions
. Then hide those (or inline into the single caller OpType::used_extensions
).
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 was calling the resolve methods explicitly, but it's exactly the same as op.used_exts
.
I just changed it to that.
/// - `node`: The node where the operation is located, if available. | ||
/// This is used to provide context in the error message. | ||
/// - `op`: The operation to collect the extensions from. | ||
pub fn collect_op_types_extensions( |
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.
Should this be pub
? The nomenclature is a bit confusing here - it feels equivalent to Signature::used_extensions
but actually it's only one part of OpType::used_extensions
. However the other collect
things take two &mut
s. Should one really use this directly?
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.
It's hidden inside the private types
module. But I'll add the (crate)
for clarity.
//! Resolve weak links inside `CustomType`s in an optype's signature, while | ||
//! collecting all used extensions. | ||
//! | ||
//! For a non-mutating option see [`super::collect_op_types_extensions`]. |
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 reckon the pub function here should be OpType::used_extensions
.
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.
It's a private module. (Otherwise the docs check would complain)
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.
Ah ok, yes I missed that. Ok I'll hold some fire there then ;)
used_extensions
calls for both ops and signaturesused_extensions
calls for both ops and signatures
This PR contains breaking changes to the public Rust API. cargo-semver-checks summary
|
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.
Generally - great :). I think all of these comments are now small and local, so looks good and thanks @aborgna-q , let's get it in :)
I think there is a bit of an issue that ideally one would like Hugr::validate
to also validate the registry (if not cached in that AtomicBool
), but that requires passing an &mut ExtensionRegistry
which is gonna require changing everywhere (and annoyingly). Otherwise you could add methods to validate immutably (i.e. without updating the cached bool), I guess....
} | ||
|
||
/// Delete an extension from the registry and return it if it was present. | ||
pub fn remove_extension(&mut self, name: &ExtensionId) -> Option<Arc<Extension>> { | ||
self.0.remove(name) | ||
// Clear the valid flag so that the registry is re-validated. |
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.
Most nitty super-nit ever: these two lines after the removal, for consistency with the other operations :-) :-D
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.
remove
returns the Option<Arc<Ext>>
, so moving it requires declaring local vars..
hugr-core/src/extension.rs
Outdated
/// A flag indicating whether the current set of extensions has been | ||
/// validated. | ||
/// | ||
/// This is used to avoid re-validating the extensions every time they are |
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.
/// This is used to avoid re-validating the extensions every time they are | |
/// This is used to avoid re-validating the extensions every time the registry is |
(I think - if you grab an extension out of the registry, you can use it without validating the registry; it's only when the registry itself is passed to validate a Hugr, say. Of course this is a subtlety of how we interpret "use" of an extension vs "use" of the regstry, so feel free to be more explicit - "every time a Hugr is validated against the registry", perhaps, although that's a bit more of a mouthful)
/// An Extension Registry containing no extensions. | ||
pub const EMPTY_REG: ExtensionRegistry = ExtensionRegistry(BTreeMap::new()); | ||
pub static EMPTY_REG: ExtensionRegistry = ExtensionRegistry { |
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.
random driveby, feel free to ignore - could this could be a const fn
, to which you could add Extensions yourself? (and then static EMPTY_REG: ExtensionRegistry = ExtensionRegistry::new_empty();
or similar)
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.
ExtensionRegistry now has internal mutability, so it should not be used as a const.
(it does compile, but using it just raises linting errors everywhere, with good reason)
update_type_row_exts(node, &mut db.other_outputs, extensions, used_extensions)?; | ||
for row in db.sum_rows.iter_mut() { | ||
update_type_row_exts(node, row, extensions, used_extensions)?; | ||
collect_type_row_exts(&db.inputs, &mut used, &mut missing); |
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.
Hmmmm, even when we have Cow<Signature>
? I mean, we are gonna be constructing that thing a few times, clearly it's gonna help to cache it in the op. OK don't add that for this PR, but if you're optimizing that anyway and could use that here...
@@ -213,7 +213,7 @@ impl Hugr { | |||
// | |||
// This is not something we want to expose it the API, so we manually | |||
// iterate instead of writing it as a method. | |||
for n in 0..self.node_count() { | |||
for n in 0..self.graph.node_capacity() { |
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.
Yes please do! The comment above does not explain (to me) why we are using node_capacity
]) | ||
.unwrap() | ||
]); | ||
reg.validate() |
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.
Many examples here and elsewhere, I wonder if it's worth adding to ExtensionRegistry
fn validated(mut self) -> Result<Self, ....> {
self.validate()?;
self
}
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.
We'll call ExtRegistry::validate
on each Hugr::validate
as soon as #1738 gets merged, so this shouldn't be needed.
…1738) Closes #1613. Depends on #1739. Hugrs now keep an `Extensions` registry that is automatically computed when using the builder or deserializing from json (using the new `Hugr::load_json`). This set can contain unneeded extensions, but it should always be sufficient to validate the HUGR definition. Note that this is **not** runtime extensions (see #426, #1734). A big chunk of the diff is removing the extension registry when finishing building a hugr. The extension tracking is now done automatically while adding operations. drive-by: Remove unneeded `set_num_ports` call in `insert_hugr_internal`. BREAKING CHANGE: Removed `update_validate`. The hugr extensions should be resolved at load time, so we can use `validate` instead. BREAKING CHANGE: The builder `finish_hugr` function family no longer takes a registry as parameter, and the `_prelude` variants have been removed.
## 🤖 New release * `hugr`: 0.13.3 -> 0.14.0 (✓ API compatible changes) * `hugr-core`: 0.13.3 -> 0.14.0 (⚠️ API breaking changes) * `hugr-model`: 0.14.0 -> 0.15.0 (⚠️ API breaking changes) * `hugr-llvm`: 0.13.3 -> 0.14.0 * `hugr-passes`: 0.13.3 -> 0.14.0 (⚠️ API breaking changes) * `hugr-cli`: 0.13.3 -> 0.14.0 (⚠️ API breaking changes) ### ⚠️ `hugr-core` 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 CFG is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/controlflow.rs:145 type CFG is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/controlflow.rs:145 type CFG is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/controlflow.rs:145 type CFG is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/controlflow.rs:145 type TypeArg is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/types/type_param.rs:145 type TypeArg is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/types/type_param.rs:145 type TypeArg is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/types/type_param.rs:145 type TypeArg is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/types/type_param.rs:145 type TailLoop is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/controlflow.rs:16 type TailLoop is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/controlflow.rs:16 type TailLoop is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/controlflow.rs:16 type TailLoop is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/controlflow.rs:16 type TypeRowBase is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/types/type_row.rs:20 type TypeRowBase is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/types/type_row.rs:20 type DFG is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:487 type DFG is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:487 type DFG is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:487 type DFG is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:487 type CustomType is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/types/custom.rs:18 type CustomType is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/types/custom.rs:18 type CustomType is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/types/custom.rs:18 type CustomType is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/types/custom.rs:18 type EdgeKind is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/types.rs:52 type EdgeKind is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/types.rs:52 type LoadConstant is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:328 type LoadConstant is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:328 type LoadConstant is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:328 type LoadConstant is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:328 type Case is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/controlflow.rs:324 type Case is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/controlflow.rs:324 type Case is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/controlflow.rs:324 type Case is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/controlflow.rs:324 type SignatureError is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension.rs:381 type SignatureError is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension.rs:381 type TypeArgError is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/types/type_param.rs:445 type TypeArgError is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/types/type_param.rs:445 type MakeTuple is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension/prelude.rs:600 type MakeTuple is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension/prelude.rs:600 type SumType is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/types.rs:173 type SumType is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/types.rs:173 type FuncDecl is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/module.rs:93 type FuncDecl is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/module.rs:93 type FuncDecl is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/module.rs:93 type FuncDecl is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/module.rs:93 type Call is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:190 type Call is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:190 type Call is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:190 type Call is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:190 type ExitBlock is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/controlflow.rs:184 type ExitBlock is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/controlflow.rs:184 type ExitBlock is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/controlflow.rs:184 type ExitBlock is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/controlflow.rs:184 type ConstExternalSymbol is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension/prelude.rs:465 type ConstExternalSymbol is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension/prelude.rs:465 type OpaqueOp is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/custom.rs:191 type OpaqueOp is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/custom.rs:191 type OpaqueOp is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/custom.rs:191 type OpaqueOp is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/custom.rs:191 type Input is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:70 type Input is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:70 type Input is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:70 type Input is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:70 type Output is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:88 type Output is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:88 type Output is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:88 type Output is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:88 type CallIndirect is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:296 type CallIndirect is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:296 type CallIndirect is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:296 type CallIndirect is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:296 type CustomCheckFailure is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/constant.rs:321 type CustomCheckFailure is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/constant.rs:321 type CustomCheckFailure is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/constant.rs:321 type CustomCheckFailure is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/constant.rs:321 type Lift is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension/prelude.rs:883 type Lift is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension/prelude.rs:883 type Tag is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/sum.rs:13 type Tag is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/sum.rs:13 type Tag is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/sum.rs:13 type Tag is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/sum.rs:13 type PtrOp is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/std_extensions/ptr.rs:135 type PtrOp is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/std_extensions/ptr.rs:135 type FuncDefn is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/module.rs:55 type FuncDefn is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/module.rs:55 type FuncDefn is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/module.rs:55 type FuncDefn is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/module.rs:55 type DataflowBlock is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/controlflow.rs:173 type DataflowBlock is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/controlflow.rs:173 type DataflowBlock is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/controlflow.rs:173 type DataflowBlock is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/controlflow.rs:173 type CFGBuilder is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/builder/cfg.rs:113 type CFGBuilder is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/builder/cfg.rs:113 type TypeBase is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/types.rs:335 type TypeBase is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/types.rs:335 type IdentityInsertionError is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/hugr/rewrite/insert_identity.rs:38 type IdentityInsertionError is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/hugr/rewrite/insert_identity.rs:38 type ExtensionRegistryError is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension.rs:755 type ExtensionRegistryError is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension.rs:755 type TopoConvexChecker is no longer Sync, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/hugr/views/sibling_subgraph.rs:503 type TopoConvexChecker is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/hugr/views/sibling_subgraph.rs:503 type AliasDefn is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/module.rs:125 type AliasDefn is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/module.rs:125 type AliasDefn is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/module.rs:125 type AliasDefn is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/module.rs:125 type OpLoadError is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension/simple_op.rs:23 type OpLoadError is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension/simple_op.rs:23 type BuilderWiringError is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/builder.rs:207 type BuilderWiringError is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/builder.rs:207 type Conditional is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/controlflow.rs:93 type Conditional is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/controlflow.rs:93 type Conditional is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/controlflow.rs:93 type Conditional is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/controlflow.rs:93 type ImportError is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/import.rs:37 type ImportError is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/import.rs:37 type LoadFunction is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:386 type LoadFunction is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:386 type LoadFunction is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:386 type LoadFunction is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:386 type TypeDef is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension/type_def.rs:57 type TypeDef is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension/type_def.rs:57 type OpaqueOpError is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/custom.rs:285 type OpaqueOpError is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/custom.rs:285 type UnpackTuple is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension/prelude.rs:662 type UnpackTuple is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension/prelude.rs:662 type Noop is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension/prelude.rs:782 type Noop is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension/prelude.rs:782 type CustomSerialized is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/constant/custom.rs:185 type CustomSerialized is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/constant/custom.rs:185 type TypeEnum is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/types.rs:267 type TypeEnum is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/types.rs:267 --- failure constructible_struct_adds_field: externally-constructible struct adds field --- Description: A pub struct constructible with a struct literal has a new pub field. Existing struct literals must be updated to include the new field. ref: https://doc.rust-lang.org/reference/expressions/struct-expr.html impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/constructible_struct_adds_field.ron Failed in: field LoadFunction.instantiation in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:392 field LoadFunction.instantiation in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:392 --- failure enum_marked_non_exhaustive: enum marked #[non_exhaustive] --- Description: A public enum has been marked #[non_exhaustive]. Pattern-matching on it outside of its crate must now include a wildcard pattern like `_`, or it will fail to compile. ref: https://doc.rust-lang.org/cargo/reference/semver.html#attr-adding-non-exhaustive impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/enum_marked_non_exhaustive.ron Failed in: enum ExtensionBuildError in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension.rs:779 enum ExtensionRegistryError in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension.rs:755 --- 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 hugr_core::extension::prelude::array::ArrayOpDef, previously in file /tmp/.tmph2sFme/hugr-core/src/extension/prelude/array.rs:41 enum hugr_core::extension::prelude::ArrayOpDef, previously in file /tmp/.tmph2sFme/hugr-core/src/extension/prelude/array.rs:41 enum hugr_core::std_extensions::collections::ListOp, previously in file /tmp/.tmph2sFme/hugr-core/src/std_extensions/collections.rs:124 --- failure enum_struct_variant_field_added: pub enum struct variant field added --- Description: An enum's exhaustive struct variant has a new field, which has to be included when constructing or matching on this variant. ref: https://doc.rust-lang.org/reference/attributes/type_system.html#the-non_exhaustive-attribute impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/enum_struct_variant_field_added.ron Failed in: field source_types of variant EdgeValidationError::CFGEdgeSignatureMismatch in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/validate.rs:223 field target_types of variant EdgeValidationError::CFGEdgeSignatureMismatch in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/validate.rs:224 field op of variant ValidationError::SignatureError in /tmp/.tmpglz2Rp/hugr/hugr-core/src/hugr/validate.rs:753 field op of variant ValidationError::SignatureError in /tmp/.tmpglz2Rp/hugr/hugr-core/src/hugr/validate.rs:753 --- failure enum_tuple_variant_changed_kind: An enum tuple variant changed kind --- Description: A public enum's exhaustive tuple variant has changed to a different kind of enum variant, breaking possible instantiations and patterns. ref: https://doc.rust-lang.org/reference/items/enumerations.html impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/enum_tuple_variant_changed_kind.ron Failed in: variant OpaqueOpError::OpNotFoundInExtension in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/custom.rs:290 --- failure enum_variant_added: enum variant added on exhaustive enum --- Description: A publicly-visible enum without #[non_exhaustive] has a new variant. ref: https://doc.rust-lang.org/cargo/reference/semver.html#enum-variant-new impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/enum_variant_added.ron Failed in: variant ImportError:Extension in /tmp/.tmpglz2Rp/hugr/hugr-core/src/import.rs:53 variant SignatureError:MissingTypeExtension in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension.rs:396 --- 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 SignatureError::ExtensionNotFound, previously in file /tmp/.tmph2sFme/hugr-core/src/extension.rs:190 variant PackageValidationError::Extension, previously in file /tmp/.tmph2sFme/hugr-core/src/package.rs:305 variant PackageValidationError::Validate, previously in file /tmp/.tmph2sFme/hugr-core/src/package.rs:315 variant PackageValidationError::ExtReg, previously in file /tmp/.tmph2sFme/hugr-core/src/package.rs:323 --- 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 hugr_core::extension::prelude::array::new_array_op, previously in file /tmp/.tmph2sFme/hugr-core/src/extension/prelude/array.rs:310 function hugr_core::extension::prelude::new_array_op, previously in file /tmp/.tmph2sFme/hugr-core/src/extension/prelude/array.rs:310 function hugr_core::std_extensions::arithmetic::int_types::extension, previously in file /tmp/.tmph2sFme/hugr-core/src/std_extensions/arithmetic/int_types.rs:189 function hugr_core::std_extensions::ptr::ptr_custom_type, previously in file /tmp/.tmph2sFme/hugr-core/src/std_extensions/ptr.rs:112 function hugr_core::std_extensions::collections::list_type_def, previously in file /tmp/.tmph2sFme/hugr-core/src/std_extensions/collections.rs:288 function hugr_core::extension::prelude::array::array_type, previously in file /tmp/.tmph2sFme/hugr-core/src/extension/prelude/array.rs:291 function hugr_core::extension::prelude::array_type, previously in file /tmp/.tmph2sFme/hugr-core/src/extension/prelude/array.rs:291 function hugr_core::std_extensions::collections::list_type, previously in file /tmp/.tmph2sFme/hugr-core/src/std_extensions/collections.rs:301 function hugr_core::ops::custom::resolve_opaque_op, previously in file /tmp/.tmph2sFme/hugr-core/src/ops/custom.rs:275 function hugr_core::ops::custom::resolve_extension_ops, previously in file /tmp/.tmph2sFme/hugr-core/src/ops/custom.rs:245 function hugr_core::std_extensions::collections::list_custom_type, previously in file /tmp/.tmph2sFme/hugr-core/src/std_extensions/collections.rs:294 --- 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: hugr_core::std_extensions::arithmetic::int_types::int_custom_type now takes 2 parameters instead of 1, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/std_extensions/arithmetic/int_types.rs:29 --- failure inherent_method_missing: pub method removed or renamed --- Description: A publicly-visible method or associated fn 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/inherent_method_missing.ron Failed in: CustomType::new_simple, previously in file /tmp/.tmph2sFme/hugr-core/src/types/custom.rs:48 CustomType::new_simple, previously in file /tmp/.tmph2sFme/hugr-core/src/types/custom.rs:48 Package::update_validate, previously in file /tmp/.tmph2sFme/hugr-core/src/package.rs:96 Extension::with_reqs, previously in file /tmp/.tmph2sFme/hugr-core/src/extension.rs:363 Extension::with_reqs, previously in file /tmp/.tmph2sFme/hugr-core/src/extension.rs:363 ExtensionRegistry::try_new, previously in file /tmp/.tmph2sFme/hugr-core/src/extension.rs:55 Hugr::update_validate, previously in file /tmp/.tmph2sFme/hugr-core/src/hugr.rs:86 Hugr::update_validate, previously in file /tmp/.tmph2sFme/hugr-core/src/hugr.rs:86 --- 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: hugr_core::extension::OpDef::validate_args now takes 3 parameters instead of 4, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension/op_def.rs:333 hugr_core::extension::OpDef::compute_signature now takes 2 parameters instead of 3, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension/op_def.rs:362 hugr_core::types::custom::CustomType::new now takes 5 parameters instead of 4, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/types/custom.rs:59 hugr_core::types::CustomType::new now takes 5 parameters instead of 4, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/types/custom.rs:59 hugr_core::package::Package::new now takes 1 parameters instead of 2, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/package.rs:38 hugr_core::package::Package::from_hugrs now takes 1 parameters instead of 2, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/package.rs:67 hugr_core::package::Package::validate now takes 1 parameters instead of 2, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/package.rs:105 hugr_core::package::Package::from_json_reader now takes 2 parameters instead of 1, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/package.rs:128 hugr_core::package::Package::from_json now takes 2 parameters instead of 1, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/package.rs:185 hugr_core::package::Package::from_json_file now takes 2 parameters instead of 1, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/package.rs:195 hugr_core::ops::dataflow::Call::try_new now takes 2 parameters instead of 3, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:238 hugr_core::ops::Call::try_new now takes 2 parameters instead of 3, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:238 hugr_core::extension::Extension::add_op now takes 5 parameters instead of 4, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension/op_def.rs:505 hugr_core::extension::Extension::add_type now takes 6 parameters instead of 5, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension/type_def.rs:208 hugr_core::extension::Extension::instantiate_extension_op now takes 3 parameters instead of 4, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension.rs:727 hugr_core::Extension::add_op now takes 5 parameters instead of 4, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension/op_def.rs:505 hugr_core::Extension::add_type now takes 6 parameters instead of 5, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension/type_def.rs:208 hugr_core::Extension::instantiate_extension_op now takes 3 parameters instead of 4, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension.rs:727 hugr_core::builder::DFGWrapper::finish_hugr_with_outputs now takes [3, 2] parameters instead of 4, in [ /tmp/.tmpglz2Rp/hugr/hugr-core/src/builder/cfg.rs:449 , /tmp/.tmpglz2Rp/hugr/hugr-core/src/builder/build_traits.rs:848 ] hugr_core::extension::SignatureFunc::compute_signature now takes 3 parameters instead of 4, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension/op_def.rs:223 hugr_core::ops::custom::ExtensionOp::new now takes 2 parameters instead of 3, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/custom.rs:44 hugr_core::ops::ExtensionOp::new now takes 2 parameters instead of 3, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/custom.rs:44 hugr_core::ops::dataflow::LoadFunction::try_new now takes 2 parameters instead of 3, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:436 hugr_core::ops::LoadFunction::try_new now takes 2 parameters instead of 3, in /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:436 hugr_core::hugr::Hugr::validate now takes [1, 1] parameters instead of 2, in [ /tmp/.tmpglz2Rp/hugr/hugr-core/src/hugr/validate.rs:41 , /tmp/.tmpglz2Rp/hugr/hugr-core/src/hugr/views.rs:452 ] hugr_core::hugr::Hugr::validate_no_extensions now takes [1, 1] parameters instead of 2, in [ /tmp/.tmpglz2Rp/hugr/hugr-core/src/hugr/validate.rs:51 , /tmp/.tmpglz2Rp/hugr/hugr-core/src/hugr/views.rs:461 ] hugr_core::Hugr::validate now takes [1, 1] parameters instead of 2, in [ /tmp/.tmpglz2Rp/hugr/hugr-core/src/hugr/validate.rs:41 , /tmp/.tmpglz2Rp/hugr/hugr-core/src/hugr/views.rs:452 ] hugr_core::Hugr::validate_no_extensions now takes [1, 1] parameters instead of 2, in [ /tmp/.tmpglz2Rp/hugr/hugr-core/src/hugr/validate.rs:51 , /tmp/.tmpglz2Rp/hugr/hugr-core/src/hugr/views.rs:461 ] --- 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 hugr_core::extension::prelude::array, previously in file /tmp/.tmph2sFme/hugr-core/src/extension/prelude/array.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: FLOAT64_CUSTOM_TYPE in file /tmp/.tmph2sFme/hugr-core/src/std_extensions/arithmetic/float_types.rs:22 ARRAY_TYPE_NAME in file /tmp/.tmph2sFme/hugr-core/src/extension/prelude/array.rs:285 ARRAY_TYPE_NAME in file /tmp/.tmph2sFme/hugr-core/src/extension/prelude/array.rs:285 EMPTY_REG in file /tmp/.tmph2sFme/hugr-core/src/extension.rs:169 ERROR_TYPE in file /tmp/.tmph2sFme/hugr-core/src/extension/prelude.rs:194 FLOAT64_TYPE in file /tmp/.tmph2sFme/hugr-core/src/std_extensions/arithmetic/float_types.rs:26 STRING_CUSTOM_TYPE in file /tmp/.tmph2sFme/hugr-core/src/extension/prelude.rs:146 ERROR_CUSTOM_TYPE in file /tmp/.tmph2sFme/hugr-core/src/extension/prelude.rs:191 QB_T in file /tmp/.tmph2sFme/hugr-core/src/extension/prelude.rs:125 EXTENSION_ID in file /tmp/.tmph2sFme/hugr-core/src/std_extensions/collections.rs:37 NEW_ARRAY_OP_ID in file /tmp/.tmph2sFme/hugr-core/src/extension/prelude/array.rs:307 NEW_ARRAY_OP_ID in file /tmp/.tmph2sFme/hugr-core/src/extension/prelude/array.rs:307 USIZE_T in file /tmp/.tmph2sFme/hugr-core/src/extension/prelude.rs:127 VERSION in file /tmp/.tmph2sFme/hugr-core/src/std_extensions/collections.rs:39 LIST_TYPENAME in file /tmp/.tmph2sFme/hugr-core/src/std_extensions/collections.rs:35 STRING_TYPE in file /tmp/.tmph2sFme/hugr-core/src/extension/prelude.rs:150 BOOL_T in file /tmp/.tmph2sFme/hugr-core/src/extension/prelude.rs:129 --- 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 hugr_core::std_extensions::ptr::PTR_REG, previously in file /tmp/.tmph2sFme/hugr-core/src/std_extensions/ptr.rs:101 struct hugr_core::std_extensions::arithmetic::conversions::CONVERT_OPS_REGISTRY, previously in file /tmp/.tmph2sFme/hugr-core/src/std_extensions/arithmetic/conversions.rs:156 struct hugr_core::std_extensions::collections::ListOpInst, previously in file /tmp/.tmph2sFme/hugr-core/src/std_extensions/collections.rs:309 struct hugr_core::extension::prelude::array::ArrayOpDefIter, previously in file /tmp/.tmph2sFme/hugr-core/src/extension/prelude/array.rs:38 struct hugr_core::std_extensions::collections::EXTENSION, previously in file /tmp/.tmph2sFme/hugr-core/src/std_extensions/collections.rs:250 struct hugr_core::std_extensions::collections::ListOpIter, previously in file /tmp/.tmph2sFme/hugr-core/src/std_extensions/collections.rs:121 struct hugr_core::std_extensions::collections::ListValue, previously in file /tmp/.tmph2sFme/hugr-core/src/std_extensions/collections.rs:43 struct hugr_core::std_extensions::arithmetic::float_ops::FLOAT_OPS_REGISTRY, previously in file /tmp/.tmph2sFme/hugr-core/src/std_extensions/arithmetic/float_ops.rs:105 struct hugr_core::std_extensions::arithmetic::int_ops::INT_OPS_REGISTRY, previously in file /tmp/.tmph2sFme/hugr-core/src/std_extensions/arithmetic/int_ops.rs:248 struct hugr_core::std_extensions::logic::LOGIC_REG, previously in file /tmp/.tmph2sFme/hugr-core/src/std_extensions/logic.rs:123 struct hugr_core::std_extensions::collections::COLLECTIONS_REGISTRY, previously in file /tmp/.tmph2sFme/hugr-core/src/std_extensions/collections.rs:250 struct hugr_core::extension::prelude::array::ArrayOp, previously in file /tmp/.tmph2sFme/hugr-core/src/extension/prelude/array.rs:212 struct hugr_core::extension::prelude::ArrayOp, previously in file /tmp/.tmph2sFme/hugr-core/src/extension/prelude/array.rs:212 --- failure struct_pub_field_missing: pub struct's pub field removed or renamed --- Description: A publicly-visible struct has at least one public field 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/struct_pub_field_missing.ron Failed in: field extension_reqs of struct Extension, previously in file /tmp/.tmph2sFme/hugr-core/src/extension.rs:335 field extension_reqs of struct Extension, previously in file /tmp/.tmph2sFme/hugr-core/src/extension.rs:335 field signature of struct LoadFunction, previously in file /tmp/.tmph2sFme/hugr-core/src/ops/dataflow.rs:344 field signature of struct LoadFunction, previously in file /tmp/.tmph2sFme/hugr-core/src/ops/dataflow.rs:344 --- failure trait_added_supertrait: non-sealed trait added new supertraits --- Description: A non-sealed trait added one or more supertraits, which breaks downstream implementations of the trait ref: https://doc.rust-lang.org/cargo/reference/semver.html#generic-bounds-tighten impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/trait_added_supertrait.ron Failed in: trait hugr_core::ops::OpTrait gained Sized in file /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops.rs:372 trait hugr_core::ops::OpTrait gained Clone in file /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops.rs:372 trait hugr_core::ops::dataflow::DataflowOpTrait gained Sized in file /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:16 trait hugr_core::ops::DataflowOpTrait gained Sized in file /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:16 --- failure trait_method_added: pub trait method added --- Description: A non-sealed public trait added a new method without a default implementation, which breaks downstream implementations of the trait ref: https://doc.rust-lang.org/cargo/reference/semver.html#trait-new-item-no-default impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/trait_method_added.ron Failed in: trait method hugr_core::ops::dataflow::DataflowOpTrait::substitute in file /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:57 trait method hugr_core::ops::DataflowOpTrait::substitute in file /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops/dataflow.rs:57 trait method hugr_core::extension::simple_op::MakeOpDef::extension_ref in file /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension/simple_op.rs:57 trait method hugr_core::extension::simple_op::MakeOpDef::init_signature in file /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension/simple_op.rs:64 trait method hugr_core::extension::simple_op::MakeRegisteredOp::extension_ref in file /tmp/.tmpglz2Rp/hugr/hugr-core/src/extension/simple_op.rs:269 --- failure trait_method_missing: pub trait method removed or renamed --- Description: A trait method is no longer callable, and may have been renamed or removed entirely. ref: https://doc.rust-lang.org/cargo/reference/semver.html#major-any-change-to-trait-item-signatures impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/trait_method_missing.ron Failed in: method finish_prelude_hugr of trait HugrBuilder, previously in file /tmp/.tmph2sFme/hugr-core/src/builder/build_traits.rs:137 method finish_prelude_hugr_with_outputs of trait DataflowHugr, previously in file /tmp/.tmph2sFme/hugr-core/src/builder/build_traits.rs:842 method registry of trait MakeRegisteredOp, previously in file /tmp/.tmph2sFme/hugr-core/src/extension/simple_op.rs:245 --- failure trait_no_longer_object_safe: trait no longer object safe --- Description: Trait is no longer object safe, which breaks `dyn Trait` usage. ref: https://doc.rust-lang.org/stable/reference/items/traits.html#object-safety impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/trait_no_longer_object_safe.ron Failed in: trait OpTrait in file /tmp/.tmpglz2Rp/hugr/hugr-core/src/ops.rs:372 --- failure trait_removed_associated_type: trait's associated type was removed --- Description: A public trait's associated type was removed or renamed. 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_removed_associated_type.ron Failed in: associated type HugrView::Nodes, previously at /tmp/.tmph2sFme/hugr-core/src/hugr/views.rs:44 associated type HugrView::NodePorts, previously at /tmp/.tmph2sFme/hugr-core/src/hugr/views.rs:49 associated type HugrView::Children, previously at /tmp/.tmph2sFme/hugr-core/src/hugr/views.rs:54 associated type HugrView::Neighbours, previously at /tmp/.tmph2sFme/hugr-core/src/hugr/views.rs:59 associated type HugrView::PortLinks, previously at /tmp/.tmph2sFme/hugr-core/src/hugr/views.rs:64 associated type HugrView::NodeConnections, previously at /tmp/.tmph2sFme/hugr-core/src/hugr/views.rs:69 associated type HugrView::Nodes, previously at /tmp/.tmph2sFme/hugr-core/src/hugr/views.rs:44 associated type HugrView::NodePorts, previously at /tmp/.tmph2sFme/hugr-core/src/hugr/views.rs:49 associated type HugrView::Children, previously at /tmp/.tmph2sFme/hugr-core/src/hugr/views.rs:54 associated type HugrView::Neighbours, previously at /tmp/.tmph2sFme/hugr-core/src/hugr/views.rs:59 associated type HugrView::PortLinks, previously at /tmp/.tmph2sFme/hugr-core/src/hugr/views.rs:64 associated type HugrView::NodeConnections, previously at /tmp/.tmph2sFme/hugr-core/src/hugr/views.rs:69 associated type HugrView::Nodes, previously at /tmp/.tmph2sFme/hugr-core/src/hugr/views.rs:44 associated type HugrView::NodePorts, previously at /tmp/.tmph2sFme/hugr-core/src/hugr/views.rs:49 associated type HugrView::Children, previously at /tmp/.tmph2sFme/hugr-core/src/hugr/views.rs:54 associated type HugrView::Neighbours, previously at /tmp/.tmph2sFme/hugr-core/src/hugr/views.rs:59 associated type HugrView::PortLinks, previously at /tmp/.tmph2sFme/hugr-core/src/hugr/views.rs:64 associated type HugrView::NodeConnections, previously at /tmp/.tmph2sFme/hugr-core/src/hugr/views.rs:69 ``` ### ⚠️ `hugr-model` breaking changes ``` --- failure constructible_struct_adds_field: externally-constructible struct adds field --- Description: A pub struct constructible with a struct literal has a new pub field. Existing struct literals must be updated to include the new field. ref: https://doc.rust-lang.org/reference/expressions/struct-expr.html impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/constructible_struct_adds_field.ron Failed in: field OperationDecl.constraints in /tmp/.tmpglz2Rp/hugr/hugr-model/src/v0/mod.rs:438 field FuncDecl.constraints in /tmp/.tmpglz2Rp/hugr/hugr-model/src/v0/mod.rs:401 field ConstructorDecl.constraints in /tmp/.tmpglz2Rp/hugr/hugr-model/src/v0/mod.rs:425 --- 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 hugr_model::v0::Param, previously in file /tmp/.tmph2sFme/hugr-model/src/v0/mod.rs:672 --- failure enum_struct_variant_field_added: pub enum struct variant field added --- Description: An enum's exhaustive struct variant has a new field, which has to be included when constructing or matching on this variant. ref: https://doc.rust-lang.org/reference/attributes/type_system.html#the-non_exhaustive-attribute impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/enum_struct_variant_field_added.ron Failed in: field parts of variant Term::List in /tmp/.tmpglz2Rp/hugr/hugr-model/src/v0/mod.rs:575 field parts of variant Term::ExtSet in /tmp/.tmpglz2Rp/hugr/hugr-model/src/v0/mod.rs:613 --- failure enum_struct_variant_field_missing: pub enum struct variant's field removed or renamed --- Description: A publicly-visible enum has a struct variant whose field 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_struct_variant_field_missing.ron Failed in: field items of variant Term::List, previously in file /tmp/.tmph2sFme/hugr-model/src/v0/mod.rs:574 field tail of variant Term::List, previously in file /tmp/.tmph2sFme/hugr-model/src/v0/mod.rs:578 field extensions of variant Term::ExtSet, previously in file /tmp/.tmph2sFme/hugr-model/src/v0/mod.rs:617 field rest of variant Term::ExtSet, previously in file /tmp/.tmph2sFme/hugr-model/src/v0/mod.rs:619 --- failure enum_variant_added: enum variant added on exhaustive enum --- Description: A publicly-visible enum without #[non_exhaustive] has a new variant. ref: https://doc.rust-lang.org/cargo/reference/semver.html#enum-variant-new impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/enum_variant_added.ron Failed in: variant Term:NonLinearConstraint in /tmp/.tmpglz2Rp/hugr/hugr-model/src/v0/mod.rs:661 ``` ### ⚠️ `hugr-passes` 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 ConstantFoldPass is no longer UnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-passes/src/const_fold.rs:31 type ConstantFoldPass is no longer RefUnwindSafe, in /tmp/.tmpglz2Rp/hugr/hugr-passes/src/const_fold.rs:31 --- failure derive_trait_impl_removed: built-in derived trait no longer implemented --- Description: A public type has stopped deriving one or more traits. This can break downstream code that depends on those types implementing those traits. ref: https://doc.rust-lang.org/reference/attributes/derive.html#derive impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/derive_trait_impl_removed.ron Failed in: type ConstantFoldPass no longer derives Copy, in /tmp/.tmpglz2Rp/hugr/hugr-passes/src/const_fold.rs:31 --- failure enum_marked_non_exhaustive: enum marked #[non_exhaustive] --- Description: A public enum has been marked #[non_exhaustive]. Pattern-matching on it outside of its crate must now include a wildcard pattern like `_`, or it will fail to compile. ref: https://doc.rust-lang.org/cargo/reference/semver.html#attr-adding-non-exhaustive impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/enum_marked_non_exhaustive.ron Failed in: enum ConstFoldError in /tmp/.tmpglz2Rp/hugr/hugr-passes/src/const_fold.rs:40 --- 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 ConstFoldError::SimpleReplacementError, previously in file /tmp/.tmph2sFme/hugr-passes/src/const_fold.rs:30 --- 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 hugr_passes::const_fold::find_consts, previously in file /tmp/.tmph2sFme/hugr-passes/src/const_fold.rs:130 function hugr_passes::const_fold::fold_leaf_op, previously in file /tmp/.tmph2sFme/hugr-passes/src/const_fold.rs:92 --- 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: hugr_passes::const_fold::constant_fold_pass now takes 1 parameters instead of 2, in /tmp/.tmpglz2Rp/hugr/hugr-passes/src/const_fold.rs:221 --- failure inherent_method_missing: pub method removed or renamed --- Description: A publicly-visible method or associated fn 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/inherent_method_missing.ron Failed in: ConstantFoldPass::new, previously in file /tmp/.tmph2sFme/hugr-passes/src/const_fold.rs:43 --- 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: hugr_passes::const_fold::ConstantFoldPass::run now takes 2 parameters instead of 3, in /tmp/.tmpglz2Rp/hugr/hugr-passes/src/const_fold.rs:140 hugr_passes::validation::ValidationLevel::run_validated_pass now takes 3 parameters instead of 4, in /tmp/.tmpglz2Rp/hugr/hugr-passes/src/validation.rs:58 --- failure trait_removed_associated_type: trait's associated type was removed --- Description: A public trait's associated type was removed or renamed. 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_removed_associated_type.ron Failed in: associated type CfgNodeMap::Iterator, previously at /tmp/.tmph2sFme/hugr-passes/src/nest_cfgs.rs:72 ``` ### ⚠️ `hugr-cli` breaking changes ``` --- failure inherent_method_missing: pub method removed or renamed --- Description: A publicly-visible method or associated fn 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/inherent_method_missing.ron Failed in: PackageOrHugr::update_validate, previously in file /tmp/.tmph2sFme/hugr-cli/src/lib.rs:101 HugrArgs::get_package, previously in file /tmp/.tmph2sFme/hugr-cli/src/lib.rs:139 --- 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: hugr_cli::HugrArgs::get_package_or_hugr now takes 2 parameters instead of 1, in /tmp/.tmpglz2Rp/hugr/hugr-cli/src/lib.rs:119 ``` <details><summary><i><b>Changelog</b></i></summary><p> ## `hugr` <blockquote> ## [0.14.0](https://github.com/CQCL/hugr/compare/hugr-v0.13.3...hugr-v0.14.0) - 2024-12-16 ### Bug Fixes - hierarchical simple replacement using insert_hugr (#1718) - hugr-py not adding extension-reqs on custom ops (#1759) - [**breaking**] Replace `LoadFunction::signature` with `LoadFunction::instantiation` (#1756) - Resolve types in `Value`s and custom consts (#1779) - allow disconnected outputs in SiblingSubgraph::from_node (#1769) ### Documentation - Fix comment for scan op (#1751) ### New Features - Dataflow analysis framework (#1476) - *(hugr-passes)* [**breaking**] Rewrite constant_fold_pass using dataflow framework (#1603) - Export/import of JSON metadata (#1622) - Add `SiblingSubgraph::from_node` (#1655) - [**breaking**] Replace GATs with `impl Iterator` returns (RPITIT) on `HugrView` (#1660) - Emulate `TypeBound`s on parameters via constraints. (#1624) - Add array `repeat` and `scan` ops (#1633) - move unwrap builder to hugr core (#1674) - Lists and extension sets with splicing (#1657) - add HugrView::first_child and HugrMut::remove_subtree (#1721) - Lower collections extension (#1720) - [**breaking**] impl HugrView for any &(mut) to a HugrView (#1678) - [**breaking**] Make array repeat and scan ops generic over extension reqs (#1716) - Print []+[] as Bool and [] as Unit in user-facing messages (#1745) - Add `PartialEq` impls for `FuncTypeBase` and `Cow<FuncTypeBase>` (#1762) - [**breaking**] Rename `collections` extension to `collections.list` (#1764) - add `is_` variant methods to `EdgeKind` (#1768) - [**breaking**] Move arrays from prelude into new extension (#1770) - Add `LoadNat` operation to enable loading generic `BoundedNat`s into runtime values (#1763) - [**breaking**] Add `monomorphization` pass (#1733) - Update extension pointers in customConsts (#1780) - [**breaking**] Use registries of `Weak<Extension>`s when doing resolution (#1781) - [**breaking**] Resolve extension references inside the extension themselves (#1783) - [**breaking**] Remove ExtensionRegistry args in UnwrapBuilder and ListOp (#1785) - export llvm test utilities under llvm-test feature (#1677) - [**breaking**] Share `Extension`s under `Arc`s (#1647) - [**breaking**] OpDefs and TypeDefs keep a reference to their extension (#1719) - [**breaking**] Have `CustomType`s reference their `Extension` definition (#1723) - [**breaking**] Resolve OpaqueOps and CustomType extensions (#1735) - [**breaking**] `used_extensions` calls for both ops and signatures (#1739) - [**breaking**] Hugrs now keep a `ExtensionRegistry` with their requirements (#1738) - [**breaking**] rename `extension_reqs` to `runtime_reqs` (#1776) - [**breaking**] Don't require explicit extension registers for validation (#1784) ### Performance - Return `Cow<Signature>` where possible (#1743) - Faster singleton SiblingSubgraph construction (#1654) ### Refactor - avoid hugr clone in simple replace (#1724) - [trivial] replace.rs: use HugrView::first_child (#1737) </blockquote> ## `hugr-core` <blockquote> ## [0.14.0](https://github.com/CQCL/hugr/compare/hugr-core-v0.13.3...hugr-core-v0.14.0) - 2024-12-16 ### Bug Fixes - hierarchical simple replacement using insert_hugr (#1718) - hugr-py not adding extension-reqs on custom ops (#1759) - [**breaking**] Replace `LoadFunction::signature` with `LoadFunction::instantiation` (#1756) - allow disconnected outputs in SiblingSubgraph::from_node (#1769) - Resolve types in `Value`s and custom consts (#1779) ### Documentation - Fix comment for scan op (#1751) ### New Features - Export/import of JSON metadata (#1622) - Add `SiblingSubgraph::from_node` (#1655) - [**breaking**] Replace GATs with `impl Iterator` returns (RPITIT) on `HugrView` (#1660) - Emulate `TypeBound`s on parameters via constraints. (#1624) - Add array `repeat` and `scan` ops (#1633) - move unwrap builder to hugr core (#1674) - [**breaking**] Share `Extension`s under `Arc`s (#1647) - Lists and extension sets with splicing (#1657) - [**breaking**] OpDefs and TypeDefs keep a reference to their extension (#1719) - add HugrView::first_child and HugrMut::remove_subtree (#1721) - Lower collections extension (#1720) - [**breaking**] Have `CustomType`s reference their `Extension` definition (#1723) - [**breaking**] Resolve OpaqueOps and CustomType extensions (#1735) - [**breaking**] impl HugrView for any &(mut) to a HugrView (#1678) - [**breaking**] Make array repeat and scan ops generic over extension reqs (#1716) - Print []+[] as Bool and [] as Unit in user-facing messages (#1745) - [**breaking**] `used_extensions` calls for both ops and signatures (#1739) - [**breaking**] Hugrs now keep a `ExtensionRegistry` with their requirements (#1738) - Add `PartialEq` impls for `FuncTypeBase` and `Cow<FuncTypeBase>` (#1762) - [**breaking**] Rename `collections` extension to `collections.list` (#1764) - add `is_` variant methods to `EdgeKind` (#1768) - [**breaking**] Move arrays from prelude into new extension (#1770) - Add `LoadNat` operation to enable loading generic `BoundedNat`s into runtime values (#1763) - [**breaking**] Add `monomorphization` pass (#1733) - [**breaking**] rename `extension_reqs` to `runtime_reqs` (#1776) - Update extension pointers in customConsts (#1780) - [**breaking**] Use registries of `Weak<Extension>`s when doing resolution (#1781) - [**breaking**] Resolve extension references inside the extension themselves (#1783) - [**breaking**] Don't require explicit extension registers for validation (#1784) - [**breaking**] Remove ExtensionRegistry args in UnwrapBuilder and ListOp (#1785) ### Performance - Faster singleton SiblingSubgraph construction (#1654) - Return `Cow<Signature>` where possible (#1743) ### Refactor - avoid hugr clone in simple replace (#1724) - [trivial] replace.rs: use HugrView::first_child (#1737) </blockquote> ## `hugr-model` <blockquote> ## [0.15.0](https://github.com/CQCL/hugr/compare/hugr-model-v0.14.0...hugr-model-v0.15.0) - 2024-12-16 ### Bug Fixes - Ignare lint warnings in capnproto generated code (#1728) ### New Features - Export/import of JSON metadata (#1622) - Emulate `TypeBound`s on parameters via constraints. (#1624) - Lists and extension sets with splicing (#1657) - [**breaking**] Have `CustomType`s reference their `Extension` definition (#1723) ### Performance - Faster singleton SiblingSubgraph construction (#1654) </blockquote> ## `hugr-llvm` <blockquote> ## [0.13.3](https://github.com/CQCL/hugr-llvm/compare/v0.6.0...v0.6.1) - 2024-11-25 No changes - version bump to catch up with other hugr crates in repository move. </blockquote> ## `hugr-passes` <blockquote> ## [0.14.0](https://github.com/CQCL/hugr/compare/hugr-passes-v0.13.3...hugr-passes-v0.14.0) - 2024-12-16 ### Bug Fixes - allow disconnected outputs in SiblingSubgraph::from_node (#1769) ### New Features - [**breaking**] Replace GATs with `impl Iterator` returns (RPITIT) on `HugrView` (#1660) - [**breaking**] Share `Extension`s under `Arc`s (#1647) - [**breaking**] OpDefs and TypeDefs keep a reference to their extension (#1719) - [**breaking**] Have `CustomType`s reference their `Extension` definition (#1723) - [**breaking**] Resolve OpaqueOps and CustomType extensions (#1735) - Dataflow analysis framework (#1476) - [**breaking**] `used_extensions` calls for both ops and signatures (#1739) - [**breaking**] Hugrs now keep a `ExtensionRegistry` with their requirements (#1738) - *(hugr-passes)* [**breaking**] Rewrite constant_fold_pass using dataflow framework (#1603) - [**breaking**] Rename `collections` extension to `collections.list` (#1764) - [**breaking**] Add `monomorphization` pass (#1733) - [**breaking**] rename `extension_reqs` to `runtime_reqs` (#1776) - [**breaking**] Don't require explicit extension registers for validation (#1784) - [**breaking**] Remove ExtensionRegistry args in UnwrapBuilder and ListOp (#1785) ### Performance - Faster singleton SiblingSubgraph construction (#1654) - Return `Cow<Signature>` where possible (#1743) </blockquote> ## `hugr-cli` <blockquote> ## [0.14.0](https://github.com/CQCL/hugr/compare/hugr-cli-v0.13.3...hugr-cli-v0.14.0) - 2024-12-16 ### New Features - [**breaking**] Share `Extension`s under `Arc`s (#1647) - [**breaking**] OpDefs and TypeDefs keep a reference to their extension (#1719) - [**breaking**] Have `CustomType`s reference their `Extension` definition (#1723) - [**breaking**] Resolve OpaqueOps and CustomType extensions (#1735) - [**breaking**] Hugrs now keep a `ExtensionRegistry` with their requirements (#1738) - [**breaking**] Move arrays from prelude into new extension (#1770) ### Performance - Faster singleton SiblingSubgraph construction (#1654) ### Refactor - *(cli)* [**breaking**] remove deprecations (#1777) </blockquote> </p></details> --- This PR was generated with [release-plz](https://github.com/release-plz/release-plz/). --------- Co-authored-by: Agustín Borgna <agustin.borgna@quantinuum.com> Co-authored-by: Agustín Borgna <121866228+aborgna-q@users.noreply.github.com>
Adds methods
OpType::used_extensions(&self) -> Result<ExtensionRegistry, _>
Signature::used_extensions(&self) -> Result<ExtensionRegistry, _>
and tests these along with the code merged in feat!: Resolve OpaqueOps and CustomType extensions #1735.
Moves the code from #1735 into
resolution::types_mut
, and adds a (quite-similar) non-mutable version in::types
that only collects the extensions without modifying theOpType
.Fixes the resolution not exploring types inside a
CustomType
type arguments.drive-by: Implement
Display
,Serialize
, and::new
forExtensionRegistry
.drive-by:
ExtensionSet
should take ids by value when inserting.drive-by: Fix
Hugr::resolve_extension_defs
not scanning all the ops.These changes were extracted from #1738.
BREAKING CHANGE: Removed
ExtensionRegistry::try_new
. Usenew
instead, and callExtensionRegistry::validate
to validate.BREAKING CHANGE:
ExtensionSet::insert
andsingleton
take extension ids by value instead of cloning internally.