From 99fe86979cd14ad3863751540b46473e7fd9a4d7 Mon Sep 17 00:00:00 2001 From: hugrbot Date: Mon, 16 Dec 2024 14:23:14 +0000 Subject: [PATCH 1/2] chore: release --- hugr-cli/CHANGELOG.md | 19 +++++++++++++ hugr-cli/Cargo.toml | 4 +-- hugr-core/CHANGELOG.md | 57 ++++++++++++++++++++++++++++++++++++++ hugr-core/Cargo.toml | 4 +-- hugr-llvm/Cargo.toml | 4 +-- hugr-model/CHANGELOG.md | 17 ++++++++++++ hugr-model/Cargo.toml | 2 +- hugr-passes/CHANGELOG.md | 28 +++++++++++++++++++ hugr-passes/Cargo.toml | 4 +-- hugr/CHANGELOG.md | 60 ++++++++++++++++++++++++++++++++++++++++ hugr/Cargo.toml | 10 +++---- 11 files changed, 195 insertions(+), 14 deletions(-) diff --git a/hugr-cli/CHANGELOG.md b/hugr-cli/CHANGELOG.md index 45b2da10f..f06c7c3fb 100644 --- a/hugr-cli/CHANGELOG.md +++ b/hugr-cli/CHANGELOG.md @@ -1,6 +1,25 @@ # Changelog +## [0.14.0](https://github.com/CQCL/hugr/compare/hugr-cli-v0.13.3...hugr-cli-v0.14.0) - 2024-12-16 + +### New Features + +- [**breaking**] Share `Extension`s under `Arc`s (#1647) +- [**breaking**] OpDefs and TypeDefs keep a reference to their extension (#1719) +- [**breaking**] Have `CustomType`s reference their `Extension` definition (#1723) +- [**breaking**] Resolve OpaqueOps and CustomType extensions (#1735) +- [**breaking**] Hugrs now keep a `ExtensionRegistry` with their requirements (#1738) +- [**breaking**] Move arrays from prelude into new extension (#1770) + +### Performance + +- Faster singleton SiblingSubgraph construction (#1654) + +### Refactor + +- *(cli)* [**breaking**] remove deprecations (#1777) + ## [0.13.2](https://github.com/CQCL/hugr/compare/hugr-cli-v0.13.1...hugr-cli-v0.13.2) - 2024-10-22 ### New Features diff --git a/hugr-cli/Cargo.toml b/hugr-cli/Cargo.toml index 362d3efa6..0e7ec9e61 100644 --- a/hugr-cli/Cargo.toml +++ b/hugr-cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "hugr-cli" -version = "0.13.3" +version = "0.14.0" edition = { workspace = true } rust-version = { workspace = true } license = { workspace = true } @@ -19,7 +19,7 @@ bench = false clap = { workspace = true, features = ["derive"] } clap-verbosity-flag.workspace = true derive_more = { workspace = true, features = ["display", "error", "from"] } -hugr = { path = "../hugr", version = "0.13.3" } +hugr = { path = "../hugr", version = "0.14.0" } serde_json.workspace = true serde.workspace = true thiserror.workspace = true diff --git a/hugr-core/CHANGELOG.md b/hugr-core/CHANGELOG.md index 5ed0302d6..71ed13f96 100644 --- a/hugr-core/CHANGELOG.md +++ b/hugr-core/CHANGELOG.md @@ -1,5 +1,62 @@ # Changelog +## [0.14.0](https://github.com/CQCL/hugr/compare/hugr-core-v0.13.3...hugr-core-v0.14.0) - 2024-12-16 + +### Bug Fixes + +- hierarchical simple replacement using insert_hugr (#1718) +- hugr-py not adding extension-reqs on custom ops (#1759) +- [**breaking**] Replace `LoadFunction::signature` with `LoadFunction::instantiation` (#1756) +- allow disconnected outputs in SiblingSubgraph::from_node (#1769) +- Resolve types in `Value`s and custom consts (#1779) + +### Documentation + +- Fix comment for scan op (#1751) + +### New Features + +- Export/import of JSON metadata (#1622) +- Add `SiblingSubgraph::from_node` (#1655) +- [**breaking**] Replace GATs with `impl Iterator` returns (RPITIT) on `HugrView` (#1660) +- Emulate `TypeBound`s on parameters via constraints. (#1624) +- Add array `repeat` and `scan` ops (#1633) +- move unwrap builder to hugr core (#1674) +- [**breaking**] Share `Extension`s under `Arc`s (#1647) +- Lists and extension sets with splicing (#1657) +- [**breaking**] OpDefs and TypeDefs keep a reference to their extension (#1719) +- add HugrView::first_child and HugrMut::remove_subtree (#1721) +- Lower collections extension (#1720) +- [**breaking**] Have `CustomType`s reference their `Extension` definition (#1723) +- [**breaking**] Resolve OpaqueOps and CustomType extensions (#1735) +- [**breaking**] impl HugrView for any &(mut) to a HugrView (#1678) +- [**breaking**] Make array repeat and scan ops generic over extension reqs (#1716) +- Print []+[] as Bool and [] as Unit in user-facing messages (#1745) +- [**breaking**] `used_extensions` calls for both ops and signatures (#1739) +- [**breaking**] Hugrs now keep a `ExtensionRegistry` with their requirements (#1738) +- Add `PartialEq` impls for `FuncTypeBase` and `Cow` (#1762) +- [**breaking**] Rename `collections` extension to `collections.list` (#1764) +- add `is_` variant methods to `EdgeKind` (#1768) +- [**breaking**] Move arrays from prelude into new extension (#1770) +- Add `LoadNat` operation to enable loading generic `BoundedNat`s into runtime values (#1763) +- [**breaking**] Add `monomorphization` pass (#1733) +- [**breaking**] rename `extension_reqs` to `runtime_reqs` (#1776) +- Update extension pointers in customConsts (#1780) +- [**breaking**] Use registries of `Weak`s when doing resolution (#1781) +- [**breaking**] Resolve extension references inside the extension themselves (#1783) +- [**breaking**] Don't require explicit extension registers for validation (#1784) +- [**breaking**] Remove ExtensionRegistry args in UnwrapBuilder and ListOp (#1785) + +### Performance + +- Faster singleton SiblingSubgraph construction (#1654) +- Return `Cow` where possible (#1743) + +### Refactor + +- avoid hugr clone in simple replace (#1724) +- [trivial] replace.rs: use HugrView::first_child (#1737) + ## [0.13.3](https://github.com/CQCL/hugr/compare/hugr-core-v0.13.2...hugr-core-v0.13.3) - 2024-11-06 ### Bug Fixes diff --git a/hugr-core/Cargo.toml b/hugr-core/Cargo.toml index 84b83677f..b84de3812 100644 --- a/hugr-core/Cargo.toml +++ b/hugr-core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "hugr-core" -version = "0.13.3" +version = "0.14.0" edition = { workspace = true } rust-version = { workspace = true } @@ -53,7 +53,7 @@ paste = { workspace = true } strum = { workspace = true } strum_macros = { workspace = true } semver = { version = "1.0.23", features = ["serde"] } -hugr-model = { version = "0.14.0", path = "../hugr-model", optional = true } +hugr-model = { version = "0.15.0", path = "../hugr-model", optional = true } indexmap.workspace = true fxhash.workspace = true bumpalo = { workspace = true, features = ["collections"] } diff --git a/hugr-llvm/Cargo.toml b/hugr-llvm/Cargo.toml index fd8035457..636e69d32 100644 --- a/hugr-llvm/Cargo.toml +++ b/hugr-llvm/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "hugr-llvm" -version = "0.13.3" +version = "0.14.0" description = "A general and extensible crate for lowering HUGRs into LLVM IR" edition.workspace = true @@ -32,7 +32,7 @@ llvm14-0 = ["inkwell/llvm14-0"] [dependencies] inkwell = { version = "0.5.0", default-features = false } -hugr-core = { path = "../hugr-core", version = "0.13.3" } +hugr-core = { path = "../hugr-core", version = "0.14.0" } anyhow = "1.0.83" itertools.workspace = true delegate.workspace = true diff --git a/hugr-model/CHANGELOG.md b/hugr-model/CHANGELOG.md index 91140d84e..9e6a07b81 100644 --- a/hugr-model/CHANGELOG.md +++ b/hugr-model/CHANGELOG.md @@ -1,5 +1,22 @@ # Changelog +## [0.15.0](https://github.com/CQCL/hugr/compare/hugr-model-v0.14.0...hugr-model-v0.15.0) - 2024-12-16 + +### Bug Fixes + +- Ignare lint warnings in capnproto generated code (#1728) + +### New Features + +- Export/import of JSON metadata (#1622) +- Emulate `TypeBound`s on parameters via constraints. (#1624) +- Lists and extension sets with splicing (#1657) +- [**breaking**] Have `CustomType`s reference their `Extension` definition (#1723) + +### Performance + +- Faster singleton SiblingSubgraph construction (#1654) + ## [0.14.0](https://github.com/CQCL/hugr/compare/hugr-model-v0.13.2...hugr-model-v0.14.0) - 2024-11-06 ### New Features diff --git a/hugr-model/Cargo.toml b/hugr-model/Cargo.toml index d529e7941..9c5b50347 100644 --- a/hugr-model/Cargo.toml +++ b/hugr-model/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "hugr-model" -version = "0.14.0" +version = "0.15.0" readme = "README.md" documentation = "https://docs.rs/hugr-model/" description = "Data model for Quantinuum's HUGR intermediate representation" diff --git a/hugr-passes/CHANGELOG.md b/hugr-passes/CHANGELOG.md index 7fc295ae2..0040f4d66 100644 --- a/hugr-passes/CHANGELOG.md +++ b/hugr-passes/CHANGELOG.md @@ -1,6 +1,34 @@ # Changelog +## [0.14.0](https://github.com/CQCL/hugr/compare/hugr-passes-v0.13.3...hugr-passes-v0.14.0) - 2024-12-16 + +### Bug Fixes + +- allow disconnected outputs in SiblingSubgraph::from_node (#1769) + +### New Features + +- [**breaking**] Replace GATs with `impl Iterator` returns (RPITIT) on `HugrView` (#1660) +- [**breaking**] Share `Extension`s under `Arc`s (#1647) +- [**breaking**] OpDefs and TypeDefs keep a reference to their extension (#1719) +- [**breaking**] Have `CustomType`s reference their `Extension` definition (#1723) +- [**breaking**] Resolve OpaqueOps and CustomType extensions (#1735) +- Dataflow analysis framework (#1476) +- [**breaking**] `used_extensions` calls for both ops and signatures (#1739) +- [**breaking**] Hugrs now keep a `ExtensionRegistry` with their requirements (#1738) +- *(hugr-passes)* [**breaking**] Rewrite constant_fold_pass using dataflow framework (#1603) +- [**breaking**] Rename `collections` extension to `collections.list` (#1764) +- [**breaking**] Add `monomorphization` pass (#1733) +- [**breaking**] rename `extension_reqs` to `runtime_reqs` (#1776) +- [**breaking**] Don't require explicit extension registers for validation (#1784) +- [**breaking**] Remove ExtensionRegistry args in UnwrapBuilder and ListOp (#1785) + +### Performance + +- Faster singleton SiblingSubgraph construction (#1654) +- Return `Cow` where possible (#1743) + ## [0.13.2](https://github.com/CQCL/hugr/compare/hugr-passes-v0.13.1...hugr-passes-v0.13.2) - 2024-10-22 ### New Features diff --git a/hugr-passes/Cargo.toml b/hugr-passes/Cargo.toml index a70cb2f32..afedd7658 100644 --- a/hugr-passes/Cargo.toml +++ b/hugr-passes/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "hugr-passes" -version = "0.13.3" +version = "0.14.0" edition = { workspace = true } rust-version = { workspace = true } license = { workspace = true } @@ -16,7 +16,7 @@ categories = ["compilers"] bench = false [dependencies] -hugr-core = { path = "../hugr-core", version = "0.13.3" } +hugr-core = { path = "../hugr-core", version = "0.14.0" } portgraph = { workspace = true } ascent = { version = "0.7.0" } itertools = { workspace = true } diff --git a/hugr/CHANGELOG.md b/hugr/CHANGELOG.md index 69bb4ade4..81bf87e46 100644 --- a/hugr/CHANGELOG.md +++ b/hugr/CHANGELOG.md @@ -1,5 +1,65 @@ # Changelog +## [0.14.0](https://github.com/CQCL/hugr/compare/hugr-v0.13.3...hugr-v0.14.0) - 2024-12-16 + +### Bug Fixes + +- hierarchical simple replacement using insert_hugr (#1718) +- hugr-py not adding extension-reqs on custom ops (#1759) +- [**breaking**] Replace `LoadFunction::signature` with `LoadFunction::instantiation` (#1756) +- Resolve types in `Value`s and custom consts (#1779) +- allow disconnected outputs in SiblingSubgraph::from_node (#1769) + +### Documentation + +- Fix comment for scan op (#1751) + +### New Features + +- Dataflow analysis framework (#1476) +- *(hugr-passes)* [**breaking**] Rewrite constant_fold_pass using dataflow framework (#1603) +- Export/import of JSON metadata (#1622) +- Add `SiblingSubgraph::from_node` (#1655) +- [**breaking**] Replace GATs with `impl Iterator` returns (RPITIT) on `HugrView` (#1660) +- Emulate `TypeBound`s on parameters via constraints. (#1624) +- Add array `repeat` and `scan` ops (#1633) +- move unwrap builder to hugr core (#1674) +- Lists and extension sets with splicing (#1657) +- add HugrView::first_child and HugrMut::remove_subtree (#1721) +- Lower collections extension (#1720) +- [**breaking**] impl HugrView for any &(mut) to a HugrView (#1678) +- [**breaking**] Make array repeat and scan ops generic over extension reqs (#1716) +- Print []+[] as Bool and [] as Unit in user-facing messages (#1745) +- Add `PartialEq` impls for `FuncTypeBase` and `Cow` (#1762) +- [**breaking**] Rename `collections` extension to `collections.list` (#1764) +- add `is_` variant methods to `EdgeKind` (#1768) +- [**breaking**] Move arrays from prelude into new extension (#1770) +- Add `LoadNat` operation to enable loading generic `BoundedNat`s into runtime values (#1763) +- [**breaking**] Add `monomorphization` pass (#1733) +- Update extension pointers in customConsts (#1780) +- [**breaking**] Use registries of `Weak`s when doing resolution (#1781) +- [**breaking**] Resolve extension references inside the extension themselves (#1783) +- [**breaking**] Remove ExtensionRegistry args in UnwrapBuilder and ListOp (#1785) +- export llvm test utilities under llvm-test feature (#1677) +- [**breaking**] Share `Extension`s under `Arc`s (#1647) +- [**breaking**] OpDefs and TypeDefs keep a reference to their extension (#1719) +- [**breaking**] Have `CustomType`s reference their `Extension` definition (#1723) +- [**breaking**] Resolve OpaqueOps and CustomType extensions (#1735) +- [**breaking**] `used_extensions` calls for both ops and signatures (#1739) +- [**breaking**] Hugrs now keep a `ExtensionRegistry` with their requirements (#1738) +- [**breaking**] rename `extension_reqs` to `runtime_reqs` (#1776) +- [**breaking**] Don't require explicit extension registers for validation (#1784) + +### Performance + +- Return `Cow` where possible (#1743) +- Faster singleton SiblingSubgraph construction (#1654) + +### Refactor + +- avoid hugr clone in simple replace (#1724) +- [trivial] replace.rs: use HugrView::first_child (#1737) + ## [0.13.3](https://github.com/CQCL/hugr/compare/hugr-v0.13.2...hugr-v0.13.3) - 2024-11-06 ### Bug Fixes diff --git a/hugr/Cargo.toml b/hugr/Cargo.toml index d4f499ca0..b794360ca 100644 --- a/hugr/Cargo.toml +++ b/hugr/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "hugr" -version = "0.13.3" +version = "0.14.0" edition = { workspace = true } rust-version = { workspace = true } @@ -29,10 +29,10 @@ llvm = ["hugr-llvm/llvm14-0"] llvm-test = ["hugr-llvm/llvm14-0", "hugr-llvm/test-utils"] [dependencies] -hugr-model = { path = "../hugr-model", optional = true, version = "0.14.0" } -hugr-core = { path = "../hugr-core", version = "0.13.3" } -hugr-passes = { path = "../hugr-passes", version = "0.13.3" } -hugr-llvm = {path = "../hugr-llvm", version = "0.13.3", optional = true} +hugr-model = { path = "../hugr-model", optional = true, version = "0.15.0" } +hugr-core = { path = "../hugr-core", version = "0.14.0" } +hugr-passes = { path = "../hugr-passes", version = "0.14.0" } +hugr-llvm = {path = "../hugr-llvm", version = "0.14.0", optional = true} [dev-dependencies] rstest = { workspace = true } From 4cdf44b257df96dc4efe7647d5347966d19387b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Agust=C3=ADn=20Borgna?= Date: Mon, 16 Dec 2024 13:16:44 +0000 Subject: [PATCH 2/2] Add breaking changes to the changelogs --- hugr-cli/CHANGELOG.md | 4 ++++ hugr-core/CHANGELOG.md | 40 ++++++++++++++++++++++++++++++++++ hugr-passes/CHANGELOG.md | 9 ++++++++ hugr/CHANGELOG.md | 47 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 100 insertions(+) diff --git a/hugr-cli/CHANGELOG.md b/hugr-cli/CHANGELOG.md index f06c7c3fb..f00d008db 100644 --- a/hugr-cli/CHANGELOG.md +++ b/hugr-cli/CHANGELOG.md @@ -3,6 +3,10 @@ ## [0.14.0](https://github.com/CQCL/hugr/compare/hugr-cli-v0.13.3...hugr-cli-v0.14.0) - 2024-12-16 +### ⚠ BREAKING CHANGES + +- Updated to `hugr 0.14`, which includes breaking changes to the serialization format. + ### New Features - [**breaking**] Share `Extension`s under `Arc`s (#1647) diff --git a/hugr-core/CHANGELOG.md b/hugr-core/CHANGELOG.md index 71ed13f96..6ce9cc73f 100644 --- a/hugr-core/CHANGELOG.md +++ b/hugr-core/CHANGELOG.md @@ -2,6 +2,46 @@ ## [0.14.0](https://github.com/CQCL/hugr/compare/hugr-core-v0.13.3...hugr-core-v0.14.0) - 2024-12-16 +This release includes a long list of breaking changes that simplify the API, specially around +extensions and extension registry management. + +Extension definitions are now tracked by each operation and type inside the hugr, so there is no +need to pass around extension registries any more. + +### ⚠ BREAKING CHANGES + +#### Core + +- The `LoadFunction::signature` field has been removed. Replaced with `DataflowOpTrait::signature()`. +- Types which implement `AsRef` - both library ones such as `Rc` and custom ones - no longer get a blanket impl of `HugrView`. Workaround by manually calling `as_ref()` and using the `&Hugr` yourself. +- Removed `Array` type variant from the serialization format. +- `Optrait` now requires `Sized` and `Clone` and is no longer object safe. +- `DataflowOptrait` now requires `Sized` and has an additional required method `substitute`. +- `::extension::resolve` operations now use `WeakExtensionRegistry`es. +- `ExtensionRegistry` and `Package` now wrap Extensions in `Arc`s. +- Renamed `OpDef::extension` and `TypeDef::extension` to `extension_id`. extension now returns weak references to the Extension defining them. +- `Extension::with_reqs` moved to `set_reqs`, which takes `&mut self` instead of `self`. +- `Extension::add_type` and `Extension::add_op` now take an extra parameter. See docs for example usage. +- `ExtensionRegistry::register_updated` and `register_updated_ref` are no longer fallible. +- Removed `CustomType::new_simple`. Custom types can no longer be const-constructed. +- Added `init_signature` and `extension_ref` methods to the `MakeOpDef` trait. +- Redefined the const types in the prelude to generator functions. +- Removed `resolve_opaque_op` and `resolve_extension_ops`. Use `Hugr::resolve_extension_defs` instead. +- Removed `ExtensionRegistry::try_new`. Use `new` instead, and call `ExtensionRegistry::validate` to validate. +- `ExtensionSet::insert` and `singleton` take extension ids by value instead of cloning internally. +- Removed `update_validate`. The hugr extensions should be resolved at load time, so we can use validate instead. +- The builder `finish_hugr` function family no longer takes a registry as parameter, and the `_prelude` variants have been removed. +- `extension_reqs` field in `FunctionType` and `Extension` renamed to `runtime_reqs`. +- Removed the extension registry argument from validate calls. +- Removed the extension registry argument from operation instantiation methods. +- Removed most extension-specific test registries. Use `EMPTY_REG`, `PRELUDE_REGISTRY`, or `STD_REG` instead. + +#### Extensions + +- Array scan and repeat ops get an additional type parameter specifying the extension requirements of their input functions. Furthermore, repeat is no longer part of `ArrayOpDef` but is instead specified via a new `ArrayScan` struct. +- `collections` extension renamed to `collections.list` +- Array type and operations have been moved out of prelude and into a new `collections.array` extension. + ### Bug Fixes - hierarchical simple replacement using insert_hugr (#1718) diff --git a/hugr-passes/CHANGELOG.md b/hugr-passes/CHANGELOG.md index 0040f4d66..2330446e0 100644 --- a/hugr-passes/CHANGELOG.md +++ b/hugr-passes/CHANGELOG.md @@ -3,6 +3,15 @@ ## [0.14.0](https://github.com/CQCL/hugr/compare/hugr-passes-v0.13.3...hugr-passes-v0.14.0) - 2024-12-16 +### ⚠ BREAKING CHANGES + +- Updated to `hugr 0.14`, which includes breaking changes to the serialization format. + +- `ConstantFoldPass` is no longer `UnwindSafe`, `RefUnwindSafe`, nor `Copy`. +- `fold_leaf_op` and `find_consts` have been removed. +- `ConstantFoldPass::new` function removed. Instead use `ConstantFoldPass::default`. +- Variant `ConstFoldError::SimpleReplacementError` was removed. + ### Bug Fixes - allow disconnected outputs in SiblingSubgraph::from_node (#1769) diff --git a/hugr/CHANGELOG.md b/hugr/CHANGELOG.md index 81bf87e46..daf14a989 100644 --- a/hugr/CHANGELOG.md +++ b/hugr/CHANGELOG.md @@ -2,6 +2,53 @@ ## [0.14.0](https://github.com/CQCL/hugr/compare/hugr-v0.13.3...hugr-v0.14.0) - 2024-12-16 +This release includes a long list of breaking changes that simplify the API, specially around +extensions and extension registry management. + +Extension definitions are now tracked by each operation and type inside the hugr, so there is no +need to pass around extension registries any more. + +### ⚠ BREAKING CHANGES + +#### Core + +- The `LoadFunction::signature` field has been removed. Replaced with `DataflowOpTrait::signature()`. +- Types which implement `AsRef` - both library ones such as `Rc` and custom ones - no longer get a blanket impl of `HugrView`. Workaround by manually calling `as_ref()` and using the `&Hugr` yourself. +- Removed `Array` type variant from the serialization format. +- `Optrait` now requires `Sized` and `Clone` and is no longer object safe. +- `DataflowOptrait` now requires `Sized` and has an additional required method `substitute`. +- `::extension::resolve` operations now use `WeakExtensionRegistry`es. +- `ExtensionRegistry` and `Package` now wrap Extensions in `Arc`s. +- Renamed `OpDef::extension` and `TypeDef::extension` to `extension_id`. extension now returns weak references to the Extension defining them. +- `Extension::with_reqs` moved to `set_reqs`, which takes `&mut self` instead of `self`. +- `Extension::add_type` and `Extension::add_op` now take an extra parameter. See docs for example usage. +- `ExtensionRegistry::register_updated` and `register_updated_ref` are no longer fallible. +- Removed `CustomType::new_simple`. Custom types can no longer be const-constructed. +- Added `init_signature` and `extension_ref` methods to the `MakeOpDef` trait. +- Redefined the const types in the prelude to generator functions. +- Removed `resolve_opaque_op` and `resolve_extension_ops`. Use `Hugr::resolve_extension_defs` instead. +- Removed `ExtensionRegistry::try_new`. Use `new` instead, and call `ExtensionRegistry::validate` to validate. +- `ExtensionSet::insert` and `singleton` take extension ids by value instead of cloning internally. +- Removed `update_validate`. The hugr extensions should be resolved at load time, so we can use validate instead. +- The builder `finish_hugr` function family no longer takes a registry as parameter, and the `_prelude` variants have been removed. +- `extension_reqs` field in `FunctionType` and `Extension` renamed to `runtime_reqs`. +- Removed the extension registry argument from validate calls. +- Removed the extension registry argument from operation instantiation methods. +- Removed most extension-specific test registries. Use `EMPTY_REG`, `PRELUDE_REGISTRY`, or `STD_REG` instead. + +#### Extensions + +- Array scan and repeat ops get an additional type parameter specifying the extension requirements of their input functions. Furthermore, repeat is no longer part of `ArrayOpDef` but is instead specified via a new `ArrayScan` struct. +- `collections` extension renamed to `collections.list` +- Array type and operations have been moved out of prelude and into a new `collections.array` extension. + +#### Passes + +- `ConstantFoldPass` is no longer `UnwindSafe`, `RefUnwindSafe`, nor `Copy`. +- `fold_leaf_op` and `find_consts` have been removed. +- `ConstantFoldPass::new` function removed. Instead use `ConstantFoldPass::default`. +- Variant `ConstFoldError::SimpleReplacementError` was removed. + ### Bug Fixes - hierarchical simple replacement using insert_hugr (#1718)