Conversation
(copied from Seyon's branch)
This reverts commit 3dacad4.
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #2901 +/- ##
==========================================
- Coverage 83.78% 83.78% -0.01%
==========================================
Files 267 267
Lines 52995 52975 -20
Branches 46934 46914 -20
==========================================
- Hits 44401 44384 -17
- Misses 6314 6320 +6
+ Partials 2280 2271 -9
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:
|
|
This PR contains breaking changes to the public Rust API. cargo-semver-checks summary |
Any clues on the reason behind it? 1.91 updates the LLVM version used by |
Not really - I can't reproduce the error in a local x86 Ubuntu container so it's hard for me to see what's going on. Seems to be some issues with the And with 1.90: |
ss2165
left a comment
There was a problem hiding this comment.
Looks great thank you, ready to go I think really just a couple of minor clarifications + double check we want to merge the breaking change
| .add_default_int_extensions() | ||
| }); | ||
| assert_eq!(i, exec_ctx.exec_hugr_u64(hugr, "main")); | ||
| assert_eq!(i != 0, exec_ctx.exec_hugr::<bool>(hugr, "main")); |
There was a problem hiding this comment.
I can't track where this change comes from?
There was a problem hiding this comment.
This is from changing the JIT tests to call raw function pointers - that path is somewhat pickier about integer width than the old ExecutionEngine::run_function approach. Previously we were calling exec_hugr_u64 on things that didn't return i64 and it just happened to work. Added a note about this in the description
|
|
||
| #[rstest] | ||
| #[case("inarrow_s", 6, 2, 4)] | ||
| #[case("inarrow_s", 6, 3, 4)] |
There was a problem hiding this comment.
is this reflecting a bug in the original test?
There was a problem hiding this comment.
I think so - log width 2 would be an i4 but LLVM has no such type?
| inputs: | ||
| nixpkgs: | ||
| url: github:NixOS/nixpkgs/nixpkgs-unstable | ||
| nixpkgs-2505: |
ss2165
left a comment
There was a problem hiding this comment.
Wait to merge with other breaking PRs in milestone: https://github.com/Quantinuum/hugr/milestone/25
|
We're now merging the breaking PRs from the milestone, so feel free to queue this |
and apply/ignore some new lints
| }; | ||
| let nval = n.value_u(); | ||
| let mval = m.value_u(); | ||
| #[allow(clippy::manual_checked_ops)] |
There was a problem hiding this comment.
These do not exist in stable rust
Build times for `--workspace --all-features` went from >2mins to over 30mins after we merged #2901. It affected not only `hugr-llvm` every crate, but every dependant too; | Unit | Total | Features | -- | -- | -- | hugr-cli v0.25.7 describe "test" (test) | 1265.1s | default, tracing | hugr-cli v0.25.7 validate "test" (test) | 1261.7s | default, tracing | hugr-cli v0.25.7 hugr "bin" | 1260.8s | default, tracing | hugr-cli v0.25.7 convert "test" (test) | 1253.3s | default, tracing | hugr-core v0.25.7 hugr_core "lib" (test) | 633.8s | declarative, default, serde_yaml, zstd | hugr-core v0.25.7 model "test" (test) | 607.4s | declarative, default, serde_yaml, zstd We are tracking down this issue, but in the meantime this PR removes the `hugr-llvm` feature from the stable required checks, so we can continue doing development without waiting hours to merge stuff. Here is a `cargo test --timings` example: [cargo-timing.html](https://github.com/user-attachments/files/25884694/cargo-timing.html) I made a couple drive-byes to help with the still slow cases: drive-by: Remove unneeded transitive `aws-lc-sys` dependency, that was slow to compile. drive-by: Fix `rs-semver-checks`. #2901 updated it in an incorrect way drive-by: Add a concurrency limit to the rust checks workflow, so pushing new changes to a PR stops existing runs. --------- Co-authored-by: Alec Edgington <[email protected]>
## 🤖 New release
* `hugr-model`: 0.25.7 -> 0.26.0 (✓ API compatible changes)
* `hugr-core`: 0.25.7 -> 0.26.0 (⚠ API breaking changes)
* `hugr-llvm`: 0.25.7 -> 0.26.0 (✓ API compatible changes)
* `hugr-persistent`: 0.4.7 -> 0.5.0 (✓ API compatible changes)
* `hugr`: 0.25.7 -> 0.26.0 (✓ API compatible changes)
* `hugr-passes`: 0.25.7 -> 0.26.0 (⚠ API breaking changes)
* `hugr-cli`: 0.25.7 -> 0.26.0 (✓ API compatible changes)
### ⚠ `hugr-core` breaking changes
```text
--- 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.46.0/src/lints/enum_struct_variant_field_added.ron
Failed in:
field pkg of variant LowerFunc::FixedHugr in /tmp/.tmpGqHhMb/hugr/hugr-core/src/extension/op_def.rs:312
--- 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.46.0/src/lints/enum_struct_variant_field_missing.ron
Failed in:
field hugr of variant LowerFunc::FixedHugr, previously in file /tmp/.tmpqeiszk/hugr-core/src/extension/op_def.rs:303
--- 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.46.0/src/lints/enum_variant_missing.ron
Failed in:
variant BuildError::HugrInsertionError, previously in file /tmp/.tmpqeiszk/hugr-core/src/builder.rs:186
variant EnvelopeFormat::ModelText, previously in file /tmp/.tmpqeiszk/hugr-core/src/envelope/header.rs:60
variant EnvelopeFormat::ModelTextWithExtensions, previously in file /tmp/.tmpqeiszk/hugr-core/src/envelope/header.rs:70
variant Value::Function, previously in file /tmp/.tmpqeiszk/hugr-core/src/ops/constant.rs:169
variant Value::Function, previously in file /tmp/.tmpqeiszk/hugr-core/src/ops/constant.rs:169
--- 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.46.0/src/lints/function_missing.ron
Failed in:
function hugr_core::envelope::read_described_envelope, previously in file /tmp/.tmpqeiszk/hugr-core/src/envelope.rs:98
--- 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.46.0/src/lints/inherent_method_missing.ron
Failed in:
Value::function, previously in file /tmp/.tmpqeiszk/hugr-core/src/ops/constant.rs:380
Value::function, previously in file /tmp/.tmpqeiszk/hugr-core/src/ops/constant.rs:380
```
### ⚠ `hugr-passes` breaking changes
```text
--- failure derive_trait_impl_removed: built-in derived trait no longer implemented ---
Description:
A public type has stopped deriving one or more traits. This can break downstream code that depends on those types implementing those traits.
ref: https://doc.rust-lang.org/reference/attributes/derive.html#derive
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/derive_trait_impl_removed.ron
Failed in:
type RedundantOrderEdgesPass no longer derives Copy, in /tmp/.tmpGqHhMb/hugr/hugr-passes/src/redundant_order_edges.rs:26
--- 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.46.0/src/lints/enum_missing.ron
Failed in:
enum hugr_passes::untuple::UntupleRecursive, previously in file /tmp/.tmpqeiszk/hugr-passes/src/untuple.rs:23
--- 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.46.0/src/lints/function_missing.ron
Failed in:
function hugr_passes::remove_dead_funcs, previously in file /tmp/.tmpqeiszk/hugr-passes/src/dead_funcs.rs:179
function hugr_passes::const_fold::constant_fold_pass, previously in file /tmp/.tmpqeiszk/hugr-passes/src/const_fold.rs:224
function hugr_passes::non_local::nonlocal_edges, previously in file /tmp/.tmpqeiszk/hugr-passes/src/non_local.rs:39
function hugr_passes::nonlocal_edges, previously in file /tmp/.tmpqeiszk/hugr-passes/src/non_local.rs:39
function hugr_passes::monomorphize, previously in file /tmp/.tmpqeiszk/hugr-passes/src/monomorphize.rs:36
--- 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.46.0/src/lints/inherent_method_missing.ron
Failed in:
UntuplePass::new, previously in file /tmp/.tmpqeiszk/hugr-passes/src/untuple.rs:102
UntuplePass::set_parent, previously in file /tmp/.tmpqeiszk/hugr-passes/src/untuple.rs:114
UntuplePass::recursive, previously in file /tmp/.tmpqeiszk/hugr-passes/src/untuple.rs:136
UntuplePass::find_rewrites, previously in file /tmp/.tmpqeiszk/hugr-passes/src/untuple.rs:151
UntuplePass::new, previously in file /tmp/.tmpqeiszk/hugr-passes/src/untuple.rs:102
UntuplePass::set_parent, previously in file /tmp/.tmpqeiszk/hugr-passes/src/untuple.rs:114
UntuplePass::recursive, previously in file /tmp/.tmpqeiszk/hugr-passes/src/untuple.rs:136
UntuplePass::find_rewrites, previously in file /tmp/.tmpqeiszk/hugr-passes/src/untuple.rs:151
RedundantOrderEdgesPass::new, previously in file /tmp/.tmpqeiszk/hugr-passes/src/redundant_order_edges.rs:39
RedundantOrderEdgesPass::recursive, previously in file /tmp/.tmpqeiszk/hugr-passes/src/redundant_order_edges.rs:44
RemoveDeadFuncsPass::with_module_entry_points, previously in file /tmp/.tmpqeiszk/hugr-passes/src/dead_funcs.rs:75
NormalizeCFGPass::cfgs, previously in file /tmp/.tmpqeiszk/hugr-passes/src/normalize_cfgs.rs:121
ValueHandle::new_const_hugr, previously in file /tmp/.tmpqeiszk/hugr-passes/src/const_fold/value_handle.rs:95
--- failure trait_added_supertrait: non-sealed trait added new supertraits ---
Description:
A non-sealed trait added one or more supertraits, which breaks downstream implementations of the trait
ref: https://doc.rust-lang.org/cargo/reference/semver.html#generic-bounds-tighten
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/trait_added_supertrait.ron
Failed in:
trait hugr_passes::composable::ComposablePass gained WithScope in file /tmp/.tmpGqHhMb/hugr/hugr-passes/src/composable.rs:25
trait hugr_passes::ComposablePass gained WithScope in file /tmp/.tmpGqHhMb/hugr/hugr-passes/src/composable.rs:25
--- 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.46.0/src/lints/trait_method_missing.ron
Failed in:
method value_from_const_hugr of trait ConstLoader, previously in file /tmp/.tmpqeiszk/hugr-passes/src/dataflow.rs:73
method with_scope_internal of trait ComposablePass, previously in file /tmp/.tmpqeiszk/hugr-passes/src/composable.rs:45
method with_scope_internal of trait ComposablePass, previously in file /tmp/.tmpqeiszk/hugr-passes/src/composable.rs:45
--- failure type_allows_fewer_generic_type_params: type now allows fewer generic type parameters ---
Description:
A type now allows fewer generic type parameters than it used to. Uses of this type that supplied all previously-supported generic types will be broken.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#trait-new-parameter-no-default
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/type_allows_fewer_generic_type_params.ron
Failed in:
Struct NormalizeCFGPass allows 1 -> 0 generic types in /tmp/.tmpGqHhMb/hugr/hugr-passes/src/normalize_cfgs.rs:101
--- failure unit_struct_changed_kind: unit struct changed kind ---
Description:
A public unit struct has been changed to a normal (curly-braces) struct, which cannot be constructed using the same struct literal syntax.
ref: rust-lang/cargo#10871
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/unit_struct_changed_kind.ron
Failed in:
struct MonomorphizePass in /tmp/.tmpGqHhMb/hugr/hugr-passes/src/monomorphize.rs:178
struct InlineDFGsPass in /tmp/.tmpGqHhMb/hugr/hugr-passes/src/inline_dfgs.rs:17
struct LocalizeEdges in /tmp/.tmpGqHhMb/hugr/hugr-passes/src/non_local.rs:23
```
<details><summary><i><b>Changelog</b></i></summary><p>
## `hugr-model`
<blockquote>
##
[0.26.0](hugr-model-v0.25.7...hugr-model-v0.26.0)
- 2026-03-16
### Testing
- Replace model text snapshots with roundtrip tests
([#2933](#2933))
- Add missing width arg in model-call example
([#2945](#2945))
</blockquote>
## `hugr-core`
<blockquote>
##
[0.26.0](hugr-core-v0.25.7...hugr-core-v0.26.0)
- 2026-03-16
### Bug Fixes
- Keep declared used_extensions in envelope description
([#2932](#2932))
### Documentation
- Move `spec/schema` and `spec/std_extensions` to `resources/`
([#2897](#2897))
### Miscellaneous Tasks
- [**breaking**] Fix new clippy warning on rust 1.94
([#2912](#2912))
### New Features
- [**breaking**] Rename ModelText envelope format to SExpression
([#2927](#2927))
- [**breaking**] Fix lower_funcs with custom extensions failing to load
([#2925](#2925))
- [**breaking**] TypeRow: add impl From array of Type, remove From<Type>
([#2784](#2784))
- Deprecate HugrView::as_petgraph
([#2944](#2944))
### Refactor
- [**breaking**] Remove deprecated Value::Function
([#2928](#2928))
- [**breaking**] Remove deprecated definitions
([#2930](#2930))
### Testing
- Fix type_row intos in doctests
([#2941](#2941))
- Add missing width arg in model-call example
([#2945](#2945))
</blockquote>
## `hugr-llvm`
<blockquote>
##
[0.26.0](hugr-llvm-v0.25.7...hugr-llvm-v0.26.0)
- 2026-03-16
### New Features
- *(llvm)* [**breaking**] Upgrade to LLVM 21
([#2901](#2901))
- Include private HUGR functions in the local symbol table
([#2831](#2831))
- [**breaking**] TypeRow: add impl From array of Type, remove From<Type>
([#2784](#2784))
### Refactor
- [**breaking**] Remove deprecated Value::Function
([#2928](#2928))
- [**breaking**] Remove deprecated stack_array codegen
([#2929](#2929))
</blockquote>
## `hugr-persistent`
<blockquote>
##
[0.5.0](hugr-persistent-v0.4.7...hugr-persistent-v0.5.0)
- 2026-03-16
### New Features
- *(llvm)* [**breaking**] Upgrade to LLVM 21
([#2901](#2901))
- [**breaking**] TypeRow: add impl From array of Type, remove From<Type>
([#2784](#2784))
</blockquote>
## `hugr`
<blockquote>
##
[0.26.0](hugr-v0.25.7...hugr-v0.26.0)
- 2026-03-16
### Bug Fixes
- Keep declared used_extensions in envelope description
([#2932](#2932))
### Documentation
- Move `spec/schema` and `spec/std_extensions` to `resources/`
([#2897](#2897))
### Miscellaneous Tasks
- [**breaking**] Fix new clippy warning on rust 1.94
([#2912](#2912))
### New Features
- [**breaking**] Update remainder of passes to use PassScope, drop
default with_scope
([#2871](#2871))
- [**breaking**] Make `WithScope` a supertrait of `ComposablePass`
([#2921](#2921))
- [**breaking**] Rename ModelText envelope format to SExpression
([#2927](#2927))
- [**breaking**] Fix lower_funcs with custom extensions failing to load
([#2925](#2925))
- Deprecate HugrView::as_petgraph
([#2944](#2944))
- [**breaking**] `hugr-passes` is no longer reexported from
`hugr::algorithms`
([#2922](#2922))
- *(llvm)* [**breaking**] Upgrade to LLVM 21
([#2901](#2901))
- [**breaking**] TypeRow: add impl From array of Type, remove From<Type>
([#2784](#2784))
### Refactor
- [**breaking**] Remove deprecated pass configuration
([#2938](#2938))
- [**breaking**] Remove deprecated Value::Function
([#2928](#2928))
- [**breaking**] Remove deprecated definitions
([#2930](#2930))
### Testing
- Fix type_row intos in doctests
([#2941](#2941))
- Add missing width arg in model-call example
([#2945](#2945))
</blockquote>
## `hugr-passes`
<blockquote>
##
[0.26.0](hugr-passes-v0.25.7...hugr-passes-v0.26.0)
- 2026-03-16
### New Features
- [**breaking**] `hugr-passes` is no longer reexported from
`hugr::algorithms`
([#2922](#2922))
- *(llvm)* [**breaking**] Upgrade to LLVM 21
([#2901](#2901))
- [**breaking**] Update remainder of passes to use PassScope, drop
default with_scope
([#2871](#2871))
- [**breaking**] Make `WithScope` a supertrait of `ComposablePass`
([#2921](#2921))
- [**breaking**] TypeRow: add impl From array of Type, remove From<Type>
([#2784](#2784))
- Deprecate HugrView::as_petgraph
([#2944](#2944))
### Refactor
- [**breaking**] Remove deprecated Value::Function
([#2928](#2928))
- [**breaking**] Remove deprecated pass configuration
([#2938](#2938))
</blockquote>
## `hugr-cli`
<blockquote>
##
[0.26.0](hugr-cli-v0.25.7...hugr-cli-v0.26.0)
- 2026-03-16
### Documentation
- Move `spec/schema` and `spec/std_extensions` to `resources/`
([#2897](#2897))
### New Features
- [**breaking**] Rename ModelText envelope format to SExpression
([#2927](#2927))
- [**breaking**] TypeRow: add impl From array of Type, remove From<Type>
([#2784](#2784))
</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]>
Co-authored-by: Alec Edgington <[email protected]>
BREAKING CHANGE: The hugr-llvm LLVM version is being upgraded to 21.1, and code that depends on it here needs to be updated as well. This also includes an MSRV change to 1.91 to match hugr. See [the hugr PR](Quantinuum/hugr#2901) for details. Closes #1421 --------- Co-authored-by: Jake Arkinstall <[email protected]> Co-authored-by: Agustín Borgna <[email protected]>
## 🤖 New release * `hugr-model`: 0.26.0 -> 0.26.1 * `hugr-core`: 0.26.0 -> 0.26.1 (✓ API compatible changes) * `hugr-llvm`: 0.26.0 -> 0.26.1 * `hugr`: 0.26.0 -> 0.26.1 (✓ API compatible changes) * `hugr-passes`: 0.26.0 -> 0.26.1 (✓ API compatible changes) * `hugr-cli`: 0.26.0 -> 0.26.1 * `hugr-persistent`: 0.5.0 -> 0.5.1 <details><summary><i><b>Changelog</b></i></summary><p> ## `hugr-model` <blockquote> ## [0.26.0](hugr-model-v0.25.7...hugr-model-v0.26.0) - 2026-03-16 ### Testing - Replace model text snapshots with roundtrip tests ([#2933](#2933)) - Add missing width arg in model-call example ([#2945](#2945)) </blockquote> ## `hugr-core` <blockquote> ## [0.26.1](hugr-core-v0.26.0...hugr-core-v0.26.1) - 2026-03-18 ### New Features - *(hugr-py)* Allow linking packages and modules from Python ([#2947](#2947)) ### Refactor - start cleaning up SiblingSubgraph convexity checking ([#2956](#2956)) </blockquote> ## `hugr-llvm` <blockquote> ## [0.26.0](hugr-llvm-v0.25.7...hugr-llvm-v0.26.0) - 2026-03-16 ### New Features - *(llvm)* [**breaking**] Upgrade to LLVM 21 ([#2901](#2901)) - Include private HUGR functions in the local symbol table ([#2831](#2831)) - [**breaking**] TypeRow: add impl From array of Type, remove From<Type> ([#2784](#2784)) ### Refactor - [**breaking**] Remove deprecated Value::Function ([#2928](#2928)) - [**breaking**] Remove deprecated stack_array codegen ([#2929](#2929)) </blockquote> ## `hugr` <blockquote> ## [0.26.1](hugr-v0.26.0...hugr-v0.26.1) - 2026-03-18 ### Bug Fixes - ConstantFold fails when the module contains function declarations ([#2954](#2954)) ### New Features - *(hugr-py)* Allow linking packages and modules from Python ([#2947](#2947)) ### Refactor - start cleaning up SiblingSubgraph convexity checking ([#2956](#2956)) </blockquote> ## `hugr-passes` <blockquote> ## [0.26.1](hugr-passes-v0.26.0...hugr-passes-v0.26.1) - 2026-03-18 ### Bug Fixes - ConstantFold fails when the module contains function declarations ([#2954](#2954)) </blockquote> ## `hugr-cli` <blockquote> ## [0.26.0](hugr-cli-v0.25.7...hugr-cli-v0.26.0) - 2026-03-16 ### Documentation - Move `spec/schema` and `spec/std_extensions` to `resources/` ([#2897](#2897)) ### New Features - [**breaking**] Rename ModelText envelope format to SExpression ([#2927](#2927)) - [**breaking**] TypeRow: add impl From array of Type, remove From<Type> ([#2784](#2784)) </blockquote> ## `hugr-persistent` <blockquote> ## [0.5.0](hugr-persistent-v0.4.7...hugr-persistent-v0.5.0) - 2026-03-16 ### New Features - *(llvm)* [**breaking**] Upgrade to LLVM 21 ([#2901](#2901)) - [**breaking**] TypeRow: add impl From array of Type, remove From<Type> ([#2784](#2784)) </blockquote> </p></details> --- This PR was generated with [release-plz](https://github.com/release-plz/release-plz/).
BREAKING CHANGE: This PR upgrades the Inkwell LLVM version flag to
llvm21-1fromllvm14-0(tested with LLVM version 21.1.8). The primary breakage between these versions is the removal of typed pointers from LLVM IR. It also updates the hugr MSRV to 1.91 to avoid mysterious errors when linking the new llvm_sys with older toolchains.Details
CallableValuetrait was removed from Inkwell. Invocations of function pointers are now constructed using a separatebuild_indirect_callmethod which takes the function signature as a separate argument.StaticArrayCodegen::static_array_typereturns the type "pointer to static_array<T>"). These pointers no longer carry type information, but are still used to determine the size in memory of a reference to these types. When type information is needed we acquire it elsewhere.TypingSessioncurrently maps HUGR function types to function pointers. After the upgrade, it now maps all function types to the opaque pointer type. This is unintuitive, but seems to work currently, because the output of the type mapping is only used to determine size in memory of a reference to function types (so the pointer type is correct). If this changes in future, we may need to introduce separate APIs to query the "storage type" and "underlying type" of a function.ExecutionEngine::run_function. The same IR returns the correct value if called using a raw function pointer returned byExecutionEngine::get_function. For that reason, I have changedTestContext::exec_hugrto use the raw pointer method for all JITed tests. This also requires being more specific (and accurate) about the return types of some JITed test functions.Tip for reviewers
Closes #2886