Skip to content

chore(acir_gen): Remove Brillig execution with constant arguments #9879

Merged
vezenovm merged 2 commits intomasterfrom
mv/remove-const-brillig-input-execution-from-acir
Sep 16, 2025
Merged

chore(acir_gen): Remove Brillig execution with constant arguments #9879
vezenovm merged 2 commits intomasterfrom
mv/remove-const-brillig-input-execution-from-acir

Conversation

@vezenovm
Copy link
Contributor

@vezenovm vezenovm commented Sep 16, 2025

Description

Problem*

Working towards green-lighting ACIR gen.

Quite some time ago we introduced the ability to execute the Brillig VM if a call was made with all constant inputs. This was a bit of a workaround as we did not run any SSA optimizations over Brillig and did not yet constant fold Brillig entry points.

Summary*

I removed Brillig execution logic from the brillig_call module of ACIR gen. This should simplify the logic and lets us keep a better separation of concerns for each pass.

With regards to stdlib functions, we already check for constant inputs before we lay down an Inverse or Quotient and perform the appropriate computation. This will be necessary for any new Brillig stdlib functions.

We also get the nice side benefit of removing the B: BlackBoxFunctionSolver<F> generic on the AcirContext.

Additional Context

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.

@vezenovm vezenovm requested a review from a team September 16, 2025 19:15
@vezenovm vezenovm added the bench-show Display benchmark results on PR label Sep 16, 2025
Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

ACVM Benchmarks

Details
Benchmark suite Current: ac85898 Previous: 0eead18 Ratio
purely_sequential_opcodes 250911 ns/iter (± 271) 256545 ns/iter (± 1171) 0.98
perfectly_parallel_opcodes 223932 ns/iter (± 3436) 229968 ns/iter (± 770) 0.97
perfectly_parallel_batch_inversion_opcodes 2795919 ns/iter (± 2344) 2817715 ns/iter (± 2957) 0.99

This comment was automatically generated by workflow using github-action-benchmark.

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark 'Execution Time'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20.

Benchmark suite Current: ac85898 Previous: 0eead18 Ratio
private-kernel-inner 0.02 s 0.016 s 1.25

This comment was automatically generated by workflow using github-action-benchmark.

CC: @TomAFrench

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Compilation Time

Details
Benchmark suite Current: ac85898 Previous: 0eead18 Ratio
private-kernel-inner 1.914 s 1.832 s 1.04
private-kernel-reset 8.232 s 8.882 s 0.93
private-kernel-tail 1.342 s 1.368 s 0.98
rollup-base-private 17.58 s 18.4 s 0.96
rollup-base-public 16.42 s 17.94 s 0.92
rollup-block-root-empty 17.42 s 16.88 s 1.03
rollup-block-root-single-tx 198 s 208 s 0.95
rollup-block-root 202 s 197 s 1.03
rollup-merge 1.356 s 1.38 s 0.98
rollup-root 1.518 s 1.632 s 0.93
semaphore-depth-10 0.806 s 0.776 s 1.04
sha512-100-bytes 1.969 s 1.882 s 1.05

This comment was automatically generated by workflow using github-action-benchmark.

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Execution Time

Details
Benchmark suite Current: ac85898 Previous: 0eead18 Ratio
private-kernel-inner 0.02 s 0.016 s 1.25
private-kernel-reset 0.161 s 0.162 s 0.99
private-kernel-tail 0.01 s 0.01 s 1
rollup-base-private 0.265 s 0.268 s 0.99
rollup-base-public 0.158 s 0.162 s 0.98
rollup-block-root 14.4 s 14.8 s 0.97
rollup-merge 0.002 s 0.002 s 1
rollup-root 0.004 s 0.004 s 1
semaphore-depth-10 0.019 s 0.019 s 1
sha512-100-bytes 0.101 s 0.1 s 1.01

This comment was automatically generated by workflow using github-action-benchmark.

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Artifact Size

Details
Benchmark suite Current: ac85898 Previous: 0eead18 Ratio
private-kernel-inner 712.1 KB 712.1 KB 1
private-kernel-reset 1983.6 KB 1983.6 KB 1
private-kernel-tail 506.6 KB 506.6 KB 1
rollup-base-private 4361.8 KB 4361.8 KB 1
rollup-base-public 3365.6 KB 3365.6 KB 1
rollup-block-root-empty 3852.6 KB 3851.2 KB 1.00
rollup-block-root-single-tx 30879.7 KB 30879.7 KB 1
rollup-block-root 30908.3 KB 30908.3 KB 1
rollup-merge 189.1 KB 189.1 KB 1
rollup-root 391.2 KB 391.2 KB 1
semaphore-depth-10 634 KB 634 KB 1
sha512-100-bytes 527.6 KB 527.6 KB 1

This comment was automatically generated by workflow using github-action-benchmark.

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Opcode count

Details
Benchmark suite Current: ac85898 Previous: 0eead18 Ratio
private-kernel-inner 14792 opcodes 14792 opcodes 1
private-kernel-reset 68868 opcodes 68868 opcodes 1
private-kernel-tail 11177 opcodes 11177 opcodes 1
rollup-base-private 221346 opcodes 221346 opcodes 1
rollup-base-public 159937 opcodes 159937 opcodes 1
rollup-block-root-empty 67910 opcodes 67868 opcodes 1.00
rollup-block-root-single-tx 963687 opcodes 963687 opcodes 1
rollup-block-root 964973 opcodes 964973 opcodes 1
rollup-merge 1409 opcodes 1409 opcodes 1
rollup-root 2619 opcodes 2619 opcodes 1
semaphore-depth-10 5700 opcodes 5700 opcodes 1
sha512-100-bytes 13173 opcodes 13173 opcodes 1

This comment was automatically generated by workflow using github-action-benchmark.

Copy link
Collaborator

@asterite asterite left a comment

Choose a reason for hiding this comment

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

Nice!

@vezenovm vezenovm enabled auto-merge September 16, 2025 19:39
@vezenovm vezenovm added this pull request to the merge queue Sep 16, 2025
Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Test Suite Duration

Details
Benchmark suite Current: ac85898 Previous: 0eead18 Ratio
test_report_AztecProtocol_aztec-packages_noir-projects_aztec-nr 103 s 103 s 1
test_report_AztecProtocol_aztec-packages_noir-projects_noir-contracts 132 s 130 s 1.02
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_blob 200 s 216 s 0.93
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_private-kernel-lib 219 s 218 s 1.00
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_reset-kernel-lib 33 s 36 s 0.92
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_rollup-lib 618 s 680 s 0.91
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_types 98 s 97 s 1.01
test_report_noir-lang_noir-bignum_ 134 s 133 s 1.01
test_report_noir-lang_noir_bigcurve_ 314 s 315 s 1.00
test_report_noir-lang_sha256_ 17 s 15 s 1.13
test_report_noir-lang_sha512_ 13 s 13 s 1
test_report_zkpassport_noir-ecdsa_ 2 s 1 s 2
test_report_zkpassport_noir_rsa_ 1 s 1 s 1

This comment was automatically generated by workflow using github-action-benchmark.

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark 'Test Suite Duration'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20.

Benchmark suite Current: ac85898 Previous: 0eead18 Ratio
test_report_zkpassport_noir-ecdsa_ 2 s 1 s 2

This comment was automatically generated by workflow using github-action-benchmark.

CC: @TomAFrench

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Execution Memory

Details
Benchmark suite Current: ac85898 Previous: 0eead18 Ratio
private-kernel-inner 258.74 MB 258.74 MB 1
private-kernel-reset 291.13 MB 291.13 MB 1
private-kernel-tail 242.63 MB 242.63 MB 1
rollup-base-private 506.72 MB 506.72 MB 1
rollup-base-public 440.02 MB 440.02 MB 1
rollup-block-root 1530 MB 1530 MB 1
rollup-merge 331.06 MB 331.06 MB 1
rollup-root 333.58 MB 333.58 MB 1
semaphore_depth_10 73 MB 73 MB 1
sha512_100_bytes 69.57 MB 69.57 MB 1

This comment was automatically generated by workflow using github-action-benchmark.

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Compilation Memory

Details
Benchmark suite Current: ac85898 Previous: 0eead18 Ratio
private-kernel-inner 285.18 MB 285.16 MB 1.00
private-kernel-reset 593.15 MB 593.15 MB 1
private-kernel-tail 258.98 MB 258.98 MB 1
rollup-base-private 1360 MB 1360 MB 1
rollup-base-public 1420 MB 1420 MB 1
rollup-block-root-empty 1020 MB 1020 MB 1
rollup-block-root-single-tx 9680 MB 9680 MB 1
rollup-block-root 9690 MB 9690 MB 1
rollup-merge 333.29 MB 333.29 MB 1
rollup-root 344 MB 344 MB 1
semaphore_depth_10 107.77 MB 107.77 MB 1
sha512_100_bytes 265.65 MB 265.7 MB 1.00

This comment was automatically generated by workflow using github-action-benchmark.

