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 a limited form of arithmetic on generics #5625

Merged
merged 14 commits into from
Aug 2, 2024
Merged

Conversation

jfecher
Copy link
Contributor

@jfecher jfecher commented Jul 29, 2024

Description

Problem*

Resolves #4784

Summary*

Adds a limited form of arithmetic operators on numeric generic types in Noir. This includes only 5 operations: +, -, *, /, and %.

Going forward I'm going to distinguish between two definitions for clearer communication between devs & users:

  • Numeric generics: generics that use numeric type variables like fn foo<let N: u32>()
  • Arithmetic generics: when arithmetic operators are used on numeric generics in a type position: fn foo<let N: u32>() -> [Field; N + 1]

Additional Context

It is explicitly a non-goal to always correctly return when two arithmetic generics are equal. For example, in our current type checking we do not check whether applying the distributive law would make two types equal. So you'd get a type error for trying to use 2*(N + 1) where 2*N + 2 was expected. Users should generally consider the type equality here to be largely structural and try to match that as best as possible. The only check performed besides simplification of constant terms is commutativity for + and *. Even then, the check is only one level deep. So N * M * 3 is not equal to 3 * N * M. Update: we canonicalize commutative operations now, so we sort this and it now type checks.

Documentation*

Check one:

  • No documentation needed.
  • Documentation included in this PR.
  • [For Experimental Features] Documentation to be submitted in a separate PR.
    • I'd like to have this in for some time before we start advertising it.

PR Checklist*

  • I have tested the changes locally.
  • I have formatted the changes with Prettier and/or cargo fmt on default settings.

@jfecher jfecher changed the title feat: Add limited form of arithmetic on generics feat: Add a limited form of arithmetic on generics Jul 29, 2024
@jfecher jfecher marked this pull request as ready for review July 29, 2024 16:21
@jfecher
Copy link
Contributor Author

jfecher commented Jul 30, 2024

Update: added a canonicalization method for commutative operators. We now accept a lot more cases including:

  • (1 + N) + 1 = N + 2
  • 3 * B * 3 * A = A * B * 9
  • others

@jfecher jfecher requested a review from a team July 30, 2024 18:22
@michaeljklein
Copy link
Contributor

Explored whether this is sufficient for some techniques that can be used with partial support for dependent types.

In short, yes, but it would look nicer with:

  • Trait impl's on numeric generics
  • Associated types
Demo here
// KnownConstant
//
// Summary: when we know something is constant, we can know that expressions involving it will resolve to constants.
// - This guarantees that such values will be known at compile-time
// - Note the need for a wrapper struct (`W`) to appease the type checker:
//   we can solve these fine, but reject raw numeric generics.
//
// Note that it's impossible to define an impl as follows, because of overlap:
//
// impl<let N: u32> KnownConstant for W<N> { .. }

// Wrapper type for numeric generics
//
// NOTE: explicit kinds would allow us to replace u32 with a variable
struct W<let N: u32> { }

impl<let N: u32> Eq for W<N> {
    fn eq(self, other: W<N>) -> bool {
        let _ = self;
        let _ = other;
        true
    }
}

trait KnownConstant {
    fn to_constant(self) -> Field;
}

// implementing KnownConstant for a variable would overlap with W<_ + _> and
// other instances
impl KnownConstant for W<0> {
    fn to_constant(self) -> Field {
        assert(self == self); // TODO to_constant(_self) failed
        0
    }
}

impl KnownConstant for W<1> {
    fn to_constant(self) -> Field {
        assert(self == self); // TODO to_constant(_self) failed
        1
    }
}

impl KnownConstant for W<2> {
    fn to_constant(self) -> Field {
        assert(self == self); // TODO to_constant(_self) failed
        2
    }
}

impl KnownConstant for W<3> {
    fn to_constant(self) -> Field {
        assert(self == self); // TODO to_constant(_self) failed
        3
    }
}

impl KnownConstant for W<4> {
    fn to_constant(self) -> Field {
        assert(self == self); // TODO to_constant(_self) failed
        4
    }
}

impl KnownConstant for W<5> {
    fn to_constant(self) -> Field {
        assert(self == self); // TODO to_constant(_self) failed
        5
    }
}

impl KnownConstant for W<6> {
    fn to_constant(self) -> Field {
        assert(self == self); // TODO to_constant(_self) failed
        6
    }
}

impl KnownConstant for W<7> {
    fn to_constant(self) -> Field {
        assert(self == self); // TODO to_constant(_self) failed
        7
    }
}

impl KnownConstant for W<8> {
    fn to_constant(self) -> Field {
        assert(self == self); // TODO to_constant(_self) failed
        8
    }
}

impl KnownConstant for W<9> {
    fn to_constant(self) -> Field {
        assert(self == self); // TODO to_constant(_self) failed
        9
    }
}

impl<let N: u32, let M: u32> KnownConstant for W<N + M> where W<N>: KnownConstant, W<M>: KnownConstant {
    fn to_constant(self) -> Field {
        assert(self == self); // TODO to_constant(_self) failed
        (N as Field) + (M as Field)
    }
}

impl<let N: u32, let M: u32> KnownConstant for W<N * M> where W<N>: KnownConstant, W<M>: KnownConstant {
    fn to_constant(self) -> Field {
        assert(self == self); // TODO to_constant(_self) failed
        (N as Field) * (M as Field)
    }
}

fn add_comm_to<let N: u32, let M: u32>(_x: W<N + M>) -> W<M + N> where W<N>: KnownConstant, W<M>: KnownConstant {
    W {}
}

fn polynomial_input<let N: u32, let M: u32>(_x: W<2 * N * N + 1 * M + 2>)
    -> W<2 + N * N * 2 + M> where W<N>: KnownConstant, W<M>: KnownConstant {
    W {}
}


////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Equiv
////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Summary: this is a simplification of isomorphism-with-coherence-conditions-style equivalence
// - EquivT is an attempt to use traits directly
// - Equiv below is a successful attempt to use structs instead
//   + Trait associated types would make it much cleaner

trait EquivT<T> {
    fn equivT_to(x: Self) -> T;
    fn equivT_from(x: T) -> Self;
}

impl<let N: u32, let M: u32> EquivT<W<M + N>> for W<N + M> {
    fn equivT_to(_x: Self) -> W<M + N> { W {} }
    fn equivT_from(_x: W<M + N>) -> Self { W {} }
}

impl<let N: u32, let M: u32> EquivT<W<M * N>> for W<N * M> {
    fn equivT_to(_x: Self) -> W<M * N> { W {} }
    fn equivT_from(_x: W<M * N>) -> Self { W {} }
}

// // NOTE: overlapping impl blocks this approach
// // - Could be resolved by allowing trait impl naming and/or selection
//
// impl<let N: u32, let M: u32, let P: u32> EquivT<W<M + (N + P)>> for W<(N + M) + P> {
//     fn equivT_to(_x: Self) -> W<M + (N + P)> { W {} }
//     fn equivT_from(_x: W<M + (N + P)>) -> Self { W {} }
// }

// NOTE: this version w/o ENV's can't be composed
//
// struct Equiv<T, U> {
//     to_: fn(T) -> U,
//     from_: fn(U) -> T,
//     // .. other coherence conditions
// }
struct Equiv<T, TU, U, UT> {
    // TODO(https://github.com/noir-lang/noir/issues/5644):
    // Bug with struct_obj.field_thats_a_fn(x)

    to_: fn[TU](T) -> U,
    fro_: fn[UT](U) -> T,
    // .. other coherence conditions
}

impl<T, TU, U, UT> Equiv<T, TU, U, UT> {
    fn to(self, x: T) -> U {
        let f = self.to_;
        f(x)
    }

    // TODO: bad error span and/or wrong error (appears to overlap w/ stdlib when named 'from')
    //
    // error: duplicate definitions of from found
    //     ┌─ /Users/michaelklein/Coding/rust/noir/tmp/src/main.nr:7:29
    //     │
    //   7 │ // Needed for "raw equivalence" using traits:
    //     │                             ---- first definition found here
    //     ·
    // 175 │     fn from(self, x: U) -> T {
    //     │        ---- second definition found here
    //     │
    fn fro(self, x: U) -> T {
        let f = self.fro_;
        f(x)
    }
}

// NOTE: it would be nice to hide these ENV's using associated types
fn equiv_trans<T, TU, U, UT, UV, V, VU>(x: Equiv<T, TU, U, UT>, y: Equiv<U, UV, V, VU>) -> Equiv<T, (Equiv<U, UV, V, VU>, Equiv<T, TU, U, UT>), V, (Equiv<T, TU, U, UT>, Equiv<U, UV, V, VU>)> {
    Equiv {
        to_: |z| { y.to(x.to(z)) },
        fro_: |z| { x.fro(y.fro(z)) },
    }
}

fn equiv_refl<let N: u32>() -> Equiv<W<N>, (), W<N>, ()> {
    Equiv { to_: |_x| { W {} }, fro_: |_x| { W {} } }
}

fn add_zero_r<let N: u32>() -> Equiv<W<N + 0>, (), W<N>, ()> {
    Equiv { to_: |_x| { W {} }, fro_: |_x| { W {} } }
}

fn mul_one_r<let N: u32>() -> Equiv<W<N * 1>, (), W<N>, ()> {
    Equiv { to_: |_x| { W {} }, fro_: |_x| { W {} } }
}

fn add_equiv_r<let C: u32, let N: u32, let M: u32, EN, EM>(f: Equiv<W<N>, EN, W<M>, EM>) -> Equiv<W<C + N>, (), W<C + M>, ()> {
    Equiv { to_: |_x| { W {} }, fro_: |_x| { W {} } }
}

fn add_comm<let N: u32, let M: u32>() -> Equiv<W<N + M>, (), W<M + N>, ()> {
    Equiv { to_: |_x| { W {} }, fro_: |_x| { W {} } }
}

fn mul_comm<let N: u32, let M: u32>() -> Equiv<W<N * M>, (), W<M * N>, ()> {
    Equiv { to_: |_x| { W {} }, fro_: |_x| { W {} } }
}

fn add_assoc<let N: u32, let M: u32, let P: u32>() -> Equiv<W<N + (M + P)>, (), W<(N + M) + P>, ()> {
    Equiv { to_: |_x| { W {} }, fro_: |_x| { W {} } }
}

fn mul_assoc<let N: u32, let M: u32, let P: u32>() -> Equiv<W<N * (M * P)>, (), W<(N * M) * P>, ()> {
    Equiv { to_: |_x| { W {} }, fro_: |_x| { W {} } }
}

fn mul_add<let N: u32, let M: u32, let P: u32>() -> Equiv<W<N * (M + P)>, (), W<N * M + N * P>, ()> {
    Equiv { to_: |_x| { W {} }, fro_: |_x| { W {} } }
}

// (N + 1) * N == N * N + N
//
// (550 character line, due to ENV's)
fn demo_proof<let N: u32>() -> Equiv<W<(N * (N + 1))>, (Equiv<W<N>, (), W<N>, ()>, Equiv<W<(N * (N + 1))>, (Equiv<W<(N * (N + 1))>, (), W<N>, ()>, Equiv<W<(N * (N + 1))>, (), W<(N * (N + 1))>, ()>), W<N>, (Equiv<W<(N * (N + 1))>, (), W<(N * (N + 1))>, ()>, Equiv<W<(N * (N + 1))>, (), W<N>, ()>)>), W<N>, (Equiv<W<(N * (N + 1))>, (Equiv<W<(N * (N + 1))>, (), W<N>, ()>, Equiv<W<(N * (N + 1))>, (), W<(N * (N + 1))>, ()>), W<N>, (Equiv<W<(N * (N + 1))>, (), W<(N * (N + 1))>, ()>, Equiv<W<(N * (N + 1))>, (), W<N>, ()>)>, Equiv<W<N>, (), W<N>, ()>)> {
    let p1: Equiv<W<(N + 1) * N>, (), W<N * (N + 1)>, ()> = mul_comm();
    let p2: Equiv<W<N * (N + 1)>, (), W<N * N + N * 1>, ()> = mul_add::<N, N, 1>();
    let p3_sub: Equiv<W<N * 1>, (), W<N>, ()> = mul_one_r();
    let p3: Equiv<W<N * N + N * 1>, (), W<N * N + N>, ()> = add_equiv_r::<N * N, N * 1, N, _, _>(p3_sub);
    equiv_trans(equiv_trans(p1, p2), p3)
}

