Skip to content

Commit d21b43a

Browse files
hugrbotaborgna-q
andauthored
chore: release v0.21.0 (#2303)
This release includes a long list of changes: - The HUGR model serialization format is now stable, and should be preferred over the old JSON format. - Type parameters and type arguments are now unified into a single `Term` type. - Function definitions can no longer be nested inside dataflow regions. Now they must be defined at the top level module. - Function definitions and declarations now have a `Visibility` field, which define whether they are visible in the public API of the module. - And many more fixes and improvements. --- ## 🤖 New release * `hugr-model`: 0.20.2 -> 0.21.0 (⚠ API breaking changes) * `hugr-core`: 0.20.2 -> 0.21.0 (⚠ API breaking changes) * `hugr-llvm`: 0.20.2 -> 0.21.0 (⚠ API breaking changes) * `hugr-passes`: 0.20.2 -> 0.21.0 (✓ API compatible changes) * `hugr`: 0.20.2 -> 0.21.0 (✓ API compatible changes) * `hugr-cli`: 0.20.2 -> 0.21.0 (⚠ API breaking changes) ### ⚠ `hugr-model` breaking changes ```text --- 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.41.0/src/lints/constructible_struct_adds_field.ron Failed in: field Symbol.visibility in /tmp/.tmpEqPTGR/hugr/hugr-model/src/v0/ast/mod.rs:198 field Symbol.visibility in /tmp/.tmpEqPTGR/hugr/hugr-model/src/v0/table/mod.rs:307 --- failure pub_module_level_const_missing: pub module-level const is missing --- Description: A public const is missing or renamed ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.41.0/src/lints/pub_module_level_const_missing.ron Failed in: CORE_CTRL_TYPE in file /tmp/.tmp1p6e1v/hugr-model/src/v0/mod.rs:175 --- failure struct_with_no_pub_fields_changed_type: public API struct with no public fields is no longer a struct --- Description: A struct without pub fields became an enum or union, breaking pattern matching. ref: https://internals.rust-lang.org/t/rest-patterns-foo-should-match-non-struct-types/21607 impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.41.0/src/lints/struct_with_no_pub_fields_changed_type.ron Failed in: struct hugr_model::v0::scope::UnknownVarError became enum in file /tmp/.tmpEqPTGR/hugr/hugr-model/src/v0/scope/vars.rs:147 ``` ### ⚠ `hugr-core` breaking changes ```text --- 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.41.0/src/lints/auto_trait_impl_removed.ron Failed in: type Term is no longer UnwindSafe, in /tmp/.tmpEqPTGR/hugr/hugr-core/src/types/type_param.rs:70 type Term is no longer RefUnwindSafe, in /tmp/.tmpEqPTGR/hugr/hugr-core/src/types/type_param.rs:70 --- 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.41.0/src/lints/enum_missing.ron Failed in: enum hugr_core::types::type_param::TypeArgError, previously in file /tmp/.tmp1p6e1v/hugr-core/src/types/type_param.rs:450 enum hugr_core::hugr::persistent::walker::PinNodeError, previously in file /tmp/.tmp1p6e1v/hugr-core/src/hugr/persistent/walker.rs:333 enum hugr_core::hugr::persistent::serial::SerialCommitData, previously in file /tmp/.tmp1p6e1v/hugr-core/src/hugr/persistent/state_space/serial.rs:11 enum hugr_core::import::ImportError, previously in file /tmp/.tmp1p6e1v/hugr-core/src/import.rs:39 enum hugr_core::import::OrderHintError, previously in file /tmp/.tmp1p6e1v/hugr-core/src/import.rs:82 enum hugr_core::hugr::persistent::InvalidCommit, previously in file /tmp/.tmp1p6e1v/hugr-core/src/hugr/persistent/state_space.rs:474 --- 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.41.0/src/lints/enum_no_repr_variant_discriminant_changed.ron Failed in: variant InterGraphEdgeError::NonCFGAncestor 2 -> 1 in /tmp/.tmpEqPTGR/hugr/hugr-core/src/hugr/validate.rs:795 variant InterGraphEdgeError::MissingOrderEdge 3 -> 2 in /tmp/.tmpEqPTGR/hugr/hugr-core/src/hugr/validate.rs:806 variant InterGraphEdgeError::NoRelation 4 -> 3 in /tmp/.tmpEqPTGR/hugr/hugr-core/src/hugr/validate.rs:817 variant InterGraphEdgeError::NonDominatedAncestor 5 -> 4 in /tmp/.tmpEqPTGR/hugr/hugr-core/src/hugr/validate.rs:827 --- 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.41.0/src/lints/enum_variant_added.ron Failed in: variant TypeBound:Linear in /tmp/.tmpEqPTGR/hugr/hugr-core/src/types.rs:138 --- 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.41.0/src/lints/enum_variant_missing.ron Failed in: variant PackageEncodingError::RuntimeExtensionResolution, previously in file /tmp/.tmp1p6e1v/hugr-core/src/envelope/package_json.rs:77 variant Term::Type, previously in file /tmp/.tmp1p6e1v/hugr-core/src/types/type_param.rs:67 variant Term::Type, previously in file /tmp/.tmp1p6e1v/hugr-core/src/types/type_param.rs:158 variant Term::Sequence, previously in file /tmp/.tmp1p6e1v/hugr-core/src/types/type_param.rs:180 variant Term::Type, previously in file /tmp/.tmp1p6e1v/hugr-core/src/types/type_param.rs:158 variant Term::Sequence, previously in file /tmp/.tmp1p6e1v/hugr-core/src/types/type_param.rs:180 variant TypeBound::Any, previously in file /tmp/.tmp1p6e1v/hugr-core/src/types.rs:136 variant InterGraphEdgeError::ValueEdgeIntoFunc, previously in file /tmp/.tmp1p6e1v/hugr-core/src/hugr/validate.rs:766 variant ValidationError::ExtensionError, previously in file /tmp/.tmp1p6e1v/hugr-core/src/hugr/validate.rs:714 variant ValidationError::ExtensionError, previously in file /tmp/.tmp1p6e1v/hugr-core/src/hugr/validate.rs:714 --- 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.41.0/src/lints/function_missing.ron Failed in: function hugr_core::types::type_param::check_type_arg, previously in file /tmp/.tmp1p6e1v/hugr-core/src/types/type_param.rs:384 function hugr_core::types::type_param::check_type_args, previously in file /tmp/.tmp1p6e1v/hugr-core/src/types/type_param.rs:437 --- 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.41.0/src/lints/inherent_method_missing.ron Failed in: Term::max_nat, previously in file /tmp/.tmp1p6e1v/hugr-core/src/types/type_param.rs:100 Term::bounded_nat, previously in file /tmp/.tmp1p6e1v/hugr-core/src/types/type_param.rs:108 Term::as_type, previously in file /tmp/.tmp1p6e1v/hugr-core/src/types/type_param.rs:275 Term::as_type, previously in file /tmp/.tmp1p6e1v/hugr-core/src/types/type_param.rs:275 --- 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.41.0/src/lints/method_parameter_count_changed.ron Failed in: hugr_core::hugr::patch::simple_replace::SimpleReplacement::linked_replacement_output now takes 4 parameters instead of 3, in /tmp/.tmpEqPTGR/hugr/hugr-core/src/hugr/patch/simple_replace.rs:134 hugr_core::hugr::patch::simple_replace::SimpleReplacement::linked_replacement_inputs now takes 4 parameters instead of 3, in /tmp/.tmpEqPTGR/hugr/hugr-core/src/hugr/patch/simple_replace.rs:221 hugr_core::hugr::patch::SimpleReplacement::linked_replacement_output now takes 4 parameters instead of 3, in /tmp/.tmpEqPTGR/hugr/hugr-core/src/hugr/patch/simple_replace.rs:134 hugr_core::hugr::patch::SimpleReplacement::linked_replacement_inputs now takes 4 parameters instead of 3, in /tmp/.tmpEqPTGR/hugr/hugr-core/src/hugr/patch/simple_replace.rs:221 hugr_core::hugr::SimpleReplacement::linked_replacement_output now takes 4 parameters instead of 3, in /tmp/.tmpEqPTGR/hugr/hugr-core/src/hugr/patch/simple_replace.rs:134 hugr_core::hugr::SimpleReplacement::linked_replacement_inputs now takes 4 parameters instead of 3, in /tmp/.tmpEqPTGR/hugr/hugr-core/src/hugr/patch/simple_replace.rs:221 hugr_core::SimpleReplacement::linked_replacement_output now takes 4 parameters instead of 3, in /tmp/.tmpEqPTGR/hugr/hugr-core/src/hugr/patch/simple_replace.rs:134 hugr_core::SimpleReplacement::linked_replacement_inputs now takes 4 parameters instead of 3, in /tmp/.tmpEqPTGR/hugr/hugr-core/src/hugr/patch/simple_replace.rs:221 --- 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.41.0/src/lints/module_missing.ron Failed in: mod hugr_core::hugr::persistent, previously in file /tmp/.tmp1p6e1v/hugr-core/src/hugr/persistent.rs:1 mod hugr_core::hugr::persistent::walker, previously in file /tmp/.tmp1p6e1v/hugr-core/src/hugr/persistent/walker.rs:1 mod hugr_core::hugr::persistent::serial, previously in file /tmp/.tmp1p6e1v/hugr-core/src/hugr/persistent.rs:769 --- 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.41.0/src/lints/struct_missing.ron Failed in: struct hugr_core::hugr::persistent::PatchNode, previously in file /tmp/.tmp1p6e1v/hugr-core/src/hugr/persistent/state_space.rs:28 struct hugr_core::hugr::persistent::walker::PinnedWire, previously in file /tmp/.tmp1p6e1v/hugr-core/src/hugr/persistent/walker/pinned.rs:30 struct hugr_core::hugr::persistent::PinnedWire, previously in file /tmp/.tmp1p6e1v/hugr-core/src/hugr/persistent/walker/pinned.rs:30 struct hugr_core::hugr::persistent::PersistentHugr, previously in file /tmp/.tmp1p6e1v/hugr-core/src/hugr/persistent.rs:274 struct hugr_core::hugr::persistent::serial::SerialCommitStateSpace, previously in file /tmp/.tmp1p6e1v/hugr-core/src/hugr/persistent/state_space/serial.rs:54 struct hugr_core::types::type_param::TypeArgVariable, previously in file /tmp/.tmp1p6e1v/hugr-core/src/types/type_param.rs:236 struct hugr_core::hugr::persistent::walker::Walker, previously in file /tmp/.tmp1p6e1v/hugr-core/src/hugr/persistent/walker.rs:87 struct hugr_core::hugr::persistent::Walker, previously in file /tmp/.tmp1p6e1v/hugr-core/src/hugr/persistent/walker.rs:87 struct hugr_core::hugr::persistent::PointerEqResolver, previously in file /tmp/.tmp1p6e1v/hugr-core/src/hugr/persistent/resolver.rs:11 struct hugr_core::hugr::persistent::CommitStateSpace, previously in file /tmp/.tmp1p6e1v/hugr-core/src/hugr/persistent/state_space.rs:64 struct hugr_core::hugr::persistent::Commit, previously in file /tmp/.tmp1p6e1v/hugr-core/src/hugr/persistent.rs:108 --- 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.41.0/src/lints/trait_method_missing.ron Failed in: method define_function of trait Container, previously in file /tmp/.tmp1p6e1v/hugr-core/src/builder/build_traits.rs:92 ``` ### ⚠ `hugr-llvm` breaking changes ```text --- failure trait_method_requires_different_generic_type_params: trait method now requires a different number of generic type parameters --- Description: A trait method now requires a different number of generic type parameters than it used to. Calls or implementations of this trait method using the previous number of generic types will be broken. ref: https://doc.rust-lang.org/reference/items/generics.html impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.41.0/src/lints/trait_method_requires_different_generic_type_params.ron Failed in: FatExt::fat_root (1 -> 0 generic types) in /tmp/.tmpEqPTGR/hugr/hugr-llvm/src/utils/fat.rs:376 ``` ### ⚠ `hugr-cli` breaking changes ```text --- 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.41.0/src/lints/inherent_method_missing.ron Failed in: ValArgs::verbosity, previously in file /tmp/.tmp1p6e1v/hugr-cli/src/validate.rs:53 MermaidArgs::verbosity, previously in file /tmp/.tmp1p6e1v/hugr-cli/src/mermaid.rs:78 --- 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.41.0/src/lints/struct_pub_field_missing.ron Failed in: field other_args of struct ValArgs, previously in file /tmp/.tmp1p6e1v/hugr-cli/src/validate.rs:24 field other_args of struct MermaidArgs, previously in file /tmp/.tmp1p6e1v/hugr-cli/src/mermaid.rs:36 --- warning 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.41.0/src/lints/enum_missing.ron Failed in: enum hugr_cli::CliArgs, previously in file /tmp/.tmp1p6e1v/hugr-cli/src/lib.rs:78 --- warning 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.41.0/src/lints/struct_missing.ron Failed in: struct hugr_cli::OtherArgs, previously in file /tmp/.tmp1p6e1v/hugr-cli/src/lib.rs:122 ``` <details><summary><i><b>Changelog</b></i></summary><p> ## `hugr-model` <blockquote> ## [0.21.0](hugr-model-v0.20.2...hugr-model-v0.21.0) - 2025-07-09 ### Bug Fixes - Model import should perform extension resolution ([#2326](#2326)) - [**breaking**] Fixed bugs in model CFG handling and improved CFG signatures ([#2334](#2334)) - [**breaking**] Fix panic in model resolver when variable is used outside of symbol. ([#2362](#2362)) - Order hints on input and output nodes. ([#2422](#2422)) ### New Features - [**breaking**] Added float and bytes literal to core and python bindings. ([#2289](#2289)) - better errors using metadata from generator ([#2368](#2368)) - [**breaking**] Add Visibility to FuncDefn/FuncDecl. ([#2143](#2143)) - [**breaking**] hugr-model use explicit Option<Visibility>, with ::Unspecified in capnp ([#2424](#2424)) </blockquote> ## `hugr-core` <blockquote> ## [0.21.0](hugr-core-v0.20.2...hugr-core-v0.21.0) - 2025-07-09 ### Bug Fixes - Fixed two bugs in import/export of function operations ([#2324](#2324)) - Model import should perform extension resolution ([#2326](#2326)) - [**breaking**] Fixed bugs in model CFG handling and improved CFG signatures ([#2334](#2334)) - Use List instead of Tuple in conversions for TypeArg/TypeRow ([#2378](#2378)) - Do extension resolution on loaded extensions from the model format ([#2389](#2389)) - Make JSON Schema checks actually work again ([#2412](#2412)) - Order hints on input and output nodes. ([#2422](#2422)) ### New Features - [**breaking**] No nested FuncDefns (or AliasDefns) ([#2256](#2256)) - Add serial data types for SimpleReplacement and PersistentHugr ([#2300](#2300)) - [**breaking**] Split `TypeArg::Sequence` into tuples and lists. ([#2140](#2140)) - [**breaking**] Added float and bytes literal to core and python bindings. ([#2289](#2289)) - [**breaking**] More helpful error messages in model import ([#2272](#2272)) - Add MermaidFormatter to replace RenderConfig ([#2275](#2275)) - [**breaking**] Better error reporting in `hugr-cli`. ([#2318](#2318)) - *(core)* builder pattern for EnvelopeConfig ([#2330](#2330)) - *(core, llvm)* add array unpack operations ([#2339](#2339)) - [**breaking**] Merge `TypeParam` and `TypeArg` into one `Term` type in Rust ([#2309](#2309)) - *(persistent)* Add serialisation for CommitStateSpace ([#2344](#2344)) - Deprecate invalidation_set, add invalidated_nodes and SimpleReplacement::invalidation_set ([#2358](#2358)) - Rewrite for peeling a TailLoop ([#2290](#2290)) - Create Module/FunctionBuilders from existing Hugrs ([#2359](#2359)) - add TryFrom impls for TypeArg/TypeRow ([#2366](#2366)) - better errors using metadata from generator ([#2368](#2368)) - use `core.` prefixes for generator metadata keys ([#2371](#2371)) - Add `MakeError` op ([#2377](#2377)) - Open lists and tuples in `Term` ([#2360](#2360)) - Call `FunctionBuilder::add_{in,out}put` for any AsMut<Hugr> ([#2376](#2376)) - Add Root checked methods to DataflowParentID ([#2382](#2382)) - Add PersistentWire type ([#2361](#2361)) - Add `BorrowArray` extension ([#2395](#2395)) - [**breaking**] Rename 'Any' type bound to 'Linear' ([#2421](#2421)) - [**breaking**] Add Visibility to FuncDefn/FuncDecl. ([#2143](#2143)) - *(per)* [**breaking**] Support empty wires in commits ([#2349](#2349)) - [**breaking**] hugr-model use explicit Option<Visibility>, with ::Unspecified in capnp ([#2424](#2424)) ### Refactor - [**breaking**] move PersistentHugr into separate crate ([#2277](#2277)) - *(types.rs)* rm incorrect comment and unnecessary allow-unused ([#2340](#2340)) - [**breaking**] remove deprecated runtime extension errors ([#2369](#2369)) - [**breaking**] Reduce error type sizes ([#2420](#2420)) ### Testing - Check hugr json serializations against the schema (again) ([#2216](#2216)) </blockquote> ## `hugr-llvm` <blockquote> ## [0.21.0](hugr-llvm-v0.20.2...hugr-llvm-v0.21.0) - 2025-07-09 ### New Features - [**breaking**] No nested FuncDefns (or AliasDefns) ([#2256](#2256)) - [**breaking**] Split `TypeArg::Sequence` into tuples and lists. ([#2140](#2140)) - [**breaking**] More helpful error messages in model import ([#2272](#2272)) - *(core, llvm)* add array unpack operations ([#2339](#2339)) - [**breaking**] Merge `TypeParam` and `TypeArg` into one `Term` type in Rust ([#2309](#2309)) - Add `MakeError` op ([#2377](#2377)) ### Refactor - *(llvm)* replace HashMap with BTreeMap ([#2313](#2313)) </blockquote> ## `hugr-passes` <blockquote> ## [0.21.0](hugr-passes-v0.20.2...hugr-passes-v0.21.0) - 2025-07-09 ### Bug Fixes - update CallGraph and remove_dead_funcs for module-only FuncDefns ([#2336](#2336)) - DeadFuncElimPass+CallGraph w/ non-module-child entrypoint ([#2390](#2390)) ### New Features - [**breaking**] No nested FuncDefns (or AliasDefns) ([#2256](#2256)) - [**breaking**] Split `TypeArg::Sequence` into tuples and lists. ([#2140](#2140)) - [**breaking**] Merge `TypeParam` and `TypeArg` into one `Term` type in Rust ([#2309](#2309)) - [**breaking**] Rename 'Any' type bound to 'Linear' ([#2421](#2421)) ### Refactor - [**breaking**] Reduce error type sizes ([#2420](#2420)) </blockquote> ## `hugr` <blockquote> ## [0.21.0](hugr-v0.20.2...hugr-v0.21.0) - 2025-07-09 ### Bug Fixes - update CallGraph and remove_dead_funcs for module-only FuncDefns ([#2336](#2336)) - DeadFuncElimPass+CallGraph w/ non-module-child entrypoint ([#2390](#2390)) - Fixed two bugs in import/export of function operations ([#2324](#2324)) - Model import should perform extension resolution ([#2326](#2326)) - [**breaking**] Fixed bugs in model CFG handling and improved CFG signatures ([#2334](#2334)) - Use List instead of Tuple in conversions for TypeArg/TypeRow ([#2378](#2378)) - Do extension resolution on loaded extensions from the model format ([#2389](#2389)) - Make JSON Schema checks actually work again ([#2412](#2412)) - Order hints on input and output nodes. ([#2422](#2422)) ### Documentation - Hide hugr-persistent docs ([#2357](#2357)) ### New Features - Add serial data types for SimpleReplacement and PersistentHugr ([#2300](#2300)) - [**breaking**] Split `TypeArg::Sequence` into tuples and lists. ([#2140](#2140)) - [**breaking**] Added float and bytes literal to core and python bindings. ([#2289](#2289)) - [**breaking**] More helpful error messages in model import ([#2272](#2272)) - Add MermaidFormatter to replace RenderConfig ([#2275](#2275)) - [**breaking**] Better error reporting in `hugr-cli`. ([#2318](#2318)) - *(core, llvm)* add array unpack operations ([#2339](#2339)) - [**breaking**] Merge `TypeParam` and `TypeArg` into one `Term` type in Rust ([#2309](#2309)) - *(persistent)* Add serialisation for CommitStateSpace ([#2344](#2344)) - Deprecate invalidation_set, add invalidated_nodes and SimpleReplacement::invalidation_set ([#2358](#2358)) - Rewrite for peeling a TailLoop ([#2290](#2290)) - Create Module/FunctionBuilders from existing Hugrs ([#2359](#2359)) - add TryFrom impls for TypeArg/TypeRow ([#2366](#2366)) - better errors using metadata from generator ([#2368](#2368)) - use `core.` prefixes for generator metadata keys ([#2371](#2371)) - Add `MakeError` op ([#2377](#2377)) - Open lists and tuples in `Term` ([#2360](#2360)) - Call `FunctionBuilder::add_{in,out}put` for any AsMut<Hugr> ([#2376](#2376)) - Add Root checked methods to DataflowParentID ([#2382](#2382)) - Add PersistentWire type ([#2361](#2361)) - Add `BorrowArray` extension ([#2395](#2395)) - [**breaking**] Add Visibility to FuncDefn/FuncDecl. ([#2143](#2143)) - *(per)* [**breaking**] Support empty wires in commits ([#2349](#2349)) - [**breaking**] hugr-model use explicit Option<Visibility>, with ::Unspecified in capnp ([#2424](#2424)) - [**breaking**] No nested FuncDefns (or AliasDefns) ([#2256](#2256)) - *(core)* builder pattern for EnvelopeConfig ([#2330](#2330)) - [**breaking**] Rename 'Any' type bound to 'Linear' ([#2421](#2421)) ### Refactor - *(types.rs)* rm incorrect comment and unnecessary allow-unused ([#2340](#2340)) - [**breaking**] remove deprecated runtime extension errors ([#2369](#2369)) - [**breaking**] Reduce error type sizes ([#2420](#2420)) - [**breaking**] move PersistentHugr into separate crate ([#2277](#2277)) ### Testing - Check hugr json serializations against the schema (again) ([#2216](#2216)) </blockquote> ## `hugr-cli` <blockquote> ## [0.21.0](hugr-cli-v0.20.2...hugr-cli-v0.21.0) - 2025-07-09 ### New Features - [**breaking**] Better error reporting in `hugr-cli`. ([#2318](#2318)) - *(cli)* convert sub-command for converting envelope formats ([#2331](#2331)) </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>
1 parent a31ccbc commit d21b43a

File tree

14 files changed

+169
-21
lines changed

14 files changed

+169
-21
lines changed

Cargo.lock

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

hugr-cli/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
# Changelog
22

33

4+
## [0.21.0](https://github.com/CQCL/hugr/compare/hugr-cli-v0.20.2...hugr-cli-v0.21.0) - 2025-07-09
5+
6+
### New Features
7+
8+
- [**breaking**] Better error reporting in `hugr-cli`. ([#2318](https://github.com/CQCL/hugr/pull/2318))
9+
410
## [0.20.2](https://github.com/CQCL/hugr/compare/hugr-cli-v0.20.1...hugr-cli-v0.20.2) - 2025-06-25
511

612
### New Features

hugr-cli/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "hugr-cli"
3-
version = "0.20.2"
3+
version = "0.21.0"
44
edition = { workspace = true }
55
rust-version = { workspace = true }
66
license = { workspace = true }
@@ -19,7 +19,7 @@ bench = false
1919
clap = { workspace = true, features = ["derive", "cargo"] }
2020
clap-verbosity-flag.workspace = true
2121
derive_more = { workspace = true, features = ["display", "error", "from"] }
22-
hugr = { path = "../hugr", version = "0.20.2" }
22+
hugr = { path = "../hugr", version = "0.21.0" }
2323
serde_json.workspace = true
2424
clio = { workspace = true, features = ["clap-parse"] }
2525
anyhow.workspace = true

hugr-core/CHANGELOG.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,48 @@
11
# Changelog
22

3+
## [0.21.0](https://github.com/CQCL/hugr/compare/hugr-core-v0.20.2...hugr-core-v0.21.0) - 2025-07-09
4+
5+
### Bug Fixes
6+
7+
- Fixed two bugs in import/export of function operations ([#2324](https://github.com/CQCL/hugr/pull/2324))
8+
- Model import should perform extension resolution ([#2326](https://github.com/CQCL/hugr/pull/2326))
9+
- [**breaking**] Fixed bugs in model CFG handling and improved CFG signatures ([#2334](https://github.com/CQCL/hugr/pull/2334))
10+
- Use List instead of Tuple in conversions for TypeArg/TypeRow ([#2378](https://github.com/CQCL/hugr/pull/2378))
11+
- Do extension resolution on loaded extensions from the model format ([#2389](https://github.com/CQCL/hugr/pull/2389))
12+
- Make JSON Schema checks actually work again ([#2412](https://github.com/CQCL/hugr/pull/2412))
13+
- Order hints on input and output nodes. ([#2422](https://github.com/CQCL/hugr/pull/2422))
14+
15+
### New Features
16+
17+
- [**breaking**] No nested FuncDefns (or AliasDefns) ([#2256](https://github.com/CQCL/hugr/pull/2256))
18+
- [**breaking**] Split `TypeArg::Sequence` into tuples and lists. ([#2140](https://github.com/CQCL/hugr/pull/2140))
19+
- [**breaking**] Added float and bytes literal to core and python bindings. ([#2289](https://github.com/CQCL/hugr/pull/2289))
20+
- [**breaking**] More helpful error messages in model import ([#2272](https://github.com/CQCL/hugr/pull/2272))
21+
- [**breaking**] Better error reporting in `hugr-cli`. ([#2318](https://github.com/CQCL/hugr/pull/2318))
22+
- [**breaking**] Merge `TypeParam` and `TypeArg` into one `Term` type in Rust ([#2309](https://github.com/CQCL/hugr/pull/2309))
23+
- *(persistent)* Add serialisation for CommitStateSpace ([#2344](https://github.com/CQCL/hugr/pull/2344))
24+
- add TryFrom impls for TypeArg/TypeRow ([#2366](https://github.com/CQCL/hugr/pull/2366))
25+
- Add `MakeError` op ([#2377](https://github.com/CQCL/hugr/pull/2377))
26+
- Open lists and tuples in `Term` ([#2360](https://github.com/CQCL/hugr/pull/2360))
27+
- Call `FunctionBuilder::add_{in,out}put` for any AsMut<Hugr> ([#2376](https://github.com/CQCL/hugr/pull/2376))
28+
- Add Root checked methods to DataflowParentID ([#2382](https://github.com/CQCL/hugr/pull/2382))
29+
- Add PersistentWire type ([#2361](https://github.com/CQCL/hugr/pull/2361))
30+
- Add `BorrowArray` extension ([#2395](https://github.com/CQCL/hugr/pull/2395))
31+
- [**breaking**] Rename 'Any' type bound to 'Linear' ([#2421](https://github.com/CQCL/hugr/pull/2421))
32+
- [**breaking**] Add Visibility to FuncDefn/FuncDecl. ([#2143](https://github.com/CQCL/hugr/pull/2143))
33+
- *(per)* [**breaking**] Support empty wires in commits ([#2349](https://github.com/CQCL/hugr/pull/2349))
34+
- [**breaking**] hugr-model use explicit Option<Visibility>, with ::Unspecified in capnp ([#2424](https://github.com/CQCL/hugr/pull/2424))
35+
36+
### Refactor
37+
38+
- [**breaking**] move PersistentHugr into separate crate ([#2277](https://github.com/CQCL/hugr/pull/2277))
39+
- [**breaking**] remove deprecated runtime extension errors ([#2369](https://github.com/CQCL/hugr/pull/2369))
40+
- [**breaking**] Reduce error type sizes ([#2420](https://github.com/CQCL/hugr/pull/2420))
41+
42+
### Testing
43+
44+
- Check hugr json serializations against the schema (again) ([#2216](https://github.com/CQCL/hugr/pull/2216))
45+
346
## [0.20.2](https://github.com/CQCL/hugr/compare/hugr-core-v0.20.1...hugr-core-v0.20.2) - 2025-06-25
447

548
### Documentation

hugr-core/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "hugr-core"
3-
version = "0.20.2"
3+
version = "0.21.0"
44
edition = { workspace = true }
55
rust-version = { workspace = true }
66

@@ -28,7 +28,7 @@ bench = false
2828
name = "model"
2929

3030
[dependencies]
31-
hugr-model = { version = "0.20.2", path = "../hugr-model" }
31+
hugr-model = { version = "0.21.0", path = "../hugr-model" }
3232

3333
cgmath = { workspace = true, features = ["serde"] }
3434
delegate = { workspace = true }

hugr-llvm/CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
55
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

77

8+
## [0.21.0](https://github.com/CQCL/hugr/compare/hugr-llvm-v0.20.2...hugr-llvm-v0.21.0) - 2025-07-09
9+
10+
### New Features
11+
12+
- [**breaking**] No nested FuncDefns (or AliasDefns) ([#2256](https://github.com/CQCL/hugr/pull/2256))
13+
- [**breaking**] Split `TypeArg::Sequence` into tuples and lists. ([#2140](https://github.com/CQCL/hugr/pull/2140))
14+
- [**breaking**] More helpful error messages in model import ([#2272](https://github.com/CQCL/hugr/pull/2272))
15+
- [**breaking**] Merge `TypeParam` and `TypeArg` into one `Term` type in Rust ([#2309](https://github.com/CQCL/hugr/pull/2309))
16+
- Add `MakeError` op ([#2377](https://github.com/CQCL/hugr/pull/2377))
17+
818
## [0.20.2](https://github.com/CQCL/hugr/compare/hugr-llvm-v0.20.1...hugr-llvm-v0.20.2) - 2025-06-25
919

1020
### New Features

hugr-llvm/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "hugr-llvm"
3-
version = "0.20.2"
3+
version = "0.21.0"
44
description = "A general and extensible crate for lowering HUGRs into LLVM IR"
55

66
edition.workspace = true
@@ -26,7 +26,7 @@ workspace = true
2626

2727
[dependencies]
2828
inkwell = { version = "0.6.0", default-features = false }
29-
hugr-core = { path = "../hugr-core", version = "0.20.1" }
29+
hugr-core = { path = "../hugr-core", version = "0.21.0" }
3030
anyhow.workspace = true
3131
itertools.workspace = true
3232
delegate.workspace = true

hugr-model/CHANGELOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,20 @@
11
# Changelog
22

3+
## [0.21.0](https://github.com/CQCL/hugr/compare/hugr-model-v0.20.2...hugr-model-v0.21.0) - 2025-07-09
4+
5+
### Bug Fixes
6+
7+
- Model import should perform extension resolution ([#2326](https://github.com/CQCL/hugr/pull/2326))
8+
- [**breaking**] Fixed bugs in model CFG handling and improved CFG signatures ([#2334](https://github.com/CQCL/hugr/pull/2334))
9+
- [**breaking**] Fix panic in model resolver when variable is used outside of symbol. ([#2362](https://github.com/CQCL/hugr/pull/2362))
10+
- Order hints on input and output nodes. ([#2422](https://github.com/CQCL/hugr/pull/2422))
11+
12+
### New Features
13+
14+
- [**breaking**] Added float and bytes literal to core and python bindings. ([#2289](https://github.com/CQCL/hugr/pull/2289))
15+
- [**breaking**] Add Visibility to FuncDefn/FuncDecl. ([#2143](https://github.com/CQCL/hugr/pull/2143))
16+
- [**breaking**] hugr-model use explicit Option<Visibility>, with ::Unspecified in capnp ([#2424](https://github.com/CQCL/hugr/pull/2424))
17+
318
## [0.20.2](https://github.com/CQCL/hugr/compare/hugr-model-v0.20.1...hugr-model-v0.20.2) - 2025-06-25
419

520
### New Features

hugr-model/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "hugr-model"
3-
version = "0.20.2"
3+
version = "0.21.0"
44
readme = "README.md"
55
documentation = "https://docs.rs/hugr-model/"
66
description = "Data model for Quantinuum's HUGR intermediate representation"

hugr-passes/CHANGELOG.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,23 @@
11
# Changelog
22

33

4+
## [0.21.0](https://github.com/CQCL/hugr/compare/hugr-passes-v0.20.2...hugr-passes-v0.21.0) - 2025-07-09
5+
6+
### Bug Fixes
7+
8+
- DeadFuncElimPass+CallGraph w/ non-module-child entrypoint ([#2390](https://github.com/CQCL/hugr/pull/2390))
9+
10+
### New Features
11+
12+
- [**breaking**] No nested FuncDefns (or AliasDefns) ([#2256](https://github.com/CQCL/hugr/pull/2256))
13+
- [**breaking**] Split `TypeArg::Sequence` into tuples and lists. ([#2140](https://github.com/CQCL/hugr/pull/2140))
14+
- [**breaking**] Merge `TypeParam` and `TypeArg` into one `Term` type in Rust ([#2309](https://github.com/CQCL/hugr/pull/2309))
15+
- [**breaking**] Rename 'Any' type bound to 'Linear' ([#2421](https://github.com/CQCL/hugr/pull/2421))
16+
17+
### Refactor
18+
19+
- [**breaking**] Reduce error type sizes ([#2420](https://github.com/CQCL/hugr/pull/2420))
20+
421
## [0.20.2](https://github.com/CQCL/hugr/compare/hugr-passes-v0.20.1...hugr-passes-v0.20.2) - 2025-06-25
522

623
### Bug Fixes

0 commit comments

Comments
 (0)