Merged via the queue into master with commit d5c4ac8 Sep 16, 2025
124 checks passed
@vezenovm vezenovm deleted the mv/remove-const-brillig-input-execution-from-acir branch September 16, 2025 20:06
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Sep 26, 2025
Automated pull of nightly from the [noir](https://github.com/noir-lang/noir) programming language, a dependency of Aztec.
BEGIN_COMMIT_OVERRIDE
chore: print ACIR AssertZero as an equation (noir-lang/noir#9970)
chore(acir): Switch to inline SSA for slice intrinsics tests (noir-lang/noir#10000)
fix(fuzz): Handle divisor of zero msg in error comparison (noir-lang/noir#9995)
fix(ssa): Handle OOB indexing of slice literals in `remove_unreachalbe_instructions` (noir-lang/noir#9999)
chore: Add `DataFlowGraph::instruction_result` for getting a known number of results (noir-lang/noir#9989)
chore(ast_fuzzer): Allow passing compilation options to cvise tool (noir-lang/noir#9996)
chore(ssa_gen): Do not generate out of bounds checks for array assignments in ACIR (noir-lang/noir#9992)
chore: add more to/from le/be bits/bytes edge case tests (noir-lang/noir#9906)
fix: Disable early mem2reg (noir-lang/noir#9987)
chore(ci): free up space on github runner (noir-lang/noir#9994)
chore(ssa): Nits in `remove_bit_shift` and `remove_if_else` (noir-lang/noir#9965)
chore(ssa_executor): add compilation example  (noir-lang/noir#9937)
chore(acir): More arrays refactors  (noir-lang/noir#9962)
chore(test): add panicking tests for 'defunctionalize' (noir-lang/noir#8510)
chore: remove_if_else docs and refactors (noir-lang/noir#9929)
chore(acir): Do not copy element type sizes array when initializing (noir-lang/noir#9955)
fix: correct max_bit_size when left-shifting (noir-lang/noir#9770)
chore: checked_to_unchecked enhancements from audit review (noir-lang/noir#9958)
chore(ssa): Remove `offset` from `ArrayGet` and `ArraySet` (noir-lang/noir#9956)
chore(acir): Add some unit tests for arrays and light refactors (noir-lang/noir#9953)
chore: add regression test for #9852 (noir-lang/noir#9960)
chore(fuzz): Add error equivalency for bit-shift overflow in the SSA interpreter (noir-lang/noir#9957)
feat(cli): Visualize the Control Flow Graph (noir-lang/noir#9867)
chore: minor constant_folding refactors (noir-lang/noir#9954)
chore!: several ACIR serialisation changes (noir-lang/noir#8134)
chore(ci): only send slack notifications during the week (noir-lang/noir#9946)
chore: assumes no load-store in array_set (noir-lang/noir#9940)
chore(acir): Arrays module doc comments (noir-lang/noir#9947)
fix: correctly handle unusual radices in `ToRadix` decompositions (noir-lang/noir#9941)
fix(ssa): Start with checked operations in index calculations (noir-lang/noir#9888)
feat: no need to use dummy slice values in remove_if_else (noir-lang/noir#9928)
chore: bump external pinned commits (noir-lang/noir#9938)
chore: redo typo PR by viktorking7 (noir-lang/noir#9939)
chore: Release Noir(1.0.0-beta.13) (noir-lang/noir#9737)
chore(ssa): Validate array operands (noir-lang/noir#9932)
chore(licm): Add `CanBeHoistedResult::WithRefCount` (noir-lang/noir#9849)
chore(ci): alert in slack if fuzzer fails (noir-lang/noir#9910)
fix(fmt): missing skip whitespace when formatting match (noir-lang/noir#9905)
chore(acir_gen): New shared_context module and some additional unit tests (noir-lang/noir#9895)
chore: bump external pinned commits (noir-lang/noir#9902)
chore: validate SSA intrinsics arguments and return types (noir-lang/noir#9892)
chore(die): small nit to remove a check which is not useful (noir-lang/noir#9898)
chore: implement Display for brillig (noir-lang/noir#9893)
chore(acir_gen): Call module (noir-lang/noir#9896)
feat: allow initializing dynamic arrays (noir-lang/noir#9899)
fix(acir_gen): Handle flattening of numeric types when an `Array` contains a `DynamicArray` (noir-lang/noir#9887)
fix(mem2reg): Do not attempt to analyze an instruction simplified to a global (noir-lang/noir#9882)
fix: error on returning slice from main (noir-lang/noir#9636)
fix(acir_gen): Fix entry point indices (noir-lang/noir#9881)
chore: move `ram_blowup_regression` to be a compile-only test (noir-lang/noir#9874)
chore: validate SSA call arguments (noir-lang/noir#9876)
fix(ssa): Simplify always-fail range constraint (noir-lang/noir#9885)
chore(fuzz): Refactor logging in the AST fuzzer (noir-lang/noir#9884)
chore(ssa_fuzzer): refactor brillig target (noir-lang/noir#9821)
fix(fuzz): Always introduce a local binding before match (noir-lang/noir#9883)
chore(acir_gen): Switching existing ACIR gen tests to use parser and cleanup test module (noir-lang/noir#9878)
chore(acir_gen): Remove Brillig execution with constant arguments  (noir-lang/noir#9879)
fix: disallow `_` in where clauses, and disallow unused trait impl generics (noir-lang/noir#9871)
chore: bump external pinned commits (noir-lang/noir#9875)
feat: LSP lightweight mode (noir-lang/noir#9869)
chore: use `w` prefix for ACIR witnesses (noir-lang/noir#9839)
chore: greenlight remove enable side effects (noir-lang/noir#9833)
fix(fuzz): Avoid OOB when `in_no_dynamic` mode (noir-lang/noir#9858)
chore(ssa): Run purity analysis before preprocessing of functions (noir-lang/noir#9837)
fix: check for signed division overflow (noir-lang/noir#9857)
chore: Add tests from post-order PR (noir-lang/noir#9846)
chore(acir): Parse full program (foldable functions) (noir-lang/noir#9859)
chore: greenlight remove_bit_shifts (revised) (noir-lang/noir#9813)
feat(die): Prune unused entry block parameters for non-entry points (noir-lang/noir#9843)
chore: greenlight check_u128_mul_overflow (noir-lang/noir#9759)
chore: greenlight `remove_unreachable_instructions` for new requirements (noir-lang/noir#9810)
chore: use enum for instruction deduplication safety (noir-lang/noir#9824)
feat(LSP): signature help for macro attributes (noir-lang/noir#9536)
feat(LSP): folding ranges (noir-lang/noir#9854)
chore(die): IncrementRc/DecrementRc comments (noir-lang/noir#9855)
chore(ownership): Add tests for cloning nested arrays returned from indexing (noir-lang/noir#9789)
chore: validate that all jmpif conditions are boolean (noir-lang/noir#9850)
chore: bump external pinned commits (noir-lang/noir#9848)
chore(opt): Fetch set of Brillig entry points without reachability and recursive functions computation  (noir-lang/noir#9844)
chore: tests for map in stdlib (noir-lang/noir#9676)
chore(ssa): Brillig entry point specialization post check  (noir-lang/noir#9845)
chore: delete some unused snapshots (noir-lang/noir#9841)
feat(ssa): SSA CLI (noir-lang/noir#9826)
chore: more ACIR parser usages in tests, and optimize general optimizations (noir-lang/noir#9836)
chore(die): Remove RC tracker (noir-lang/noir#9809)
feat: better check_u128_mul_overflow logic when an operand is constant (noir-lang/noir#9835)
chore: increase number of cases tried in PR fuzzing (noir-lang/noir#9829)
chore: remove variable flag from poseidon2 hash (noir-lang/noir#9834)
chore: enforce that we only visit blocks once with new deque type (noir-lang/noir#9825)
chore(test): add tests for unconstrained `main` recursion (noir-lang/noir#8551)
chore: adding tests to vec (noir-lang/noir#9715)
feat(fuzz): Allow index OOB with a small probability (noir-lang/noir#9803)
chore(die): Encapsulate array access checks in separate module (noir-lang/noir#9828)
chore: use the ACIR parser in redundant_ranges tests (noir-lang/noir#9827)
chore: prefer `From` for infallible numeric casts (noir-lang/noir#9802)
chore: add a regression test for #4663 (noir-lang/noir#9819)
chore: bump linked bb version (noir-lang/noir#9237)
chore: use `DataFlowGraph` over `Function` in constant_folding (noir-lang/noir#9811)
chore: add a regression test for #6285 (noir-lang/noir#9817)
feat(fuzz): Generate calls to `slice_remove` and `slice_insert` in the AST fuzzer (noir-lang/noir#9786)
chore: no need to use `get_max_num_bits` if lhs is a constant (noir-lang/noir#9812)
chore(ci): fix release workflow permissions (noir-lang/noir#9822)
fix: do not simplify constraints with induction variable (noir-lang/noir#9806)
fix(ssa): Do not hoist unsafe `array_get` in Brillig (noir-lang/noir#9805)
fix(ownership): consider ident in nested l-value as used (noir-lang/noir#9793)
fix(mem2reg): handle instruction simplified to multiple (noir-lang/noir#9782)
fix: proper error when dividing by minus 1 (noir-lang/noir#9762)
chore: tests for field in stdlib (noir-lang/noir#9677)
chore(ssa_fuzzer): separate fuzzer runtimes + add brillig fuzz target (noir-lang/noir#9753)
feat(ownership): Do not clone indexed call results containing arrays (noir-lang/noir#9791)
Revert "chore: move `ram_blowup_regression` to be a compile-only test" (noir-lang/noir#9801)
feat: reverse loop condition in brillig to avoid NOT instruction (noir-lang/noir#9779)
chore: move `ram_blowup_regression` to be a compile-only test (noir-lang/noir#9790)
fix(docs): moves docs to correct path for sharing domain with landing (noir-lang/noir#9687)
chore: Check an inline always weight threshold during inline info computation (noir-lang/noir#9487)
chore: remove snapshots from `test_programs` artifacts (noir-lang/noir#9788)
chore: bump `@web/dev-server-esbuild` and `playwright` (noir-lang/noir#9781)
fix(ssa): Replace failing array access with constraint and defaults (noir-lang/noir#9776)
chore(die): Module doc comments (noir-lang/noir#9768)
chore: encapsulate constant folding logic better (noir-lang/noir#9773)
chore(ci): publish attestations on uploaded binaries (noir-lang/noir#9777)
feat: remove useless jump when branching in brillig (noir-lang/noir#9778)
chore: add `LoopContext::new` (noir-lang/noir#9720)
feat(ownership): Do not clone nested Index expressions (noir-lang/noir#9772)
chore(ci): add permissions to CI workflows (noir-lang/noir#9763)
fix(ssa): Accurate purities of ArraySet and RC instructions in Brillig (noir-lang/noir#9736)
chore: add test for when pending snapshots are committed (noir-lang/noir#9757)
chore(docs): Copy latest getting started guide into versioned docs (noir-lang/noir#9755)
chore: migrate away from fxhash to address advisory (noir-lang/noir#9752)
fix(fuzz): Install `just` in nightly fuzz workflow (noir-lang/noir#9756)
fix: wrong error message in brillig bit shift overflow (noir-lang/noir#9702)
chore: bump dependencies (noir-lang/noir#9751)
fix: left bit shift u128 would overflow Field (noir-lang/noir#9723)
Revert "chore: migrate away from fxhash to address advisory (noir-lang/noir#9750)"
chore: migrate away from fxhash to address advisory (noir-lang/noir#9750)
chore: bump external pinned commits (noir-lang/noir#9748)
chore(inlining): Skip weight calc for ACIR functions and recursive Brillig functions (noir-lang/noir#9739)
chore(ssa): Consolidate should inline check into a single filter (noir-lang/noir#9738)
feat: re-enable early mem2reg pass (noir-lang/noir#9744)
fix(ssa): Mark whether an ArrayGet requires a predicate based upon the runtime (noir-lang/noir#9712)
chore(licm): Identify untested code; refactoring; minor fixes (noir-lang/noir#9718)
chore(docs): Update Aztec logo in noir docs (noir-lang/noir#9740)
chore(ssa_fuzzer): refactor ssa fuzzer (noir-lang/noir#9651)
fix: error on boolean shift overflow in interpreter (noir-lang/noir#9724)
chore: do not inline acir calls in brillig (noir-lang/noir#9412)
chore: remove empty main from frontend tests (noir-lang/noir#9726)
chore: add tests for slice (noir-lang/noir#9650)
chore: greenlight `make_constrain_not_equal` for audits (noir-lang/noir#9535)
chore: Release Noir(1.0.0-beta.12) (noir-lang/noir#9565)
chore(test): Filter `ram_blowup_regression` by default on local testing (noir-lang/noir#9721)
chore(ci): force cargo-binstall to install tools in CI (noir-lang/noir#9722)
fix(ssa): Simplify instructions during `remove_unreachable_instructions` (noir-lang/noir#9709)
END_COMMIT_OVERRIDE

Co-authored-by: Tom French <15848336+TomAFrench@users.noreply.github.com>
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Sep 26, 2025
Automated pull of nightly from the [noir](https://github.com/noir-lang/noir) programming language, a dependency of Aztec.
BEGIN_COMMIT_OVERRIDE
chore: print ACIR AssertZero as an equation (noir-lang/noir#9970)
chore(acir): Switch to inline SSA for slice intrinsics tests (noir-lang/noir#10000)
fix(fuzz): Handle divisor of zero msg in error comparison (noir-lang/noir#9995)
fix(ssa): Handle OOB indexing of slice literals in `remove_unreachalbe_instructions` (noir-lang/noir#9999)
chore: Add `DataFlowGraph::instruction_result` for getting a known number of results (noir-lang/noir#9989)
chore(ast_fuzzer): Allow passing compilation options to cvise tool (noir-lang/noir#9996)
chore(ssa_gen): Do not generate out of bounds checks for array assignments in ACIR (noir-lang/noir#9992)
chore: add more to/from le/be bits/bytes edge case tests (noir-lang/noir#9906)
fix: Disable early mem2reg (noir-lang/noir#9987)
chore(ci): free up space on github runner (noir-lang/noir#9994)
chore(ssa): Nits in `remove_bit_shift` and `remove_if_else` (noir-lang/noir#9965)
chore(ssa_executor): add compilation example  (noir-lang/noir#9937)
chore(acir): More arrays refactors  (noir-lang/noir#9962)
chore(test): add panicking tests for 'defunctionalize' (noir-lang/noir#8510)
chore: remove_if_else docs and refactors (noir-lang/noir#9929)
chore(acir): Do not copy element type sizes array when initializing (noir-lang/noir#9955)
fix: correct max_bit_size when left-shifting (noir-lang/noir#9770)
chore: checked_to_unchecked enhancements from audit review (noir-lang/noir#9958)
chore(ssa): Remove `offset` from `ArrayGet` and `ArraySet` (noir-lang/noir#9956)
chore(acir): Add some unit tests for arrays and light refactors (noir-lang/noir#9953)
chore: add regression test for #9852 (noir-lang/noir#9960)
chore(fuzz): Add error equivalency for bit-shift overflow in the SSA interpreter (noir-lang/noir#9957)
feat(cli): Visualize the Control Flow Graph (noir-lang/noir#9867)
chore: minor constant_folding refactors (noir-lang/noir#9954)
chore!: several ACIR serialisation changes (noir-lang/noir#8134)
chore(ci): only send slack notifications during the week (noir-lang/noir#9946)
chore: assumes no load-store in array_set (noir-lang/noir#9940)
chore(acir): Arrays module doc comments (noir-lang/noir#9947)
fix: correctly handle unusual radices in `ToRadix` decompositions (noir-lang/noir#9941)
fix(ssa): Start with checked operations in index calculations (noir-lang/noir#9888)
feat: no need to use dummy slice values in remove_if_else (noir-lang/noir#9928)
chore: bump external pinned commits (noir-lang/noir#9938)
chore: redo typo PR by viktorking7 (noir-lang/noir#9939)
chore: Release Noir(1.0.0-beta.13) (noir-lang/noir#9737)
chore(ssa): Validate array operands (noir-lang/noir#9932)
chore(licm): Add `CanBeHoistedResult::WithRefCount` (noir-lang/noir#9849)
chore(ci): alert in slack if fuzzer fails (noir-lang/noir#9910)
fix(fmt): missing skip whitespace when formatting match (noir-lang/noir#9905)
chore(acir_gen): New shared_context module and some additional unit tests (noir-lang/noir#9895)
chore: bump external pinned commits (noir-lang/noir#9902)
chore: validate SSA intrinsics arguments and return types (noir-lang/noir#9892)
chore(die): small nit to remove a check which is not useful (noir-lang/noir#9898)
chore: implement Display for brillig (noir-lang/noir#9893)
chore(acir_gen): Call module (noir-lang/noir#9896)
feat: allow initializing dynamic arrays (noir-lang/noir#9899)
fix(acir_gen): Handle flattening of numeric types when an `Array` contains a `DynamicArray` (noir-lang/noir#9887)
fix(mem2reg): Do not attempt to analyze an instruction simplified to a global (noir-lang/noir#9882)
fix: error on returning slice from main (noir-lang/noir#9636)
fix(acir_gen): Fix entry point indices (noir-lang/noir#9881)
chore: move `ram_blowup_regression` to be a compile-only test (noir-lang/noir#9874)
chore: validate SSA call arguments (noir-lang/noir#9876)
fix(ssa): Simplify always-fail range constraint (noir-lang/noir#9885)
chore(fuzz): Refactor logging in the AST fuzzer (noir-lang/noir#9884)
chore(ssa_fuzzer): refactor brillig target (noir-lang/noir#9821)
fix(fuzz): Always introduce a local binding before match (noir-lang/noir#9883)
chore(acir_gen): Switching existing ACIR gen tests to use parser and cleanup test module (noir-lang/noir#9878)
chore(acir_gen): Remove Brillig execution with constant arguments  (noir-lang/noir#9879)
fix: disallow `_` in where clauses, and disallow unused trait impl generics (noir-lang/noir#9871)
chore: bump external pinned commits (noir-lang/noir#9875)
feat: LSP lightweight mode (noir-lang/noir#9869)
chore: use `w` prefix for ACIR witnesses (noir-lang/noir#9839)
chore: greenlight remove enable side effects (noir-lang/noir#9833)
fix(fuzz): Avoid OOB when `in_no_dynamic` mode (noir-lang/noir#9858)
chore(ssa): Run purity analysis before preprocessing of functions (noir-lang/noir#9837)
fix: check for signed division overflow (noir-lang/noir#9857)
chore: Add tests from post-order PR (noir-lang/noir#9846)
chore(acir): Parse full program (foldable functions) (noir-lang/noir#9859)
chore: greenlight remove_bit_shifts (revised) (noir-lang/noir#9813)
feat(die): Prune unused entry block parameters for non-entry points (noir-lang/noir#9843)
chore: greenlight check_u128_mul_overflow (noir-lang/noir#9759)
chore: greenlight `remove_unreachable_instructions` for new requirements (noir-lang/noir#9810)
chore: use enum for instruction deduplication safety (noir-lang/noir#9824)
feat(LSP): signature help for macro attributes (noir-lang/noir#9536)
feat(LSP): folding ranges (noir-lang/noir#9854)
chore(die): IncrementRc/DecrementRc comments (noir-lang/noir#9855)
chore(ownership): Add tests for cloning nested arrays returned from indexing (noir-lang/noir#9789)
chore: validate that all jmpif conditions are boolean (noir-lang/noir#9850)
chore: bump external pinned commits (noir-lang/noir#9848)
chore(opt): Fetch set of Brillig entry points without reachability and recursive functions computation  (noir-lang/noir#9844)
chore: tests for map in stdlib (noir-lang/noir#9676)
chore(ssa): Brillig entry point specialization post check  (noir-lang/noir#9845)
chore: delete some unused snapshots (noir-lang/noir#9841)
feat(ssa): SSA CLI (noir-lang/noir#9826)
chore: more ACIR parser usages in tests, and optimize general optimizations (noir-lang/noir#9836)
chore(die): Remove RC tracker (noir-lang/noir#9809)
feat: better check_u128_mul_overflow logic when an operand is constant (noir-lang/noir#9835)
chore: increase number of cases tried in PR fuzzing (noir-lang/noir#9829)
chore: remove variable flag from poseidon2 hash (noir-lang/noir#9834)
chore: enforce that we only visit blocks once with new deque type (noir-lang/noir#9825)
chore(test): add tests for unconstrained `main` recursion (noir-lang/noir#8551)
chore: adding tests to vec (noir-lang/noir#9715)
feat(fuzz): Allow index OOB with a small probability (noir-lang/noir#9803)
chore(die): Encapsulate array access checks in separate module (noir-lang/noir#9828)
chore: use the ACIR parser in redundant_ranges tests (noir-lang/noir#9827)
chore: prefer `From` for infallible numeric casts (noir-lang/noir#9802)
chore: add a regression test for #4663 (noir-lang/noir#9819)
chore: bump linked bb version (noir-lang/noir#9237)
chore: use `DataFlowGraph` over `Function` in constant_folding (noir-lang/noir#9811)
chore: add a regression test for #6285 (noir-lang/noir#9817)
feat(fuzz): Generate calls to `slice_remove` and `slice_insert` in the AST fuzzer (noir-lang/noir#9786)
chore: no need to use `get_max_num_bits` if lhs is a constant (noir-lang/noir#9812)
chore(ci): fix release workflow permissions (noir-lang/noir#9822)
fix: do not simplify constraints with induction variable (noir-lang/noir#9806)
fix(ssa): Do not hoist unsafe `array_get` in Brillig (noir-lang/noir#9805)
fix(ownership): consider ident in nested l-value as used (noir-lang/noir#9793)
fix(mem2reg): handle instruction simplified to multiple (noir-lang/noir#9782)
fix: proper error when dividing by minus 1 (noir-lang/noir#9762)
chore: tests for field in stdlib (noir-lang/noir#9677)
chore(ssa_fuzzer): separate fuzzer runtimes + add brillig fuzz target (noir-lang/noir#9753)
feat(ownership): Do not clone indexed call results containing arrays (noir-lang/noir#9791)
Revert "chore: move `ram_blowup_regression` to be a compile-only test" (noir-lang/noir#9801)
feat: reverse loop condition in brillig to avoid NOT instruction (noir-lang/noir#9779)
chore: move `ram_blowup_regression` to be a compile-only test (noir-lang/noir#9790)
fix(docs): moves docs to correct path for sharing domain with landing (noir-lang/noir#9687)
chore: Check an inline always weight threshold during inline info computation (noir-lang/noir#9487)
chore: remove snapshots from `test_programs` artifacts (noir-lang/noir#9788)
chore: bump `@web/dev-server-esbuild` and `playwright` (noir-lang/noir#9781)
fix(ssa): Replace failing array access with constraint and defaults (noir-lang/noir#9776)
chore(die): Module doc comments (noir-lang/noir#9768)
chore: encapsulate constant folding logic better (noir-lang/noir#9773)
chore(ci): publish attestations on uploaded binaries (noir-lang/noir#9777)
feat: remove useless jump when branching in brillig (noir-lang/noir#9778)
chore: add `LoopContext::new` (noir-lang/noir#9720)
feat(ownership): Do not clone nested Index expressions (noir-lang/noir#9772)
chore(ci): add permissions to CI workflows (noir-lang/noir#9763)
fix(ssa): Accurate purities of ArraySet and RC instructions in Brillig (noir-lang/noir#9736)
chore: add test for when pending snapshots are committed (noir-lang/noir#9757)
chore(docs): Copy latest getting started guide into versioned docs (noir-lang/noir#9755)
chore: migrate away from fxhash to address advisory (noir-lang/noir#9752)
fix(fuzz): Install `just` in nightly fuzz workflow (noir-lang/noir#9756)
fix: wrong error message in brillig bit shift overflow (noir-lang/noir#9702)
chore: bump dependencies (noir-lang/noir#9751)
fix: left bit shift u128 would overflow Field (noir-lang/noir#9723)
Revert "chore: migrate away from fxhash to address advisory (noir-lang/noir#9750)"
chore: migrate away from fxhash to address advisory (noir-lang/noir#9750)
chore: bump external pinned commits (noir-lang/noir#9748)
chore(inlining): Skip weight calc for ACIR functions and recursive Brillig functions (noir-lang/noir#9739)
chore(ssa): Consolidate should inline check into a single filter (noir-lang/noir#9738)
feat: re-enable early mem2reg pass (noir-lang/noir#9744)
fix(ssa): Mark whether an ArrayGet requires a predicate based upon the runtime (noir-lang/noir#9712)
chore(licm): Identify untested code; refactoring; minor fixes (noir-lang/noir#9718)
chore(docs): Update Aztec logo in noir docs (noir-lang/noir#9740)
chore(ssa_fuzzer): refactor ssa fuzzer (noir-lang/noir#9651)
fix: error on boolean shift overflow in interpreter (noir-lang/noir#9724)
chore: do not inline acir calls in brillig (noir-lang/noir#9412)
chore: remove empty main from frontend tests (noir-lang/noir#9726)
chore: add tests for slice (noir-lang/noir#9650)
chore: greenlight `make_constrain_not_equal` for audits (noir-lang/noir#9535)
chore: Release Noir(1.0.0-beta.12) (noir-lang/noir#9565)
chore(test): Filter `ram_blowup_regression` by default on local testing (noir-lang/noir#9721)
chore(ci): force cargo-binstall to install tools in CI (noir-lang/noir#9722)
fix(ssa): Simplify instructions during `remove_unreachable_instructions` (noir-lang/noir#9709)
END_COMMIT_OVERRIDE
github-merge-queue bot pushed a commit to AztecProtocol/aztec-packages that referenced this pull request Sep 26, 2025
Automated pull of nightly from the
[noir](https://github.com/noir-lang/noir) programming language, a
dependency of Aztec.
BEGIN_COMMIT_OVERRIDE
chore: print ACIR AssertZero as an equation
(noir-lang/noir#9970)
chore(acir): Switch to inline SSA for slice intrinsics tests
(noir-lang/noir#10000)
fix(fuzz): Handle divisor of zero msg in error comparison
(noir-lang/noir#9995)
fix(ssa): Handle OOB indexing of slice literals in
`remove_unreachalbe_instructions`
(noir-lang/noir#9999)
chore: Add `DataFlowGraph::instruction_result` for getting a known
number of results (noir-lang/noir#9989)
chore(ast_fuzzer): Allow passing compilation options to cvise tool
(noir-lang/noir#9996)
chore(ssa_gen): Do not generate out of bounds checks for array
assignments in ACIR (noir-lang/noir#9992)
chore: add more to/from le/be bits/bytes edge case tests
(noir-lang/noir#9906)
fix: Disable early mem2reg (noir-lang/noir#9987)
chore(ci): free up space on github runner
(noir-lang/noir#9994)
chore(ssa): Nits in `remove_bit_shift` and `remove_if_else`
(noir-lang/noir#9965)
chore(ssa_executor): add compilation example
(noir-lang/noir#9937)
chore(acir): More arrays refactors
(noir-lang/noir#9962)
chore(test): add panicking tests for 'defunctionalize'
(noir-lang/noir#8510)
chore: remove_if_else docs and refactors
(noir-lang/noir#9929)
chore(acir): Do not copy element type sizes array when initializing
(noir-lang/noir#9955)
fix: correct max_bit_size when left-shifting
(noir-lang/noir#9770)
chore: checked_to_unchecked enhancements from audit review
(noir-lang/noir#9958)
chore(ssa): Remove `offset` from `ArrayGet` and `ArraySet`
(noir-lang/noir#9956)
chore(acir): Add some unit tests for arrays and light refactors
(noir-lang/noir#9953)
chore: add regression test for #9852
(noir-lang/noir#9960)
chore(fuzz): Add error equivalency for bit-shift overflow in the SSA
interpreter (noir-lang/noir#9957)
feat(cli): Visualize the Control Flow Graph
(noir-lang/noir#9867)
chore: minor constant_folding refactors
(noir-lang/noir#9954)
chore!: several ACIR serialisation changes
(noir-lang/noir#8134)
chore(ci): only send slack notifications during the week
(noir-lang/noir#9946)
chore: assumes no load-store in array_set
(noir-lang/noir#9940)
chore(acir): Arrays module doc comments
(noir-lang/noir#9947)
fix: correctly handle unusual radices in `ToRadix` decompositions
(noir-lang/noir#9941)
fix(ssa): Start with checked operations in index calculations
(noir-lang/noir#9888)
feat: no need to use dummy slice values in remove_if_else
(noir-lang/noir#9928)
chore: bump external pinned commits
(noir-lang/noir#9938)
chore: redo typo PR by viktorking7
(noir-lang/noir#9939)
chore: Release Noir(1.0.0-beta.13)
(noir-lang/noir#9737)
chore(ssa): Validate array operands
(noir-lang/noir#9932)
chore(licm): Add `CanBeHoistedResult::WithRefCount`
(noir-lang/noir#9849)
chore(ci): alert in slack if fuzzer fails
(noir-lang/noir#9910)
fix(fmt): missing skip whitespace when formatting match
(noir-lang/noir#9905)
chore(acir_gen): New shared_context module and some additional unit
tests (noir-lang/noir#9895)
chore: bump external pinned commits
(noir-lang/noir#9902)
chore: validate SSA intrinsics arguments and return types
(noir-lang/noir#9892)
chore(die): small nit to remove a check which is not useful
(noir-lang/noir#9898)
chore: implement Display for brillig
(noir-lang/noir#9893)
chore(acir_gen): Call module
(noir-lang/noir#9896)
feat: allow initializing dynamic arrays
(noir-lang/noir#9899)
fix(acir_gen): Handle flattening of numeric types when an `Array`
contains a `DynamicArray` (noir-lang/noir#9887)
fix(mem2reg): Do not attempt to analyze an instruction simplified to a
global (noir-lang/noir#9882)
fix: error on returning slice from main
(noir-lang/noir#9636)
fix(acir_gen): Fix entry point indices
(noir-lang/noir#9881)
chore: move `ram_blowup_regression` to be a compile-only test
(noir-lang/noir#9874)
chore: validate SSA call arguments
(noir-lang/noir#9876)
fix(ssa): Simplify always-fail range constraint
(noir-lang/noir#9885)
chore(fuzz): Refactor logging in the AST fuzzer
(noir-lang/noir#9884)
chore(ssa_fuzzer): refactor brillig target
(noir-lang/noir#9821)
fix(fuzz): Always introduce a local binding before match
(noir-lang/noir#9883)
chore(acir_gen): Switching existing ACIR gen tests to use parser and
cleanup test module (noir-lang/noir#9878)
chore(acir_gen): Remove Brillig execution with constant arguments
(noir-lang/noir#9879)
fix: disallow `_` in where clauses, and disallow unused trait impl
generics (noir-lang/noir#9871)
chore: bump external pinned commits
(noir-lang/noir#9875)
feat: LSP lightweight mode (noir-lang/noir#9869)
chore: use `w` prefix for ACIR witnesses
(noir-lang/noir#9839)
chore: greenlight remove enable side effects
(noir-lang/noir#9833)
fix(fuzz): Avoid OOB when `in_no_dynamic` mode
(noir-lang/noir#9858)
chore(ssa): Run purity analysis before preprocessing of functions
(noir-lang/noir#9837)
fix: check for signed division overflow
(noir-lang/noir#9857)
chore: Add tests from post-order PR
(noir-lang/noir#9846)
chore(acir): Parse full program (foldable functions)
(noir-lang/noir#9859)
chore: greenlight remove_bit_shifts (revised)
(noir-lang/noir#9813)
feat(die): Prune unused entry block parameters for non-entry points
(noir-lang/noir#9843)
chore: greenlight check_u128_mul_overflow
(noir-lang/noir#9759)
chore: greenlight `remove_unreachable_instructions` for new requirements
(noir-lang/noir#9810)
chore: use enum for instruction deduplication safety
(noir-lang/noir#9824)
feat(LSP): signature help for macro attributes
(noir-lang/noir#9536)
feat(LSP): folding ranges (noir-lang/noir#9854)
chore(die): IncrementRc/DecrementRc comments
(noir-lang/noir#9855)
chore(ownership): Add tests for cloning nested arrays returned from
indexing (noir-lang/noir#9789)
chore: validate that all jmpif conditions are boolean
(noir-lang/noir#9850)
chore: bump external pinned commits
(noir-lang/noir#9848)
chore(opt): Fetch set of Brillig entry points without reachability and
recursive functions computation
(noir-lang/noir#9844)
chore: tests for map in stdlib
(noir-lang/noir#9676)
chore(ssa): Brillig entry point specialization post check
(noir-lang/noir#9845)
chore: delete some unused snapshots
(noir-lang/noir#9841)
feat(ssa): SSA CLI (noir-lang/noir#9826)
chore: more ACIR parser usages in tests, and optimize general
optimizations (noir-lang/noir#9836)
chore(die): Remove RC tracker
(noir-lang/noir#9809)
feat: better check_u128_mul_overflow logic when an operand is constant
(noir-lang/noir#9835)
chore: increase number of cases tried in PR fuzzing
(noir-lang/noir#9829)
chore: remove variable flag from poseidon2 hash
(noir-lang/noir#9834)
chore: enforce that we only visit blocks once with new deque type
(noir-lang/noir#9825)
chore(test): add tests for unconstrained `main` recursion
(noir-lang/noir#8551)
chore: adding tests to vec (noir-lang/noir#9715)
feat(fuzz): Allow index OOB with a small probability
(noir-lang/noir#9803)
chore(die): Encapsulate array access checks in separate module
(noir-lang/noir#9828)
chore: use the ACIR parser in redundant_ranges tests
(noir-lang/noir#9827)
chore: prefer `From` for infallible numeric casts
(noir-lang/noir#9802)
chore: add a regression test for #4663
(noir-lang/noir#9819)
chore: bump linked bb version
(noir-lang/noir#9237)
chore: use `DataFlowGraph` over `Function` in constant_folding
(noir-lang/noir#9811)
chore: add a regression test for #6285
(noir-lang/noir#9817)
feat(fuzz): Generate calls to `slice_remove` and `slice_insert` in the
AST fuzzer (noir-lang/noir#9786)
chore: no need to use `get_max_num_bits` if lhs is a constant
(noir-lang/noir#9812)
chore(ci): fix release workflow permissions
(noir-lang/noir#9822)
fix: do not simplify constraints with induction variable
(noir-lang/noir#9806)
fix(ssa): Do not hoist unsafe `array_get` in Brillig
(noir-lang/noir#9805)
fix(ownership): consider ident in nested l-value as used
(noir-lang/noir#9793)
fix(mem2reg): handle instruction simplified to multiple
(noir-lang/noir#9782)
fix: proper error when dividing by minus 1
(noir-lang/noir#9762)
chore: tests for field in stdlib
(noir-lang/noir#9677)
chore(ssa_fuzzer): separate fuzzer runtimes + add brillig fuzz target
(noir-lang/noir#9753)
feat(ownership): Do not clone indexed call results containing arrays
(noir-lang/noir#9791)
Revert "chore: move `ram_blowup_regression` to be a compile-only test"
(noir-lang/noir#9801)
feat: reverse loop condition in brillig to avoid NOT instruction
(noir-lang/noir#9779)
chore: move `ram_blowup_regression` to be a compile-only test
(noir-lang/noir#9790)
fix(docs): moves docs to correct path for sharing domain with landing
(noir-lang/noir#9687)
chore: Check an inline always weight threshold during inline info
computation (noir-lang/noir#9487)
chore: remove snapshots from `test_programs` artifacts
(noir-lang/noir#9788)
chore: bump `@web/dev-server-esbuild` and `playwright`
(noir-lang/noir#9781)
fix(ssa): Replace failing array access with constraint and defaults
(noir-lang/noir#9776)
chore(die): Module doc comments
(noir-lang/noir#9768)
chore: encapsulate constant folding logic better
(noir-lang/noir#9773)
chore(ci): publish attestations on uploaded binaries
(noir-lang/noir#9777)
feat: remove useless jump when branching in brillig
(noir-lang/noir#9778)
chore: add `LoopContext::new`
(noir-lang/noir#9720)
feat(ownership): Do not clone nested Index expressions
(noir-lang/noir#9772)
chore(ci): add permissions to CI workflows
(noir-lang/noir#9763)
fix(ssa): Accurate purities of ArraySet and RC instructions in Brillig
(noir-lang/noir#9736)
chore: add test for when pending snapshots are committed
(noir-lang/noir#9757)
chore(docs): Copy latest getting started guide into versioned docs
(noir-lang/noir#9755)
chore: migrate away from fxhash to address advisory
(noir-lang/noir#9752)
fix(fuzz): Install `just` in nightly fuzz workflow
(noir-lang/noir#9756)
fix: wrong error message in brillig bit shift overflow
(noir-lang/noir#9702)
chore: bump dependencies (noir-lang/noir#9751)
fix: left bit shift u128 would overflow Field
(noir-lang/noir#9723)
Revert "chore: migrate away from fxhash to address advisory
(noir-lang/noir#9750)"
chore: migrate away from fxhash to address advisory
(noir-lang/noir#9750)
chore: bump external pinned commits
(noir-lang/noir#9748)
chore(inlining): Skip weight calc for ACIR functions and recursive
Brillig functions (noir-lang/noir#9739)
chore(ssa): Consolidate should inline check into a single filter
(noir-lang/noir#9738)
feat: re-enable early mem2reg pass
(noir-lang/noir#9744)
fix(ssa): Mark whether an ArrayGet requires a predicate based upon the
runtime (noir-lang/noir#9712)
chore(licm): Identify untested code; refactoring; minor fixes
(noir-lang/noir#9718)
chore(docs): Update Aztec logo in noir docs
(noir-lang/noir#9740)
chore(ssa_fuzzer): refactor ssa fuzzer
(noir-lang/noir#9651)
fix: error on boolean shift overflow in interpreter
(noir-lang/noir#9724)
chore: do not inline acir calls in brillig
(noir-lang/noir#9412)
chore: remove empty main from frontend tests
(noir-lang/noir#9726)
chore: add tests for slice (noir-lang/noir#9650)
chore: greenlight `make_constrain_not_equal` for audits
(noir-lang/noir#9535)
chore: Release Noir(1.0.0-beta.12)
(noir-lang/noir#9565)
chore(test): Filter `ram_blowup_regression` by default on local testing
(noir-lang/noir#9721)
chore(ci): force cargo-binstall to install tools in CI
(noir-lang/noir#9722)
fix(ssa): Simplify instructions during `remove_unreachable_instructions`
(noir-lang/noir#9709)
END_COMMIT_OVERRIDE
mralj pushed a commit to AztecProtocol/aztec-packages that referenced this pull request Oct 13, 2025
Automated pull of nightly from the [noir](https://github.com/noir-lang/noir) programming language, a dependency of Aztec.
BEGIN_COMMIT_OVERRIDE
chore: print ACIR AssertZero as an equation (noir-lang/noir#9970)
chore(acir): Switch to inline SSA for slice intrinsics tests (noir-lang/noir#10000)
fix(fuzz): Handle divisor of zero msg in error comparison (noir-lang/noir#9995)
fix(ssa): Handle OOB indexing of slice literals in `remove_unreachalbe_instructions` (noir-lang/noir#9999)
chore: Add `DataFlowGraph::instruction_result` for getting a known number of results (noir-lang/noir#9989)
chore(ast_fuzzer): Allow passing compilation options to cvise tool (noir-lang/noir#9996)
chore(ssa_gen): Do not generate out of bounds checks for array assignments in ACIR (noir-lang/noir#9992)
chore: add more to/from le/be bits/bytes edge case tests (noir-lang/noir#9906)
fix: Disable early mem2reg (noir-lang/noir#9987)
chore(ci): free up space on github runner (noir-lang/noir#9994)
chore(ssa): Nits in `remove_bit_shift` and `remove_if_else` (noir-lang/noir#9965)
chore(ssa_executor): add compilation example  (noir-lang/noir#9937)
chore(acir): More arrays refactors  (noir-lang/noir#9962)
chore(test): add panicking tests for 'defunctionalize' (noir-lang/noir#8510)
chore: remove_if_else docs and refactors (noir-lang/noir#9929)
chore(acir): Do not copy element type sizes array when initializing (noir-lang/noir#9955)
fix: correct max_bit_size when left-shifting (noir-lang/noir#9770)
chore: checked_to_unchecked enhancements from audit review (noir-lang/noir#9958)
chore(ssa): Remove `offset` from `ArrayGet` and `ArraySet` (noir-lang/noir#9956)
chore(acir): Add some unit tests for arrays and light refactors (noir-lang/noir#9953)
chore: add regression test for #9852 (noir-lang/noir#9960)
chore(fuzz): Add error equivalency for bit-shift overflow in the SSA interpreter (noir-lang/noir#9957)
feat(cli): Visualize the Control Flow Graph (noir-lang/noir#9867)
chore: minor constant_folding refactors (noir-lang/noir#9954)
chore!: several ACIR serialisation changes (noir-lang/noir#8134)
chore(ci): only send slack notifications during the week (noir-lang/noir#9946)
chore: assumes no load-store in array_set (noir-lang/noir#9940)
chore(acir): Arrays module doc comments (noir-lang/noir#9947)
fix: correctly handle unusual radices in `ToRadix` decompositions (noir-lang/noir#9941)
fix(ssa): Start with checked operations in index calculations (noir-lang/noir#9888)
feat: no need to use dummy slice values in remove_if_else (noir-lang/noir#9928)
chore: bump external pinned commits (noir-lang/noir#9938)
chore: redo typo PR by viktorking7 (noir-lang/noir#9939)
chore: Release Noir(1.0.0-beta.13) (noir-lang/noir#9737)
chore(ssa): Validate array operands (noir-lang/noir#9932)
chore(licm): Add `CanBeHoistedResult::WithRefCount` (noir-lang/noir#9849)
chore(ci): alert in slack if fuzzer fails (noir-lang/noir#9910)
fix(fmt): missing skip whitespace when formatting match (noir-lang/noir#9905)
chore(acir_gen): New shared_context module and some additional unit tests (noir-lang/noir#9895)
chore: bump external pinned commits (noir-lang/noir#9902)
chore: validate SSA intrinsics arguments and return types (noir-lang/noir#9892)
chore(die): small nit to remove a check which is not useful (noir-lang/noir#9898)
chore: implement Display for brillig (noir-lang/noir#9893)
chore(acir_gen): Call module (noir-lang/noir#9896)
feat: allow initializing dynamic arrays (noir-lang/noir#9899)
fix(acir_gen): Handle flattening of numeric types when an `Array` contains a `DynamicArray` (noir-lang/noir#9887)
fix(mem2reg): Do not attempt to analyze an instruction simplified to a global (noir-lang/noir#9882)
fix: error on returning slice from main (noir-lang/noir#9636)
fix(acir_gen): Fix entry point indices (noir-lang/noir#9881)
chore: move `ram_blowup_regression` to be a compile-only test (noir-lang/noir#9874)
chore: validate SSA call arguments (noir-lang/noir#9876)
fix(ssa): Simplify always-fail range constraint (noir-lang/noir#9885)
chore(fuzz): Refactor logging in the AST fuzzer (noir-lang/noir#9884)
chore(ssa_fuzzer): refactor brillig target (noir-lang/noir#9821)
fix(fuzz): Always introduce a local binding before match (noir-lang/noir#9883)
chore(acir_gen): Switching existing ACIR gen tests to use parser and cleanup test module (noir-lang/noir#9878)
chore(acir_gen): Remove Brillig execution with constant arguments  (noir-lang/noir#9879)
fix: disallow `_` in where clauses, and disallow unused trait impl generics (noir-lang/noir#9871)
chore: bump external pinned commits (noir-lang/noir#9875)
feat: LSP lightweight mode (noir-lang/noir#9869)
chore: use `w` prefix for ACIR witnesses (noir-lang/noir#9839)
chore: greenlight remove enable side effects (noir-lang/noir#9833)
fix(fuzz): Avoid OOB when `in_no_dynamic` mode (noir-lang/noir#9858)
chore(ssa): Run purity analysis before preprocessing of functions (noir-lang/noir#9837)
fix: check for signed division overflow (noir-lang/noir#9857)
chore: Add tests from post-order PR (noir-lang/noir#9846)
chore(acir): Parse full program (foldable functions) (noir-lang/noir#9859)
chore: greenlight remove_bit_shifts (revised) (noir-lang/noir#9813)
feat(die): Prune unused entry block parameters for non-entry points (noir-lang/noir#9843)
chore: greenlight check_u128_mul_overflow (noir-lang/noir#9759)
chore: greenlight `remove_unreachable_instructions` for new requirements (noir-lang/noir#9810)
chore: use enum for instruction deduplication safety (noir-lang/noir#9824)
feat(LSP): signature help for macro attributes (noir-lang/noir#9536)
feat(LSP): folding ranges (noir-lang/noir#9854)
chore(die): IncrementRc/DecrementRc comments (noir-lang/noir#9855)
chore(ownership): Add tests for cloning nested arrays returned from indexing (noir-lang/noir#9789)
chore: validate that all jmpif conditions are boolean (noir-lang/noir#9850)
chore: bump external pinned commits (noir-lang/noir#9848)
chore(opt): Fetch set of Brillig entry points without reachability and recursive functions computation  (noir-lang/noir#9844)
chore: tests for map in stdlib (noir-lang/noir#9676)
chore(ssa): Brillig entry point specialization post check  (noir-lang/noir#9845)
chore: delete some unused snapshots (noir-lang/noir#9841)
feat(ssa): SSA CLI (noir-lang/noir#9826)
chore: more ACIR parser usages in tests, and optimize general optimizations (noir-lang/noir#9836)
chore(die): Remove RC tracker (noir-lang/noir#9809)
feat: better check_u128_mul_overflow logic when an operand is constant (noir-lang/noir#9835)
chore: increase number of cases tried in PR fuzzing (noir-lang/noir#9829)
chore: remove variable flag from poseidon2 hash (noir-lang/noir#9834)
chore: enforce that we only visit blocks once with new deque type (noir-lang/noir#9825)
chore(test): add tests for unconstrained `main` recursion (noir-lang/noir#8551)
chore: adding tests to vec (noir-lang/noir#9715)
feat(fuzz): Allow index OOB with a small probability (noir-lang/noir#9803)
chore(die): Encapsulate array access checks in separate module (noir-lang/noir#9828)
chore: use the ACIR parser in redundant_ranges tests (noir-lang/noir#9827)
chore: prefer `From` for infallible numeric casts (noir-lang/noir#9802)
chore: add a regression test for #4663 (noir-lang/noir#9819)
chore: bump linked bb version (noir-lang/noir#9237)
chore: use `DataFlowGraph` over `Function` in constant_folding (noir-lang/noir#9811)
chore: add a regression test for #6285 (noir-lang/noir#9817)
feat(fuzz): Generate calls to `slice_remove` and `slice_insert` in the AST fuzzer (noir-lang/noir#9786)
chore: no need to use `get_max_num_bits` if lhs is a constant (noir-lang/noir#9812)
chore(ci): fix release workflow permissions (noir-lang/noir#9822)
fix: do not simplify constraints with induction variable (noir-lang/noir#9806)
fix(ssa): Do not hoist unsafe `array_get` in Brillig (noir-lang/noir#9805)
fix(ownership): consider ident in nested l-value as used (noir-lang/noir#9793)
fix(mem2reg): handle instruction simplified to multiple (noir-lang/noir#9782)
fix: proper error when dividing by minus 1 (noir-lang/noir#9762)
chore: tests for field in stdlib (noir-lang/noir#9677)
chore(ssa_fuzzer): separate fuzzer runtimes + add brillig fuzz target (noir-lang/noir#9753)
feat(ownership): Do not clone indexed call results containing arrays (noir-lang/noir#9791)
Revert "chore: move `ram_blowup_regression` to be a compile-only test" (noir-lang/noir#9801)
feat: reverse loop condition in brillig to avoid NOT instruction (noir-lang/noir#9779)
chore: move `ram_blowup_regression` to be a compile-only test (noir-lang/noir#9790)
fix(docs): moves docs to correct path for sharing domain with landing (noir-lang/noir#9687)
chore: Check an inline always weight threshold during inline info computation (noir-lang/noir#9487)
chore: remove snapshots from `test_programs` artifacts (noir-lang/noir#9788)
chore: bump `@web/dev-server-esbuild` and `playwright` (noir-lang/noir#9781)
fix(ssa): Replace failing array access with constraint and defaults (noir-lang/noir#9776)
chore(die): Module doc comments (noir-lang/noir#9768)
chore: encapsulate constant folding logic better (noir-lang/noir#9773)
chore(ci): publish attestations on uploaded binaries (noir-lang/noir#9777)
feat: remove useless jump when branching in brillig (noir-lang/noir#9778)
chore: add `LoopContext::new` (noir-lang/noir#9720)
feat(ownership): Do not clone nested Index expressions (noir-lang/noir#9772)
chore(ci): add permissions to CI workflows (noir-lang/noir#9763)
fix(ssa): Accurate purities of ArraySet and RC instructions in Brillig (noir-lang/noir#9736)
chore: add test for when pending snapshots are committed (noir-lang/noir#9757)
chore(docs): Copy latest getting started guide into versioned docs (noir-lang/noir#9755)
chore: migrate away from fxhash to address advisory (noir-lang/noir#9752)
fix(fuzz): Install `just` in nightly fuzz workflow (noir-lang/noir#9756)
fix: wrong error message in brillig bit shift overflow (noir-lang/noir#9702)
chore: bump dependencies (noir-lang/noir#9751)
fix: left bit shift u128 would overflow Field (noir-lang/noir#9723)
Revert "chore: migrate away from fxhash to address advisory (noir-lang/noir#9750)"
chore: migrate away from fxhash to address advisory (noir-lang/noir#9750)
chore: bump external pinned commits (noir-lang/noir#9748)
chore(inlining): Skip weight calc for ACIR functions and recursive Brillig functions (noir-lang/noir#9739)
chore(ssa): Consolidate should inline check into a single filter (noir-lang/noir#9738)
feat: re-enable early mem2reg pass (noir-lang/noir#9744)
fix(ssa): Mark whether an ArrayGet requires a predicate based upon the runtime (noir-lang/noir#9712)
chore(licm): Identify untested code; refactoring; minor fixes (noir-lang/noir#9718)
chore(docs): Update Aztec logo in noir docs (noir-lang/noir#9740)
chore(ssa_fuzzer): refactor ssa fuzzer (noir-lang/noir#9651)
fix: error on boolean shift overflow in interpreter (noir-lang/noir#9724)
chore: do not inline acir calls in brillig (noir-lang/noir#9412)
chore: remove empty main from frontend tests (noir-lang/noir#9726)
chore: add tests for slice (noir-lang/noir#9650)
chore: greenlight `make_constrain_not_equal` for audits (noir-lang/noir#9535)
chore: Release Noir(1.0.0-beta.12) (noir-lang/noir#9565)
chore(test): Filter `ram_blowup_regression` by default on local testing (noir-lang/noir#9721)
chore(ci): force cargo-binstall to install tools in CI (noir-lang/noir#9722)
fix(ssa): Simplify instructions during `remove_unreachable_instructions` (noir-lang/noir#9709)
END_COMMIT_OVERRIDE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bench-show Display benchmark results on PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants