Skip to content
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

Merged
merged 5 commits into from
Dec 17, 2024
Merged

feat: add ArrayValue to python, rust and lowering #1773

merged 5 commits into from
Dec 17, 2024

Conversation

ss2165
Copy link
Member

@ss2165 ss2165 commented Dec 12, 2024

drive-by: fix Array type annotation

Closes #1771

TODO:

  • Rust ArrayValue
  • LLVM lowering

@ss2165 ss2165 requested a review from a team as a code owner December 12, 2024 11:26
@ss2165 ss2165 requested review from mark-koch and aborgna-q and removed request for mark-koch December 12, 2024 11:26
Copy link

codecov bot commented Dec 12, 2024

Codecov Report

Attention: Patch coverage is 71.77914% with 46 lines in your changes missing coverage. Please review.

Project coverage is 86.50%. Comparing base (21ac35c) to head (b4ee9a9).
Report is 7 commits behind head on main.

Files with missing lines Patch % Lines
hugr-core/src/std_extensions/collections/array.rs 62.50% 37 Missing and 2 partials ⚠️
hugr-py/src/hugr/std/collections/array.py 75.00% 4 Missing ⚠️
hugr-llvm/src/extension/collections/array.rs 93.02% 0 Missing and 3 partials ⚠️
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     
Flag Coverage Δ
python 92.49% <75.00%> (-0.10%) ⬇️
rust 85.90% <71.42%> (-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.

@aborgna-q
Copy link
Collaborator

aborgna-q commented Dec 12, 2024

Are you planning to add the rust-side definitions and llvm lowering on a different PR?

@ss2165
Copy link
Member Author

ss2165 commented Dec 12, 2024

Ah for some reason I believed those things already existed, will move this back to draft

@ss2165 ss2165 marked this pull request as draft December 12, 2024 12:13
@ss2165 ss2165 changed the title feat(py): add ArrayVal feat: add ArrayVal Dec 12, 2024
@ss2165 ss2165 marked this pull request as ready for review December 17, 2024 13:35
@ss2165 ss2165 changed the title feat: add ArrayVal feat: add ArrayValue to python, rust and lowering Dec 17, 2024
Copy link
Collaborator

@aborgna-q aborgna-q left a 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);
Copy link
Collaborator

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.

@ss2165 ss2165 enabled auto-merge December 17, 2024 15:32
@ss2165 ss2165 added this pull request to the merge queue Dec 17, 2024
Merged via the queue into main with commit d429cff Dec 17, 2024
23 of 24 checks passed
@ss2165 ss2165 deleted the ss/array-val branch December 17, 2024 15:38
This was referenced Dec 17, 2024
github-merge-queue bot pushed a commit that referenced this pull request Dec 18, 2024
## 🤖 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/).
github-merge-queue bot pushed a commit that referenced this pull request Dec 18, 2024
🤖 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]>
@hugrbot hugrbot mentioned this pull request Dec 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add array values to collections.array
3 participants