Skip to content

feat!: Better error reporting in hugr-cli. #2318

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

Merged
merged 4 commits into from
Jun 10, 2025
Merged

feat!: Better error reporting in hugr-cli. #2318

merged 4 commits into from
Jun 10, 2025

Conversation

zrho
Copy link
Contributor

@zrho zrho commented Jun 9, 2025

This PR streamlines the error reporting in hugr-cli, displaying error source trails and setting up the tracing crate. For that, some error trait implementations were migrated to thiserror. The PR also simplifies the clap structures by pulling out the verbosity level from the individual commands. The commands should use tracing macros instead of relying on filtering for verbosity themselves.

BREAKING CHANGE: Reorganised clap commands and errors in hugr-cli which is only visible when it is used as a library.

Copy link

codecov bot commented Jun 9, 2025

Codecov Report

Attention: Patch coverage is 71.18644% with 17 lines in your changes missing coverage. Please review.

Project coverage is 82.08%. Comparing base (8a17e7c) to head (870079a).
Report is 7 commits behind head on main.

Files with missing lines Patch % Lines
hugr-cli/src/main.rs 76.19% 10 Missing ⚠️
hugr-cli/src/extensions.rs 33.33% 0 Missing and 4 partials ⚠️
hugr-cli/src/validate.rs 71.42% 2 Missing ⚠️
hugr-cli/src/mermaid.rs 75.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2318      +/-   ##
==========================================
- Coverage   82.09%   82.08%   -0.02%     
==========================================
  Files         241      240       -1     
  Lines       43893    43882      -11     
  Branches    39731    39720      -11     
==========================================
- Hits        36035    36020      -15     
- Misses       5878     5879       +1     
- Partials     1980     1983       +3     
Flag Coverage Δ
python 85.46% <ø> (ø)
rust 81.72% <71.18%> (-0.02%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@hugrbot
Copy link
Collaborator

hugrbot commented Jun 9, 2025

This PR contains breaking changes to the public Rust API.

cargo-semver-checks summary

--- 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 /home/runner/work/hugr/hugr/BASELINE_BRANCH/hugr-cli/src/validate.rs:53
MermaidArgs::verbosity, previously in file /home/runner/work/hugr/hugr/BASELINE_BRANCH/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 /home/runner/work/hugr/hugr/BASELINE_BRANCH/hugr-cli/src/validate.rs:24
field other_args of struct MermaidArgs, previously in file /home/runner/work/hugr/hugr/BASELINE_BRANCH/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 /home/runner/work/hugr/hugr/BASELINE_BRANCH/hugr-cli/src/lib.rs:77

--- 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 /home/runner/work/hugr/hugr/BASELINE_BRANCH/hugr-cli/src/lib.rs:114

@zrho zrho changed the title feat: Better error reporting in hugr-cli. feat!: Better error reporting in hugr-cli. Jun 9, 2025
@zrho zrho marked this pull request as ready for review June 10, 2025 08:50
@zrho zrho requested a review from a team as a code owner June 10, 2025 08:50
@zrho zrho requested a review from cqc-alec June 10, 2025 08:50
@zrho zrho force-pushed the zrho/validate-errors branch 2 times, most recently from 0453a9f to 870079a Compare June 10, 2025 10:04
@aborgna-q
Copy link
Collaborator

What's the reason for swapping derive_more::Error with thiserror?

I was hoping we'd be able to drop the latter at some point :/

@aborgna-q
Copy link
Collaborator

Another cool thing to setup for error reporting is human-panic. It gives a user-friendly message on panic, suggesting submitting a bugreport with the generated error dump.

@zrho
Copy link
Contributor Author

zrho commented Jun 10, 2025

The thiserror one was mostly for consistency as a driveby when setting sources since we've used thiserror in other places and it appears to be the "standard". Wasn't aware of the ambition to remove it. Luckily it's not visible in the API anyway, so we might still do that in the future.

@zrho zrho added this pull request to the merge queue Jun 10, 2025
Merged via the queue into main with commit c3a5c14 Jun 10, 2025
26 of 27 checks passed
@zrho zrho deleted the zrho/validate-errors branch June 10, 2025 18:17
@hugrbot hugrbot mentioned this pull request Jun 10, 2025
@zrho zrho self-assigned this Jun 16, 2025
@zrho zrho added the enhancement New feature or request label Jun 16, 2025
github-merge-queue bot pushed a commit that referenced this pull request Jul 10, 2025
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>
@hugrbot hugrbot mentioned this pull request Jul 16, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants