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(ssa): Unroll small loops in brillig #6505

Merged
merged 32 commits into from
Nov 19, 2024

Conversation

aakoshh
Copy link
Contributor

@aakoshh aakoshh commented Nov 12, 2024

Description

Problem*

Resolves #6470

Summary*

  • Look at the runtime during unrolling to preserve ref count instructions, which ACIR did not need and are currently eliminated, but Brilling would need to keep using
  • If the runtime is Brillig, enable unrolling the loops if the following check passes:
    • Identify the loop header, the back edge and the pre-header (exists in the module already)
    • Find the lower and upper bounds of the loop, which are expected to be turned into constants by inlining by the time we reach the Ssa::unroll_loops_iteratively pass.
    • Count all instructions in the loop
    • Detect the presence of jumps that look like break or continue that we couldn't unroll
    • If there are no blocks with terminators coming from break or continue instructions:
      • Collect all references allocated before the pre-header, for the detection of boilerplate load/stores in the loop body
      • Collect all load/store pairs of pre-header variables in the loop between header and back-edge, to estimate which instructions we can get rid of
      • Compute loop_instructions = all_instructions_in_loop - 2 * num_load_store_pairs - const_loop_jmp_overhead
      • Compare loop_instructions * num_iterations vs all_instructions_in_loop to find out if it's worth unrolling

I added some extra docstrings to existing functions to illustrate what the code does, and also refactored functions into methods where they already had an obvious parameter corresponding to a self; I found it made it easier to orient myself. Sorry about that code churn, here's a diff to make it easier to review, or we can break it up into two PRs.

Additional Context

Take for example this code:

fn main(sum: u32) {
    assert(loop(10, 14) == sum);
}

fn loop(from: u32, to: u32) -> u32 {
    let mut sum = 0;
    for i in from..to {
        sum = sum + i;
    }
    sum
}

Here's the SSA before and after unrolling.

After `static_assert` and `assert_constant`:
acir(inline) fn main f0 {
  b0(v0: u32):                         // Pre-header
    v2 = allocate -> u32
    store u32 0 at v2                  // This happens even if we do 4 additions in `main`
    jmp b1(u32 10)                     // -: The lower bound is a constant
  b1(v1: u32):                         // Loop header
    v6 = lt v1, u32 14                 // -: the upper bound is a constant
    jmpif v6 then: b3, else: b2        // -: loop one more time?
  b3():
    v9 = load v2 -> u32                // -: Loading v2 from the pre-header
    v10 = add v9, v1                   // +: sum = sum + 1
    store v10 at v2                    // -: Storing modified v2 for next loop
    v12 = add v1, u32 1                // -: Increment loop counter
    jmp b1(v12)                        // -: Back edge
  b2():
    v7 = load v2 -> u32
    v8 = eq v7, v0
    constrain v7 == v0
    return
}

After Unrolling:
acir(inline) fn main f0 {
  b0(v0: u32):
    v1 = allocate -> u32
    store u32 0 at v1
    v3 = load v1 -> u32
    v5 = add v3, u32 10
    store v5 at v1
    v6 = load v1 -> u32
    v8 = add v6, u32 11
    store v8 at v1
    v9 = load v1 -> u32
    v11 = add v9, u32 12
    store v11 at v1
    v12 = load v1 -> u32
    v14 = add v12, u32 13
    store v14 at v1
    jmp b1()
  b1():
    v15 = load v1 -> u32
    v16 = eq v15, v0
    constrain v15 == v0
    return
}

Lines marked // -: can be removed if we unroll the loops, and then running mem2reg gets rid of the redundant store and load operations:

After Mem2Reg (2nd):
acir(inline) fn main f0 {
  b0(v0: u32):
    v1 = allocate -> u32
    v3 = eq u32 46, v0
    constrain u32 46 == v0
    return
}

Documentation*

Check one:

  • No documentation needed.
  • Documentation included in this PR.
  • [For Experimental Features] Documentation to be submitted in a separate PR.

PR Checklist*

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

@aakoshh aakoshh changed the base branch from master to ab/ssa-parser November 12, 2024 15:38
Base automatically changed from ab/ssa-parser to master November 12, 2024 15:39
@aakoshh aakoshh force-pushed the 6470-brillig-unroll-small-loops branch 2 times, most recently from ae9f26c to a7a8f52 Compare November 12, 2024 22:53
@aakoshh aakoshh force-pushed the 6470-brillig-unroll-small-loops branch from cb6b125 to b35fa25 Compare November 13, 2024 16:45
@aakoshh aakoshh force-pushed the 6470-brillig-unroll-small-loops branch from d104a00 to 4aed51a Compare November 13, 2024 20:38
@aakoshh aakoshh requested a review from asterite November 13, 2024 21:16
@aakoshh aakoshh marked this pull request as ready for review November 13, 2024 21:21
Copy link
Contributor

github-actions bot commented Nov 13, 2024

Changes to Brillig bytecode sizes

Generated at commit: 0a3f9fff799e3d28957298939cf07a4022b613ba, compared to commit: 5f730e82f959cff9a06afea8a7bf89403850d687

🧾 Summary (10% most significant diffs)

Program Brillig opcodes (+/-) %
generics -111 ✅ -53.37%
conditional_regression_547 -21 ✅ -53.85%
loop -58 ✅ -56.86%
import -88 ✅ -59.06%

Full diff report 👇
Program Brillig opcodes (+/-) %
keccak256 2,276 (+482) +26.87%
poseidon_bn254_hash_width_3 5,673 (-17) -0.30%
poseidon_bn254_hash 5,673 (-17) -0.30%
sha256_regression 7,176 (-102) -1.40%
6_array 425 (-8) -1.85%
higher_order_functions 711 (-30) -4.05%
sha256_var_size_regression 1,902 (-146) -7.13%
array_dynamic_blackbox_input 1,078 (-103) -8.72%
slices 2,081 (-237) -10.22%
sha2_byte 3,083 (-368) -10.66%
fold_complex_outputs 552 (-66) -10.68%
hash_to_field 132 (-17) -11.41%
brillig_rc_regression_6123 175 (-24) -12.06%
strings 904 (-138) -13.24%
slice_regex 2,179 (-398) -15.44%
struct_inputs 256 (-48) -15.79%
uhashmap 14,464 (-2,735) -15.90%
array_to_slice 844 (-209) -19.85%
simple_2d_array 110 (-30) -21.43%
slice_loop 273 (-76) -21.78%
pedersen_check 600 (-172) -22.28%
brillig_pedersen 600 (-172) -22.28%
hashmap 22,204 (-6,482) -22.60%
brillig_constant_reference_regression 102 (-30) -22.73%
references 204 (-110) -35.03%
brillig_loop_size_regression 40 (-34) -45.95%
reference_only_used_as_alias 171 (-146) -46.06%
generics 97 (-111) -53.37%
conditional_regression_547 18 (-21) -53.85%
loop 44 (-58) -56.86%
import 61 (-88) -59.06%

@aakoshh
Copy link
Contributor Author

aakoshh commented Nov 18, 2024

Here's the complete example without unrolling:

brillig(inline) fn main f0 {
  b0(v0: Field, v1: [u8; 32]):
    v11 = truncate v0 to 8 bits, max_bit_size: 254
    v12 = cast v11 as u8
    inc_rc [u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0] of u8
    v15 = allocate -> &mut [u8; 136]
    // Empty array at v15
    store [u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0, u8 0] of u8 at v15
    v17 = call is_unconstrained() -> u1
    jmp b1(u32 0)                                 // loop from 0
  b1(v2: u32):                                    // Single iteration loop header
    v19 = eq v2, u32 0                            // loop to 0, ie. 0..len where len==1
    jmpif v19 then: b30, else: b2
  b30():                                          // loop body
    v119 = load v15 -> [u8; 136]                  // load the empty array
    v121 = array_get [v12] of u8, index v2 -> u8  // get the n-th byte from the input, in our case just the single byte
    v122 = array_set v119, index v2, value v121   // set the input byte in the empty array
    v123 = add v2, u32 1                          
    store v122 at v15                             // store the modified array
    v124 = add v2, u32 1                          // increment induction variable
    jmp b1(v124)                                  // back edge

This b1-to-b30 loop gets unrolled and then instead of working with array references it becomes full array constants.

@aakoshh
Copy link
Contributor Author

aakoshh commented Nov 18, 2024

FWIW I tried it like this:

        for (_, function) in ssa.functions.iter_mut() {
            let mut orig_function = Function::clone_with_id(function.id(), &function);
            ...
            if function.runtime().is_brillig() {
                function.mem2reg();
                let old_size = instruction_size(&orig_function);                
                let new_size = instruction_size(&function);
                if old_size < new_size {
                    std::mem::swap(function, &mut orig_function);
                }
            }
        }

I tried two approaches for instruction_size:

  • Generate Brillig opcodes with crate::brillig::brillig_gen::convert_ssa_function: this doesn't work on this state of the SSA
  • Just print the instructions and see how many characters it takes in total, as an approximation for data size

The latter shows the increase if the function.mem2reg(); call is present. We would of course implement it properly with recursion and take both the number of instructions as well as the size of the constants into account.

Do you think some a strategy like this would make sense to avoid increasing the byte code at all costs?

@jfecher
Copy link
Contributor

jfecher commented Nov 18, 2024

Do you think some a strategy like this would make sense to avoid increasing the byte code at all costs?

I don't think it's a goal to avoid increasing byte code size at all costs but I see two directions we can go:

  • Use heuristics to determine whether we should unroll
  • Use this exact check plus maybe an optimization level multiplier to determine whether we should unroll.
    • Unrolling will always lead to fewer instructions executed since we guarantee we eliminate the increment & jump instructions, but may lead to a larger size. So this multiplier would be to adjust the balance between execution & size we want. E.g. we may say "unrolling is fine, up until it is 2x the size of the original loop, then we just want to keep the original loop"
    • Downside of this option of course is that it is significantly slower. Maybe this should be only enabled in a release mode of sorts

@aakoshh
Copy link
Contributor Author

aakoshh commented Nov 19, 2024

Thanks for suggesting the heuristics; do you think it can be in a follow up PR?

@TomAFrench
Copy link
Member

I think we can have a follow-up PR in order to set the exact trade-off. Looking at the benchmarks we're only regressing in keccak256 atm by 25% which is higher than I'd like but manageable.

@aakoshh aakoshh added this pull request to the merge queue Nov 19, 2024
Merged via the queue into master with commit 5d5175e Nov 19, 2024
49 checks passed
@aakoshh aakoshh deleted the 6470-brillig-unroll-small-loops branch November 19, 2024 19:05
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Nov 19, 2024
feat(ssa): Unroll small loops in brillig (noir-lang/noir#6505)
fix: Do a shallow follow_bindings before unification (noir-lang/noir#6558)
chore: remove some `_else_condition` tech debt (noir-lang/noir#6522)
chore: revert #6375 (noir-lang/noir#6552)
feat: simplify constant MSM calls in SSA (noir-lang/noir#6547)
chore(test): Remove duplicate brillig tests (noir-lang/noir#6523)
chore: restructure `noirc_evaluator` crate (noir-lang/noir#6534)
fix: take blackbox function outputs into account when merging expressions (noir-lang/noir#6532)
chore: Add `Instruction::MakeArray` to SSA (noir-lang/noir#6071)
feat(profiler): Reduce memory in Brillig execution flamegraph (noir-lang/noir#6538)
chore: convert some tests to use SSA parser (noir-lang/noir#6543)
chore(ci): bump mac github runner image to `macos-14` (noir-lang/noir#6545)
chore(test): More descriptive labels in test matrix (noir-lang/noir#6542)
chore: Remove unused methods from implicit numeric generics (noir-lang/noir#6541)
fix: Fix poor handling of aliased references in flattening pass causing some values to be zeroed (noir-lang/noir#6434)
fix: allow range checks to be performed within the comptime intepreter (noir-lang/noir#6514)
fix: disallow `#[test]` on associated functions (noir-lang/noir#6449)
chore(ssa): Skip array_set pass for Brillig functions (noir-lang/noir#6513)
chore: Reverse ssa parser diff order (noir-lang/noir#6511)
chore: Parse negatives in SSA parser (noir-lang/noir#6510)
feat: avoid unnecessary ssa passes while loop unrolling (noir-lang/noir#6509)
fix(tests): Use a file lock as well as a mutex to isolate tests cases (noir-lang/noir#6508)
fix: set local_module before elaborating each trait (noir-lang/noir#6506)
fix: parse Slice type in SSa (noir-lang/noir#6507)
fix: perform arithmetic simplification through `CheckedCast` (noir-lang/noir#6502)
feat: SSA parser (noir-lang/noir#6489)
chore(test): Run test matrix on test_programs (noir-lang/noir#6429)
chore(ci): fix cargo deny (noir-lang/noir#6501)
feat: Deduplicate instructions across blocks (noir-lang/noir#6499)
chore: move tests for arithmetic generics closer to the code (noir-lang/noir#6497)
fix(docs): Fix broken links in oracles doc (noir-lang/noir#6488)
fix: Treat all parameters as possible aliases of each other (noir-lang/noir#6477)
chore: bump rust dependencies (noir-lang/noir#6482)
feat: use a full `BlackBoxFunctionSolver` implementation when execution brillig during acirgen (noir-lang/noir#6481)
chore(docs): Update How to Oracles (noir-lang/noir#5675)
chore: Release Noir(0.38.0) (noir-lang/noir#6422)
fix(ssa): Change array_set to not mutate slices coming from function inputs (noir-lang/noir#6463)
chore: update example to show how to split public inputs in bash (noir-lang/noir#6472)
fix: Discard optimisation that would change execution ordering or that is related to call outputs (noir-lang/noir#6461)
chore: proptest for `canonicalize` on infix type expressions (noir-lang/noir#6269)
fix: let formatter respect newlines between comments (noir-lang/noir#6458)
fix: check infix expression is valid in program input (noir-lang/noir#6450)
fix: don't crash on AsTraitPath with empty path (noir-lang/noir#6454)
fix(tests): Prevent EOF error while running test programs (noir-lang/noir#6455)
fix(sea): mem2reg to treat block input references as alias (noir-lang/noir#6452)
chore: revamp attributes (noir-lang/noir#6424)
feat!: Always Check Arithmetic Generics at Monomorphization (noir-lang/noir#6329)
chore: split path and import lookups (noir-lang/noir#6430)
fix(ssa): Resolve value IDs in terminator before comparing to array (noir-lang/noir#6448)
fix: right shift is not a regular division (noir-lang/noir#6400)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Nov 20, 2024
chore: switch to 1.0.0-beta versioning (noir-lang/noir#6503)
chore: Release Noir(0.39.0) (noir-lang/noir#6484)
feat: Sync from aztec-packages (noir-lang/noir#6557)
feat(ssa): Unroll small loops in brillig (noir-lang/noir#6505)
fix: Do a shallow follow_bindings before unification (noir-lang/noir#6558)
chore: remove some `_else_condition` tech debt (noir-lang/noir#6522)
chore: revert #6375 (noir-lang/noir#6552)
feat: simplify constant MSM calls in SSA (noir-lang/noir#6547)
chore(test): Remove duplicate brillig tests (noir-lang/noir#6523)
chore: restructure `noirc_evaluator` crate (noir-lang/noir#6534)
fix: take blackbox function outputs into account when merging expressions (noir-lang/noir#6532)
chore: Add `Instruction::MakeArray` to SSA (noir-lang/noir#6071)
feat(profiler): Reduce memory in Brillig execution flamegraph (noir-lang/noir#6538)
chore: convert some tests to use SSA parser (noir-lang/noir#6543)
chore(ci): bump mac github runner image to `macos-14` (noir-lang/noir#6545)
chore(test): More descriptive labels in test matrix (noir-lang/noir#6542)
chore: Remove unused methods from implicit numeric generics (noir-lang/noir#6541)
fix: Fix poor handling of aliased references in flattening pass causing some values to be zeroed (noir-lang/noir#6434)
fix: allow range checks to be performed within the comptime intepreter (noir-lang/noir#6514)
fix: disallow `#[test]` on associated functions (noir-lang/noir#6449)
chore(ssa): Skip array_set pass for Brillig functions (noir-lang/noir#6513)
chore: Reverse ssa parser diff order (noir-lang/noir#6511)
chore: Parse negatives in SSA parser (noir-lang/noir#6510)
feat: avoid unnecessary ssa passes while loop unrolling (noir-lang/noir#6509)
fix(tests): Use a file lock as well as a mutex to isolate tests cases (noir-lang/noir#6508)
fix: set local_module before elaborating each trait (noir-lang/noir#6506)
fix: parse Slice type in SSa (noir-lang/noir#6507)
fix: perform arithmetic simplification through `CheckedCast` (noir-lang/noir#6502)
feat: SSA parser (noir-lang/noir#6489)
chore(test): Run test matrix on test_programs (noir-lang/noir#6429)
chore(ci): fix cargo deny (noir-lang/noir#6501)
feat: Deduplicate instructions across blocks (noir-lang/noir#6499)
chore: move tests for arithmetic generics closer to the code (noir-lang/noir#6497)
fix(docs): Fix broken links in oracles doc (noir-lang/noir#6488)
fix: Treat all parameters as possible aliases of each other (noir-lang/noir#6477)
chore: bump rust dependencies (noir-lang/noir#6482)
feat: use a full `BlackBoxFunctionSolver` implementation when execution brillig during acirgen (noir-lang/noir#6481)
chore(docs): Update How to Oracles (noir-lang/noir#5675)
chore: Release Noir(0.38.0) (noir-lang/noir#6422)
fix(ssa): Change array_set to not mutate slices coming from function inputs (noir-lang/noir#6463)
chore: update example to show how to split public inputs in bash (noir-lang/noir#6472)
fix: Discard optimisation that would change execution ordering or that is related to call outputs (noir-lang/noir#6461)
chore: proptest for `canonicalize` on infix type expressions (noir-lang/noir#6269)
fix: let formatter respect newlines between comments (noir-lang/noir#6458)
fix: check infix expression is valid in program input (noir-lang/noir#6450)
fix: don't crash on AsTraitPath with empty path (noir-lang/noir#6454)
fix(tests): Prevent EOF error while running test programs (noir-lang/noir#6455)
fix(sea): mem2reg to treat block input references as alias (noir-lang/noir#6452)
chore: revamp attributes (noir-lang/noir#6424)
feat!: Always Check Arithmetic Generics at Monomorphization (noir-lang/noir#6329)
chore: split path and import lookups (noir-lang/noir#6430)
fix(ssa): Resolve value IDs in terminator before comparing to array (noir-lang/noir#6448)
fix: right shift is not a regular division (noir-lang/noir#6400)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Nov 20, 2024
chore: switch to 1.0.0-beta versioning (noir-lang/noir#6503)
chore: Release Noir(0.39.0) (noir-lang/noir#6484)
feat: Sync from aztec-packages (noir-lang/noir#6557)
feat(ssa): Unroll small loops in brillig (noir-lang/noir#6505)
fix: Do a shallow follow_bindings before unification (noir-lang/noir#6558)
chore: remove some `_else_condition` tech debt (noir-lang/noir#6522)
chore: revert #6375 (noir-lang/noir#6552)
feat: simplify constant MSM calls in SSA (noir-lang/noir#6547)
chore(test): Remove duplicate brillig tests (noir-lang/noir#6523)
chore: restructure `noirc_evaluator` crate (noir-lang/noir#6534)
fix: take blackbox function outputs into account when merging expressions (noir-lang/noir#6532)
chore: Add `Instruction::MakeArray` to SSA (noir-lang/noir#6071)
feat(profiler): Reduce memory in Brillig execution flamegraph (noir-lang/noir#6538)
chore: convert some tests to use SSA parser (noir-lang/noir#6543)
chore(ci): bump mac github runner image to `macos-14` (noir-lang/noir#6545)
chore(test): More descriptive labels in test matrix (noir-lang/noir#6542)
chore: Remove unused methods from implicit numeric generics (noir-lang/noir#6541)
fix: Fix poor handling of aliased references in flattening pass causing some values to be zeroed (noir-lang/noir#6434)
fix: allow range checks to be performed within the comptime intepreter (noir-lang/noir#6514)
fix: disallow `#[test]` on associated functions (noir-lang/noir#6449)
chore(ssa): Skip array_set pass for Brillig functions (noir-lang/noir#6513)
chore: Reverse ssa parser diff order (noir-lang/noir#6511)
chore: Parse negatives in SSA parser (noir-lang/noir#6510)
feat: avoid unnecessary ssa passes while loop unrolling (noir-lang/noir#6509)
fix(tests): Use a file lock as well as a mutex to isolate tests cases (noir-lang/noir#6508)
fix: set local_module before elaborating each trait (noir-lang/noir#6506)
fix: parse Slice type in SSa (noir-lang/noir#6507)
fix: perform arithmetic simplification through `CheckedCast` (noir-lang/noir#6502)
feat: SSA parser (noir-lang/noir#6489)
chore(test): Run test matrix on test_programs (noir-lang/noir#6429)
chore(ci): fix cargo deny (noir-lang/noir#6501)
feat: Deduplicate instructions across blocks (noir-lang/noir#6499)
chore: move tests for arithmetic generics closer to the code (noir-lang/noir#6497)
fix(docs): Fix broken links in oracles doc (noir-lang/noir#6488)
fix: Treat all parameters as possible aliases of each other (noir-lang/noir#6477)
chore: bump rust dependencies (noir-lang/noir#6482)
feat: use a full `BlackBoxFunctionSolver` implementation when execution brillig during acirgen (noir-lang/noir#6481)
chore(docs): Update How to Oracles (noir-lang/noir#5675)
chore: Release Noir(0.38.0) (noir-lang/noir#6422)
fix(ssa): Change array_set to not mutate slices coming from function inputs (noir-lang/noir#6463)
chore: update example to show how to split public inputs in bash (noir-lang/noir#6472)
fix: Discard optimisation that would change execution ordering or that is related to call outputs (noir-lang/noir#6461)
chore: proptest for `canonicalize` on infix type expressions (noir-lang/noir#6269)
fix: let formatter respect newlines between comments (noir-lang/noir#6458)
fix: check infix expression is valid in program input (noir-lang/noir#6450)
fix: don't crash on AsTraitPath with empty path (noir-lang/noir#6454)
fix(tests): Prevent EOF error while running test programs (noir-lang/noir#6455)
fix(sea): mem2reg to treat block input references as alias (noir-lang/noir#6452)
chore: revamp attributes (noir-lang/noir#6424)
feat!: Always Check Arithmetic Generics at Monomorphization (noir-lang/noir#6329)
chore: split path and import lookups (noir-lang/noir#6430)
fix(ssa): Resolve value IDs in terminator before comparing to array (noir-lang/noir#6448)
fix: right shift is not a regular division (noir-lang/noir#6400)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Nov 20, 2024
chore: remove separate acvm versioning (noir-lang/noir#6561)
chore: switch to 1.0.0-beta versioning (noir-lang/noir#6503)
chore: Release Noir(0.39.0) (noir-lang/noir#6484)
feat: Sync from aztec-packages (noir-lang/noir#6557)
feat(ssa): Unroll small loops in brillig (noir-lang/noir#6505)
fix: Do a shallow follow_bindings before unification (noir-lang/noir#6558)
chore: remove some `_else_condition` tech debt (noir-lang/noir#6522)
chore: revert #6375 (noir-lang/noir#6552)
feat: simplify constant MSM calls in SSA (noir-lang/noir#6547)
chore(test): Remove duplicate brillig tests (noir-lang/noir#6523)
chore: restructure `noirc_evaluator` crate (noir-lang/noir#6534)
fix: take blackbox function outputs into account when merging expressions (noir-lang/noir#6532)
chore: Add `Instruction::MakeArray` to SSA (noir-lang/noir#6071)
feat(profiler): Reduce memory in Brillig execution flamegraph (noir-lang/noir#6538)
chore: convert some tests to use SSA parser (noir-lang/noir#6543)
chore(ci): bump mac github runner image to `macos-14` (noir-lang/noir#6545)
chore(test): More descriptive labels in test matrix (noir-lang/noir#6542)
chore: Remove unused methods from implicit numeric generics (noir-lang/noir#6541)
fix: Fix poor handling of aliased references in flattening pass causing some values to be zeroed (noir-lang/noir#6434)
fix: allow range checks to be performed within the comptime intepreter (noir-lang/noir#6514)
fix: disallow `#[test]` on associated functions (noir-lang/noir#6449)
chore(ssa): Skip array_set pass for Brillig functions (noir-lang/noir#6513)
chore: Reverse ssa parser diff order (noir-lang/noir#6511)
chore: Parse negatives in SSA parser (noir-lang/noir#6510)
feat: avoid unnecessary ssa passes while loop unrolling (noir-lang/noir#6509)
fix(tests): Use a file lock as well as a mutex to isolate tests cases (noir-lang/noir#6508)
fix: set local_module before elaborating each trait (noir-lang/noir#6506)
fix: parse Slice type in SSa (noir-lang/noir#6507)
fix: perform arithmetic simplification through `CheckedCast` (noir-lang/noir#6502)
feat: SSA parser (noir-lang/noir#6489)
chore(test): Run test matrix on test_programs (noir-lang/noir#6429)
chore(ci): fix cargo deny (noir-lang/noir#6501)
feat: Deduplicate instructions across blocks (noir-lang/noir#6499)
chore: move tests for arithmetic generics closer to the code (noir-lang/noir#6497)
fix(docs): Fix broken links in oracles doc (noir-lang/noir#6488)
fix: Treat all parameters as possible aliases of each other (noir-lang/noir#6477)
chore: bump rust dependencies (noir-lang/noir#6482)
feat: use a full `BlackBoxFunctionSolver` implementation when execution brillig during acirgen (noir-lang/noir#6481)
chore(docs): Update How to Oracles (noir-lang/noir#5675)
chore: Release Noir(0.38.0) (noir-lang/noir#6422)
fix(ssa): Change array_set to not mutate slices coming from function inputs (noir-lang/noir#6463)
chore: update example to show how to split public inputs in bash (noir-lang/noir#6472)
fix: Discard optimisation that would change execution ordering or that is related to call outputs (noir-lang/noir#6461)
chore: proptest for `canonicalize` on infix type expressions (noir-lang/noir#6269)
fix: let formatter respect newlines between comments (noir-lang/noir#6458)
fix: check infix expression is valid in program input (noir-lang/noir#6450)
fix: don't crash on AsTraitPath with empty path (noir-lang/noir#6454)
fix(tests): Prevent EOF error while running test programs (noir-lang/noir#6455)
fix(sea): mem2reg to treat block input references as alias (noir-lang/noir#6452)
chore: revamp attributes (noir-lang/noir#6424)
feat!: Always Check Arithmetic Generics at Monomorphization (noir-lang/noir#6329)
chore: split path and import lookups (noir-lang/noir#6430)
fix(ssa): Resolve value IDs in terminator before comparing to array (noir-lang/noir#6448)
fix: right shift is not a regular division (noir-lang/noir#6400)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Nov 20, 2024
chore: remove separate acvm versioning (noir-lang/noir#6561)
chore: switch to 1.0.0-beta versioning (noir-lang/noir#6503)
chore: Release Noir(0.39.0) (noir-lang/noir#6484)
feat: Sync from aztec-packages (noir-lang/noir#6557)
feat(ssa): Unroll small loops in brillig (noir-lang/noir#6505)
fix: Do a shallow follow_bindings before unification (noir-lang/noir#6558)
chore: remove some `_else_condition` tech debt (noir-lang/noir#6522)
chore: revert #6375 (noir-lang/noir#6552)
feat: simplify constant MSM calls in SSA (noir-lang/noir#6547)
chore(test): Remove duplicate brillig tests (noir-lang/noir#6523)
chore: restructure `noirc_evaluator` crate (noir-lang/noir#6534)
fix: take blackbox function outputs into account when merging expressions (noir-lang/noir#6532)
chore: Add `Instruction::MakeArray` to SSA (noir-lang/noir#6071)
feat(profiler): Reduce memory in Brillig execution flamegraph (noir-lang/noir#6538)
chore: convert some tests to use SSA parser (noir-lang/noir#6543)
chore(ci): bump mac github runner image to `macos-14` (noir-lang/noir#6545)
chore(test): More descriptive labels in test matrix (noir-lang/noir#6542)
chore: Remove unused methods from implicit numeric generics (noir-lang/noir#6541)
fix: Fix poor handling of aliased references in flattening pass causing some values to be zeroed (noir-lang/noir#6434)
fix: allow range checks to be performed within the comptime intepreter (noir-lang/noir#6514)
fix: disallow `#[test]` on associated functions (noir-lang/noir#6449)
chore(ssa): Skip array_set pass for Brillig functions (noir-lang/noir#6513)
chore: Reverse ssa parser diff order (noir-lang/noir#6511)
chore: Parse negatives in SSA parser (noir-lang/noir#6510)
feat: avoid unnecessary ssa passes while loop unrolling (noir-lang/noir#6509)
fix(tests): Use a file lock as well as a mutex to isolate tests cases (noir-lang/noir#6508)
fix: set local_module before elaborating each trait (noir-lang/noir#6506)
fix: parse Slice type in SSa (noir-lang/noir#6507)
fix: perform arithmetic simplification through `CheckedCast` (noir-lang/noir#6502)
feat: SSA parser (noir-lang/noir#6489)
chore(test): Run test matrix on test_programs (noir-lang/noir#6429)
chore(ci): fix cargo deny (noir-lang/noir#6501)
feat: Deduplicate instructions across blocks (noir-lang/noir#6499)
chore: move tests for arithmetic generics closer to the code (noir-lang/noir#6497)
fix(docs): Fix broken links in oracles doc (noir-lang/noir#6488)
fix: Treat all parameters as possible aliases of each other (noir-lang/noir#6477)
chore: bump rust dependencies (noir-lang/noir#6482)
feat: use a full `BlackBoxFunctionSolver` implementation when execution brillig during acirgen (noir-lang/noir#6481)
chore(docs): Update How to Oracles (noir-lang/noir#5675)
chore: Release Noir(0.38.0) (noir-lang/noir#6422)
fix(ssa): Change array_set to not mutate slices coming from function inputs (noir-lang/noir#6463)
chore: update example to show how to split public inputs in bash (noir-lang/noir#6472)
fix: Discard optimisation that would change execution ordering or that is related to call outputs (noir-lang/noir#6461)
chore: proptest for `canonicalize` on infix type expressions (noir-lang/noir#6269)
fix: let formatter respect newlines between comments (noir-lang/noir#6458)
fix: check infix expression is valid in program input (noir-lang/noir#6450)
fix: don't crash on AsTraitPath with empty path (noir-lang/noir#6454)
fix(tests): Prevent EOF error while running test programs (noir-lang/noir#6455)
fix(sea): mem2reg to treat block input references as alias (noir-lang/noir#6452)
chore: revamp attributes (noir-lang/noir#6424)
feat!: Always Check Arithmetic Generics at Monomorphization (noir-lang/noir#6329)
chore: split path and import lookups (noir-lang/noir#6430)
fix(ssa): Resolve value IDs in terminator before comparing to array (noir-lang/noir#6448)
fix: right shift is not a regular division (noir-lang/noir#6400)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Nov 21, 2024
chore: Added test showcasing performance regression (noir-lang/noir#6566)
chore: embed package name in logs (noir-lang/noir#6564)
chore: remove separate acvm versioning (noir-lang/noir#6561)
chore: switch to 1.0.0-beta versioning (noir-lang/noir#6503)
chore: Release Noir(0.39.0) (noir-lang/noir#6484)
feat: Sync from aztec-packages (noir-lang/noir#6557)
feat(ssa): Unroll small loops in brillig (noir-lang/noir#6505)
fix: Do a shallow follow_bindings before unification (noir-lang/noir#6558)
chore: remove some `_else_condition` tech debt (noir-lang/noir#6522)
chore: revert #6375 (noir-lang/noir#6552)
feat: simplify constant MSM calls in SSA (noir-lang/noir#6547)
chore(test): Remove duplicate brillig tests (noir-lang/noir#6523)
chore: restructure `noirc_evaluator` crate (noir-lang/noir#6534)
fix: take blackbox function outputs into account when merging expressions (noir-lang/noir#6532)
chore: Add `Instruction::MakeArray` to SSA (noir-lang/noir#6071)
feat(profiler): Reduce memory in Brillig execution flamegraph (noir-lang/noir#6538)
chore: convert some tests to use SSA parser (noir-lang/noir#6543)
chore(ci): bump mac github runner image to `macos-14` (noir-lang/noir#6545)
chore(test): More descriptive labels in test matrix (noir-lang/noir#6542)
chore: Remove unused methods from implicit numeric generics (noir-lang/noir#6541)
fix: Fix poor handling of aliased references in flattening pass causing some values to be zeroed (noir-lang/noir#6434)
fix: allow range checks to be performed within the comptime intepreter (noir-lang/noir#6514)
fix: disallow `#[test]` on associated functions (noir-lang/noir#6449)
chore(ssa): Skip array_set pass for Brillig functions (noir-lang/noir#6513)
chore: Reverse ssa parser diff order (noir-lang/noir#6511)
chore: Parse negatives in SSA parser (noir-lang/noir#6510)
feat: avoid unnecessary ssa passes while loop unrolling (noir-lang/noir#6509)
fix(tests): Use a file lock as well as a mutex to isolate tests cases (noir-lang/noir#6508)
fix: set local_module before elaborating each trait (noir-lang/noir#6506)
fix: parse Slice type in SSa (noir-lang/noir#6507)
fix: perform arithmetic simplification through `CheckedCast` (noir-lang/noir#6502)
feat: SSA parser (noir-lang/noir#6489)
chore(test): Run test matrix on test_programs (noir-lang/noir#6429)
chore(ci): fix cargo deny (noir-lang/noir#6501)
feat: Deduplicate instructions across blocks (noir-lang/noir#6499)
chore: move tests for arithmetic generics closer to the code (noir-lang/noir#6497)
fix(docs): Fix broken links in oracles doc (noir-lang/noir#6488)
fix: Treat all parameters as possible aliases of each other (noir-lang/noir#6477)
chore: bump rust dependencies (noir-lang/noir#6482)
feat: use a full `BlackBoxFunctionSolver` implementation when execution brillig during acirgen (noir-lang/noir#6481)
chore(docs): Update How to Oracles (noir-lang/noir#5675)
chore: Release Noir(0.38.0) (noir-lang/noir#6422)
fix(ssa): Change array_set to not mutate slices coming from function inputs (noir-lang/noir#6463)
chore: update example to show how to split public inputs in bash (noir-lang/noir#6472)
fix: Discard optimisation that would change execution ordering or that is related to call outputs (noir-lang/noir#6461)
chore: proptest for `canonicalize` on infix type expressions (noir-lang/noir#6269)
fix: let formatter respect newlines between comments (noir-lang/noir#6458)
fix: check infix expression is valid in program input (noir-lang/noir#6450)
fix: don't crash on AsTraitPath with empty path (noir-lang/noir#6454)
fix(tests): Prevent EOF error while running test programs (noir-lang/noir#6455)
fix(sea): mem2reg to treat block input references as alias (noir-lang/noir#6452)
chore: revamp attributes (noir-lang/noir#6424)
feat!: Always Check Arithmetic Generics at Monomorphization (noir-lang/noir#6329)
chore: split path and import lookups (noir-lang/noir#6430)
fix(ssa): Resolve value IDs in terminator before comparing to array (noir-lang/noir#6448)
fix: right shift is not a regular division (noir-lang/noir#6400)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Nov 21, 2024
chore: Added test showcasing performance regression (noir-lang/noir#6566)
chore: embed package name in logs (noir-lang/noir#6564)
chore: remove separate acvm versioning (noir-lang/noir#6561)
chore: switch to 1.0.0-beta versioning (noir-lang/noir#6503)
chore: Release Noir(0.39.0) (noir-lang/noir#6484)
feat: Sync from aztec-packages (noir-lang/noir#6557)
feat(ssa): Unroll small loops in brillig (noir-lang/noir#6505)
fix: Do a shallow follow_bindings before unification (noir-lang/noir#6558)
chore: remove some `_else_condition` tech debt (noir-lang/noir#6522)
chore: revert #6375 (noir-lang/noir#6552)
feat: simplify constant MSM calls in SSA (noir-lang/noir#6547)
chore(test): Remove duplicate brillig tests (noir-lang/noir#6523)
chore: restructure `noirc_evaluator` crate (noir-lang/noir#6534)
fix: take blackbox function outputs into account when merging expressions (noir-lang/noir#6532)
chore: Add `Instruction::MakeArray` to SSA (noir-lang/noir#6071)
feat(profiler): Reduce memory in Brillig execution flamegraph (noir-lang/noir#6538)
chore: convert some tests to use SSA parser (noir-lang/noir#6543)
chore(ci): bump mac github runner image to `macos-14` (noir-lang/noir#6545)
chore(test): More descriptive labels in test matrix (noir-lang/noir#6542)
chore: Remove unused methods from implicit numeric generics (noir-lang/noir#6541)
fix: Fix poor handling of aliased references in flattening pass causing some values to be zeroed (noir-lang/noir#6434)
fix: allow range checks to be performed within the comptime intepreter (noir-lang/noir#6514)
fix: disallow `#[test]` on associated functions (noir-lang/noir#6449)
chore(ssa): Skip array_set pass for Brillig functions (noir-lang/noir#6513)
chore: Reverse ssa parser diff order (noir-lang/noir#6511)
chore: Parse negatives in SSA parser (noir-lang/noir#6510)
feat: avoid unnecessary ssa passes while loop unrolling (noir-lang/noir#6509)
fix(tests): Use a file lock as well as a mutex to isolate tests cases (noir-lang/noir#6508)
fix: set local_module before elaborating each trait (noir-lang/noir#6506)
fix: parse Slice type in SSa (noir-lang/noir#6507)
fix: perform arithmetic simplification through `CheckedCast` (noir-lang/noir#6502)
feat: SSA parser (noir-lang/noir#6489)
chore(test): Run test matrix on test_programs (noir-lang/noir#6429)
chore(ci): fix cargo deny (noir-lang/noir#6501)
feat: Deduplicate instructions across blocks (noir-lang/noir#6499)
chore: move tests for arithmetic generics closer to the code (noir-lang/noir#6497)
fix(docs): Fix broken links in oracles doc (noir-lang/noir#6488)
fix: Treat all parameters as possible aliases of each other (noir-lang/noir#6477)
chore: bump rust dependencies (noir-lang/noir#6482)
feat: use a full `BlackBoxFunctionSolver` implementation when execution brillig during acirgen (noir-lang/noir#6481)
chore(docs): Update How to Oracles (noir-lang/noir#5675)
chore: Release Noir(0.38.0) (noir-lang/noir#6422)
fix(ssa): Change array_set to not mutate slices coming from function inputs (noir-lang/noir#6463)
chore: update example to show how to split public inputs in bash (noir-lang/noir#6472)
fix: Discard optimisation that would change execution ordering or that is related to call outputs (noir-lang/noir#6461)
chore: proptest for `canonicalize` on infix type expressions (noir-lang/noir#6269)
fix: let formatter respect newlines between comments (noir-lang/noir#6458)
fix: check infix expression is valid in program input (noir-lang/noir#6450)
fix: don't crash on AsTraitPath with empty path (noir-lang/noir#6454)
fix(tests): Prevent EOF error while running test programs (noir-lang/noir#6455)
fix(sea): mem2reg to treat block input references as alias (noir-lang/noir#6452)
chore: revamp attributes (noir-lang/noir#6424)
feat!: Always Check Arithmetic Generics at Monomorphization (noir-lang/noir#6329)
chore: split path and import lookups (noir-lang/noir#6430)
fix(ssa): Resolve value IDs in terminator before comparing to array (noir-lang/noir#6448)
fix: right shift is not a regular division (noir-lang/noir#6400)
sirasistant added a commit to AztecProtocol/aztec-packages that referenced this pull request Nov 21, 2024
Automated pull of development from the
[noir](https://github.com/noir-lang/noir) programming language, a
dependency of Aztec.
BEGIN_COMMIT_OVERRIDE
feat: trait aliases (noir-lang/noir#6431)
chore: Added test showcasing performance regression
(noir-lang/noir#6566)
chore: embed package name in logs
(noir-lang/noir#6564)
chore: remove separate acvm versioning
(noir-lang/noir#6561)
chore: switch to 1.0.0-beta versioning
(noir-lang/noir#6503)
chore: Release Noir(0.39.0)
(noir-lang/noir#6484)
feat: Sync from aztec-packages
(noir-lang/noir#6557)
feat(ssa): Unroll small loops in brillig
(noir-lang/noir#6505)
fix: Do a shallow follow_bindings before unification
(noir-lang/noir#6558)
chore: remove some `_else_condition` tech debt
(noir-lang/noir#6522)
chore: revert #6375 (noir-lang/noir#6552)
feat: simplify constant MSM calls in SSA
(noir-lang/noir#6547)
chore(test): Remove duplicate brillig tests
(noir-lang/noir#6523)
chore: restructure `noirc_evaluator` crate
(noir-lang/noir#6534)
fix: take blackbox function outputs into account when merging
expressions (noir-lang/noir#6532)
chore: Add `Instruction::MakeArray` to SSA
(noir-lang/noir#6071)
feat(profiler): Reduce memory in Brillig execution flamegraph
(noir-lang/noir#6538)
chore: convert some tests to use SSA parser
(noir-lang/noir#6543)
chore(ci): bump mac github runner image to `macos-14`
(noir-lang/noir#6545)
chore(test): More descriptive labels in test matrix
(noir-lang/noir#6542)
chore: Remove unused methods from implicit numeric generics
(noir-lang/noir#6541)
fix: Fix poor handling of aliased references in flattening pass causing
some values to be zeroed (noir-lang/noir#6434)
fix: allow range checks to be performed within the comptime intepreter
(noir-lang/noir#6514)
fix: disallow `#[test]` on associated functions
(noir-lang/noir#6449)
chore(ssa): Skip array_set pass for Brillig functions
(noir-lang/noir#6513)
chore: Reverse ssa parser diff order
(noir-lang/noir#6511)
chore: Parse negatives in SSA parser
(noir-lang/noir#6510)
feat: avoid unnecessary ssa passes while loop unrolling
(noir-lang/noir#6509)
fix(tests): Use a file lock as well as a mutex to isolate tests cases
(noir-lang/noir#6508)
fix: set local_module before elaborating each trait
(noir-lang/noir#6506)
fix: parse Slice type in SSa
(noir-lang/noir#6507)
fix: perform arithmetic simplification through `CheckedCast`
(noir-lang/noir#6502)
feat: SSA parser (noir-lang/noir#6489)
chore(test): Run test matrix on test_programs
(noir-lang/noir#6429)
chore(ci): fix cargo deny (noir-lang/noir#6501)
feat: Deduplicate instructions across blocks
(noir-lang/noir#6499)
chore: move tests for arithmetic generics closer to the code
(noir-lang/noir#6497)
fix(docs): Fix broken links in oracles doc
(noir-lang/noir#6488)
fix: Treat all parameters as possible aliases of each other
(noir-lang/noir#6477)
chore: bump rust dependencies
(noir-lang/noir#6482)
feat: use a full `BlackBoxFunctionSolver` implementation when execution
brillig during acirgen (noir-lang/noir#6481)
chore(docs): Update How to Oracles
(noir-lang/noir#5675)
chore: Release Noir(0.38.0)
(noir-lang/noir#6422)
fix(ssa): Change array_set to not mutate slices coming from function
inputs (noir-lang/noir#6463)
chore: update example to show how to split public inputs in bash
(noir-lang/noir#6472)
fix: Discard optimisation that would change execution ordering or that
is related to call outputs (noir-lang/noir#6461)
chore: proptest for `canonicalize` on infix type expressions
(noir-lang/noir#6269)
fix: let formatter respect newlines between comments
(noir-lang/noir#6458)
fix: check infix expression is valid in program input
(noir-lang/noir#6450)
fix: don't crash on AsTraitPath with empty path
(noir-lang/noir#6454)
fix(tests): Prevent EOF error while running test programs
(noir-lang/noir#6455)
fix(sea): mem2reg to treat block input references as alias
(noir-lang/noir#6452)
chore: revamp attributes (noir-lang/noir#6424)
feat!: Always Check Arithmetic Generics at Monomorphization
(noir-lang/noir#6329)
chore: split path and import lookups
(noir-lang/noir#6430)
fix(ssa): Resolve value IDs in terminator before comparing to array
(noir-lang/noir#6448)
fix: right shift is not a regular division
(noir-lang/noir#6400)
END_COMMIT_OVERRIDE

---------

Co-authored-by: sirasistant <sirasistant@gmail.com>
Co-authored-by: Tom French <15848336+TomAFrench@users.noreply.github.com>
Co-authored-by: TomAFrench <tom@tomfren.ch>
critesjosh pushed a commit to AztecProtocol/aztec-packages that referenced this pull request Nov 25, 2024
🤖 I have created a release *beep* *boop*
---


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

##
[0.64.0](aztec-package-v0.63.1...aztec-package-v0.64.0)
(2024-11-25)


### Features

* Unify anvil versions
([#10143](#10143))
([adae143](adae143))


### Miscellaneous

* Fast epoch building test
([#10045](#10045))
([fb791a2](fb791a2)),
closes
[#9809](#9809)
</details>

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

##
[0.64.0](barretenberg.js-v0.63.1...barretenberg.js-v0.64.0)
(2024-11-25)


### Features

* Single commitment key allocation in CIVC
([#9974](#9974))
([a0551ee](a0551ee))


### Bug Fixes

* Strip wasm debug
([#9987](#9987))
([62a6b66](62a6b66))


### Documentation

* Add docs to enable multi-threading in bb.js
([#10064](#10064))
([8b4ebd1](8b4ebd1))
</details>

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

##
[0.64.0](aztec-packages-v0.63.1...aztec-packages-v0.64.0)
(2024-11-25)


### ⚠ BREAKING CHANGES

* rename SharedMutable methods
([#10165](#10165))
* add AztecAddress.isValid and make random be valid
([#10081](#10081))
* Always Check Arithmetic Generics at Monomorphization
(noir-lang/noir#6329)

### Features

* Add AztecAddress.isValid and make random be valid
([#10081](#10081))
([fbdf6b0](fbdf6b0))
* Always Check Arithmetic Generics at Monomorphization
(noir-lang/noir#6329)
([b8bace9](b8bace9))
* **avm:** Error handling for address resolution
([#9994](#9994))
([ceaeda5](ceaeda5)),
closes
[#9131](#9131)
* **avm:** Integrate ephemeral trees
([#9917](#9917))
([fbe1128](fbe1128))
* **avm:** More efficient low leaf search
([#9870](#9870))
([f7bbd83](f7bbd83))
* Avoid unnecessary ssa passes while loop unrolling
(noir-lang/noir#6509)
([b8bace9](b8bace9))
* Bb-prover AVM test crafts a test TX & properly plumbs
AvmCircuitPublicInputs to witgen
([#10083](#10083))
([55564aa](55564aa))
* Calls to non-existent contracts in the AVM simulator return failure
([#10051](#10051))
([133384c](133384c))
* Compute base-fee on l1
([#9986](#9986))
([4ab46fe](4ab46fe))
* Deduplicate instructions across blocks
(noir-lang/noir#6499)
([b8bace9](b8bace9))
* E2e metrics reporting
([#9776](#9776))
([9cab121](9cab121))
* Gating test
([#9918](#9918))
([c6b65ab](c6b65ab)),
closes
[#9883](#9883)
* Google Kubernetes Engine - Prover Agent Spot Node Support
([#10031](#10031))
([4d6da9b](4d6da9b))
* Improve trace utilization tracking
([#10008](#10008))
([4c560ab](4c560ab))
* Improved data storage metrics
([#10020](#10020))
([c6ab0c9](c6ab0c9))
* Initial gas oracle
([#9952](#9952))
([e740d42](e740d42))
* Insert public data tree leaves one by one
([#9989](#9989))
([a2c0701](a2c0701))
* Integrate base fee computation into rollup
([#10076](#10076))
([3417b22](3417b22))
* IPA accumulators setup for Rollup
([#10040](#10040))
([4129e27](4129e27))
* New proving agent
([#9999](#9999))
([9ad24dd](9ad24dd))
* **profiler:** Reduce memory in Brillig execution flamegraph
(noir-lang/noir#6538)
([b8bace9](b8bace9))
* Public network deployments
([#10089](#10089))
([570f70a](570f70a))
* PXE handles reorgs
([#9913](#9913))
([aafef9c](aafef9c))
* Rename SharedMutable methods
([#10165](#10165))
([4fd70e8](4fd70e8))
* Reset pxe indexes
([#10093](#10093))
([3848c01](3848c01))
* Simplify constant MSM calls in SSA
(noir-lang/noir#6547)
([b8bace9](b8bace9))
* Single commitment key allocation in CIVC
([#9974](#9974))
([a0551ee](a0551ee))
* SSA parser (noir-lang/noir#6489)
([b8bace9](b8bace9))
* **ssa:** Unroll small loops in brillig
(noir-lang/noir#6505)
([b8bace9](b8bace9))
* Sync from aztec-packages (noir-lang/noir#6557)
([b8bace9](b8bace9))
* Sync tags as sender
([#10071](#10071))
([122d2e4](122d2e4))
* Terraform for release deployments
([#10091](#10091))
([dc528da](dc528da)),
closes
[#10144](#10144)
* Trait aliases (noir-lang/noir#6431)
([b8bace9](b8bace9))
* Unify anvil versions
([#10143](#10143))
([adae143](adae143))
* Updating consensus payload
([#10017](#10017))
([85c8a3b](85c8a3b))
* Use a full `BlackBoxFunctionSolver` implementation when execution
brillig during acirgen (noir-lang/noir#6481)
([b8bace9](b8bace9))
* **val:** Reex
([#9768](#9768))
([2e58f0a](2e58f0a))


### Bug Fixes

* Add curl to aztec nargo container
([#10173](#10173))
([2add6ae](2add6ae))
* Add zod parsing for generated contract artifacts
([#9905](#9905))
([e1ef998](e1ef998))
* Allow range checks to be performed within the comptime intepreter
(noir-lang/noir#6514)
([b8bace9](b8bace9))
* Allow unwinding multiple empty blocks
([#10084](#10084))
([ec34442](ec34442))
* Boxes
([#10122](#10122))
([10df7c5](10df7c5))
* Check infix expression is valid in program input
(noir-lang/noir#6450)
([b8bace9](b8bace9))
* Disallow `#[test]` on associated functions
(noir-lang/noir#6449)
([b8bace9](b8bace9))
* Disallow contract registration in pxe of contract with duplicate
private function selectors
([#9773](#9773))
([2587ad5](2587ad5))
* Discard optimisation that would change execution ordering or that is
related to call outputs (noir-lang/noir#6461)
([b8bace9](b8bace9))
* Do a shallow follow_bindings before unification
(noir-lang/noir#6558)
([b8bace9](b8bace9))
* **docs:** Fix broken links in oracles doc
(noir-lang/noir#6488)
([b8bace9](b8bace9))
* Don't crash on AsTraitPath with empty path
(noir-lang/noir#6454)
([b8bace9](b8bace9))
* Fix poor handling of aliased references in flattening pass causing
some values to be zeroed (noir-lang/noir#6434)
([b8bace9](b8bace9))
* Let formatter respect newlines between comments
(noir-lang/noir#6458)
([b8bace9](b8bace9))
* Make bytecode part of artifact hash preimage again
([#9771](#9771))
([cdabd85](cdabd85))
* Parse Slice type in SSa (noir-lang/noir#6507)
([b8bace9](b8bace9))
* Perform arithmetic simplification through `CheckedCast`
(noir-lang/noir#6502)
([b8bace9](b8bace9))
* Potential e2e-p2p fix
([#10094](#10094))
([820bcc6](820bcc6))
* Prover-agent.yaml syntax
([#10131](#10131))
([a238fe6](a238fe6))
* Remove src build from doc build flow
([#10127](#10127))
([fbfe1b1](fbfe1b1))
* Revert "feat: integrate base fee computation into rollup"
([#10166](#10166))
([1a207f5](1a207f5))
* Right shift is not a regular division
(noir-lang/noir#6400)
([b8bace9](b8bace9))
* **sea:** Mem2reg to treat block input references as alias
(noir-lang/noir#6452)
([b8bace9](b8bace9))
* Set local_module before elaborating each trait
(noir-lang/noir#6506)
([b8bace9](b8bace9))
* Sorting artifact props and members in metadata
([#9772](#9772))
([aba568a](aba568a))
* **ssa:** Change array_set to not mutate slices coming from function
inputs (noir-lang/noir#6463)
([b8bace9](b8bace9))
* **ssa:** Resolve value IDs in terminator before comparing to array
(noir-lang/noir#6448)
([b8bace9](b8bace9))
* Strip wasm debug
([#9987](#9987))
([62a6b66](62a6b66))
* Take blackbox function outputs into account when merging expressions
(noir-lang/noir#6532)
([b8bace9](b8bace9))
* **tests:** Prevent EOF error while running test programs
(noir-lang/noir#6455)
([b8bace9](b8bace9))
* **tests:** Use a file lock as well as a mutex to isolate tests cases
(noir-lang/noir#6508)
([b8bace9](b8bace9))
* Treat all parameters as possible aliases of each other
(noir-lang/noir#6477)
([b8bace9](b8bace9))
* Zero index is not always 0
([#10135](#10135))
([bbac3d9](bbac3d9))


### Miscellaneous

* Add `Instruction::MakeArray` to SSA
(noir-lang/noir#6071)
([b8bace9](b8bace9))
* Added test showcasing performance regression
(noir-lang/noir#6566)
([b8bace9](b8bace9))
* **avm:** Remove initialization for non-derived polynomials
([#10103](#10103))
([c6fdf4b](c6fdf4b)),
closes
[#10096](#10096)
* Bump rust dependencies (noir-lang/noir#6482)
([b8bace9](b8bace9))
* **ci:** Bump mac github runner image to `macos-14`
(noir-lang/noir#6545)
([b8bace9](b8bace9))
* **ci:** Fix cargo deny (noir-lang/noir#6501)
([b8bace9](b8bace9))
* Convert some tests to use SSA parser
(noir-lang/noir#6543)
([b8bace9](b8bace9))
* Delete stray todos
([#10112](#10112))
([cc4139a](cc4139a))
* Do not run e2e-2-pxes along with e2e pxe test
([#10155](#10155))
([f0f8d22](f0f8d22))
* **docs:** Update How to Oracles
(noir-lang/noir#5675)
([b8bace9](b8bace9))
* Embed package name in logs
(noir-lang/noir#6564)
([b8bace9](b8bace9))
* Fast epoch building test
([#10045](#10045))
([fb791a2](fb791a2)),
closes
[#9809](#9809)
* Fix pool metrics
([#9652](#9652))
([233b387](233b387))
* Fix spartan deploy script
([#10078](#10078))
([368ac8b](368ac8b))
* Initial draft of testnet-runbook
([#10085](#10085))
([598c1b1](598c1b1))
* Lower throughput of ebs disks
([#9997](#9997))
([698cd3d](698cd3d))
* Make tests not silent if DEBUG set
([#10130](#10130))
([95e8406](95e8406))
* Move tests for arithmetic generics closer to the code
(noir-lang/noir#6497)
([b8bace9](b8bace9))
* Optimise polynomial initialisation
([#10073](#10073))
([e608742](e608742))
* Parse negatives in SSA parser
(noir-lang/noir#6510)
([b8bace9](b8bace9))
* Proptest for `canonicalize` on infix type expressions
(noir-lang/noir#6269)
([b8bace9](b8bace9))
* Pull across
noir-lang/noir[#6558](#6558)
([#10037](#10037))
([3014a69](3014a69))
* Pull out sync changes
([#10072](#10072))
([06ef61e](06ef61e))
* Release Noir(0.38.0) (noir-lang/noir#6422)
([b8bace9](b8bace9))
* Release Noir(0.39.0) (noir-lang/noir#6484)
([b8bace9](b8bace9))
* Remove handling of duplicates from the note hash tree
([#10016](#10016))
([ece1d45](ece1d45))
* Remove PublicExecutor
([#10028](#10028))
([9643dcd](9643dcd))
* Remove separate acvm versioning
(noir-lang/noir#6561)
([b8bace9](b8bace9))
* Remove some `_else_condition` tech debt
(noir-lang/noir#6522)
([b8bace9](b8bace9))
* Remove some unnecessary clones
([#10049](#10049))
([8628b32](8628b32))
* Remove unused imports
([#10134](#10134))
([8dbeda0](8dbeda0))
* Remove unused methods from implicit numeric generics
(noir-lang/noir#6541)
([b8bace9](b8bace9))
* Replace relative paths to noir-protocol-circuits
([ccf6695](ccf6695))
* Replace relative paths to noir-protocol-circuits
([fa225a2](fa225a2))
* Replace relative paths to noir-protocol-circuits
([98387b8](98387b8))
* Replace relative paths to noir-protocol-circuits
([94753d4](94753d4))
* Restructure `noirc_evaluator` crate
(noir-lang/noir#6534)
([b8bace9](b8bace9))
* Revamp attributes (noir-lang/noir#6424)
([b8bace9](b8bace9))
* Reverse ssa parser diff order
(noir-lang/noir#6511)
([b8bace9](b8bace9))
* Revert
[#6375](#6375)
(noir-lang/noir#6552)
([b8bace9](b8bace9))
* Skip emitting public bytecode
([#10009](#10009))
([280d169](280d169))
* Split path and import lookups
(noir-lang/noir#6430)
([b8bace9](b8bace9))
* **ssa:** Skip array_set pass for Brillig functions
(noir-lang/noir#6513)
([b8bace9](b8bace9))
* Switch to 1.0.0-beta versioning
(noir-lang/noir#6503)
([b8bace9](b8bace9))
* **test:** More descriptive labels in test matrix
(noir-lang/noir#6542)
([b8bace9](b8bace9))
* **test:** Remove duplicate brillig tests
(noir-lang/noir#6523)
([b8bace9](b8bace9))
* **test:** Run test matrix on test_programs
(noir-lang/noir#6429)
([b8bace9](b8bace9))
* Update example to show how to split public inputs in bash
(noir-lang/noir#6472)
([b8bace9](b8bace9))


### Documentation

* Add docs to enable multi-threading in bb.js
([#10064](#10064))
([8b4ebd1](8b4ebd1))
* Re-arrange references section
([#10070](#10070))
([375482f](375482f))
</details>

<details><summary>barretenberg: 0.64.0</summary>

##
[0.64.0](barretenberg-v0.63.1...barretenberg-v0.64.0)
(2024-11-25)


### Features

* **avm:** Error handling for address resolution
([#9994](#9994))
([ceaeda5](ceaeda5)),
closes
[#9131](#9131)
* Improve trace utilization tracking
([#10008](#10008))
([4c560ab](4c560ab))
* Improved data storage metrics
([#10020](#10020))
([c6ab0c9](c6ab0c9))
* Insert public data tree leaves one by one
([#9989](#9989))
([a2c0701](a2c0701))
* IPA accumulators setup for Rollup
([#10040](#10040))
([4129e27](4129e27))
* Single commitment key allocation in CIVC
([#9974](#9974))
([a0551ee](a0551ee))


### Bug Fixes

* Strip wasm debug
([#9987](#9987))
([62a6b66](62a6b66))
* Zero index is not always 0
([#10135](#10135))
([bbac3d9](bbac3d9))


### Miscellaneous

* **avm:** Remove initialization for non-derived polynomials
([#10103](#10103))
([c6fdf4b](c6fdf4b)),
closes
[#10096](#10096)
* Delete stray todos
([#10112](#10112))
([cc4139a](cc4139a))
* Optimise polynomial initialisation
([#10073](#10073))
([e608742](e608742))
* Remove handling of duplicates from the note hash tree
([#10016](#10016))
([ece1d45](ece1d45))
</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 Nov 26, 2024
🤖 I have created a release *beep* *boop*
---


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

##
[0.64.0](AztecProtocol/aztec-packages@aztec-package-v0.63.1...aztec-package-v0.64.0)
(2024-11-25)


### Features

* Unify anvil versions
([#10143](AztecProtocol/aztec-packages#10143))
([adae143](AztecProtocol/aztec-packages@adae143))


### Miscellaneous

* Fast epoch building test
([#10045](AztecProtocol/aztec-packages#10045))
([fb791a2](AztecProtocol/aztec-packages@fb791a2)),
closes
[#9809](AztecProtocol/aztec-packages#9809)
</details>

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

##
[0.64.0](AztecProtocol/aztec-packages@barretenberg.js-v0.63.1...barretenberg.js-v0.64.0)
(2024-11-25)


### Features

* Single commitment key allocation in CIVC
([#9974](AztecProtocol/aztec-packages#9974))
([a0551ee](AztecProtocol/aztec-packages@a0551ee))


### Bug Fixes

* Strip wasm debug
([#9987](AztecProtocol/aztec-packages#9987))
([62a6b66](AztecProtocol/aztec-packages@62a6b66))


### Documentation

* Add docs to enable multi-threading in bb.js
([#10064](AztecProtocol/aztec-packages#10064))
([8b4ebd1](AztecProtocol/aztec-packages@8b4ebd1))
</details>

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

##
[0.64.0](AztecProtocol/aztec-packages@aztec-packages-v0.63.1...aztec-packages-v0.64.0)
(2024-11-25)


### ⚠ BREAKING CHANGES

* rename SharedMutable methods
([#10165](AztecProtocol/aztec-packages#10165))
* add AztecAddress.isValid and make random be valid
([#10081](AztecProtocol/aztec-packages#10081))
* Always Check Arithmetic Generics at Monomorphization
(noir-lang/noir#6329)

### Features

* Add AztecAddress.isValid and make random be valid
([#10081](AztecProtocol/aztec-packages#10081))
([fbdf6b0](AztecProtocol/aztec-packages@fbdf6b0))
* Always Check Arithmetic Generics at Monomorphization
(noir-lang/noir#6329)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **avm:** Error handling for address resolution
([#9994](AztecProtocol/aztec-packages#9994))
([ceaeda5](AztecProtocol/aztec-packages@ceaeda5)),
closes
[#9131](AztecProtocol/aztec-packages#9131)
* **avm:** Integrate ephemeral trees
([#9917](AztecProtocol/aztec-packages#9917))
([fbe1128](AztecProtocol/aztec-packages@fbe1128))
* **avm:** More efficient low leaf search
([#9870](AztecProtocol/aztec-packages#9870))
([f7bbd83](AztecProtocol/aztec-packages@f7bbd83))
* Avoid unnecessary ssa passes while loop unrolling
(noir-lang/noir#6509)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Bb-prover AVM test crafts a test TX & properly plumbs
AvmCircuitPublicInputs to witgen
([#10083](AztecProtocol/aztec-packages#10083))
([55564aa](AztecProtocol/aztec-packages@55564aa))
* Calls to non-existent contracts in the AVM simulator return failure
([#10051](AztecProtocol/aztec-packages#10051))
([133384c](AztecProtocol/aztec-packages@133384c))
* Compute base-fee on l1
([#9986](AztecProtocol/aztec-packages#9986))
([4ab46fe](AztecProtocol/aztec-packages@4ab46fe))
* Deduplicate instructions across blocks
(noir-lang/noir#6499)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* E2e metrics reporting
([#9776](AztecProtocol/aztec-packages#9776))
([9cab121](AztecProtocol/aztec-packages@9cab121))
* Gating test
([#9918](AztecProtocol/aztec-packages#9918))
([c6b65ab](AztecProtocol/aztec-packages@c6b65ab)),
closes
[#9883](AztecProtocol/aztec-packages#9883)
* Google Kubernetes Engine - Prover Agent Spot Node Support
([#10031](AztecProtocol/aztec-packages#10031))
([4d6da9b](AztecProtocol/aztec-packages@4d6da9b))
* Improve trace utilization tracking
([#10008](AztecProtocol/aztec-packages#10008))
([4c560ab](AztecProtocol/aztec-packages@4c560ab))
* Improved data storage metrics
([#10020](AztecProtocol/aztec-packages#10020))
([c6ab0c9](AztecProtocol/aztec-packages@c6ab0c9))
* Initial gas oracle
([#9952](AztecProtocol/aztec-packages#9952))
([e740d42](AztecProtocol/aztec-packages@e740d42))
* Insert public data tree leaves one by one
([#9989](AztecProtocol/aztec-packages#9989))
([a2c0701](AztecProtocol/aztec-packages@a2c0701))
* Integrate base fee computation into rollup
([#10076](AztecProtocol/aztec-packages#10076))
([3417b22](AztecProtocol/aztec-packages@3417b22))
* IPA accumulators setup for Rollup
([#10040](AztecProtocol/aztec-packages#10040))
([4129e27](AztecProtocol/aztec-packages@4129e27))
* New proving agent
([#9999](AztecProtocol/aztec-packages#9999))
([9ad24dd](AztecProtocol/aztec-packages@9ad24dd))
* **profiler:** Reduce memory in Brillig execution flamegraph
(noir-lang/noir#6538)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Public network deployments
([#10089](AztecProtocol/aztec-packages#10089))
([570f70a](AztecProtocol/aztec-packages@570f70a))
* PXE handles reorgs
([#9913](AztecProtocol/aztec-packages#9913))
([aafef9c](AztecProtocol/aztec-packages@aafef9c))
* Rename SharedMutable methods
([#10165](AztecProtocol/aztec-packages#10165))
([4fd70e8](AztecProtocol/aztec-packages@4fd70e8))
* Reset pxe indexes
([#10093](AztecProtocol/aztec-packages#10093))
([3848c01](AztecProtocol/aztec-packages@3848c01))
* Simplify constant MSM calls in SSA
(noir-lang/noir#6547)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Single commitment key allocation in CIVC
([#9974](AztecProtocol/aztec-packages#9974))
([a0551ee](AztecProtocol/aztec-packages@a0551ee))
* SSA parser (noir-lang/noir#6489)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **ssa:** Unroll small loops in brillig
(noir-lang/noir#6505)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Sync from aztec-packages (noir-lang/noir#6557)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Sync tags as sender
([#10071](AztecProtocol/aztec-packages#10071))
([122d2e4](AztecProtocol/aztec-packages@122d2e4))
* Terraform for release deployments
([#10091](AztecProtocol/aztec-packages#10091))
([dc528da](AztecProtocol/aztec-packages@dc528da)),
closes
[#10144](AztecProtocol/aztec-packages#10144)
* Trait aliases (noir-lang/noir#6431)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Unify anvil versions
([#10143](AztecProtocol/aztec-packages#10143))
([adae143](AztecProtocol/aztec-packages@adae143))
* Updating consensus payload
([#10017](AztecProtocol/aztec-packages#10017))
([85c8a3b](AztecProtocol/aztec-packages@85c8a3b))
* Use a full `BlackBoxFunctionSolver` implementation when execution
brillig during acirgen (noir-lang/noir#6481)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **val:** Reex
([#9768](AztecProtocol/aztec-packages#9768))
([2e58f0a](AztecProtocol/aztec-packages@2e58f0a))


### Bug Fixes

* Add curl to aztec nargo container
([#10173](AztecProtocol/aztec-packages#10173))
([2add6ae](AztecProtocol/aztec-packages@2add6ae))
* Add zod parsing for generated contract artifacts
([#9905](AztecProtocol/aztec-packages#9905))
([e1ef998](AztecProtocol/aztec-packages@e1ef998))
* Allow range checks to be performed within the comptime intepreter
(noir-lang/noir#6514)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Allow unwinding multiple empty blocks
([#10084](AztecProtocol/aztec-packages#10084))
([ec34442](AztecProtocol/aztec-packages@ec34442))
* Boxes
([#10122](AztecProtocol/aztec-packages#10122))
([10df7c5](AztecProtocol/aztec-packages@10df7c5))
* Check infix expression is valid in program input
(noir-lang/noir#6450)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Disallow `#[test]` on associated functions
(noir-lang/noir#6449)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Disallow contract registration in pxe of contract with duplicate
private function selectors
([#9773](AztecProtocol/aztec-packages#9773))
([2587ad5](AztecProtocol/aztec-packages@2587ad5))
* Discard optimisation that would change execution ordering or that is
related to call outputs (noir-lang/noir#6461)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Do a shallow follow_bindings before unification
(noir-lang/noir#6558)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **docs:** Fix broken links in oracles doc
(noir-lang/noir#6488)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Don't crash on AsTraitPath with empty path
(noir-lang/noir#6454)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Fix poor handling of aliased references in flattening pass causing
some values to be zeroed (noir-lang/noir#6434)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Let formatter respect newlines between comments
(noir-lang/noir#6458)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Make bytecode part of artifact hash preimage again
([#9771](AztecProtocol/aztec-packages#9771))
([cdabd85](AztecProtocol/aztec-packages@cdabd85))
* Parse Slice type in SSa (noir-lang/noir#6507)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Perform arithmetic simplification through `CheckedCast`
(noir-lang/noir#6502)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Potential e2e-p2p fix
([#10094](AztecProtocol/aztec-packages#10094))
([820bcc6](AztecProtocol/aztec-packages@820bcc6))
* Prover-agent.yaml syntax
([#10131](AztecProtocol/aztec-packages#10131))
([a238fe6](AztecProtocol/aztec-packages@a238fe6))
* Remove src build from doc build flow
([#10127](AztecProtocol/aztec-packages#10127))
([fbfe1b1](AztecProtocol/aztec-packages@fbfe1b1))
* Revert "feat: integrate base fee computation into rollup"
([#10166](AztecProtocol/aztec-packages#10166))
([1a207f5](AztecProtocol/aztec-packages@1a207f5))
* Right shift is not a regular division
(noir-lang/noir#6400)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **sea:** Mem2reg to treat block input references as alias
(noir-lang/noir#6452)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Set local_module before elaborating each trait
(noir-lang/noir#6506)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Sorting artifact props and members in metadata
([#9772](AztecProtocol/aztec-packages#9772))
([aba568a](AztecProtocol/aztec-packages@aba568a))
* **ssa:** Change array_set to not mutate slices coming from function
inputs (noir-lang/noir#6463)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **ssa:** Resolve value IDs in terminator before comparing to array
(noir-lang/noir#6448)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Strip wasm debug
([#9987](AztecProtocol/aztec-packages#9987))
([62a6b66](AztecProtocol/aztec-packages@62a6b66))
* Take blackbox function outputs into account when merging expressions
(noir-lang/noir#6532)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **tests:** Prevent EOF error while running test programs
(noir-lang/noir#6455)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **tests:** Use a file lock as well as a mutex to isolate tests cases
(noir-lang/noir#6508)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Treat all parameters as possible aliases of each other
(noir-lang/noir#6477)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Zero index is not always 0
([#10135](AztecProtocol/aztec-packages#10135))
([bbac3d9](AztecProtocol/aztec-packages@bbac3d9))


### Miscellaneous

* Add `Instruction::MakeArray` to SSA
(noir-lang/noir#6071)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Added test showcasing performance regression
(noir-lang/noir#6566)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **avm:** Remove initialization for non-derived polynomials
([#10103](AztecProtocol/aztec-packages#10103))
([c6fdf4b](AztecProtocol/aztec-packages@c6fdf4b)),
closes
[#10096](AztecProtocol/aztec-packages#10096)
* Bump rust dependencies (noir-lang/noir#6482)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **ci:** Bump mac github runner image to `macos-14`
(noir-lang/noir#6545)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **ci:** Fix cargo deny (noir-lang/noir#6501)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Convert some tests to use SSA parser
(noir-lang/noir#6543)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Delete stray todos
([#10112](AztecProtocol/aztec-packages#10112))
([cc4139a](AztecProtocol/aztec-packages@cc4139a))
* Do not run e2e-2-pxes along with e2e pxe test
([#10155](AztecProtocol/aztec-packages#10155))
([f0f8d22](AztecProtocol/aztec-packages@f0f8d22))
* **docs:** Update How to Oracles
(noir-lang/noir#5675)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Embed package name in logs
(noir-lang/noir#6564)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Fast epoch building test
([#10045](AztecProtocol/aztec-packages#10045))
([fb791a2](AztecProtocol/aztec-packages@fb791a2)),
closes
[#9809](AztecProtocol/aztec-packages#9809)
* Fix pool metrics
([#9652](AztecProtocol/aztec-packages#9652))
([233b387](AztecProtocol/aztec-packages@233b387))
* Fix spartan deploy script
([#10078](AztecProtocol/aztec-packages#10078))
([368ac8b](AztecProtocol/aztec-packages@368ac8b))
* Initial draft of testnet-runbook
([#10085](AztecProtocol/aztec-packages#10085))
([598c1b1](AztecProtocol/aztec-packages@598c1b1))
* Lower throughput of ebs disks
([#9997](AztecProtocol/aztec-packages#9997))
([698cd3d](AztecProtocol/aztec-packages@698cd3d))
* Make tests not silent if DEBUG set
([#10130](AztecProtocol/aztec-packages#10130))
([95e8406](AztecProtocol/aztec-packages@95e8406))
* Move tests for arithmetic generics closer to the code
(noir-lang/noir#6497)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Optimise polynomial initialisation
([#10073](AztecProtocol/aztec-packages#10073))
([e608742](AztecProtocol/aztec-packages@e608742))
* Parse negatives in SSA parser
(noir-lang/noir#6510)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Proptest for `canonicalize` on infix type expressions
(noir-lang/noir#6269)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Pull across
noir-lang/noir[#6558](AztecProtocol/aztec-packages#6558)
([#10037](AztecProtocol/aztec-packages#10037))
([3014a69](AztecProtocol/aztec-packages@3014a69))
* Pull out sync changes
([#10072](AztecProtocol/aztec-packages#10072))
([06ef61e](AztecProtocol/aztec-packages@06ef61e))
* Release Noir(0.38.0) (noir-lang/noir#6422)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Release Noir(0.39.0) (noir-lang/noir#6484)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Remove handling of duplicates from the note hash tree
([#10016](AztecProtocol/aztec-packages#10016))
([ece1d45](AztecProtocol/aztec-packages@ece1d45))
* Remove PublicExecutor
([#10028](AztecProtocol/aztec-packages#10028))
([9643dcd](AztecProtocol/aztec-packages@9643dcd))
* Remove separate acvm versioning
(noir-lang/noir#6561)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Remove some `_else_condition` tech debt
(noir-lang/noir#6522)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Remove some unnecessary clones
([#10049](AztecProtocol/aztec-packages#10049))
([8628b32](AztecProtocol/aztec-packages@8628b32))
* Remove unused imports
([#10134](AztecProtocol/aztec-packages#10134))
([8dbeda0](AztecProtocol/aztec-packages@8dbeda0))
* Remove unused methods from implicit numeric generics
(noir-lang/noir#6541)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Replace relative paths to noir-protocol-circuits
([ccf6695](AztecProtocol/aztec-packages@ccf6695))
* Replace relative paths to noir-protocol-circuits
([fa225a2](AztecProtocol/aztec-packages@fa225a2))
* Replace relative paths to noir-protocol-circuits
([98387b8](AztecProtocol/aztec-packages@98387b8))
* Replace relative paths to noir-protocol-circuits
([94753d4](AztecProtocol/aztec-packages@94753d4))
* Restructure `noirc_evaluator` crate
(noir-lang/noir#6534)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Revamp attributes (noir-lang/noir#6424)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Reverse ssa parser diff order
(noir-lang/noir#6511)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Revert
[#6375](AztecProtocol/aztec-packages#6375)
(noir-lang/noir#6552)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Skip emitting public bytecode
([#10009](AztecProtocol/aztec-packages#10009))
([280d169](AztecProtocol/aztec-packages@280d169))
* Split path and import lookups
(noir-lang/noir#6430)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **ssa:** Skip array_set pass for Brillig functions
(noir-lang/noir#6513)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Switch to 1.0.0-beta versioning
(noir-lang/noir#6503)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **test:** More descriptive labels in test matrix
(noir-lang/noir#6542)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **test:** Remove duplicate brillig tests
(noir-lang/noir#6523)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **test:** Run test matrix on test_programs
(noir-lang/noir#6429)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Update example to show how to split public inputs in bash
(noir-lang/noir#6472)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))


### Documentation

* Add docs to enable multi-threading in bb.js
([#10064](AztecProtocol/aztec-packages#10064))
([8b4ebd1](AztecProtocol/aztec-packages@8b4ebd1))
* Re-arrange references section
([#10070](AztecProtocol/aztec-packages#10070))
([375482f](AztecProtocol/aztec-packages@375482f))
</details>

<details><summary>barretenberg: 0.64.0</summary>

##
[0.64.0](AztecProtocol/aztec-packages@barretenberg-v0.63.1...barretenberg-v0.64.0)
(2024-11-25)


### Features

* **avm:** Error handling for address resolution
([#9994](AztecProtocol/aztec-packages#9994))
([ceaeda5](AztecProtocol/aztec-packages@ceaeda5)),
closes
[#9131](AztecProtocol/aztec-packages#9131)
* Improve trace utilization tracking
([#10008](AztecProtocol/aztec-packages#10008))
([4c560ab](AztecProtocol/aztec-packages@4c560ab))
* Improved data storage metrics
([#10020](AztecProtocol/aztec-packages#10020))
([c6ab0c9](AztecProtocol/aztec-packages@c6ab0c9))
* Insert public data tree leaves one by one
([#9989](AztecProtocol/aztec-packages#9989))
([a2c0701](AztecProtocol/aztec-packages@a2c0701))
* IPA accumulators setup for Rollup
([#10040](AztecProtocol/aztec-packages#10040))
([4129e27](AztecProtocol/aztec-packages@4129e27))
* Single commitment key allocation in CIVC
([#9974](AztecProtocol/aztec-packages#9974))
([a0551ee](AztecProtocol/aztec-packages@a0551ee))


### Bug Fixes

* Strip wasm debug
([#9987](AztecProtocol/aztec-packages#9987))
([62a6b66](AztecProtocol/aztec-packages@62a6b66))
* Zero index is not always 0
([#10135](AztecProtocol/aztec-packages#10135))
([bbac3d9](AztecProtocol/aztec-packages@bbac3d9))


### Miscellaneous

* **avm:** Remove initialization for non-derived polynomials
([#10103](AztecProtocol/aztec-packages#10103))
([c6fdf4b](AztecProtocol/aztec-packages@c6fdf4b)),
closes
[#10096](AztecProtocol/aztec-packages#10096)
* Delete stray todos
([#10112](AztecProtocol/aztec-packages#10112))
([cc4139a](AztecProtocol/aztec-packages@cc4139a))
* Optimise polynomial initialisation
([#10073](AztecProtocol/aztec-packages#10073))
([e608742](AztecProtocol/aztec-packages@e608742))
* Remove handling of duplicates from the note hash tree
([#10016](AztecProtocol/aztec-packages#10016))
([ece1d45](AztecProtocol/aztec-packages@ece1d45))
</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.

Improve brillig execution speed by unrolling small loops
4 participants