feat: add hugr-core StaticGraph, deprecate hugr-passes CallGraph#2698
feat: add hugr-core StaticGraph, deprecate hugr-passes CallGraph#2698
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #2698 +/- ##
==========================================
- Coverage 83.53% 83.49% -0.05%
==========================================
Files 264 265 +1
Lines 51538 51643 +105
Branches 47006 47108 +102
==========================================
+ Hits 43051 43117 +66
- Misses 6114 6154 +40
+ Partials 2373 2372 -1
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
mark-koch
left a comment
There was a problem hiding this comment.
Looks good to me 👍
In terms of naming, I think I slightly prefer ModuleGraph since it only contains nodes on module level and not all static edges are included (e.g. consts inside functions)
| } | ||
|
|
||
| /// Details the [`FuncDefn`]s, [`FuncDecl`]s and module-level [`Const`]s in a Hugr, | ||
| /// in a Hugr, along with the [`Call`]s, [`LoadFunction`]s, and [`LoadConstant`]s connecting them. |
There was a problem hiding this comment.
| /// in a Hugr, along with the [`Call`]s, [`LoadFunction`]s, and [`LoadConstant`]s connecting them. | |
| /// along with the [`Call`]s, [`LoadFunction`]s, and [`LoadConstant`]s connecting them. |
hugr-core/src/static_graph.rs
Outdated
| } | ||
|
|
||
| impl<N: HugrNode> StaticGraph<N> { | ||
| /// Makes a new `CallGraph` for a Hugr. |
There was a problem hiding this comment.
| /// Makes a new `CallGraph` for a Hugr. | |
| /// Makes a new `StaticGraph` for a Hugr. |
| /// | ||
| /// If the node is not recognised as a function or the entrypoint, | ||
| /// for example if it is a [`Const`](OpType::Const), the iterator will be empty. | ||
| pub fn out_edges(&self, n: N) -> impl Iterator<Item = (&StaticEdge<N>, &StaticNode<N>)> { |
There was a problem hiding this comment.
Do we also want an in_edges method?
This release includes various breaking refactors and improvements:
- A lot of work has been done towards linking Hugrs. Now module-rooted
Hugrs can
be linked together using configurable policies.
- `ValueArray` has been removed.
- A type-safe API for accessing metadata on nodes has been added.
- Envelopes now have an extensive API for progressively describing a
package,
and failing gracefully on errors.
- The MSRV has been bumped to Rust 1.89, and the public pyo3 dependency
has been
updated to 0.27.
- Multiple deprecated definitions have been removed.
----
## 🤖 New release
* `hugr-model`: 0.24.3 -> 0.25.0 (✓ API compatible changes)
* `hugr-core`: 0.24.3 -> 0.25.0 (⚠ API breaking changes)
* `hugr-llvm`: 0.24.3 -> 0.25.0 (✓ API compatible changes)
* `hugr-passes`: 0.24.3 -> 0.25.0 (⚠ API breaking changes)
* `hugr-persistent`: 0.3.4 -> 0.4.0 (✓ API compatible changes)
* `hugr`: 0.24.3 -> 0.25.0 (✓ API compatible changes)
* `hugr-cli`: 0.24.3 -> 0.25.0 (⚠ API breaking changes)
### ⚠ `hugr-core` breaking changes
```text
--- 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.45.0/src/lints/enum_marked_non_exhaustive.ron
Failed in:
enum ReadError in /tmp/.tmpmZ0VmH/hugr/hugr-core/src/envelope.rs:108
--- 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.45.0/src/lints/enum_missing.ron
Failed in:
enum hugr_core::envelope::EnvelopeError, previously in file /tmp/.tmpLNcYQE/hugr-core/src/envelope.rs:262
--- 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.45.0/src/lints/function_missing.ron
Failed in:
function hugr_core::std_extensions::collections::value_array::value_array_type, previously in file /tmp/.tmpLNcYQE/hugr-core/src/std_extensions/collections/value_array.rs:159
function hugr_core::envelope::format_generator, previously in file /tmp/.tmpLNcYQE/hugr-core/src/envelope.rs:93
function hugr_core::std_extensions::collections::value_array::value_array_type_def, previously in file /tmp/.tmpLNcYQE/hugr-core/src/std_extensions/collections/value_array.rs:150
function hugr_core::hugr::serialize::serde_deserialize_hugr, previously in file /tmp/.tmpLNcYQE/hugr-core/src/hugr/serialize.rs:180
function hugr_core::envelope::get_generator, previously in file /tmp/.tmpLNcYQE/hugr-core/src/envelope.rs:80
function hugr_core::std_extensions::collections::value_array::value_array_type_parametric, previously in file /tmp/.tmpLNcYQE/hugr-core/src/std_extensions/collections/value_array.rs:166
function hugr_core::std_extensions::collections::array::op_builder::build_all_value_array_ops, previously in file /tmp/.tmpLNcYQE/hugr-core/src/std_extensions/collections/array/op_builder.rs:390
--- 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.45.0/src/lints/inherent_method_missing.ron
Failed in:
MermaidFormatter::from_render_config, previously in file /tmp/.tmpLNcYQE/hugr-core/src/hugr/views/render.rs:50
--- 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.45.0/src/lints/module_missing.ron
Failed in:
mod hugr_core::std_extensions::collections::value_array, previously in file /tmp/.tmpLNcYQE/hugr-core/src/std_extensions/collections/value_array.rs:1
--- 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.45.0/src/lints/pub_module_level_const_missing.ron
Failed in:
USED_EXTENSIONS_KEY in file /tmp/.tmpLNcYQE/hugr-core/src/envelope.rs:72
VALUE_ARRAY_TYPENAME in file /tmp/.tmpLNcYQE/hugr-core/src/std_extensions/collections/value_array.rs:27
VERSION in file /tmp/.tmpLNcYQE/hugr-core/src/std_extensions/collections/value_array.rs:33
GENERATOR_KEY in file /tmp/.tmpLNcYQE/hugr-core/src/envelope.rs:70
EXTENSION_ID in file /tmp/.tmpLNcYQE/hugr-core/src/std_extensions/collections/value_array.rs:31
VALUE_ARRAY_VALUENAME in file /tmp/.tmpLNcYQE/hugr-core/src/std_extensions/collections/value_array.rs:29
--- failure pub_static_missing: pub static is missing ---
Description:
A public static is missing, renamed, or made private.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.45.0/src/lints/pub_static_missing.ron
Failed in:
EXTENSION in file /tmp/.tmpLNcYQE/hugr-core/src/std_extensions/collections/value_array.rs:99
--- 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.45.0/src/lints/struct_missing.ron
Failed in:
struct hugr_core::envelope::WithGenerator, previously in file /tmp/.tmpLNcYQE/hugr-core/src/envelope.rs:127
struct hugr_core::hugr::views::render::RenderConfig, previously in file /tmp/.tmpLNcYQE/hugr-core/src/hugr/views/render.rs:21
struct hugr_core::std_extensions::collections::value_array::ValueArray, previously in file /tmp/.tmpLNcYQE/hugr-core/src/std_extensions/collections/value_array.rs:39
--- failure trait_method_default_impl_removed: pub trait default method impl removed ---
Description:
A method's default impl in an unsealed trait has been removed, breaking trait implementations that relied on that default
ref: https://doc.rust-lang.org/book/ch10-02-traits.html#default-implementations
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.45.0/src/lints/trait_method_default_impl_removed.ron
Failed in:
trait method hugr_core::hugr::patch::PatchVerification::invalidated_nodes in file /tmp/.tmpmZ0VmH/hugr/hugr-core/src/hugr/patch.rs:45
--- 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.45.0/src/lints/trait_method_missing.ron
Failed in:
method invalidation_set of trait PatchVerification, previously in file /tmp/.tmpLNcYQE/hugr-core/src/hugr/patch.rs:44
method mermaid_string_with_config of trait HugrView, previously in file /tmp/.tmpLNcYQE/hugr-core/src/hugr/views.rs:404
method mermaid_string_with_config of trait HugrView, previously in file /tmp/.tmpLNcYQE/hugr-core/src/hugr/views.rs:404
method mermaid_string_with_config of trait HugrView, previously in file /tmp/.tmpLNcYQE/hugr-core/src/hugr/views.rs:404
method get_metadata_mut of trait HugrMut, previously in file /tmp/.tmpLNcYQE/hugr-core/src/hugr/hugrmut.rs:63
--- failure trait_method_parameter_count_changed: pub trait method parameter count changed ---
Description:
A trait method now takes a different number of parameters.
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.45.0/src/lints/trait_method_parameter_count_changed.ron
Failed in:
Container::set_metadata now takes 2 instead of 3 parameters, in file /tmp/.tmpmZ0VmH/hugr/hugr-core/src/builder/build_traits.rs:114
Container::set_child_metadata now takes 3 instead of 4 parameters, in file /tmp/.tmpmZ0VmH/hugr/hugr-core/src/builder/build_traits.rs:123
HugrView::get_metadata now takes 2 instead of 3 parameters, in file /tmp/.tmpmZ0VmH/hugr/hugr-core/src/hugr/views.rs:107
HugrView::get_metadata now takes 2 instead of 3 parameters, in file /tmp/.tmpmZ0VmH/hugr/hugr-core/src/hugr/views.rs:107
HugrView::get_metadata now takes 2 instead of 3 parameters, in file /tmp/.tmpmZ0VmH/hugr/hugr-core/src/hugr/views.rs:107
HugrMut::set_metadata now takes 3 instead of 4 parameters, in file /tmp/.tmpmZ0VmH/hugr/hugr-core/src/hugr/hugrmut.rs:79
HugrMut::remove_metadata now takes 2 instead of 3 parameters, in file /tmp/.tmpmZ0VmH/hugr/hugr-core/src/hugr/hugrmut.rs:106
--- 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.45.0/src/lints/trait_method_requires_different_generic_type_params.ron
Failed in:
Container::set_metadata (0 -> 1 generic types) in /tmp/.tmpmZ0VmH/hugr/hugr-core/src/builder/build_traits.rs:114
Container::set_child_metadata (0 -> 1 generic types) in /tmp/.tmpmZ0VmH/hugr/hugr-core/src/builder/build_traits.rs:123
HugrView::get_metadata (0 -> 1 generic types) in /tmp/.tmpmZ0VmH/hugr/hugr-core/src/hugr/views.rs:107
HugrView::get_metadata (0 -> 1 generic types) in /tmp/.tmpmZ0VmH/hugr/hugr-core/src/hugr/views.rs:107
HugrView::get_metadata (0 -> 1 generic types) in /tmp/.tmpmZ0VmH/hugr/hugr-core/src/hugr/views.rs:107
HugrMut::set_metadata (0 -> 1 generic types) in /tmp/.tmpmZ0VmH/hugr/hugr-core/src/hugr/hugrmut.rs:79
HugrMut::remove_metadata (0 -> 1 generic types) in /tmp/.tmpmZ0VmH/hugr/hugr-core/src/hugr/hugrmut.rs:106
--- failure trait_missing: pub trait removed or renamed ---
Description:
A publicly-visible trait cannot be imported by its prior path. A `pub use` may have been removed, or the trait itself may have been renamed or removed entirely.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.45.0/src/lints/trait_missing.ron
Failed in:
trait hugr_core::std_extensions::collections::value_array::VArrayOpBuilder, previously in file /tmp/.tmpLNcYQE/hugr-core/src/std_extensions/collections/value_array.rs:174
trait hugr_core::hugr::views::RootCheckable, previously in file /tmp/.tmpLNcYQE/hugr-core/src/hugr/views/root_checked.rs:73
```
### ⚠ `hugr-passes` breaking changes
```text
--- 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.45.0/src/lints/enum_marked_non_exhaustive.ron
Failed in:
enum NodeTemplate in /tmp/.tmpmZ0VmH/hugr/hugr-passes/src/replace_types.rs:40
--- 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.45.0/src/lints/enum_missing.ron
Failed in:
enum hugr_passes::call_graph::CallGraphNode, previously in file /tmp/.tmpLNcYQE/hugr-passes/src/call_graph.rs:17
enum hugr_passes::call_graph::CallGraphEdge, previously in file /tmp/.tmpLNcYQE/hugr-passes/src/call_graph.rs:9
--- 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.45.0/src/lints/enum_struct_variant_field_added.ron
Failed in:
field entry_nodes_moved of variant NormalizeCFGResult::CFGPreserved in /tmp/.tmpmZ0VmH/hugr/hugr-passes/src/normalize_cfgs.rs:89
--- 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.45.0/src/lints/enum_struct_variant_field_missing.ron
Failed in:
field entry_dfg of variant NormalizeCFGResult::CFGPreserved, previously in file /tmp/.tmpLNcYQE/hugr-passes/src/normalize_cfgs.rs:88
--- 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.45.0/src/lints/function_missing.ron
Failed in:
function hugr_passes::replace_types::handlers::linearize_value_array, previously in file /tmp/.tmpLNcYQE/hugr-passes/src/replace_types/handlers.rs:298
function hugr_passes::merge_bbs::merge_basic_blocks, previously in file /tmp/.tmpLNcYQE/hugr-passes/src/lib.rs:40
function hugr_passes::replace_types::handlers::value_array_const, previously in file /tmp/.tmpLNcYQE/hugr-passes/src/replace_types/handlers.rs:97
--- 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.45.0/src/lints/module_missing.ron
Failed in:
mod hugr_passes::merge_bbs, previously in file /tmp/.tmpLNcYQE/hugr-passes/src/lib.rs:26
mod hugr_passes::call_graph, previously in file /tmp/.tmpLNcYQE/hugr-passes/src/call_graph.rs:1
mod hugr_passes::linearize_array, previously in file /tmp/.tmpLNcYQE/hugr-passes/src/linearize_array.rs:1
--- 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.45.0/src/lints/struct_missing.ron
Failed in:
struct hugr_passes::call_graph::CallGraph, previously in file /tmp/.tmpLNcYQE/hugr-passes/src/call_graph.rs:42
struct hugr_passes::linearize_array::LinearizeArrayPass, previously in file /tmp/.tmpLNcYQE/hugr-passes/src/linearize_array.rs:35
struct hugr_passes::LinearizeArrayPass, previously in file /tmp/.tmpLNcYQE/hugr-passes/src/linearize_array.rs:35
```
### ⚠ `hugr-cli` breaking changes
```text
--- 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.45.0/src/lints/enum_variant_missing.ron
Failed in:
variant CliError::Envelope, previously in file /tmp/.tmpLNcYQE/hugr-cli/src/lib.rs:88
--- 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.45.0/src/lints/inherent_method_missing.ron
Failed in:
HugrInputArgs::get_envelope, previously in file /tmp/.tmpLNcYQE/hugr-cli/src/hugr_io.rs:63
HugrInputArgs::get_hugr, previously in file /tmp/.tmpLNcYQE/hugr-cli/src/hugr_io.rs:88
--- 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.45.0/src/lints/struct_pub_field_missing.ron
Failed in:
field hugr_json of struct HugrInputArgs, previously in file /tmp/.tmpLNcYQE/hugr-cli/src/hugr_io.rs:40
```
<details><summary><i><b>Changelog</b></i></summary><p>
## `hugr-model`
<blockquote>
##
[0.25.0](hugr-model-v0.24.3...hugr-model-v0.25.0)
- 2025-12-22
### Bug Fixes
- *(model)* avoid non abi-compatible pyo3 calls
([#2679](#2679))
### New Features
- [**breaking**] Upgrade pyo3 dependency to 0.27
([#2736](#2736))
### Refactor
- Direct import of model representation to Python
([#2683](#2683))
</blockquote>
## `hugr-core`
<blockquote>
##
[0.25.0](hugr-core-v0.24.3...hugr-core-v0.25.0)
- 2025-12-22
### Bug Fixes
- *(hugr-core)* [**breaking**] Return error instead of panicking in
`MakeRegisteredOp::to_extension_op()`
([#2701](#2701))
- register packaged extensions before model_ast import
([#2702](#2702))
- ModuleGraph misses static edges to non-container entrypoints
([#2745](#2745))
### New Features
- return description output to python on error
([#2681](#2681))
- add hugr-core StaticGraph, deprecate hugr-passes CallGraph
([#2698](#2698))
- [**breaking**] Remove `RootCheckable`
([#2704](#2704))
- Add method to link Hugr modules (linking pt3)
([#2529](#2529))
- `insert_link_hugr` adds entrypoint subtree and links, with
reachability ([#2555](#2555))
- [**breaking**] Upgrade pyo3 dependency to 0.27
([#2736](#2736))
- [**breaking**] Bump MSRV to Rust 1.89
([#2747](#2747))
- [**breaking**] Allow disconnecting specific edges in a hugr
([#2737](#2737))
- Optype iterators over value ports
([#2738](#2738))
- [**breaking**] Type-safe access for node metadata
([#2755](#2755))
- [**breaking**] GeneratorDesc metadata definition
([#2759](#2759))
### Refactor
- [**breaking**] move envelope reading to dedicated module with
dedicated errors ([#2689](#2689))
- Direct import of model representation to Python
([#2683](#2683))
- *(linking.rs)* [**breaking**] (tiny) avoid type_complexity
([#2721](#2721))
- [**breaking**] Remove multiple deprecated definitions
([#2751](#2751))
- [**breaking**] Delete ValueArray
([#2760](#2760))
- Deprecate Value::Function and inline_constant_functions
([#2770](#2770))
</blockquote>
## `hugr-llvm`
<blockquote>
##
[0.25.0](hugr-llvm-v0.24.3...hugr-llvm-v0.25.0)
- 2025-12-22
### New Features
- *(llvm)* [**breaking**] upgrade to inkwell 0.7
([#2695](#2695))
### Refactor
- Deprecate Value::Function and inline_constant_functions
([#2770](#2770))
</blockquote>
## `hugr-passes`
<blockquote>
##
[0.25.0](hugr-passes-v0.24.3...hugr-passes-v0.25.0)
- 2025-12-22
### New Features
- *(hugr-passes)* [**breaking**] normalize_cfgs inlines entry DFG
([#2649](#2649))
- add hugr-core StaticGraph, deprecate hugr-passes CallGraph
([#2698](#2698))
- ReplaceTypes: recurse on replacements, much deprecation
([#2442](#2442))
- [**breaking**] Remove `RootCheckable`
([#2704](#2704))
- [**breaking**] Bump MSRV to Rust 1.89
([#2747](#2747))
- Add a pass to remove redundant order edges
([#2739](#2739))
- *(hugr-passes)* [**breaking**] add NodeTemplate::LinkedHugr, deprecate
::Call ([#2749](#2749))
### Refactor
- [**breaking**] Remove multiple deprecated definitions
([#2751](#2751))
- [**breaking**] Delete ValueArray
([#2760](#2760))
- Deprecate Value::Function and inline_constant_functions
([#2770](#2770))
### Testing
- Make Hugr valid in replace_types::op_to_call
([#2732](#2732))
</blockquote>
## `hugr-persistent`
<blockquote>
##
[0.4.0](hugr-persistent-v0.3.4...hugr-persistent-v0.4.0)
- 2025-12-22
### New Features
- [**breaking**] Remove `RootCheckable`
([#2704](#2704))
- [**breaking**] Bump MSRV to Rust 1.89
([#2747](#2747))
- [**breaking**] Type-safe access for node metadata
([#2755](#2755))
### Refactor
- [**breaking**] Remove multiple deprecated definitions
([#2751](#2751))
</blockquote>
## `hugr`
<blockquote>
##
[0.25.0](hugr-v0.24.3...hugr-v0.25.0)
- 2025-12-22
### Bug Fixes
- *(hugr-core)* [**breaking**] Return error instead of panicking in
`MakeRegisteredOp::to_extension_op()`
([#2701](#2701))
- register packaged extensions before model_ast import
([#2702](#2702))
- ModuleGraph misses static edges to non-container entrypoints
([#2745](#2745))
### Documentation
- Improve instructions for patch release
([#2720](#2720))
### New Features
- *(hugr-passes)* [**breaking**] normalize_cfgs inlines entry DFG
([#2649](#2649))
- ReplaceTypes: recurse on replacements, much deprecation
([#2442](#2442))
- Add a pass to remove redundant order edges
([#2739](#2739))
- *(hugr-passes)* [**breaking**] add NodeTemplate::LinkedHugr, deprecate
::Call ([#2749](#2749))
- return description output to python on error
([#2681](#2681))
- add hugr-core StaticGraph, deprecate hugr-passes CallGraph
([#2698](#2698))
- [**breaking**] Remove `RootCheckable`
([#2704](#2704))
- Add method to link Hugr modules (linking pt3)
([#2529](#2529))
- `insert_link_hugr` adds entrypoint subtree and links, with
reachability ([#2555](#2555))
- [**breaking**] Upgrade pyo3 dependency to 0.27
([#2736](#2736))
- [**breaking**] Bump MSRV to Rust 1.89
([#2747](#2747))
- [**breaking**] Allow disconnecting specific edges in a hugr
([#2737](#2737))
- Optype iterators over value ports
([#2738](#2738))
- [**breaking**] GeneratorDesc metadata definition
([#2759](#2759))
- [**breaking**] Type-safe access for node metadata
([#2755](#2755))
### Refactor
- [**breaking**] move envelope reading to dedicated module with
dedicated errors ([#2689](#2689))
- Direct import of model representation to Python
([#2683](#2683))
- *(linking.rs)* [**breaking**] (tiny) avoid type_complexity
([#2721](#2721))
- [**breaking**] Remove multiple deprecated definitions
([#2751](#2751))
- [**breaking**] Delete ValueArray
([#2760](#2760))
- Deprecate Value::Function and inline_constant_functions
([#2770](#2770))
### Testing
- Make Hugr valid in replace_types::op_to_call
([#2732](#2732))
</blockquote>
## `hugr-cli`
<blockquote>
##
[0.25.0](hugr-cli-v0.24.3...hugr-cli-v0.25.0)
- 2025-12-22
### New Features
- *(cli, python)* programmatic interface to cli with python bindings
([#2677](#2677))
- return description output to python on error
([#2681](#2681))
- [**breaking**] Type-safe access for node metadata
([#2755](#2755))
- [**breaking**] GeneratorDesc metadata definition
([#2759](#2759))
### Refactor
- [**breaking**] move envelope reading to dedicated module with
dedicated errors ([#2689](#2689))
- *(cli)* [**breaking**] remove deprecated hugr_json handling
([#2690](#2690))
- [**breaking**] Remove multiple deprecated definitions
([#2751](#2751))
</blockquote>
</p></details>
---
This PR was generated with
[release-plz](https://github.com/release-plz/release-plz/).
---------
Co-authored-by: Agustín Borgna <[email protected]>
## 🤖 New release * `hugr-model`: 0.25.0 -> 0.25.1 (✓ API compatible changes) * `hugr-core`: 0.25.0 -> 0.25.1 (✓ API compatible changes) * `hugr-llvm`: 0.25.0 -> 0.25.1 (✓ API compatible changes) * `hugr-passes`: 0.25.0 -> 0.25.1 (✓ API compatible changes) * `hugr-persistent`: 0.4.0 -> 0.4.1 (✓ API compatible changes) * `hugr`: 0.25.0 -> 0.25.1 (✓ API compatible changes) * `hugr-cli`: 0.25.0 -> 0.25.1 <details><summary><i><b>Changelog</b></i></summary><p> ## `hugr-model` <blockquote> ## [0.25.0](hugr-model-v0.24.3...hugr-model-v0.25.0) - 2025-12-22 ### Bug Fixes - *(model)* avoid non abi-compatible pyo3 calls ([#2679](#2679)) ### New Features - [**breaking**] Upgrade pyo3 dependency to 0.27 ([#2736](#2736)) ### Refactor - Direct import of model representation to Python ([#2683](#2683)) </blockquote> ## `hugr-core` <blockquote> ## [0.25.0](hugr-core-v0.24.3...hugr-core-v0.25.0) - 2025-12-22 ### Bug Fixes - *(hugr-core)* [**breaking**] Return error instead of panicking in `MakeRegisteredOp::to_extension_op()` ([#2701](#2701)) - register packaged extensions before model_ast import ([#2702](#2702)) - ModuleGraph misses static edges to non-container entrypoints ([#2745](#2745)) ### New Features - return description output to python on error ([#2681](#2681)) - add hugr-core StaticGraph, deprecate hugr-passes CallGraph ([#2698](#2698)) - [**breaking**] Remove `RootCheckable` ([#2704](#2704)) - Add method to link Hugr modules (linking pt3) ([#2529](#2529)) - `insert_link_hugr` adds entrypoint subtree and links, with reachability ([#2555](#2555)) - [**breaking**] Upgrade pyo3 dependency to 0.27 ([#2736](#2736)) - [**breaking**] Bump MSRV to Rust 1.89 ([#2747](#2747)) - [**breaking**] Allow disconnecting specific edges in a hugr ([#2737](#2737)) - Optype iterators over value ports ([#2738](#2738)) - [**breaking**] Type-safe access for node metadata ([#2755](#2755)) - [**breaking**] GeneratorDesc metadata definition ([#2759](#2759)) ### Refactor - [**breaking**] move envelope reading to dedicated module with dedicated errors ([#2689](#2689)) - Direct import of model representation to Python ([#2683](#2683)) - *(linking.rs)* [**breaking**] (tiny) avoid type_complexity ([#2721](#2721)) - [**breaking**] Remove multiple deprecated definitions ([#2751](#2751)) - [**breaking**] Delete ValueArray ([#2760](#2760)) - Deprecate Value::Function and inline_constant_functions ([#2770](#2770)) </blockquote> ## `hugr-llvm` <blockquote> ## [0.25.0](hugr-llvm-v0.24.3...hugr-llvm-v0.25.0) - 2025-12-22 ### New Features - *(llvm)* [**breaking**] upgrade to inkwell 0.7 ([#2695](#2695)) ### Refactor - Deprecate Value::Function and inline_constant_functions ([#2770](#2770)) </blockquote> ## `hugr-passes` <blockquote> ## [0.25.1](hugr-passes-v0.25.0...hugr-passes-v0.25.1) - 2025-12-29 ### Bug Fixes - two problems in array linearization from #2749 ([#2779](#2779)) </blockquote> ## `hugr-persistent` <blockquote> ## [0.4.0](hugr-persistent-v0.3.4...hugr-persistent-v0.4.0) - 2025-12-22 ### New Features - [**breaking**] Remove `RootCheckable` ([#2704](#2704)) - [**breaking**] Bump MSRV to Rust 1.89 ([#2747](#2747)) - [**breaking**] Type-safe access for node metadata ([#2755](#2755)) ### Refactor - [**breaking**] Remove multiple deprecated definitions ([#2751](#2751)) </blockquote> ## `hugr` <blockquote> ## [0.25.1](hugr-v0.25.0...hugr-v0.25.1) - 2025-12-29 ### Bug Fixes - two problems in array linearization from #2749 ([#2779](#2779)) </blockquote> ## `hugr-cli` <blockquote> ## [0.25.0](hugr-cli-v0.24.3...hugr-cli-v0.25.0) - 2025-12-22 ### New Features - *(cli, python)* programmatic interface to cli with python bindings ([#2677](#2677)) - return description output to python on error ([#2681](#2681)) - [**breaking**] Type-safe access for node metadata ([#2755](#2755)) - [**breaking**] GeneratorDesc metadata definition ([#2759](#2759)) ### Refactor - [**breaking**] move envelope reading to dedicated module with dedicated errors ([#2689](#2689)) - *(cli)* [**breaking**] remove deprecated hugr_json handling ([#2690](#2690)) - [**breaking**] Remove multiple deprecated definitions ([#2751](#2751)) </blockquote> </p></details> --- This PR was generated with [release-plz](https://github.com/release-plz/release-plz/).
Respin of #2531, marking the node/edge enums in the new StaticGraph as
non-exhaustiveand adding Consts + LoadConstants.(Lukas originally planned to make something like this to reflect references from Terms to functions, and non-exhaustive allows extending this StaticGraph for that purpose - if we do go that way, however, I have a different plan, can describe if relevant. Rather I think non-exhaustive is just a reasonable allowance for future extension to new use-cases hopefully without damaging existing use-cases.)
This is taken from #2555, i.e. which uses it (although there it is still called CallGraph in hugr-core).
Naming: could be ModuleGraph ?? Other ideas welcome.
I will add a test with some Consts + use of
out_edges(tho will be supplied in #2555 !)