fix(ssa): Accurate purities of ArraySet and RC instructions in Brillig#9736
fix(ssa): Accurate purities of ArraySet and RC instructions in Brillig#9736TomAFrench merged 9 commits intomasterfrom
Conversation
There was a problem hiding this comment.
ACVM Benchmarks
Details
| Benchmark suite | Current: 6d5ce3e | Previous: 8a6ef48 | Ratio |
|---|---|---|---|
purely_sequential_opcodes |
250401 ns/iter (± 1603) |
259975 ns/iter (± 1708) |
0.96 |
perfectly_parallel_opcodes |
220945 ns/iter (± 1017) |
226140 ns/iter (± 607) |
0.98 |
perfectly_parallel_batch_inversion_opcodes |
2783609 ns/iter (± 1403) |
2793141 ns/iter (± 1955) |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
Changes to Brillig bytecode sizes
🧾 Summary (10% most significant diffs)
Full diff report 👇
|
Changes to number of Brillig opcodes executed
🧾 Summary (10% most significant diffs)
Full diff report 👇
|
There was a problem hiding this comment.
Execution Time
Details
| Benchmark suite | Current: 6d5ce3e | Previous: 8a6ef48 | Ratio |
|---|---|---|---|
private-kernel-inner |
0.017 s |
0.014 s |
1.21 |
private-kernel-reset |
0.163 s |
0.162 s |
1.01 |
private-kernel-tail |
0.011 s |
0.011 s |
1 |
rollup-base-private |
0.264 s |
0.265 s |
1.00 |
rollup-base-public |
0.163 s |
0.164 s |
0.99 |
rollup-block-root |
14.4 s |
14.4 s |
1 |
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.021 s |
0.90 |
sha512-100-bytes |
0.104 s |
0.106 s |
0.98 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Opcode count
Details
| Benchmark suite | Current: 6d5ce3e | Previous: 8a6ef48 | 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 |
221339 opcodes |
221339 opcodes |
1 |
rollup-base-public |
159930 opcodes |
159930 opcodes |
1 |
rollup-block-root-empty |
68108 opcodes |
68108 opcodes |
1 |
rollup-block-root-single-tx |
964515 opcodes |
964515 opcodes |
1 |
rollup-block-root |
965801 opcodes |
965801 opcodes |
1 |
rollup-merge |
1409 opcodes |
1409 opcodes |
1 |
rollup-root |
2631 opcodes |
2631 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.
There was a problem hiding this comment.
Artifact Size
Details
| Benchmark suite | Current: 6d5ce3e | Previous: 8a6ef48 | Ratio |
|---|---|---|---|
private-kernel-inner |
709.5 KB |
709.5 KB |
1 |
private-kernel-reset |
2025.1 KB |
2025.1 KB |
1 |
private-kernel-tail |
531.7 KB |
531.7 KB |
1 |
rollup-base-private |
4349 KB |
4349 KB |
1 |
rollup-base-public |
3353.3 KB |
3353.3 KB |
1 |
rollup-block-root-empty |
3813.5 KB |
3813.5 KB |
1 |
rollup-block-root-single-tx |
30682.4 KB |
30682.4 KB |
1 |
rollup-block-root |
30720.4 KB |
30720.4 KB |
1 |
rollup-merge |
188.1 KB |
188.1 KB |
1 |
rollup-root |
390.6 KB |
390.6 KB |
1 |
semaphore-depth-10 |
631.9 KB |
631.9 KB |
1 |
sha512-100-bytes |
525.5 KB |
525.5 KB |
1 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Compilation Time
Details
| Benchmark suite | Current: 6d5ce3e | Previous: 8a6ef48 | Ratio |
|---|---|---|---|
private-kernel-inner |
1.794 s |
1.888 s |
0.95 |
private-kernel-reset |
9.51 s |
8.198 s |
1.16 |
private-kernel-tail |
1.434 s |
1.394 s |
1.03 |
rollup-base-private |
17.62 s |
18.3 s |
0.96 |
rollup-base-public |
16.68 s |
16 s |
1.04 |
rollup-block-root-empty |
17.58 s |
17.42 s |
1.01 |
rollup-block-root-single-tx |
232 s |
211 s |
1.10 |
rollup-block-root |
219 s |
196 s |
1.12 |
rollup-merge |
1.376 s |
1.406 s |
0.98 |
rollup-root |
1.552 s |
1.482 s |
1.05 |
semaphore-depth-10 |
0.771 s |
0.819 s |
0.94 |
sha512-100-bytes |
1.718 s |
1.689 s |
1.02 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Execution Memory
Details
| Benchmark suite | Current: 6d5ce3e | Previous: 8a6ef48 | Ratio |
|---|---|---|---|
private-kernel-inner |
258.16 MB |
258.16 MB |
1 |
private-kernel-reset |
291.32 MB |
291.32 MB |
1 |
private-kernel-tail |
242.9 MB |
242.9 MB |
1 |
rollup-base-private |
506.04 MB |
506.04 MB |
1 |
rollup-base-public |
438.42 MB |
438.42 MB |
1 |
rollup-block-root |
1500 MB |
1500 MB |
1 |
rollup-merge |
330.5 MB |
330.5 MB |
1 |
rollup-root |
333.02 MB |
333.02 MB |
1 |
semaphore_depth_10 |
72.45 MB |
72.45 MB |
1 |
sha512_100_bytes |
58.23 MB |
58.23 MB |
1 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Compilation Memory
Details
| Benchmark suite | Current: 6d5ce3e | Previous: 8a6ef48 | Ratio |
|---|---|---|---|
private-kernel-inner |
284.55 MB |
284.57 MB |
1.00 |
private-kernel-reset |
593.53 MB |
593.53 MB |
1 |
private-kernel-tail |
259.08 MB |
259.08 MB |
1 |
rollup-base-private |
1360 MB |
1360 MB |
1 |
rollup-base-public |
1420 MB |
1420 MB |
1 |
rollup-block-root-empty |
998.82 MB |
998.82 MB |
1 |
rollup-block-root-single-tx |
9680 MB |
9680 MB |
1 |
rollup-block-root |
9690 MB |
9690 MB |
1 |
rollup-merge |
332.74 MB |
332.74 MB |
1 |
rollup-root |
343.48 MB |
343.48 MB |
1 |
semaphore_depth_10 |
106.96 MB |
106.96 MB |
1 |
sha512_100_bytes |
254.11 MB |
254.11 MB |
1 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Test Suite Duration
Details
| Benchmark suite | Current: 6d5ce3e | Previous: 8a6ef48 | Ratio |
|---|---|---|---|
test_report_AztecProtocol_aztec-packages_noir-projects_aztec-nr |
100 s |
102 s |
0.98 |
test_report_AztecProtocol_aztec-packages_noir-projects_noir-contracts |
128 s |
128 s |
1 |
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_blob |
213 s |
203 s |
1.05 |
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_private-kernel-lib |
217 s |
214 s |
1.01 |
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_reset-kernel-lib |
34 s |
33 s |
1.03 |
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_rollup-lib |
607 s |
600 s |
1.01 |
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_types |
101 s |
96 s |
1.05 |
test_report_noir-lang_noir-bignum_ |
131 s |
143 s |
0.92 |
test_report_noir-lang_noir_bigcurve_ |
336 s |
343 s |
0.98 |
test_report_noir-lang_sha256_ |
15 s |
16 s |
0.94 |
test_report_noir-lang_sha512_ |
13 s |
13 s |
1 |
test_report_zkpassport_noir-ecdsa_ |
2 s |
3 s |
0.67 |
test_report_zkpassport_noir_rsa_ |
1 s |
2 s |
0.50 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
⚠️ 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: 2ba8997 | Previous: 15aebdf | Ratio |
|---|---|---|---|
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_blob |
261 s |
198 s |
1.32 |
test_report_noir-lang_sha512_ |
15 s |
12 s |
1.25 |
test_report_zkpassport_noir_rsa_ |
2 s |
1 s |
2 |
This comment was automatically generated by workflow using github-action-benchmark.
CC: @TomAFrench
There was a problem hiding this comment.
⚠️ Performance Alert ⚠️
Possible performance regression was detected for benchmark 'Compilation Time'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20.
| Benchmark suite | Current: 476afff | Previous: da7ea9a | Ratio |
|---|---|---|---|
sha512-100-bytes |
1.987 s |
1.627 s |
1.22 |
This comment was automatically generated by workflow using github-action-benchmark.
CC: @TomAFrench
There was a problem hiding this comment.
⚠️ 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: 6d5ce3e | Previous: 8a6ef48 | Ratio |
|---|---|---|---|
private-kernel-inner |
0.017 s |
0.014 s |
1.21 |
This comment was automatically generated by workflow using github-action-benchmark.
CC: @TomAFrench
|
I've bumped this from the merge queue so that #9752 can go in. We need that to go in as it will conflict with basically anything which affects a snapshot. |
rge branch 'master' into mv/array-set-rc-purity-fixes
Pull Request is not mergeable
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>
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
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
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
Description
Problem*
Resolves #9735
Resolves #9746
Summary*
This PR only changes purity in the Brillig runtime.
ArraySet,IncrementRc, andDecrementRcare marked as impure if they operate on a function parameter or a global. Otherwise they are pure instructions.Additional Context
Documentation*
Check one:
PR Checklist*
cargo fmton default settings.