fn main() {
    let quadratic: W<2 * 2 * 2 + 1 * 1 + 2> = W {};

    // Bug: both should evaluate to W<11>
    //
    // error: Expected type W<7>, found type W<11>
    //     ┌─ /Users/michaelklein/Coding/rust/noir/tmp/src/main.nr:103:56
    //     │
    // 103 │     let alternate_quadratic = polynomial_input::<2, 1>(quadratic);
    //     │                                                        ---------
    //     │
    // let alternate_quadratic = polynomial_input::<2, 1>(quadratic);

    let _ = add_comm_to::<2 * 2 * 2 + 1 * 1, 2>(quadratic);
}

@jfecher
Copy link
Contributor Author

jfecher commented Jul 31, 2024

let quadratic: W<2 * 2 * 2 + 1 * 1 + 2> = W {};

Why the 2 * 2 ... expression there? We should constant fold that before we get to testing arithmetic generics.

I'd think a lot of the impls should be unneeded as well. Since we already have N + M = M + N in unification we shouldn't also need a commutative impl for add.

@michaeljklein
Copy link
Contributor

@jfecher I was checking that everything resolves properly, but will also typecheck against add_comm for known inputs. E.g. I thought it would be worthwhile to see how N + 1 where N = 1 vs 2 unifies.

demo_proof is more representative of what can currently be done with unification.

@jfecher jfecher enabled auto-merge July 31, 2024 21:04
Copy link
Contributor

@vezenovm vezenovm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Although limited these already seem like a big UX improvement for most cases people want and they are under a flag, so I am approving.

compiler/noirc_driver/src/lib.rs Outdated Show resolved Hide resolved
@jfecher jfecher added this pull request to the merge queue Aug 2, 2024
Copy link
Contributor

@michaeljklein michaeljklein left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Merged via the queue into master with commit 0afb680 Aug 2, 2024
45 checks passed
@jfecher jfecher deleted the jf/dependent-types branch August 2, 2024 20:45
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Aug 3, 2024
…r#5677)

feat: add `Type` methods: `as_tuple`, `as_slice`, `as_array`, `as_constant`, `is_bool` (noir-lang/noir#5678)
fix: Derive generic types (noir-lang/noir#5674)
feat: Add a limited form of arithmetic on generics (noir-lang/noir#5625)
feat: add `Type::is_field` and `Type::as_integer` (noir-lang/noir#5670)
fix: Fix where clause issue in items generated from attributes (noir-lang/noir#5673)
feat(noir_js): Expose UltraHonk and integration tests (noir-lang/noir#5656)
fix: workaround from_slice with nested slices (noir-lang/noir#5648)
fix: Switch verify proof to arrays (noir-lang/noir#5664)
feat: Resolve arguments to attributes (noir-lang/noir#5649)
fix: Elaborate struct & trait annotations in the correct module (noir-lang/noir#5643)
fix: let a trait impl that relies on another trait work (noir-lang/noir#5646)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Aug 4, 2024
…r#5677)

feat: add `Type` methods: `as_tuple`, `as_slice`, `as_array`, `as_constant`, `is_bool` (noir-lang/noir#5678)
fix: Derive generic types (noir-lang/noir#5674)
feat: Add a limited form of arithmetic on generics (noir-lang/noir#5625)
feat: add `Type::is_field` and `Type::as_integer` (noir-lang/noir#5670)
fix: Fix where clause issue in items generated from attributes (noir-lang/noir#5673)
feat(noir_js): Expose UltraHonk and integration tests (noir-lang/noir#5656)
fix: workaround from_slice with nested slices (noir-lang/noir#5648)
fix: Switch verify proof to arrays (noir-lang/noir#5664)
feat: Resolve arguments to attributes (noir-lang/noir#5649)
fix: Elaborate struct & trait annotations in the correct module (noir-lang/noir#5643)
fix: let a trait impl that relies on another trait work (noir-lang/noir#5646)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Aug 4, 2024
feat: add `Type` methods: `as_tuple`, `as_slice`, `as_array`, `as_constant`, `is_bool` (noir-lang/noir#5678)
fix: Derive generic types (noir-lang/noir#5674)
feat: Add a limited form of arithmetic on generics (noir-lang/noir#5625)
feat: add `Type::is_field` and `Type::as_integer` (noir-lang/noir#5670)
fix: Fix where clause issue in items generated from attributes (noir-lang/noir#5673)
feat(noir_js): Expose UltraHonk and integration tests (noir-lang/noir#5656)
fix: workaround from_slice with nested slices (noir-lang/noir#5648)
fix: Switch verify proof to arrays (noir-lang/noir#5664)
feat: Resolve arguments to attributes (noir-lang/noir#5649)
fix: Elaborate struct & trait annotations in the correct module (noir-lang/noir#5643)
fix: let a trait impl that relies on another trait work (noir-lang/noir#5646)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Aug 5, 2024
…r#5677)

feat: add `Type` methods: `as_tuple`, `as_slice`, `as_array`, `as_constant`, `is_bool` (noir-lang/noir#5678)
fix: Derive generic types (noir-lang/noir#5674)
feat: Add a limited form of arithmetic on generics (noir-lang/noir#5625)
feat: add `Type::is_field` and `Type::as_integer` (noir-lang/noir#5670)
fix: Fix where clause issue in items generated from attributes (noir-lang/noir#5673)
feat(noir_js): Expose UltraHonk and integration tests (noir-lang/noir#5656)
fix: workaround from_slice with nested slices (noir-lang/noir#5648)
fix: Switch verify proof to arrays (noir-lang/noir#5664)
feat: Resolve arguments to attributes (noir-lang/noir#5649)
fix: Elaborate struct & trait annotations in the correct module (noir-lang/noir#5643)
fix: let a trait impl that relies on another trait work (noir-lang/noir#5646)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Aug 5, 2024
feat: add `Type` methods: `as_tuple`, `as_slice`, `as_array`, `as_constant`, `is_bool` (noir-lang/noir#5678)
fix: Derive generic types (noir-lang/noir#5674)
feat: Add a limited form of arithmetic on generics (noir-lang/noir#5625)
feat: add `Type::is_field` and `Type::as_integer` (noir-lang/noir#5670)
fix: Fix where clause issue in items generated from attributes (noir-lang/noir#5673)
feat(noir_js): Expose UltraHonk and integration tests (noir-lang/noir#5656)
fix: workaround from_slice with nested slices (noir-lang/noir#5648)
fix: Switch verify proof to arrays (noir-lang/noir#5664)
feat: Resolve arguments to attributes (noir-lang/noir#5649)
fix: Elaborate struct & trait annotations in the correct module (noir-lang/noir#5643)
fix: let a trait impl that relies on another trait work (noir-lang/noir#5646)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Aug 6, 2024
…r-lang/noir#5682)

feat: add `FunctionDefinition::parameters`, `FunctionDefinition::return_type` and `impl Eq for Quoted` (noir-lang/noir#5681)
feat: add `Type::as_struct` (noir-lang/noir#5680)
feat: LSP hover now includes "Go to" links (noir-lang/noir#5677)
feat: add `Type` methods: `as_tuple`, `as_slice`, `as_array`, `as_constant`, `is_bool` (noir-lang/noir#5678)
fix: Derive generic types (noir-lang/noir#5674)
feat: Add a limited form of arithmetic on generics (noir-lang/noir#5625)
feat: add `Type::is_field` and `Type::as_integer` (noir-lang/noir#5670)
fix: Fix where clause issue in items generated from attributes (noir-lang/noir#5673)
feat(noir_js): Expose UltraHonk and integration tests (noir-lang/noir#5656)
fix: workaround from_slice with nested slices (noir-lang/noir#5648)
fix: Switch verify proof to arrays (noir-lang/noir#5664)
feat: Resolve arguments to attributes (noir-lang/noir#5649)
fix: Elaborate struct & trait annotations in the correct module (noir-lang/noir#5643)
fix: let a trait impl that relies on another trait work (noir-lang/noir#5646)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Aug 6, 2024
…5682)

feat: add `FunctionDefinition::parameters`, `FunctionDefinition::return_type` and `impl Eq for Quoted` (noir-lang/noir#5681)
feat: add `Type::as_struct` (noir-lang/noir#5680)
feat: LSP hover now includes "Go to" links (noir-lang/noir#5677)
feat: add `Type` methods: `as_tuple`, `as_slice`, `as_array`, `as_constant`, `is_bool` (noir-lang/noir#5678)
fix: Derive generic types (noir-lang/noir#5674)
feat: Add a limited form of arithmetic on generics (noir-lang/noir#5625)
feat: add `Type::is_field` and `Type::as_integer` (noir-lang/noir#5670)
fix: Fix where clause issue in items generated from attributes (noir-lang/noir#5673)
feat(noir_js): Expose UltraHonk and integration tests (noir-lang/noir#5656)
fix: workaround from_slice with nested slices (noir-lang/noir#5648)
fix: Switch verify proof to arrays (noir-lang/noir#5664)
feat: Resolve arguments to attributes (noir-lang/noir#5649)
fix: Elaborate struct & trait annotations in the correct module (noir-lang/noir#5643)
fix: let a trait impl that relies on another trait work (noir-lang/noir#5646)
github-merge-queue bot pushed a commit that referenced this pull request Aug 6, 2024
🤖 I have created a release *beep* *boop*
---


<details><summary>0.33.0</summary>

## [0.33.0](v0.32.0...v0.33.0)
(2024-08-06)


### ⚠ BREAKING CHANGES

* parse block and if statements independently of expressions in
statements ([#5634](#5634))
* **frontend:** Restrict numeric generic types to unsigned ints up to
`u32` ([#5581](#5581))

### Features

* **acir_gen:** Width aware ACIR gen addition
([#5493](#5493))
([85fa592](85fa592))
* Add `FunctionDefinition::parameters`,
`FunctionDefinition::return_type` and `impl Eq for Quoted`
([#5681](#5681))
([d52fc05](d52fc05))
* Add `std::meta::type_of` and `impl Eq for Type`
([#5669](#5669))
([0503956](0503956))
* Add `TraitDefinition::as_trait_constraint()`
([#5541](#5541))
([0943223](0943223))
* Add `Type::as_struct`
([#5680](#5680))
([ade69a9](ade69a9))
* Add `Type::is_field` and `Type::as_integer`
([#5670](#5670))
([939357a](939357a))
* Add `Type` methods: `as_tuple`, `as_slice`, `as_array`, `as_constant`,
`is_bool` ([#5678](#5678))
([604fa0d](604fa0d))
* Add a compile-time hash map type
([#5543](#5543))
([c6e5c4b](c6e5c4b))
* Add a limited form of arithmetic on generics
([#5625](#5625))
([0afb680](0afb680))
* Add parameter to call_data attribute
([#5599](#5599))
([e8bb341](e8bb341))
* Allow inserting LSP inlay type hints
([#5620](#5620))
([b33495d](b33495d))
* Avoid heap allocs when going to/from field
(AztecProtocol/aztec-packages#7547)
([daad75c](daad75c))
* Derive `Ord` and `Hash` in the stdlib; add `std::meta::make_impl`
helper ([#5683](#5683))
([38397d3](38397d3))
* Don't eagerly error on cast expressions
([#5635](#5635))
([0ca5d9d](0ca5d9d))
* Implement `poseidon2_permutation` in comptime interpreter
([#5590](#5590))
([89dfbbf](89dfbbf))
* Implement `Value::Type` in comptime interpreter
([#5593](#5593))
([4c3bf97](4c3bf97))
* Implement `zeroed` in the interpreter
([#5540](#5540))
([ff8ca91](ff8ca91))
* Implement closures in the comptime interpreter
([#5682](#5682))
([9e2a323](9e2a323))
* Implement format strings in the comptime interpreter
([#5596](#5596))
([fd7002c](fd7002c))
* Integrate new proving systems in e2e
(AztecProtocol/aztec-packages#6971)
([daad75c](daad75c))
* Let filenames in errors be relative to the current dir if possible
([#5642](#5642))
([f656681](f656681))
* Let LSP work will with code generated by macros
([#5665](#5665))
([8122624](8122624))
* LSP closing brace hints
([#5686](#5686))
([2b18151](2b18151))
* LSP hover now includes "Go to" links
([#5677](#5677))
([d466d49](d466d49))
* LSP inlay parameter hints
([#5553](#5553))
([822fe2c](822fe2c))
* LSP inlay type hints on lambda parameters
([#5639](#5639))
([80128ff](80128ff))
* Make Brillig do integer arithmetic operations using u128 instead of
Bigint (AztecProtocol/aztec-packages#7518)
([daad75c](daad75c))
* **noir_js:** Expose UltraHonk and integration tests
([#5656](#5656))
([4552b4f](4552b4f))
* Remove 'comptime or separate crate' restriction on comptime code
([#5609](#5609))
([1cddf42](1cddf42))
* Resolve arguments to attributes
([#5649](#5649))
([e139002](e139002))
* **ssa:** Simple serialization of unoptimized SSA to file
([#5679](#5679))
([07ea107](07ea107))
* Sync from noir
(AztecProtocol/aztec-packages#7432)
([daad75c](daad75c))
* Sync from noir
(AztecProtocol/aztec-packages#7444)
([daad75c](daad75c))
* Sync from noir
(AztecProtocol/aztec-packages#7454)
([daad75c](daad75c))
* Sync from noir
(AztecProtocol/aztec-packages#7512)
([daad75c](daad75c))
* Sync from noir
(AztecProtocol/aztec-packages#7577)
([daad75c](daad75c))
* Sync from noir
(AztecProtocol/aztec-packages#7583)
([daad75c](daad75c))
* Turbofish in struct pattern
([#5616](#5616))
([b3c408b](b3c408b))
* Turbofish operator in struct constructor
([#5607](#5607))
([106abd7](106abd7))
* Turbofish operator on path segments
([#5603](#5603))
([0bb8372](0bb8372))
* Typing return values of embedded_curve_ops
(AztecProtocol/aztec-packages#7413)
([daad75c](daad75c))


### Bug Fixes

* 'cannot eval non-comptime global' error
([#5586](#5586))
([0a987c7](0a987c7))
* `NoMatchingImplFound` in comptime code only
([#5617](#5617))
([28211a3](28211a3))
* Add trailing extra arguments for backend in gates_flamegraph
(AztecProtocol/aztec-packages#7472)
([daad75c](daad75c))
* Allow calling a trait method with paths that don't consist of exactly
two segments ([#5577](#5577))
([88c0a40](88c0a40))
* Allow trailing comma when parsing where clauses
([#5594](#5594))
([75bfe13](75bfe13))
* Allow using Self for function calls
([#5629](#5629))
([b7e4f42](b7e4f42))
* Correct span for prefix operator
([#5624](#5624))
([5824785](5824785))
* Correctly track sources for open LSP documents
([#5561](#5561))
([9e61e97](9e61e97))
* Derive generic types
([#5674](#5674))
([19e58a9](19e58a9))
* Don't panic when a macro fails to resolve
([#5537](#5537))
([6109ddc](6109ddc))
* Elaborate struct & trait annotations in the correct module
([#5643](#5643))
([d0a957b](d0a957b))
* Error on duplicate struct field
([#5585](#5585))
([3aed671](3aed671))
* Error on incorrect generic count for impl and type alias
([#5623](#5623))
([1f5d000](1f5d000))
* Error on trait impl generics count mismatch
([#5582](#5582))
([da3d607](da3d607))
* Error on unbound generics in structs
([#5619](#5619))
([efef6b4](efef6b4))
* Filter comptime globals
([#5538](#5538))
([2adc6ac](2adc6ac))
* Fix `uhashmap` test name
([#5563](#5563))
([d5de83f](d5de83f))
* Fix occurs check
([#5535](#5535))
([51dd529](51dd529))
* Fix where clause issue in items generated from attributes
([#5673](#5673))
([9a8cfc9](9a8cfc9))
* **frontend:** Disallow signed numeric generics
([#5572](#5572))
([2b4853e](2b4853e))
* **frontend:** Error for when impl is stricter than trait
([#5343](#5343))
([ece033f](ece033f))
* **frontend:** Restrict numeric generic types to unsigned ints up to
`u32` ([#5581](#5581))
([b85e764](b85e764))
* Let a trait impl that relies on another trait work
([#5646](#5646))
([e00c370](e00c370))
* Let std::unsafe::zeroed() work for slices
([#5592](#5592))
([7daee20](7daee20))
* Let trait calls work in globals
([#5602](#5602))
([c02a6f6](c02a6f6))
* Let unary traits work at comptime
([#5507](#5507))
([aa62d8a](aa62d8a))
* Lookup trait constraints methods in composite types
([#5595](#5595))
([cec6390](cec6390))
* Parse block and if statements independently of expressions in
statements ([#5634](#5634))
([9341113](9341113))
* Revert "feat: Sync from noir
(AztecProtocol/aztec-packages#7512)"
(AztecProtocol/aztec-packages#7558)
([daad75c](daad75c))
* Run macros within comptime contexts
([#5576](#5576))
([df44919](df44919))
* Speed up LSP ([#5650](#5650))
([e5f1b36](e5f1b36))
* **ssa:** More robust array deduplication check
([#5547](#5547))
([dd89b90](dd89b90))
* Switch verify proof to arrays
([#5664](#5664))
([c1ed9fb](c1ed9fb))
* Type_of for pointer types
([#5536](#5536))
([edb3810](edb3810))
* Workaround from_slice with nested slices
([#5648](#5648))
([6310a55](6310a55))
</details>

<details><summary>0.49.0</summary>

## [0.49.0](v0.48.0...v0.49.0)
(2024-08-06)


### ⚠ BREAKING CHANGES

* constant inputs for blackbox
(AztecProtocol/aztec-packages#7222)
* add session id to foreign call RPC requests
([#5205](#5205))
* restrict noir word size to u32
([#5180](#5180))
* switch `bb` over to read ACIR from nargo artifacts
(AztecProtocol/aztec-packages#6283)
* specify databus arrays for BB
(AztecProtocol/aztec-packages#6239)
* remove `Opcode::Brillig` from ACIR
(AztecProtocol/aztec-packages#5995)
* AES blackbox
(AztecProtocol/aztec-packages#6016)
* Bit shift is restricted to u8 right operand
([#4907](#4907))
* contract interfaces and better function calls
(AztecProtocol/aztec-packages#5687)
* change backend width to 4
(AztecProtocol/aztec-packages#5374)
* Use fixed size arrays in black box functions where sizes are known
(AztecProtocol/aztec-packages#5620)
* trap with revert data
(AztecProtocol/aztec-packages#5732)
* **acir:** BrilligCall opcode
(AztecProtocol/aztec-packages#5709)
* remove fixed-length keccak256
(AztecProtocol/aztec-packages#5617)
* storage_layout and `#[aztec(storage)]`
(AztecProtocol/aztec-packages#5387)
* **acir:** Add predicate to call opcode
(AztecProtocol/aztec-packages#5616)
* contract_abi-exports
(AztecProtocol/aztec-packages#5386)
* Brillig typed memory
(AztecProtocol/aztec-packages#5395)

### Features

* `multi_scalar_mul` blackbox func
(AztecProtocol/aztec-packages#6097)
([73a635e](73a635e))
* `variable_base_scalar_mul` blackbox func
(AztecProtocol/aztec-packages#6039)
([73a635e](73a635e))
* **acir_gen:** Brillig stdlib
([#4848](#4848))
([0c8175c](0c8175c))
* **acir_gen:** Fold attribute at compile-time and initial non inlined
ACIR (AztecProtocol/aztec-packages#5341)
([a0f7474](a0f7474))
* **acir_gen:** Width aware ACIR gen addition
([#5493](#5493))
([85fa592](85fa592))
* **acir:** Add predicate to call opcode
(AztecProtocol/aztec-packages#5616)
([2bd006a](2bd006a))
* **acir:** BrilligCall opcode
(AztecProtocol/aztec-packages#5709)
([0f9ae0a](0f9ae0a))
* Activate return_data in ACIR opcodes
([#5080](#5080))
([c9fda3c](c9fda3c))
* **acvm_js:** Execute program
([#4694](#4694))
([386f6d0](386f6d0))
* **acvm:** Execute multiple circuits
(AztecProtocol/aztec-packages#5380)
([a0f7474](a0f7474))
* Add native rust implementation of schnorr signature verification
([#5053](#5053))
([fab1c35](fab1c35))
* Add native rust implementations of pedersen functions
([#4871](#4871))
([fb039f7](fb039f7))
* Add return values to aztec fns
(AztecProtocol/aztec-packages#5389)
([2bd006a](2bd006a))
* Add session id to foreign call RPC requests
([#5205](#5205))
([14adafc](14adafc))
* AES blackbox
(AztecProtocol/aztec-packages#6016)
([73a635e](73a635e))
* **avm:** Integrate AVM with initializers
(AztecProtocol/aztec-packages#5469)
([2bd006a](2bd006a))
* Avoid heap allocs when going to/from field
(AztecProtocol/aztec-packages#7547)
([daad75c](daad75c))
* Bit shift is restricted to u8 right operand
([#4907](#4907))
([c4b0369](c4b0369))
* Brillig heterogeneous memory cells
(AztecProtocol/aztec-packages#5608)
([305bcdc](305bcdc))
* Brillig pointer codegen and execution
(AztecProtocol/aztec-packages#5737)
([0f9ae0a](0f9ae0a))
* Brillig typed memory
(AztecProtocol/aztec-packages#5395)
([0bc18c4](0bc18c4))
* Change backend width to 4
(AztecProtocol/aztec-packages#5374)
([0f9ae0a](0f9ae0a))
* Constant inputs for blackbox
(AztecProtocol/aztec-packages#7222)
([fb97bb9](fb97bb9))
* Contract interfaces and better function calls
(AztecProtocol/aztec-packages#5687)
([0f9ae0a](0f9ae0a))
* Contract_abi-exports
(AztecProtocol/aztec-packages#5386)
([2bd006a](2bd006a))
* Dynamic assertion payloads v2
(AztecProtocol/aztec-packages#5949)
([73a635e](73a635e))
* Handle `BrilligCall` opcodes in the debugger
([#4897](#4897))
([b380dc4](b380dc4))
* Impl of missing functionality in new key store
(AztecProtocol/aztec-packages#5750)
([0f9ae0a](0f9ae0a))
* Increase default expression width to 4
([#4995](#4995))
([f01d309](f01d309))
* Integrate new proving systems in e2e
(AztecProtocol/aztec-packages#6971)
([daad75c](daad75c))
* Make ACVM generic across fields
([#5114](#5114))
([70f374c](70f374c))
* Make Brillig do integer arithmetic operations using u128 instead of
Bigint (AztecProtocol/aztec-packages#7518)
([daad75c](daad75c))
* Move abi demonomorphizer to noir_codegen and use noir_codegen in
protocol types
(AztecProtocol/aztec-packages#6302)
([436bbda](436bbda))
* Move to_radix to a blackbox
(AztecProtocol/aztec-packages#6294)
([436bbda](436bbda))
* **nargo:** Handle call stacks for multiple Acir calls
([#4711](#4711))
([5b23171](5b23171))
* **nargo:** Hidden option to show contract artifact paths written by
`nargo compile`
(AztecProtocol/aztec-packages#6131)
([ff67e14](ff67e14))
* Parsing non-string assertion payloads in noir js
(AztecProtocol/aztec-packages#6079)
([73a635e](73a635e))
* Private Kernel Recursion
(AztecProtocol/aztec-packages#6278)
([436bbda](436bbda))
* Proper padding in ts AES and constrained AES in body and header
computations (AztecProtocol/aztec-packages#6269)
([436bbda](436bbda))
* Remove conditional compilation of `bn254_blackbox_solver`
([#5058](#5058))
([9420d7c](9420d7c))
* Remove external blackbox solver from acir simulator
(AztecProtocol/aztec-packages#6586)
([a40a9a5](a40a9a5))
* Restore hashing args via slice for performance
(AztecProtocol/aztec-packages#5539)
([2bd006a](2bd006a))
* Restrict noir word size to u32
([#5180](#5180))
([bdb2bc6](bdb2bc6))
* Separate runtimes of SSA functions before inlining
([#5121](#5121))
([69eca9b](69eca9b))
* Set aztec private functions to be recursive
(AztecProtocol/aztec-packages#6192)
([73a635e](73a635e))
* **simulator:** Fetch return values at circuit execution
(AztecProtocol/aztec-packages#5642)
([305bcdc](305bcdc))
* Specify databus arrays for BB
(AztecProtocol/aztec-packages#6239)
([436bbda](436bbda))
* Storage_layout and `#[aztec(storage)]`
(AztecProtocol/aztec-packages#5387)
([2bd006a](2bd006a))
* Switch `bb` over to read ACIR from nargo artifacts
(AztecProtocol/aztec-packages#6283)
([436bbda](436bbda))
* Sync from noir
(AztecProtocol/aztec-packages#5572)
([2bd006a](2bd006a))
* Sync from noir
(AztecProtocol/aztec-packages#5619)
([2bd006a](2bd006a))
* Sync from noir
(AztecProtocol/aztec-packages#5697)
([305bcdc](305bcdc))
* Sync from noir
(AztecProtocol/aztec-packages#5794)
([0f9ae0a](0f9ae0a))
* Sync from noir
(AztecProtocol/aztec-packages#5814)
([0f9ae0a](0f9ae0a))
* Sync from noir
(AztecProtocol/aztec-packages#5935)
([1b867b1](1b867b1))
* Sync from noir
(AztecProtocol/aztec-packages#5955)
([1b867b1](1b867b1))
* Sync from noir
(AztecProtocol/aztec-packages#5999)
([1b867b1](1b867b1))
* Sync from noir
(AztecProtocol/aztec-packages#6280)
([436bbda](436bbda))
* Sync from noir
(AztecProtocol/aztec-packages#6332)
([436bbda](436bbda))
* Sync from noir
(AztecProtocol/aztec-packages#6573)
([436bbda](436bbda))
* Sync from noir
(AztecProtocol/aztec-packages#7392)
([fb97bb9](fb97bb9))
* Sync from noir
(AztecProtocol/aztec-packages#7400)
([fb97bb9](fb97bb9))
* Sync from noir
(AztecProtocol/aztec-packages#7432)
([daad75c](daad75c))
* Sync from noir
(AztecProtocol/aztec-packages#7444)
([daad75c](daad75c))
* Sync from noir
(AztecProtocol/aztec-packages#7454)
([daad75c](daad75c))
* Sync from noir
(AztecProtocol/aztec-packages#7512)
([daad75c](daad75c))
* Sync from noir
(AztecProtocol/aztec-packages#7577)
([daad75c](daad75c))
* Sync from noir
(AztecProtocol/aztec-packages#7583)
([daad75c](daad75c))
* ToRadix BB + avm transpiler support
(AztecProtocol/aztec-packages#6330)
([436bbda](436bbda))
* Trap with revert data
(AztecProtocol/aztec-packages#5732)
([0f9ae0a](0f9ae0a))
* Typing return values of embedded_curve_ops
(AztecProtocol/aztec-packages#7413)
([daad75c](daad75c))
* Use fixed size arrays in black box functions where sizes are known
(AztecProtocol/aztec-packages#5620)
([0f9ae0a](0f9ae0a))
* Variable length returns
(AztecProtocol/aztec-packages#5633)
([305bcdc](305bcdc))


### Bug Fixes

* **acvm:** Mark outputs of Opcode::Call solvable
([#4708](#4708))
([8fea405](8fea405))
* Add support for nested arrays returned by oracles
([#5132](#5132))
([f846879](f846879))
* Add trailing extra arguments for backend in gates_flamegraph
(AztecProtocol/aztec-packages#7472)
([daad75c](daad75c))
* Avoid huge unrolling in hash_args
(AztecProtocol/aztec-packages#5703)
([305bcdc](305bcdc))
* Avoid unnecessarily splitting expressions with multiplication terms
with a shared term
([#5291](#5291))
([19884f1](19884f1))
* Catch panics from EC point creation (e.g. the point is at infinity)
([#4790](#4790))
([645dba1](645dba1))
* Check for public args in aztec functions
(AztecProtocol/aztec-packages#6355)
([436bbda](436bbda))
* Don't reuse brillig with slice arguments
(AztecProtocol/aztec-packages#5800)
([0f9ae0a](0f9ae0a))
* Handle struct with nested arrays in oracle return values
([#5244](#5244))
([a30814f](a30814f))
* Issue 4682 and add solver for unconstrained bigintegers
([#4729](#4729))
([e4d33c1](e4d33c1))
* Move BigInt modulus checks to runtime in brillig
([#5374](#5374))
([741d339](741d339))
* Proper field inversion for bigints
([#4802](#4802))
([b46d0e3](b46d0e3))
* Revert "feat: Sync from noir
(AztecProtocol/aztec-packages#7512)"
(AztecProtocol/aztec-packages#7558)
([daad75c](daad75c))
* Runtime brillig bigint id assignment
([#5369](#5369))
([a8928dd](a8928dd))
* Temporarily revert to_radix blackbox
(AztecProtocol/aztec-packages#6304)
([436bbda](436bbda))


### Miscellaneous Chores

* Remove `Opcode::Brillig` from ACIR
(AztecProtocol/aztec-packages#5995)
([73a635e](73a635e))
* Remove fixed-length keccak256
(AztecProtocol/aztec-packages#5617)
([305bcdc](305bcdc))
</details>

---
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: kevaundray <kevtheappdev@gmail.com>
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Aug 7, 2024
feat: Derive `Ord` and `Hash` in the stdlib; add `std::meta::make_impl` helper (noir-lang/noir#5683)
feat(ssa): Simple serialization of unoptimized SSA to file (noir-lang/noir#5679)
feat: LSP closing brace hints (noir-lang/noir#5686)
feat: Implement closures in the comptime interpreter (noir-lang/noir#5682)
feat: add `FunctionDefinition::parameters`, `FunctionDefinition::return_type` and `impl Eq for Quoted` (noir-lang/noir#5681)
feat: add `Type::as_struct` (noir-lang/noir#5680)
feat: LSP hover now includes "Go to" links (noir-lang/noir#5677)
feat: add `Type` methods: `as_tuple`, `as_slice`, `as_array`, `as_constant`, `is_bool` (noir-lang/noir#5678)
fix: Derive generic types (noir-lang/noir#5674)
feat: Add a limited form of arithmetic on generics (noir-lang/noir#5625)
feat: add `Type::is_field` and `Type::as_integer` (noir-lang/noir#5670)
fix: Fix where clause issue in items generated from attributes (noir-lang/noir#5673)
feat(noir_js): Expose UltraHonk and integration tests (noir-lang/noir#5656)
fix: workaround from_slice with nested slices (noir-lang/noir#5648)
fix: Switch verify proof to arrays (noir-lang/noir#5664)
feat: Resolve arguments to attributes (noir-lang/noir#5649)
fix: Elaborate struct & trait annotations in the correct module (noir-lang/noir#5643)
fix: let a trait impl that relies on another trait work (noir-lang/noir#5646)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Aug 8, 2024
…r#5684)

chore: Release Noir(0.33.0) (noir-lang/noir#5550)
feat: Derive `Ord` and `Hash` in the stdlib; add `std::meta::make_impl` helper (noir-lang/noir#5683)
feat(ssa): Simple serialization of unoptimized SSA to file (noir-lang/noir#5679)
feat: LSP closing brace hints (noir-lang/noir#5686)
feat: Implement closures in the comptime interpreter (noir-lang/noir#5682)
feat: add `FunctionDefinition::parameters`, `FunctionDefinition::return_type` and `impl Eq for Quoted` (noir-lang/noir#5681)
feat: add `Type::as_struct` (noir-lang/noir#5680)
feat: LSP hover now includes "Go to" links (noir-lang/noir#5677)
feat: add `Type` methods: `as_tuple`, `as_slice`, `as_array`, `as_constant`, `is_bool` (noir-lang/noir#5678)
fix: Derive generic types (noir-lang/noir#5674)
feat: Add a limited form of arithmetic on generics (noir-lang/noir#5625)
feat: add `Type::is_field` and `Type::as_integer` (noir-lang/noir#5670)
fix: Fix where clause issue in items generated from attributes (noir-lang/noir#5673)
feat(noir_js): Expose UltraHonk and integration tests (noir-lang/noir#5656)
fix: workaround from_slice with nested slices (noir-lang/noir#5648)
fix: Switch verify proof to arrays (noir-lang/noir#5664)
feat: Resolve arguments to attributes (noir-lang/noir#5649)
fix: Elaborate struct & trait annotations in the correct module (noir-lang/noir#5643)
fix: let a trait impl that relies on another trait work (noir-lang/noir#5646)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Aug 8, 2024
…oir-lang/noir#5696)

feat: add mutating FunctionDefinition functions (noir-lang/noir#5685)
chore: Add docs tip about filenames between commands (noir-lang/noir#5695)
fix: Add locations to most SSA instructions (noir-lang/noir#5697)
feat: Add array_to_str_lossy (noir-lang/noir#5613)
chore: Add parser support for `<MyType as Trait>::ident` (noir-lang/noir#5688)
feat: add some `Module` comptime functions (noir-lang/noir#5684)
chore: Release Noir(0.33.0) (noir-lang/noir#5550)
feat: Derive `Ord` and `Hash` in the stdlib; add `std::meta::make_impl` helper (noir-lang/noir#5683)
feat(ssa): Simple serialization of unoptimized SSA to file (noir-lang/noir#5679)
feat: LSP closing brace hints (noir-lang/noir#5686)
feat: Implement closures in the comptime interpreter (noir-lang/noir#5682)
feat: add `FunctionDefinition::parameters`, `FunctionDefinition::return_type` and `impl Eq for Quoted` (noir-lang/noir#5681)
feat: add `Type::as_struct` (noir-lang/noir#5680)
feat: LSP hover now includes "Go to" links (noir-lang/noir#5677)
feat: add `Type` methods: `as_tuple`, `as_slice`, `as_array`, `as_constant`, `is_bool` (noir-lang/noir#5678)
fix: Derive generic types (noir-lang/noir#5674)
feat: Add a limited form of arithmetic on generics (noir-lang/noir#5625)
feat: add `Type::is_field` and `Type::as_integer` (noir-lang/noir#5670)
fix: Fix where clause issue in items generated from attributes (noir-lang/noir#5673)
feat(noir_js): Expose UltraHonk and integration tests (noir-lang/noir#5656)
fix: workaround from_slice with nested slices (noir-lang/noir#5648)
fix: Switch verify proof to arrays (noir-lang/noir#5664)
feat: Resolve arguments to attributes (noir-lang/noir#5649)
fix: Elaborate struct & trait annotations in the correct module (noir-lang/noir#5643)
fix: let a trait impl that relies on another trait work (noir-lang/noir#5646)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Aug 8, 2024
…oir-lang/noir#5696)

feat: add mutating FunctionDefinition functions (noir-lang/noir#5685)
chore: Add docs tip about filenames between commands (noir-lang/noir#5695)
fix: Add locations to most SSA instructions (noir-lang/noir#5697)
feat: Add array_to_str_lossy (noir-lang/noir#5613)
chore: Add parser support for `<MyType as Trait>::ident` (noir-lang/noir#5688)
feat: add some `Module` comptime functions (noir-lang/noir#5684)
chore: Release Noir(0.33.0) (noir-lang/noir#5550)
feat: Derive `Ord` and `Hash` in the stdlib; add `std::meta::make_impl` helper (noir-lang/noir#5683)
feat(ssa): Simple serialization of unoptimized SSA to file (noir-lang/noir#5679)
feat: LSP closing brace hints (noir-lang/noir#5686)
feat: Implement closures in the comptime interpreter (noir-lang/noir#5682)
feat: add `FunctionDefinition::parameters`, `FunctionDefinition::return_type` and `impl Eq for Quoted` (noir-lang/noir#5681)
feat: add `Type::as_struct` (noir-lang/noir#5680)
feat: LSP hover now includes "Go to" links (noir-lang/noir#5677)
feat: add `Type` methods: `as_tuple`, `as_slice`, `as_array`, `as_constant`, `is_bool` (noir-lang/noir#5678)
fix: Derive generic types (noir-lang/noir#5674)
feat: Add a limited form of arithmetic on generics (noir-lang/noir#5625)
feat: add `Type::is_field` and `Type::as_integer` (noir-lang/noir#5670)
fix: Fix where clause issue in items generated from attributes (noir-lang/noir#5673)
feat(noir_js): Expose UltraHonk and integration tests (noir-lang/noir#5656)
fix: workaround from_slice with nested slices (noir-lang/noir#5648)
fix: Switch verify proof to arrays (noir-lang/noir#5664)
feat: Resolve arguments to attributes (noir-lang/noir#5649)
fix: Elaborate struct & trait annotations in the correct module (noir-lang/noir#5643)
fix: let a trait impl that relies on another trait work (noir-lang/noir#5646)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Aug 9, 2024
…oir-lang/noir#5696)

feat: add mutating FunctionDefinition functions (noir-lang/noir#5685)
chore: Add docs tip about filenames between commands (noir-lang/noir#5695)
fix: Add locations to most SSA instructions (noir-lang/noir#5697)
feat: Add array_to_str_lossy (noir-lang/noir#5613)
chore: Add parser support for `<MyType as Trait>::ident` (noir-lang/noir#5688)
feat: add some `Module` comptime functions (noir-lang/noir#5684)
chore: Release Noir(0.33.0) (noir-lang/noir#5550)
feat: Derive `Ord` and `Hash` in the stdlib; add `std::meta::make_impl` helper (noir-lang/noir#5683)
feat(ssa): Simple serialization of unoptimized SSA to file (noir-lang/noir#5679)
feat: LSP closing brace hints (noir-lang/noir#5686)
feat: Implement closures in the comptime interpreter (noir-lang/noir#5682)
feat: add `FunctionDefinition::parameters`, `FunctionDefinition::return_type` and `impl Eq for Quoted` (noir-lang/noir#5681)
feat: add `Type::as_struct` (noir-lang/noir#5680)
feat: LSP hover now includes "Go to" links (noir-lang/noir#5677)
feat: add `Type` methods: `as_tuple`, `as_slice`, `as_array`, `as_constant`, `is_bool` (noir-lang/noir#5678)
fix: Derive generic types (noir-lang/noir#5674)
feat: Add a limited form of arithmetic on generics (noir-lang/noir#5625)
feat: add `Type::is_field` and `Type::as_integer` (noir-lang/noir#5670)
fix: Fix where clause issue in items generated from attributes (noir-lang/noir#5673)
feat(noir_js): Expose UltraHonk and integration tests (noir-lang/noir#5656)
fix: workaround from_slice with nested slices (noir-lang/noir#5648)
fix: Switch verify proof to arrays (noir-lang/noir#5664)
feat: Resolve arguments to attributes (noir-lang/noir#5649)
fix: Elaborate struct & trait annotations in the correct module (noir-lang/noir#5643)
fix: let a trait impl that relies on another trait work (noir-lang/noir#5646)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Aug 9, 2024
…r#5696)

feat: add mutating FunctionDefinition functions (noir-lang/noir#5685)
chore: Add docs tip about filenames between commands (noir-lang/noir#5695)
fix: Add locations to most SSA instructions (noir-lang/noir#5697)
feat: Add array_to_str_lossy (noir-lang/noir#5613)
chore: Add parser support for `<MyType as Trait>::ident` (noir-lang/noir#5688)
feat: add some `Module` comptime functions (noir-lang/noir#5684)
chore: Release Noir(0.33.0) (noir-lang/noir#5550)
feat: Derive `Ord` and `Hash` in the stdlib; add `std::meta::make_impl` helper (noir-lang/noir#5683)
feat(ssa): Simple serialization of unoptimized SSA to file (noir-lang/noir#5679)
feat: LSP closing brace hints (noir-lang/noir#5686)
feat: Implement closures in the comptime interpreter (noir-lang/noir#5682)
feat: add `FunctionDefinition::parameters`, `FunctionDefinition::return_type` and `impl Eq for Quoted` (noir-lang/noir#5681)
feat: add `Type::as_struct` (noir-lang/noir#5680)
feat: LSP hover now includes "Go to" links (noir-lang/noir#5677)
feat: add `Type` methods: `as_tuple`, `as_slice`, `as_array`, `as_constant`, `is_bool` (noir-lang/noir#5678)
fix: Derive generic types (noir-lang/noir#5674)
feat: Add a limited form of arithmetic on generics (noir-lang/noir#5625)
feat: add `Type::is_field` and `Type::as_integer` (noir-lang/noir#5670)
fix: Fix where clause issue in items generated from attributes (noir-lang/noir#5673)
feat(noir_js): Expose UltraHonk and integration tests (noir-lang/noir#5656)
fix: workaround from_slice with nested slices (noir-lang/noir#5648)
fix: Switch verify proof to arrays (noir-lang/noir#5664)
feat: Resolve arguments to attributes (noir-lang/noir#5649)
fix: Elaborate struct & trait annotations in the correct module (noir-lang/noir#5643)
fix: let a trait impl that relies on another trait work (noir-lang/noir#5646)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Aug 10, 2024
…r#5704)

feat: add `Type::implements` (noir-lang/noir#5701)
fix: Do not duplicate redundant Brillig debug metadata (noir-lang/noir#5696)
feat: add mutating FunctionDefinition functions (noir-lang/noir#5685)
chore: Add docs tip about filenames between commands (noir-lang/noir#5695)
fix: Add locations to most SSA instructions (noir-lang/noir#5697)
feat: Add array_to_str_lossy (noir-lang/noir#5613)
chore: Add parser support for `<MyType as Trait>::ident` (noir-lang/noir#5688)
feat: add some `Module` comptime functions (noir-lang/noir#5684)
chore: Release Noir(0.33.0) (noir-lang/noir#5550)
feat: Derive `Ord` and `Hash` in the stdlib; add `std::meta::make_impl` helper (noir-lang/noir#5683)
feat(ssa): Simple serialization of unoptimized SSA to file (noir-lang/noir#5679)
feat: LSP closing brace hints (noir-lang/noir#5686)
feat: Implement closures in the comptime interpreter (noir-lang/noir#5682)
feat: add `FunctionDefinition::parameters`, `FunctionDefinition::return_type` and `impl Eq for Quoted` (noir-lang/noir#5681)
feat: add `Type::as_struct` (noir-lang/noir#5680)
feat: LSP hover now includes "Go to" links (noir-lang/noir#5677)
feat: add `Type` methods: `as_tuple`, `as_slice`, `as_array`, `as_constant`, `is_bool` (noir-lang/noir#5678)
fix: Derive generic types (noir-lang/noir#5674)
feat: Add a limited form of arithmetic on generics (noir-lang/noir#5625)
feat: add `Type::is_field` and `Type::as_integer` (noir-lang/noir#5670)
fix: Fix where clause issue in items generated from attributes (noir-lang/noir#5673)
feat(noir_js): Expose UltraHonk and integration tests (noir-lang/noir#5656)
fix: workaround from_slice with nested slices (noir-lang/noir#5648)
fix: Switch verify proof to arrays (noir-lang/noir#5664)
feat: Resolve arguments to attributes (noir-lang/noir#5649)
fix: Elaborate struct & trait annotations in the correct module (noir-lang/noir#5643)
fix: let a trait impl that relies on another trait work (noir-lang/noir#5646)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Aug 11, 2024
…r#5704)

feat: add `Type::implements` (noir-lang/noir#5701)
fix: Do not duplicate redundant Brillig debug metadata (noir-lang/noir#5696)
feat: add mutating FunctionDefinition functions (noir-lang/noir#5685)
chore: Add docs tip about filenames between commands (noir-lang/noir#5695)
fix: Add locations to most SSA instructions (noir-lang/noir#5697)
feat: Add array_to_str_lossy (noir-lang/noir#5613)
chore: Add parser support for `<MyType as Trait>::ident` (noir-lang/noir#5688)
feat: add some `Module` comptime functions (noir-lang/noir#5684)
chore: Release Noir(0.33.0) (noir-lang/noir#5550)
feat: Derive `Ord` and `Hash` in the stdlib; add `std::meta::make_impl` helper (noir-lang/noir#5683)
feat(ssa): Simple serialization of unoptimized SSA to file (noir-lang/noir#5679)
feat: LSP closing brace hints (noir-lang/noir#5686)
feat: Implement closures in the comptime interpreter (noir-lang/noir#5682)
feat: add `FunctionDefinition::parameters`, `FunctionDefinition::return_type` and `impl Eq for Quoted` (noir-lang/noir#5681)
feat: add `Type::as_struct` (noir-lang/noir#5680)
feat: LSP hover now includes "Go to" links (noir-lang/noir#5677)
feat: add `Type` methods: `as_tuple`, `as_slice`, `as_array`, `as_constant`, `is_bool` (noir-lang/noir#5678)
fix: Derive generic types (noir-lang/noir#5674)
feat: Add a limited form of arithmetic on generics (noir-lang/noir#5625)
feat: add `Type::is_field` and `Type::as_integer` (noir-lang/noir#5670)
fix: Fix where clause issue in items generated from attributes (noir-lang/noir#5673)
feat(noir_js): Expose UltraHonk and integration tests (noir-lang/noir#5656)
fix: workaround from_slice with nested slices (noir-lang/noir#5648)
fix: Switch verify proof to arrays (noir-lang/noir#5664)
feat: Resolve arguments to attributes (noir-lang/noir#5649)
fix: Elaborate struct & trait annotations in the correct module (noir-lang/noir#5643)
fix: let a trait impl that relies on another trait work (noir-lang/noir#5646)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Aug 12, 2024
…r#5704)

feat: add `Type::implements` (noir-lang/noir#5701)
fix: Do not duplicate redundant Brillig debug metadata (noir-lang/noir#5696)
feat: add mutating FunctionDefinition functions (noir-lang/noir#5685)
chore: Add docs tip about filenames between commands (noir-lang/noir#5695)
fix: Add locations to most SSA instructions (noir-lang/noir#5697)
feat: Add array_to_str_lossy (noir-lang/noir#5613)
chore: Add parser support for `<MyType as Trait>::ident` (noir-lang/noir#5688)
feat: add some `Module` comptime functions (noir-lang/noir#5684)
chore: Release Noir(0.33.0) (noir-lang/noir#5550)
feat: Derive `Ord` and `Hash` in the stdlib; add `std::meta::make_impl` helper (noir-lang/noir#5683)
feat(ssa): Simple serialization of unoptimized SSA to file (noir-lang/noir#5679)
feat: LSP closing brace hints (noir-lang/noir#5686)
feat: Implement closures in the comptime interpreter (noir-lang/noir#5682)
feat: add `FunctionDefinition::parameters`, `FunctionDefinition::return_type` and `impl Eq for Quoted` (noir-lang/noir#5681)
feat: add `Type::as_struct` (noir-lang/noir#5680)
feat: LSP hover now includes "Go to" links (noir-lang/noir#5677)
feat: add `Type` methods: `as_tuple`, `as_slice`, `as_array`, `as_constant`, `is_bool` (noir-lang/noir#5678)
fix: Derive generic types (noir-lang/noir#5674)
feat: Add a limited form of arithmetic on generics (noir-lang/noir#5625)
feat: add `Type::is_field` and `Type::as_integer` (noir-lang/noir#5670)
fix: Fix where clause issue in items generated from attributes (noir-lang/noir#5673)
feat(noir_js): Expose UltraHonk and integration tests (noir-lang/noir#5656)
fix: workaround from_slice with nested slices (noir-lang/noir#5648)
fix: Switch verify proof to arrays (noir-lang/noir#5664)
feat: Resolve arguments to attributes (noir-lang/noir#5649)
fix: Elaborate struct & trait annotations in the correct module (noir-lang/noir#5643)
fix: let a trait impl that relies on another trait work (noir-lang/noir#5646)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Aug 12, 2024
fix(debugger): Update the debugger to handle the new Brillig debug metadata format (noir-lang/noir#5706)
feat: add `Quoted::as_expr` and `Expr::as_function_call` (noir-lang/noir#5708)
feat: LSP autocompletion for use statement (noir-lang/noir#5704)
feat: add `Type::implements` (noir-lang/noir#5701)
fix: Do not duplicate redundant Brillig debug metadata (noir-lang/noir#5696)
feat: add mutating FunctionDefinition functions (noir-lang/noir#5685)
chore: Add docs tip about filenames between commands (noir-lang/noir#5695)
fix: Add locations to most SSA instructions (noir-lang/noir#5697)
feat: Add array_to_str_lossy (noir-lang/noir#5613)
chore: Add parser support for `<MyType as Trait>::ident` (noir-lang/noir#5688)
feat: add some `Module` comptime functions (noir-lang/noir#5684)
chore: Release Noir(0.33.0) (noir-lang/noir#5550)
feat: Derive `Ord` and `Hash` in the stdlib; add `std::meta::make_impl` helper (noir-lang/noir#5683)
feat(ssa): Simple serialization of unoptimized SSA to file (noir-lang/noir#5679)
feat: LSP closing brace hints (noir-lang/noir#5686)
feat: Implement closures in the comptime interpreter (noir-lang/noir#5682)
feat: add `FunctionDefinition::parameters`, `FunctionDefinition::return_type` and `impl Eq for Quoted` (noir-lang/noir#5681)
feat: add `Type::as_struct` (noir-lang/noir#5680)
feat: LSP hover now includes "Go to" links (noir-lang/noir#5677)
feat: add `Type` methods: `as_tuple`, `as_slice`, `as_array`, `as_constant`, `is_bool` (noir-lang/noir#5678)
fix: Derive generic types (noir-lang/noir#5674)
feat: Add a limited form of arithmetic on generics (noir-lang/noir#5625)
feat: add `Type::is_field` and `Type::as_integer` (noir-lang/noir#5670)
fix: Fix where clause issue in items generated from attributes (noir-lang/noir#5673)
feat(noir_js): Expose UltraHonk and integration tests (noir-lang/noir#5656)
fix: workaround from_slice with nested slices (noir-lang/noir#5648)
fix: Switch verify proof to arrays (noir-lang/noir#5664)
feat: Resolve arguments to attributes (noir-lang/noir#5649)
fix: Elaborate struct & trait annotations in the correct module (noir-lang/noir#5643)
fix: let a trait impl that relies on another trait work (noir-lang/noir#5646)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Aug 13, 2024
…g/noir#5710)

feat: LSP path completion (noir-lang/noir#5712)
fix(debugger): Update the debugger to handle the new Brillig debug metadata format (noir-lang/noir#5706)
feat: add `Quoted::as_expr` and `Expr::as_function_call` (noir-lang/noir#5708)
feat: LSP autocompletion for use statement (noir-lang/noir#5704)
feat: add `Type::implements` (noir-lang/noir#5701)
fix: Do not duplicate redundant Brillig debug metadata (noir-lang/noir#5696)
feat: add mutating FunctionDefinition functions (noir-lang/noir#5685)
chore: Add docs tip about filenames between commands (noir-lang/noir#5695)
fix: Add locations to most SSA instructions (noir-lang/noir#5697)
feat: Add array_to_str_lossy (noir-lang/noir#5613)
chore: Add parser support for `<MyType as Trait>::ident` (noir-lang/noir#5688)
feat: add some `Module` comptime functions (noir-lang/noir#5684)
chore: Release Noir(0.33.0) (noir-lang/noir#5550)
feat: Derive `Ord` and `Hash` in the stdlib; add `std::meta::make_impl` helper (noir-lang/noir#5683)
feat(ssa): Simple serialization of unoptimized SSA to file (noir-lang/noir#5679)
feat: LSP closing brace hints (noir-lang/noir#5686)
feat: Implement closures in the comptime interpreter (noir-lang/noir#5682)
feat: add `FunctionDefinition::parameters`, `FunctionDefinition::return_type` and `impl Eq for Quoted` (noir-lang/noir#5681)
feat: add `Type::as_struct` (noir-lang/noir#5680)
feat: LSP hover now includes "Go to" links (noir-lang/noir#5677)
feat: add `Type` methods: `as_tuple`, `as_slice`, `as_array`, `as_constant`, `is_bool` (noir-lang/noir#5678)
fix: Derive generic types (noir-lang/noir#5674)
feat: Add a limited form of arithmetic on generics (noir-lang/noir#5625)
feat: add `Type::is_field` and `Type::as_integer` (noir-lang/noir#5670)
fix: Fix where clause issue in items generated from attributes (noir-lang/noir#5673)
feat(noir_js): Expose UltraHonk and integration tests (noir-lang/noir#5656)
fix: workaround from_slice with nested slices (noir-lang/noir#5648)
fix: Switch verify proof to arrays (noir-lang/noir#5664)
feat: Resolve arguments to attributes (noir-lang/noir#5649)
fix: Elaborate struct & trait annotations in the correct module (noir-lang/noir#5643)
fix: let a trait impl that relies on another trait work (noir-lang/noir#5646)
vezenovm added a commit to AztecProtocol/aztec-packages that referenced this pull request Aug 13, 2024
Automated pull of development from the
[noir](https://github.com/noir-lang/noir) programming language, a
dependency of Aztec.
BEGIN_COMMIT_OVERRIDE
fix: Do not duplicate redundant Brillig debug metadata
(noir-lang/noir#5696)
feat: add mutating FunctionDefinition functions
(noir-lang/noir#5685)
chore: Add docs tip about filenames between commands
(noir-lang/noir#5695)
fix: Add locations to most SSA instructions
(noir-lang/noir#5697)
feat: Add array_to_str_lossy
(noir-lang/noir#5613)
chore: Add parser support for `<MyType as Trait>::ident`
(noir-lang/noir#5688)
feat: add some `Module` comptime functions
(noir-lang/noir#5684)
chore: Release Noir(0.33.0)
(noir-lang/noir#5550)
feat: Derive `Ord` and `Hash` in the stdlib; add `std::meta::make_impl`
helper (noir-lang/noir#5683)
feat(ssa): Simple serialization of unoptimized SSA to file
(noir-lang/noir#5679)
feat: LSP closing brace hints
(noir-lang/noir#5686)
feat: Implement closures in the comptime interpreter
(noir-lang/noir#5682)
feat: add `FunctionDefinition::parameters`,
`FunctionDefinition::return_type` and `impl Eq for Quoted`
(noir-lang/noir#5681)
feat: add `Type::as_struct`
(noir-lang/noir#5680)
feat: LSP hover now includes "Go to" links
(noir-lang/noir#5677)
feat: add `Type` methods: `as_tuple`, `as_slice`, `as_array`,
`as_constant`, `is_bool` (noir-lang/noir#5678)
fix: Derive generic types (noir-lang/noir#5674)
feat: Add a limited form of arithmetic on generics
(noir-lang/noir#5625)
feat: add `Type::is_field` and `Type::as_integer`
(noir-lang/noir#5670)
fix: Fix where clause issue in items generated from attributes
(noir-lang/noir#5673)
feat(noir_js): Expose UltraHonk and integration tests
(noir-lang/noir#5656)
fix: workaround from_slice with nested slices
(noir-lang/noir#5648)
fix: Switch verify proof to arrays
(noir-lang/noir#5664)
feat: Resolve arguments to attributes
(noir-lang/noir#5649)
fix: Elaborate struct & trait annotations in the correct module
(noir-lang/noir#5643)
fix: let a trait impl that relies on another trait work
(noir-lang/noir#5646)
END_COMMIT_OVERRIDE

---------

Co-authored-by: Maxim Vezenov <mvezenov@gmail.com>
rahul-kothari pushed a commit to AztecProtocol/aztec-packages that referenced this pull request Aug 15, 2024
🤖 I have created a release *beep* *boop*
---


<details><summary>aztec-package: 0.49.0</summary>

##
[0.49.0](aztec-package-v0.48.0...aztec-package-v0.49.0)
(2024-08-15)


### ⚠ BREAKING CHANGES

* Sequencer no longer proves
([#7860](#7860))

### Miscellaneous

* Enable execute command on aws ecs services
([#7975](#7975))
([4331bc6](4331bc6))
* Sequencer no longer proves
([#7860](#7860))
([7168290](7168290))
* Terraform template for prover-node
([#7846](#7846))
([546f946](546f946))
</details>

<details><summary>barretenberg.js: 0.49.0</summary>

##
[0.49.0](barretenberg.js-v0.48.0...barretenberg.js-v0.49.0)
(2024-08-15)


### Miscellaneous

* Pin yarn versions in noir-projects and bb/ts
([#7988](#7988))
([83f33a1](83f33a1))
</details>

<details><summary>aztec-packages: 0.49.0</summary>

##
[0.49.0](aztec-packages-v0.48.0...aztec-packages-v0.49.0)
(2024-08-15)


### ⚠ BREAKING CHANGES

* alternative key registry contract
([#7523](#7523))
* Sequencer no longer proves
([#7860](#7860))

### Features

* Add `FunctionDefinition::parameters`,
`FunctionDefinition::return_type` and `impl Eq for Quoted`
(noir-lang/noir#5681)
([b1c7374](b1c7374))
* Add `Quoted::as_expr` and `Expr::as_function_call`
(noir-lang/noir#5708)
([91042c7](91042c7))
* Add `Type::as_struct` (noir-lang/noir#5680)
([b1c7374](b1c7374))
* Add `Type::get_trait_impl`
(noir-lang/noir#5716)
([ccbef55](ccbef55))
* Add `Type::implements` (noir-lang/noir#5701)
([91042c7](91042c7))
* Add `Type::is_field` and `Type::as_integer`
(noir-lang/noir#5670)
([b1c7374](b1c7374))
* Add `Type` methods: `as_tuple`, `as_slice`, `as_array`, `as_constant`,
`is_bool` (noir-lang/noir#5678)
([b1c7374](b1c7374))
* Add a limited form of arithmetic on generics
(noir-lang/noir#5625)
([b1c7374](b1c7374))
* Add array_to_str_lossy (noir-lang/noir#5613)
([b1c7374](b1c7374))
* Add generate-secret-and-hash to cli
([#7977](#7977))
([cdf62a0](cdf62a0))
* Add mutating FunctionDefinition functions
(noir-lang/noir#5685)
([b1c7374](b1c7374))
* Add proven flag to sent tx wait opts
([#7950](#7950))
([e80e7d2](e80e7d2))
* Add some `Module` comptime functions
(noir-lang/noir#5684)
([b1c7374](b1c7374))
* Alternative key registry contract
([#7523](#7523))
([3e6a20f](3e6a20f))
* **avm:** More no fake rows + virtual dyn gas (part 1)
([#7942](#7942))
([9e8ba96](9e8ba96))
* Derive `Ord` and `Hash` in the stdlib; add `std::meta::make_impl`
helper (noir-lang/noir#5683)
([b1c7374](b1c7374))
* Destroy_note_unsafe
([#7891](#7891))
([5cda7ba](5cda7ba))
* **docs:** Nits
([#7838](#7838))
([a76c999](a76c999))
* Enable UltraHonk verifier
([#7923](#7923))
([5e8b4a8](5e8b4a8)),
closes
[#7373](#7373)
* Implement closures in the comptime interpreter
(noir-lang/noir#5682)
([b1c7374](b1c7374))
* IVC integration tests using new accumulate model
([#7946](#7946))
([c527ae9](c527ae9))
* LSP autocompletion for use statement
(noir-lang/noir#5704)
([91042c7](91042c7))
* LSP closing brace hints (noir-lang/noir#5686)
([b1c7374](b1c7374))
* LSP fields, functions and methods completion after "." and "::"
(noir-lang/noir#5714)
([ccbef55](ccbef55))
* LSP hover now includes "Go to" links
(noir-lang/noir#5677)
([b1c7374](b1c7374))
* LSP path completion (noir-lang/noir#5712)
([91042c7](91042c7))
* **noir_js:** Expose UltraHonk and integration tests
(noir-lang/noir#5656)
([b1c7374](b1c7374))
* Optimizing PrivateFPC
([#7980](#7980))
([d018335](d018335))
* Private refunds optimizations
([#7968](#7968))
([cea8295](cea8295))
* Resolve arguments to attributes
(noir-lang/noir#5649)
([b1c7374](b1c7374))
* **ssa:** Simple serialization of unoptimized SSA to file
(noir-lang/noir#5679)
([b1c7374](b1c7374))
* Sync from aztec-packages (noir-lang/noir#5718)
([ccbef55](ccbef55))
* Update honk ultra_recursive_verifier to do aggregation
([#7582](#7582))
([a96a5ad](a96a5ad))


### Bug Fixes

* Add locations to most SSA instructions
(noir-lang/noir#5697)
([b1c7374](b1c7374))
* Allow txs on block zero
([#7928](#7928))
([5e25cd6](5e25cd6))
* Build error in e2e_block_building
([0d0646d](0d0646d))
* **debugger:** Update the debugger to handle the new Brillig debug
metadata format (noir-lang/noir#5706)
([91042c7](91042c7))
* Delete forks after proving job has finished
([#7972](#7972))
([2b4a842](2b4a842))
* Deploy verifier cmd
([#7983](#7983))
([f4fa797](f4fa797))
* Derive generic types (noir-lang/noir#5674)
([b1c7374](b1c7374))
* Do not duplicate redundant Brillig debug metadata
(noir-lang/noir#5696)
([b1c7374](b1c7374))
* Do not mount ssh agent on OSX
([#7991](#7991))
([950db8e](950db8e))
* **docs:** Add redirects for website links
([#7979](#7979))
([e890814](e890814))
* Elaborate struct & trait annotations in the correct module
(noir-lang/noir#5643)
([b1c7374](b1c7374))
* Fix where clause issue in items generated from attributes
(noir-lang/noir#5673)
([b1c7374](b1c7374))
* Lay plumbing for having simulations throw an error if they cannot be
added in a block
([#7839](#7839))
([eedbc11](eedbc11))
* Let a trait impl that relies on another trait work
(noir-lang/noir#5646)
([b1c7374](b1c7374))
* Only record bytecode if &gt;0
([#7932](#7932))
([3f145b3](3f145b3))
* Remove missing file
([#7941](#7941))
([4d9290f](4d9290f))
* Replace unused ArrayGet/Set with constrain if possibly out of bounds
(noir-lang/noir#5691)
([ccbef55](ccbef55))
* Switch verify proof to arrays
(noir-lang/noir#5664)
([b1c7374](b1c7374))
* Track L1 block for last L2 block body retrieved
([#7927](#7927))
([cd36be4](cd36be4)),
closes
[#7918](#7918)
* Unexpose get note nonces on pxe
([#7889](#7889))
([163c3a6](163c3a6))
* Use data dir for lmdb forks
([#7973](#7973))
([5b53d43](5b53d43))
* Workaround from_slice with nested slices
(noir-lang/noir#5648)
([b1c7374](b1c7374))


### Miscellaneous

* Add docs tip about filenames between commands
(noir-lang/noir#5695)
([b1c7374](b1c7374))
* Add env var to disable bb cleanup
([#7936](#7936))
([806a370](806a370))
* Add parser support for `&lt;MyType as Trait&gt;::ident`
(noir-lang/noir#5688)
([b1c7374](b1c7374))
* Add tests for noir&lt;&gt;ivc integration testing
([#7931](#7931))
([7cc47a6](7cc47a6))
* Allow passing custom executors to fuzzer
(noir-lang/noir#5710)
([91042c7](91042c7))
* **avm:** Fewer errors unless testing
([#7943](#7943))
([33b65a9](33b65a9))
* **bb:** Constexpr simplifications
([#7906](#7906))
([65d3b7f](65d3b7f))
* **bb:** Prereq work for polynomial mem optimization
([#7949](#7949))
([5ca5138](5ca5138))
* **ci:** Print detailed target timings
([#7934](#7934))
([fb574aa](fb574aa))
* Do not clean up bb files on err
([#7985](#7985))
([75c6768](75c6768))
* Enable execute command on aws ecs services
([#7975](#7975))
([4331bc6](4331bc6))
* Ensure bootstrapped networks have no pending blocks when proving
starts
([#7986](#7986))
([fb471b3](fb471b3))
* Fork logs and prover job catch
([#7982](#7982))
([69bde53](69bde53))
* Move siloing to reset
([#7871](#7871))
([014b5f0](014b5f0))
* Pin yarn versions in noir-projects and bb/ts
([#7988](#7988))
([83f33a1](83f33a1))
* Release Noir(0.33.0) (noir-lang/noir#5550)
([b1c7374](b1c7374))
* Replace relative paths to noir-protocol-circuits
([cd5f138](cd5f138))
* Replace relative paths to noir-protocol-circuits
([6f3cef9](6f3cef9))
* Replace relative paths to noir-protocol-circuits
([54c4441](54c4441))
* Replace VERSION with IMAGE on provernet template
([d5e48aa](d5e48aa))
* Sequencer no longer proves
([#7860](#7860))
([7168290](7168290))
* Simplify registry
([#7939](#7939))
([8e0418f](8e0418f))
* Terraform template for prover-node
([#7846](#7846))
([546f946](546f946))
* Update provernet docker compose template
([#7929](#7929))
([33d47d2](33d47d2))
* Updating token with refunds
([#7969](#7969))
([504deba](504deba))
</details>

<details><summary>barretenberg: 0.49.0</summary>

##
[0.49.0](barretenberg-v0.48.0...barretenberg-v0.49.0)
(2024-08-15)


### Features

* **avm:** More no fake rows + virtual dyn gas (part 1)
([#7942](#7942))
([9e8ba96](9e8ba96))
* IVC integration tests using new accumulate model
([#7946](#7946))
([c527ae9](c527ae9))
* Update honk ultra_recursive_verifier to do aggregation
([#7582](#7582))
([a96a5ad](a96a5ad))


### Miscellaneous

* **avm:** Fewer errors unless testing
([#7943](#7943))
([33b65a9](33b65a9))
* **bb:** Constexpr simplifications
([#7906](#7906))
([65d3b7f](65d3b7f))
* **bb:** Prereq work for polynomial mem optimization
([#7949](#7949))
([5ca5138](5ca5138))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
AztecBot added a commit to AztecProtocol/barretenberg that referenced this pull request Aug 16, 2024
🤖 I have created a release *beep* *boop*
---


<details><summary>aztec-package: 0.49.0</summary>

##
[0.49.0](AztecProtocol/aztec-packages@aztec-package-v0.48.0...aztec-package-v0.49.0)
(2024-08-15)


### ⚠ BREAKING CHANGES

* Sequencer no longer proves
([#7860](AztecProtocol/aztec-packages#7860))

### Miscellaneous

* Enable execute command on aws ecs services
([#7975](AztecProtocol/aztec-packages#7975))
([4331bc6](AztecProtocol/aztec-packages@4331bc6))
* Sequencer no longer proves
([#7860](AztecProtocol/aztec-packages#7860))
([7168290](AztecProtocol/aztec-packages@7168290))
* Terraform template for prover-node
([#7846](AztecProtocol/aztec-packages#7846))
([546f946](AztecProtocol/aztec-packages@546f946))
</details>

<details><summary>barretenberg.js: 0.49.0</summary>

##
[0.49.0](AztecProtocol/aztec-packages@barretenberg.js-v0.48.0...barretenberg.js-v0.49.0)
(2024-08-15)


### Miscellaneous

* Pin yarn versions in noir-projects and bb/ts
([#7988](AztecProtocol/aztec-packages#7988))
([83f33a1](AztecProtocol/aztec-packages@83f33a1))
</details>

<details><summary>aztec-packages: 0.49.0</summary>

##
[0.49.0](AztecProtocol/aztec-packages@aztec-packages-v0.48.0...aztec-packages-v0.49.0)
(2024-08-15)


### ⚠ BREAKING CHANGES

* alternative key registry contract
([#7523](AztecProtocol/aztec-packages#7523))
* Sequencer no longer proves
([#7860](AztecProtocol/aztec-packages#7860))

### Features

* Add `FunctionDefinition::parameters`,
`FunctionDefinition::return_type` and `impl Eq for Quoted`
(noir-lang/noir#5681)
([b1c7374](AztecProtocol/aztec-packages@b1c7374))
* Add `Quoted::as_expr` and `Expr::as_function_call`
(noir-lang/noir#5708)
([91042c7](AztecProtocol/aztec-packages@91042c7))
* Add `Type::as_struct` (noir-lang/noir#5680)
([b1c7374](AztecProtocol/aztec-packages@b1c7374))
* Add `Type::get_trait_impl`
(noir-lang/noir#5716)
([ccbef55](AztecProtocol/aztec-packages@ccbef55))
* Add `Type::implements` (noir-lang/noir#5701)
([91042c7](AztecProtocol/aztec-packages@91042c7))
* Add `Type::is_field` and `Type::as_integer`
(noir-lang/noir#5670)
([b1c7374](AztecProtocol/aztec-packages@b1c7374))
* Add `Type` methods: `as_tuple`, `as_slice`, `as_array`, `as_constant`,
`is_bool` (noir-lang/noir#5678)
([b1c7374](AztecProtocol/aztec-packages@b1c7374))
* Add a limited form of arithmetic on generics
(noir-lang/noir#5625)
([b1c7374](AztecProtocol/aztec-packages@b1c7374))
* Add array_to_str_lossy (noir-lang/noir#5613)
([b1c7374](AztecProtocol/aztec-packages@b1c7374))
* Add generate-secret-and-hash to cli
([#7977](AztecProtocol/aztec-packages#7977))
([cdf62a0](AztecProtocol/aztec-packages@cdf62a0))
* Add mutating FunctionDefinition functions
(noir-lang/noir#5685)
([b1c7374](AztecProtocol/aztec-packages@b1c7374))
* Add proven flag to sent tx wait opts
([#7950](AztecProtocol/aztec-packages#7950))
([e80e7d2](AztecProtocol/aztec-packages@e80e7d2))
* Add some `Module` comptime functions
(noir-lang/noir#5684)
([b1c7374](AztecProtocol/aztec-packages@b1c7374))
* Alternative key registry contract
([#7523](AztecProtocol/aztec-packages#7523))
([3e6a20f](AztecProtocol/aztec-packages@3e6a20f))
* **avm:** More no fake rows + virtual dyn gas (part 1)
([#7942](AztecProtocol/aztec-packages#7942))
([9e8ba96](AztecProtocol/aztec-packages@9e8ba96))
* Derive `Ord` and `Hash` in the stdlib; add `std::meta::make_impl`
helper (noir-lang/noir#5683)
([b1c7374](AztecProtocol/aztec-packages@b1c7374))
* Destroy_note_unsafe
([#7891](AztecProtocol/aztec-packages#7891))
([5cda7ba](AztecProtocol/aztec-packages@5cda7ba))
* **docs:** Nits
([#7838](AztecProtocol/aztec-packages#7838))
([a76c999](AztecProtocol/aztec-packages@a76c999))
* Enable UltraHonk verifier
([#7923](AztecProtocol/aztec-packages#7923))
([5e8b4a8](AztecProtocol/aztec-packages@5e8b4a8)),
closes
[#7373](AztecProtocol/aztec-packages#7373)
* Implement closures in the comptime interpreter
(noir-lang/noir#5682)
([b1c7374](AztecProtocol/aztec-packages@b1c7374))
* IVC integration tests using new accumulate model
([#7946](AztecProtocol/aztec-packages#7946))
([c527ae9](AztecProtocol/aztec-packages@c527ae9))
* LSP autocompletion for use statement
(noir-lang/noir#5704)
([91042c7](AztecProtocol/aztec-packages@91042c7))
* LSP closing brace hints (noir-lang/noir#5686)
([b1c7374](AztecProtocol/aztec-packages@b1c7374))
* LSP fields, functions and methods completion after "." and "::"
(noir-lang/noir#5714)
([ccbef55](AztecProtocol/aztec-packages@ccbef55))
* LSP hover now includes "Go to" links
(noir-lang/noir#5677)
([b1c7374](AztecProtocol/aztec-packages@b1c7374))
* LSP path completion (noir-lang/noir#5712)
([91042c7](AztecProtocol/aztec-packages@91042c7))
* **noir_js:** Expose UltraHonk and integration tests
(noir-lang/noir#5656)
([b1c7374](AztecProtocol/aztec-packages@b1c7374))
* Optimizing PrivateFPC
([#7980](AztecProtocol/aztec-packages#7980))
([d018335](AztecProtocol/aztec-packages@d018335))
* Private refunds optimizations
([#7968](AztecProtocol/aztec-packages#7968))
([cea8295](AztecProtocol/aztec-packages@cea8295))
* Resolve arguments to attributes
(noir-lang/noir#5649)
([b1c7374](AztecProtocol/aztec-packages@b1c7374))
* **ssa:** Simple serialization of unoptimized SSA to file
(noir-lang/noir#5679)
([b1c7374](AztecProtocol/aztec-packages@b1c7374))
* Sync from aztec-packages (noir-lang/noir#5718)
([ccbef55](AztecProtocol/aztec-packages@ccbef55))
* Update honk ultra_recursive_verifier to do aggregation
([#7582](AztecProtocol/aztec-packages#7582))
([a96a5ad](AztecProtocol/aztec-packages@a96a5ad))


### Bug Fixes

* Add locations to most SSA instructions
(noir-lang/noir#5697)
([b1c7374](AztecProtocol/aztec-packages@b1c7374))
* Allow txs on block zero
([#7928](AztecProtocol/aztec-packages#7928))
([5e25cd6](AztecProtocol/aztec-packages@5e25cd6))
* Build error in e2e_block_building
([0d0646d](AztecProtocol/aztec-packages@0d0646d))
* **debugger:** Update the debugger to handle the new Brillig debug
metadata format (noir-lang/noir#5706)
([91042c7](AztecProtocol/aztec-packages@91042c7))
* Delete forks after proving job has finished
([#7972](AztecProtocol/aztec-packages#7972))
([2b4a842](AztecProtocol/aztec-packages@2b4a842))
* Deploy verifier cmd
([#7983](AztecProtocol/aztec-packages#7983))
([f4fa797](AztecProtocol/aztec-packages@f4fa797))
* Derive generic types (noir-lang/noir#5674)
([b1c7374](AztecProtocol/aztec-packages@b1c7374))
* Do not duplicate redundant Brillig debug metadata
(noir-lang/noir#5696)
([b1c7374](AztecProtocol/aztec-packages@b1c7374))
* Do not mount ssh agent on OSX
([#7991](AztecProtocol/aztec-packages#7991))
([950db8e](AztecProtocol/aztec-packages@950db8e))
* **docs:** Add redirects for website links
([#7979](AztecProtocol/aztec-packages#7979))
([e890814](AztecProtocol/aztec-packages@e890814))
* Elaborate struct & trait annotations in the correct module
(noir-lang/noir#5643)
([b1c7374](AztecProtocol/aztec-packages@b1c7374))
* Fix where clause issue in items generated from attributes
(noir-lang/noir#5673)
([b1c7374](AztecProtocol/aztec-packages@b1c7374))
* Lay plumbing for having simulations throw an error if they cannot be
added in a block
([#7839](AztecProtocol/aztec-packages#7839))
([eedbc11](AztecProtocol/aztec-packages@eedbc11))
* Let a trait impl that relies on another trait work
(noir-lang/noir#5646)
([b1c7374](AztecProtocol/aztec-packages@b1c7374))
* Only record bytecode if &gt;0
([#7932](AztecProtocol/aztec-packages#7932))
([3f145b3](AztecProtocol/aztec-packages@3f145b3))
* Remove missing file
([#7941](AztecProtocol/aztec-packages#7941))
([4d9290f](AztecProtocol/aztec-packages@4d9290f))
* Replace unused ArrayGet/Set with constrain if possibly out of bounds
(noir-lang/noir#5691)
([ccbef55](AztecProtocol/aztec-packages@ccbef55))
* Switch verify proof to arrays
(noir-lang/noir#5664)
([b1c7374](AztecProtocol/aztec-packages@b1c7374))
* Track L1 block for last L2 block body retrieved
([#7927](AztecProtocol/aztec-packages#7927))
([cd36be4](AztecProtocol/aztec-packages@cd36be4)),
closes
[#7918](AztecProtocol/aztec-packages#7918)
* Unexpose get note nonces on pxe
([#7889](AztecProtocol/aztec-packages#7889))
([163c3a6](AztecProtocol/aztec-packages@163c3a6))
* Use data dir for lmdb forks
([#7973](AztecProtocol/aztec-packages#7973))
([5b53d43](AztecProtocol/aztec-packages@5b53d43))
* Workaround from_slice with nested slices
(noir-lang/noir#5648)
([b1c7374](AztecProtocol/aztec-packages@b1c7374))


### Miscellaneous

* Add docs tip about filenames between commands
(noir-lang/noir#5695)
([b1c7374](AztecProtocol/aztec-packages@b1c7374))
* Add env var to disable bb cleanup
([#7936](AztecProtocol/aztec-packages#7936))
([806a370](AztecProtocol/aztec-packages@806a370))
* Add parser support for `&lt;MyType as Trait&gt;::ident`
(noir-lang/noir#5688)
([b1c7374](AztecProtocol/aztec-packages@b1c7374))
* Add tests for noir&lt;&gt;ivc integration testing
([#7931](AztecProtocol/aztec-packages#7931))
([7cc47a6](AztecProtocol/aztec-packages@7cc47a6))
* Allow passing custom executors to fuzzer
(noir-lang/noir#5710)
([91042c7](AztecProtocol/aztec-packages@91042c7))
* **avm:** Fewer errors unless testing
([#7943](AztecProtocol/aztec-packages#7943))
([33b65a9](AztecProtocol/aztec-packages@33b65a9))
* **bb:** Constexpr simplifications
([#7906](AztecProtocol/aztec-packages#7906))
([65d3b7f](AztecProtocol/aztec-packages@65d3b7f))
* **bb:** Prereq work for polynomial mem optimization
([#7949](AztecProtocol/aztec-packages#7949))
([5ca5138](AztecProtocol/aztec-packages@5ca5138))
* **ci:** Print detailed target timings
([#7934](AztecProtocol/aztec-packages#7934))
([fb574aa](AztecProtocol/aztec-packages@fb574aa))
* Do not clean up bb files on err
([#7985](AztecProtocol/aztec-packages#7985))
([75c6768](AztecProtocol/aztec-packages@75c6768))
* Enable execute command on aws ecs services
([#7975](AztecProtocol/aztec-packages#7975))
([4331bc6](AztecProtocol/aztec-packages@4331bc6))
* Ensure bootstrapped networks have no pending blocks when proving
starts
([#7986](AztecProtocol/aztec-packages#7986))
([fb471b3](AztecProtocol/aztec-packages@fb471b3))
* Fork logs and prover job catch
([#7982](AztecProtocol/aztec-packages#7982))
([69bde53](AztecProtocol/aztec-packages@69bde53))
* Move siloing to reset
([#7871](AztecProtocol/aztec-packages#7871))
([014b5f0](AztecProtocol/aztec-packages@014b5f0))
* Pin yarn versions in noir-projects and bb/ts
([#7988](AztecProtocol/aztec-packages#7988))
([83f33a1](AztecProtocol/aztec-packages@83f33a1))
* Release Noir(0.33.0) (noir-lang/noir#5550)
([b1c7374](AztecProtocol/aztec-packages@b1c7374))
* Replace relative paths to noir-protocol-circuits
([cd5f138](AztecProtocol/aztec-packages@cd5f138))
* Replace relative paths to noir-protocol-circuits
([6f3cef9](AztecProtocol/aztec-packages@6f3cef9))
* Replace relative paths to noir-protocol-circuits
([54c4441](AztecProtocol/aztec-packages@54c4441))
* Replace VERSION with IMAGE on provernet template
([d5e48aa](AztecProtocol/aztec-packages@d5e48aa))
* Sequencer no longer proves
([#7860](AztecProtocol/aztec-packages#7860))
([7168290](AztecProtocol/aztec-packages@7168290))
* Simplify registry
([#7939](AztecProtocol/aztec-packages#7939))
([8e0418f](AztecProtocol/aztec-packages@8e0418f))
* Terraform template for prover-node
([#7846](AztecProtocol/aztec-packages#7846))
([546f946](AztecProtocol/aztec-packages@546f946))
* Update provernet docker compose template
([#7929](AztecProtocol/aztec-packages#7929))
([33d47d2](AztecProtocol/aztec-packages@33d47d2))
* Updating token with refunds
([#7969](AztecProtocol/aztec-packages#7969))
([504deba](AztecProtocol/aztec-packages@504deba))
</details>

<details><summary>barretenberg: 0.49.0</summary>

##
[0.49.0](AztecProtocol/aztec-packages@barretenberg-v0.48.0...barretenberg-v0.49.0)
(2024-08-15)


### Features

* **avm:** More no fake rows + virtual dyn gas (part 1)
([#7942](AztecProtocol/aztec-packages#7942))
([9e8ba96](AztecProtocol/aztec-packages@9e8ba96))
* IVC integration tests using new accumulate model
([#7946](AztecProtocol/aztec-packages#7946))
([c527ae9](AztecProtocol/aztec-packages@c527ae9))
* Update honk ultra_recursive_verifier to do aggregation
([#7582](AztecProtocol/aztec-packages#7582))
([a96a5ad](AztecProtocol/aztec-packages@a96a5ad))


### Miscellaneous

* **avm:** Fewer errors unless testing
([#7943](AztecProtocol/aztec-packages#7943))
([33b65a9](AztecProtocol/aztec-packages@33b65a9))
* **bb:** Constexpr simplifications
([#7906](AztecProtocol/aztec-packages#7906))
([65d3b7f](AztecProtocol/aztec-packages@65d3b7f))
* **bb:** Prereq work for polynomial mem optimization
([#7949](AztecProtocol/aztec-packages#7949))
([5ca5138](AztecProtocol/aztec-packages@5ca5138))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
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.

Arithmetic on numeric generics
3 participants