-
Notifications
You must be signed in to change notification settings - Fork 7
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
feat: add ArrayValue to python, rust and lowering #1773
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1773 +/- ##
==========================================
- Coverage 86.52% 86.50% -0.03%
==========================================
Files 188 188
Lines 34205 34391 +186
Branches 31076 31248 +172
==========================================
+ Hits 29597 29751 +154
- Misses 2923 2947 +24
- Partials 1685 1693 +8
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
Are you planning to add the rust-side definitions and llvm lowering on a different PR? |
Ah for some reason I believed those things already existed, will move this back to draft |
ArrayVal
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
@@ -26,8 +34,115 @@ pub const EXTENSION_ID: ExtensionId = ExtensionId::new_unchecked("collections.ar | |||
/// Extension version. | |||
pub const VERSION: semver::Version = semver::Version::new(0, 1, 0); | |||
|
|||
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] | |||
/// Statically sized array of values, all of the same type. | |||
pub struct ArrayValue(Vec<Value>, Type); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: It's clearer to use structs with named fields rather than tuples.
## 🤖 New release * `hugr`: 0.14.0 -> 0.14.1 (✓ API compatible changes) * `hugr-core`: 0.14.0 -> 0.14.1 (✓ API compatible changes) * `hugr-model`: 0.15.0 -> 0.16.0 (⚠️ API breaking changes) * `hugr-llvm`: 0.14.0 -> 0.14.1 (✓ API compatible changes) * `hugr-passes`: 0.14.0 -> 0.14.1 (✓ API compatible changes) * `hugr-cli`: 0.14.0 -> 0.14.1 (✓ API compatible changes) ###⚠️ `hugr-model` breaking changes ``` --- 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.37.0/src/lints/constructible_struct_adds_field.ron Failed in: field Region.scope in /tmp/.tmpN5f4vM/hugr/hugr-model/src/v0/mod.rs:414 field LinkId.1 in /tmp/.tmpN5f4vM/hugr/hugr-model/src/v0/mod.rs:162 --- 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.37.0/src/lints/enum_missing.ron Failed in: enum hugr_model::v0::GlobalRef, previously in file /tmp/.tmp2gotdW/hugr-model/src/v0/mod.rs:456 enum hugr_model::v0::LocalRef, previously in file /tmp/.tmp2gotdW/hugr-model/src/v0/mod.rs:476 enum hugr_model::v0::LinkRef, previously in file /tmp/.tmp2gotdW/hugr-model/src/v0/mod.rs:494 --- 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.37.0/src/lints/enum_struct_variant_field_added.ron Failed in: field symbol of variant Term::Apply in /tmp/.tmpN5f4vM/hugr/hugr-model/src/v0/mod.rs:544 field symbol of variant Term::ApplyFull in /tmp/.tmpN5f4vM/hugr/hugr-model/src/v0/mod.rs:557 --- 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.37.0/src/lints/enum_struct_variant_field_missing.ron Failed in: field global of variant Term::Apply, previously in file /tmp/.tmp2gotdW/hugr-model/src/v0/mod.rs:544 field global of variant Term::ApplyFull, previously in file /tmp/.tmp2gotdW/hugr-model/src/v0/mod.rs:557 --- 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.37.0/src/lints/enum_variant_added.ron Failed in: variant ModelError:InvalidVar in /tmp/.tmpN5f4vM/hugr/hugr-model/src/v0/mod.rs:723 variant ModelError:InvalidSymbol in /tmp/.tmpN5f4vM/hugr/hugr-model/src/v0/mod.rs:726 variant Operation:Import in /tmp/.tmpN5f4vM/hugr/hugr-model/src/v0/mod.rs:374 --- 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.37.0/src/lints/enum_variant_missing.ron Failed in: variant ModelError::InvalidLocal, previously in file /tmp/.tmp2gotdW/hugr-model/src/v0/mod.rs:723 variant ModelError::InvalidGlobal, previously in file /tmp/.tmp2gotdW/hugr-model/src/v0/mod.rs:727 --- 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.37.0/src/lints/inherent_method_missing.ron Failed in: LinkId::new, previously in file /tmp/.tmp2gotdW/hugr-model/src/v0/mod.rs:140 LinkId::index, previously in file /tmp/.tmp2gotdW/hugr-model/src/v0/mod.rs:140 LinkId::unwrap_slice, previously in file /tmp/.tmp2gotdW/hugr-model/src/v0/mod.rs:140 LinkId::wrap_slice, previously in file /tmp/.tmp2gotdW/hugr-model/src/v0/mod.rs:140 --- failure struct_repr_transparent_removed: struct repr(transparent) removed --- Description: repr(transparent) was removed from a struct whose layout was part of the public ABI. This can cause its memory layout to change, breaking FFI use cases. ref: https://doc.rust-lang.org/cargo/reference/semver.html#repr-transparent-remove impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/struct_repr_transparent_removed.ron Failed in: struct LinkId in /tmp/.tmpN5f4vM/hugr/hugr-model/src/v0/mod.rs:162 ``` <details><summary><i><b>Changelog</b></i></summary><p> ## `hugr` <blockquote> ## [0.14.1](hugr-v0.14.0...hugr-v0.14.1) - 2024-12-18 ### Bug Fixes - Constant folding now tolerates root nodes without input/output nodes (#1799) - `Call` ops not tracking their parameter extensions (#1805) ### New Features - add MonomorphizePass and deprecate monomorphize (#1809) - Lower LoadNat to LLVM (#1801) - Cleanup `Display` of types and arguments (#1802) - add ArrayValue to python, rust and lowering (#1773) - Scoping rules and utilities for symbols, links and variables (#1754) </blockquote> ## `hugr-core` <blockquote> ## [0.14.1](hugr-core-v0.14.0...hugr-core-v0.14.1) - 2024-12-18 ### Bug Fixes - `Call` ops not tracking their parameter extensions (#1805) ### New Features - Lower LoadNat to LLVM (#1801) - Cleanup `Display` of types and arguments (#1802) - add ArrayValue to python, rust and lowering (#1773) - Scoping rules and utilities for symbols, links and variables (#1754) </blockquote> ## `hugr-model` <blockquote> ## [0.16.0](hugr-model-v0.15.0...hugr-model-v0.16.0) - 2024-12-18 ### New Features - Scoping rules and utilities for symbols, links and variables (#1754) </blockquote> ## `hugr-llvm` <blockquote> ## [0.14.1](hugr-llvm-v0.14.0...hugr-llvm-v0.14.1) - 2024-12-18 ### Bug Fixes - Add LLVM lowering for `logic.Not` (#1812) ### New Features - Lower LoadNat to LLVM (#1801) - add ArrayValue to python, rust and lowering (#1773) </blockquote> ## `hugr-passes` <blockquote> ## [0.14.1](hugr-passes-v0.14.0...hugr-passes-v0.14.1) - 2024-12-18 ### Bug Fixes - Constant folding now tolerates root nodes without input/output nodes (#1799) ### New Features - Cleanup `Display` of types and arguments (#1802) - add MonomorphizePass and deprecate monomorphize (#1809) </blockquote> ## `hugr-cli` <blockquote> ## [0.14.1](hugr-cli-v0.14.0...hugr-cli-v0.14.1) - 2024-12-18 ### New Features - Print `hugr-cli`'s correct version when using '--version' (#1790) </blockquote> </p></details> --- This PR was generated with [release-plz](https://github.com/release-plz/release-plz/).
🤖 I have created a release *beep* *boop* --- ## [0.10.1](hugr-py-v0.10.0...hugr-py-v0.10.1) (2024-12-18) ### Features * add ArrayValue to python, rust and lowering ([#1773](#1773)) ([d429cff](d429cff)) * add wrapper for tagging Some, Left, Right, Break, Continue ([#1814](#1814)) ([f0385a0](f0385a0)), closes [#1808](#1808) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: Seyon Sivarajah <[email protected]>
drive-by: fix Array type annotation
Closes #1771
TODO: