chore(audit): Refactors in BrilligGlobals, ConstantAllocation and VariableLiveness#10265
chore(audit): Refactors in BrilligGlobals, ConstantAllocation and VariableLiveness#10265
BrilligGlobals, ConstantAllocation and VariableLiveness#10265Conversation
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: 51e64e4 | Previous: 41b22ba | Ratio |
|---|---|---|---|
test_report_noir-lang_noir_bigcurve_ |
400 s |
330 s |
1.21 |
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: 6480eac | Previous: 41b22ba | Ratio |
|---|---|---|---|
rollup-block-root-single-tx |
0.003 s |
0.002 s |
1.50 |
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 Memory'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20.
| Benchmark suite | Current: 1a19c80 | Previous: 0ef3b9d | Ratio |
|---|---|---|---|
rollup-tx-base-private |
982.74 MB |
451.42 MB |
2.18 |
sha512_100_bytes |
185.41 MB |
71.96 MB |
2.58 |
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: f2c874e | Previous: ca04e9c | Ratio |
|---|---|---|---|
rollup-root |
1.786 s |
1.45 s |
1.23 |
This comment was automatically generated by workflow using github-action-benchmark.
CC: @TomAFrench
626e5d9 to
9e621e3
Compare
There was a problem hiding this comment.
ACVM Benchmarks
Details
| Benchmark suite | Current: 51e64e4 | Previous: 41b22ba | Ratio |
|---|---|---|---|
purely_sequential_opcodes |
261861 ns/iter (± 1138) |
268453 ns/iter (± 682) |
0.98 |
perfectly_parallel_opcodes |
231797 ns/iter (± 16922) |
240416 ns/iter (± 1866) |
0.96 |
perfectly_parallel_batch_inversion_opcodes |
2794814 ns/iter (± 13720) |
2795260 ns/iter (± 20055) |
1.00 |
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: 51e64e4 | Previous: 41b22ba | Ratio |
|---|---|---|---|
test_report_AztecProtocol_aztec-packages_noir-projects_aztec-nr |
124 s |
118 s |
1.05 |
test_report_AztecProtocol_aztec-packages_noir-projects_noir-contracts |
129 s |
136 s |
0.95 |
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_blob |
274 s |
301 s |
0.91 |
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_private-kernel-lib |
242 s |
236 s |
1.03 |
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_types |
131 s |
140 s |
0.94 |
test_report_noir-lang_noir-bignum_ |
157 s |
154 s |
1.02 |
test_report_noir-lang_noir_bigcurve_ |
400 s |
330 s |
1.21 |
test_report_noir-lang_sha256_ |
16 s |
16 s |
1 |
test_report_noir-lang_sha512_ |
13 s |
15 s |
0.87 |
test_report_zkpassport_noir-ecdsa_ |
3 s |
3 s |
1 |
test_report_zkpassport_noir_rsa_ |
2 s |
2 s |
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: 51e64e4 | Previous: 41b22ba | Ratio |
|---|---|---|---|
private-kernel-inner |
714.3 KB |
714.3 KB |
1 |
private-kernel-reset |
1864 KB |
1864 KB |
1 |
private-kernel-tail |
546.2 KB |
546.2 KB |
1 |
rollup-block-root-first-empty-tx |
179.6 KB |
179.6 KB |
1 |
rollup-block-root-single-tx |
177.9 KB |
177.9 KB |
1 |
rollup-block-root |
257.9 KB |
257.9 KB |
1 |
rollup-checkpoint-merge |
370.6 KB |
370.6 KB |
1 |
rollup-checkpoint-root-single-block |
27640.2 KB |
27640.2 KB |
1 |
rollup-checkpoint-root |
27685.9 KB |
27685.9 KB |
1 |
rollup-root |
411.4 KB |
411.4 KB |
1 |
rollup-tx-base-private |
4909.3 KB |
4909.3 KB |
1 |
rollup-tx-base-public |
4555.4 KB |
4555.4 KB |
1 |
rollup-tx-merge |
186.1 KB |
186.1 KB |
1 |
semaphore-depth-10 |
570.9 KB |
570.9 KB |
1 |
sha512-100-bytes |
506.3 KB |
506.3 KB |
1 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Execution Time
Details
| Benchmark suite | Current: 51e64e4 | Previous: 41b22ba | Ratio |
|---|---|---|---|
private-kernel-inner |
0.011 s |
0.011 s |
1 |
private-kernel-reset |
0.146 s |
0.146 s |
1 |
private-kernel-tail |
0.009 s |
0.009 s |
1 |
rollup-block-root-first-empty-tx |
0.003 s |
0.003 s |
1 |
rollup-block-root-single-tx |
0.002 s |
0.002 s |
1 |
rollup-block-root |
0.004 s |
0.004 s |
1 |
rollup-checkpoint-merge |
0.003 s |
0.003 s |
1 |
rollup-checkpoint-root-single-block |
11.3 s |
11.8 s |
0.96 |
rollup-checkpoint-root |
11 s |
11.1 s |
0.99 |
rollup-root |
0.004 s |
0.005 s |
0.80 |
rollup-tx-base-private |
0.298 s |
0.298 s |
1 |
rollup-tx-base-public |
0.243 s |
0.243 s |
1 |
rollup-tx-merge |
0.002 s |
0.002 s |
1 |
semaphore-depth-10 |
0.008 s |
0.009 s |
0.89 |
sha512-100-bytes |
0.052 s |
0.066 s |
0.79 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Opcode count
Details
| Benchmark suite | Current: 51e64e4 | Previous: 41b22ba | Ratio |
|---|---|---|---|
private-kernel-inner |
14544 opcodes |
14544 opcodes |
1 |
private-kernel-reset |
70415 opcodes |
70415 opcodes |
1 |
private-kernel-tail |
11680 opcodes |
11680 opcodes |
1 |
rollup-block-root-first-empty-tx |
1364 opcodes |
1364 opcodes |
1 |
rollup-block-root-single-tx |
1048 opcodes |
1048 opcodes |
1 |
rollup-block-root |
2409 opcodes |
2409 opcodes |
1 |
rollup-checkpoint-merge |
2130 opcodes |
2130 opcodes |
1 |
rollup-checkpoint-root-single-block |
962015 opcodes |
962015 opcodes |
1 |
rollup-checkpoint-root |
963375 opcodes |
963375 opcodes |
1 |
rollup-root |
2630 opcodes |
2630 opcodes |
1 |
rollup-tx-base-private |
263908 opcodes |
263908 opcodes |
1 |
rollup-tx-base-public |
245185 opcodes |
245185 opcodes |
1 |
rollup-tx-merge |
1486 opcodes |
1486 opcodes |
1 |
semaphore-depth-10 |
5699 opcodes |
5699 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.
Compilation Time
Details
| Benchmark suite | Current: 51e64e4 | Previous: 41b22ba | Ratio |
|---|---|---|---|
private-kernel-inner |
1.69 s |
1.688 s |
1.00 |
private-kernel-reset |
6.614 s |
6.766 s |
0.98 |
private-kernel-tail |
1.43 s |
1.418 s |
1.01 |
rollup-block-root-first-empty-tx |
1.412 s |
1.388 s |
1.02 |
rollup-block-root-single-tx |
1.37 s |
1.37 s |
1 |
rollup-block-root |
1.49 s |
1.43 s |
1.04 |
rollup-checkpoint-merge |
1.462 s |
1.436 s |
1.02 |
rollup-checkpoint-root-single-block |
202 s |
212 s |
0.95 |
rollup-checkpoint-root |
200 s |
192 s |
1.04 |
rollup-root |
1.534 s |
1.63 s |
0.94 |
rollup-tx-base-private |
17.86 s |
17.72 s |
1.01 |
rollup-tx-base-public |
81.06 s |
76.34 s |
1.06 |
rollup-tx-merge |
1.354 s |
1.398 s |
0.97 |
semaphore-depth-10 |
0.787 s |
0.837 s |
0.94 |
sha512-100-bytes |
1.592 s |
1.513 s |
1.05 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Execution Memory
Details
| Benchmark suite | Current: 51e64e4 | Previous: 41b22ba | Ratio |
|---|---|---|---|
private-kernel-inner |
253.63 MB |
253.63 MB |
1 |
private-kernel-reset |
287.24 MB |
287.24 MB |
1 |
private-kernel-tail |
243.5 MB |
243.5 MB |
1 |
rollup-block-root |
337.87 MB |
337.87 MB |
1 |
rollup-checkpoint-merge |
336.67 MB |
336.67 MB |
1 |
rollup-checkpoint-root-single-block |
1020 MB |
1020 MB |
1 |
rollup-checkpoint-root |
1020 MB |
1020 MB |
1 |
rollup-root |
337.87 MB |
337.87 MB |
1 |
rollup-tx-base-private |
451.42 MB |
451.42 MB |
1 |
rollup-tx-base-public |
466.49 MB |
466.49 MB |
1 |
rollup-tx-merge |
336.13 MB |
336.13 MB |
1 |
semaphore_depth_10 |
73.7 MB |
73.7 MB |
1 |
sha512_100_bytes |
71.96 MB |
71.96 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: 51e64e4 | Previous: 41b22ba | Ratio |
|---|---|---|---|
private-kernel-inner |
254.47 MB |
254.47 MB |
1 |
private-kernel-reset |
493.18 MB |
493.18 MB |
1 |
private-kernel-tail |
244.63 MB |
244.63 MB |
1 |
rollup-block-root-first-empty-tx |
339.38 MB |
339.37 MB |
1.00 |
rollup-block-root-single-tx |
337.41 MB |
337.41 MB |
1 |
rollup-block-root |
340.43 MB |
340.43 MB |
1 |
rollup-checkpoint-merge |
339.76 MB |
339.76 MB |
1 |
rollup-checkpoint-root-single-block |
5910 MB |
5910 MB |
1 |
rollup-checkpoint-root |
5920 MB |
5920 MB |
1 |
rollup-root |
341.31 MB |
341.31 MB |
1 |
rollup-tx-base-private |
1070 MB |
1070 MB |
1 |
rollup-tx-base-public |
2890 MB |
2890 MB |
1 |
rollup-tx-merge |
336.59 MB |
336.59 MB |
1 |
semaphore_depth_10 |
92.18 MB |
92.18 MB |
1 |
sha512_100_bytes |
185.46 MB |
185.48 MB |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
e20fbcf to
f2c874e
Compare
f2c874e to
7f848d8
Compare
BrilligGlobals, ConstantAllocation and VariableLiveness
vezenovm
left a comment
There was a problem hiding this comment.
Looks good! Mostly nit surrounding comments
compiler/noirc_evaluator/src/brillig/brillig_gen/brillig_globals.rs
Outdated
Show resolved
Hide resolved
compiler/noirc_evaluator/src/brillig/brillig_gen/constant_allocation.rs
Outdated
Show resolved
Hide resolved
compiler/noirc_evaluator/src/brillig/brillig_gen/constant_allocation.rs
Outdated
Show resolved
Hide resolved
compiler/noirc_evaluator/src/brillig/brillig_gen/constant_allocation.rs
Outdated
Show resolved
Hide resolved
compiler/noirc_evaluator/src/brillig/brillig_gen/variable_liveness.rs
Outdated
Show resolved
Hide resolved
compiler/noirc_evaluator/src/brillig/brillig_gen/variable_liveness.rs
Outdated
Show resolved
Hide resolved
compiler/noirc_evaluator/src/brillig/brillig_gen/constant_allocation.rs
Outdated
Show resolved
Hide resolved
compiler/noirc_evaluator/src/brillig/brillig_gen/variable_liveness.rs
Outdated
Show resolved
Hide resolved
Co-authored-by: Maxim Vezenov <mvezenov@gmail.com>
|
Thanks for all the comment fixes @vezenovm 🙏 |
Automated pull of nightly from the [noir](https://github.com/noir-lang/noir) programming language, a dependency of Aztec. BEGIN_COMMIT_OVERRIDE chore(frontend): Elaborator assignment unit tests (noir-lang/noir#10362) fix(elaborator): Keep the status of the outer `unsafe` block if the inner is unnecessary (noir-lang/noir#10361) chore: Start greenlight of interpreter (noir-lang/noir#10354) chore: bump bb (noir-lang/noir#10359) feat: `TypeDefinition::as_type_with_generics` (noir-lang/noir#10315) fix(elaborator): Create new type variable for each generic kind of `FmtStr` (noir-lang/noir#10349) chore: require ≥2 `FunctionId`'s in `create_apply_function` (noir-lang/noir#10329) chore(test): Show that `#[oracle]` can take and return function pointers (noir-lang/noir#10178) fix: check value of `ArraySet` during `array_set_optimization` (noir-lang/noir#10325) chore(frontend): Comptime item generation unit tests (noir-lang/noir#10319) chore: bump external pinned commits (noir-lang/noir#10236) fix: do not simplify call-data values (noir-lang/noir#10032) chore: update directory name (noir-lang/noir#10348) feat: Add `#[must_use]` attribute to promote unused warning to an error (noir-lang/noir#10313) chore: green light for basic_conditional audit (noir-lang/noir#10134) chore: add unit tests to show some features of the analysis (noir-lang/noir#10286) fix(print): Convert `HirType::Function` into `PrintableType::Tuple` (noir-lang/noir#10189) chore(frontend): Quoting/unquoting roundtrip testing (noir-lang/noir#10327) fix: remove leading stars from block doc comments (noir-lang/noir#10316) fix: slice push_back when length is not known (noir-lang/noir#10206) chore: Fix typo in defunctionalize docs (noir-lang/noir#10321) chore(frontend): Elaborator comptime module docs (noir-lang/noir#10318) fix: "No size for slice" when using black_box (noir-lang/noir#10312) chore(audit): Fix vector items offset and other refactors (noir-lang/noir#10294) chore(audit): Refactors and tests for reg-to-reg movements (noir-lang/noir#10293) chore: Document each elaborator trait function (noir-lang/noir#10303) chore(frontend): Elaborator impls documentation and additional tests (noir-lang/noir#10302) feat(ACIR): reuse element_type_sizes blocks with the same structure (noir-lang/noir#10231) feat(SSA): simplify array_get from param (noir-lang/noir#10300) chore(frontend): Elaborator lazy globals and documentation (noir-lang/noir#10260) chore: avoid unrolling loop headers twice in unrolling passes (noir-lang/noir#10284) chore(audit): Refactors in `BrilligGlobals`, `ConstantAllocation` and `VariableLiveness` (noir-lang/noir#10265) chore: Move variable elaboration to its own file (noir-lang/noir#10285) chore(ACIR): use u32::MAX for PLACEHOLDER_BRILLIG_INDEX (noir-lang/noir#10287) feat(github): Add Security Policy (noir-lang/noir#10262) chore(ACIR): handle TODO in `more_than_eq_var` (noir-lang/noir#10274) chore(ACIR): document AcirValue (noir-lang/noir#10276) chore(Brillig): no need to handle ArrayLen intrinsic (noir-lang/noir#10280) chore(frontend): Split out trait impl setup when defining function meta data (noir-lang/noir#10271) feat(LSP): show errors on stdlib files (noir-lang/noir#10283) chore: typos and some refactors, tests, etc in `noirc_evaluator/src/acir` (noir-lang/noir#10255) chore(ACIR): handle TODO in radix_decompose (noir-lang/noir#10272) feat(brillig): Automatic register deallocation (noir-lang/noir#10253) chore: Add some detail to the trait documentation (noir-lang/noir#10273) chore(frontend): Elaborator struct collection docs (noir-lang/noir#10266) chore(ACIR): add a test for OpcodeResolutionError::AcirMainCallAttempted (noir-lang/noir#10254) fix(ssa-interpreter): Add integer modulus to unfit `Field` if the value comes from a subtraction (noir-lang/noir#10241) chore(frontend): Elaborator function module (noir-lang/noir#10252) chore: typos and some refactors, tests, etc in `acvm/src/compiler` (noir-lang/noir#10111) chore(ACIR): turn "todo" into "unreachable" (noir-lang/noir#10251) chore(frontend): Elaborator module doc comments (noir-lang/noir#10249) chore(ACIR): more Circuit, Expression and Opcode parsing (noir-lang/noir#10250) chore: greenlight Elaborator visibility (noir-lang/noir#10248) chore(audit): Brillig VM nits (noir-lang/noir#10237) fix(mem2reg): Update array set value alias set and propagate array get result as alias (noir-lang/noir#10242) chore(frontend): Split up traits tests module into submodules (noir-lang/noir#10229) chore(frontend): HIR printer module for inline macro expansion unit tests (noir-lang/noir#10232) chore(frontend): Modularize the Elaborator (noir-lang/noir#10202) chore: Improve compilation time on `rollup-tx-base-public` (noir-lang/noir#10224) fix(mem2reg): Updating referenced value invalidate addresses with unknown aliases (noir-lang/noir#10175) chore(frontend): Re-organize frontend tests (noir-lang/noir#10221) chore(ACIR): simpler AsSlice implementation (noir-lang/noir#10214) chore: clone indexed call results (noir-lang/noir#10140) chore(acvm): Optimize logic ops (noir-lang/noir#10222) chore: simplify `x > 0` to `x != 0` for unsigned types in ACIR (noir-lang/noir#10220) fix(ACIR): correct brillig parameter slice length for dynamic arrays (noir-lang/noir#10198) chore: redo typo PR by spuradage (noir-lang/noir#10226) feat: attempt to inline successors in `simplify_cfg` (noir-lang/noir#9608) chore: remove incremental mutation tests (noir-lang/noir#10212) chore(ACIR): display/parse memory arrays as b0, b1, etc. (noir-lang/noir#10211) chore(ACIR): no need to return types in `flatten` (noir-lang/noir#10210) chore(ACIR): make it clear that modulo is only for signed integers (noir-lang/noir#10209) chore: document precondition to unrolling SSA pass (noir-lang/noir#10208) chore(ACIR): better display/parse for blackbox calls (noir-lang/noir#10157) chore: assume Intrinsic::ArrayLen never reaches ACIR (noir-lang/noir#10201) chore(ACIR): optimize slice_insert (noir-lang/noir#10164) chore: add minimal reproductions for Cantina issues + typo fixes (noir-lang/noir#10120) chore: address clippy warnings (noir-lang/noir#10207) fix: address off-by-one error when removing casts before constraining to constant (noir-lang/noir#10194) chore(ACIR): prefer displaying `ASSERT return_value = ...` (noir-lang/noir#10195) chore: remove if-condition from `array_set_optimization_pre_check` (noir-lang/noir#10193) chore(ssa_fuzzer): allow brillig fuzz target to work in multi threads (noir-lang/noir#10100) chore: add incremental mutation testing (noir-lang/noir#10196) chore: ensure that `useful_instructions` cannot overflow (noir-lang/noir#10173) END_COMMIT_OVERRIDE Co-authored-by: benesjan <janbenes1234@gmail.com>
Automated pull of nightly from the [noir](https://github.com/noir-lang/noir) programming language, a dependency of Aztec. BEGIN_COMMIT_OVERRIDE chore(frontend): Elaborator assignment unit tests (noir-lang/noir#10362) fix(elaborator): Keep the status of the outer `unsafe` block if the inner is unnecessary (noir-lang/noir#10361) chore: Start greenlight of interpreter (noir-lang/noir#10354) chore: bump bb (noir-lang/noir#10359) feat: `TypeDefinition::as_type_with_generics` (noir-lang/noir#10315) fix(elaborator): Create new type variable for each generic kind of `FmtStr` (noir-lang/noir#10349) chore: require ≥2 `FunctionId`'s in `create_apply_function` (noir-lang/noir#10329) chore(test): Show that `#[oracle]` can take and return function pointers (noir-lang/noir#10178) fix: check value of `ArraySet` during `array_set_optimization` (noir-lang/noir#10325) chore(frontend): Comptime item generation unit tests (noir-lang/noir#10319) chore: bump external pinned commits (noir-lang/noir#10236) fix: do not simplify call-data values (noir-lang/noir#10032) chore: update directory name (noir-lang/noir#10348) feat: Add `#[must_use]` attribute to promote unused warning to an error (noir-lang/noir#10313) chore: green light for basic_conditional audit (noir-lang/noir#10134) chore: add unit tests to show some features of the analysis (noir-lang/noir#10286) fix(print): Convert `HirType::Function` into `PrintableType::Tuple` (noir-lang/noir#10189) chore(frontend): Quoting/unquoting roundtrip testing (noir-lang/noir#10327) fix: remove leading stars from block doc comments (noir-lang/noir#10316) fix: slice push_back when length is not known (noir-lang/noir#10206) chore: Fix typo in defunctionalize docs (noir-lang/noir#10321) chore(frontend): Elaborator comptime module docs (noir-lang/noir#10318) fix: "No size for slice" when using black_box (noir-lang/noir#10312) chore(audit): Fix vector items offset and other refactors (noir-lang/noir#10294) chore(audit): Refactors and tests for reg-to-reg movements (noir-lang/noir#10293) chore: Document each elaborator trait function (noir-lang/noir#10303) chore(frontend): Elaborator impls documentation and additional tests (noir-lang/noir#10302) feat(ACIR): reuse element_type_sizes blocks with the same structure (noir-lang/noir#10231) feat(SSA): simplify array_get from param (noir-lang/noir#10300) chore(frontend): Elaborator lazy globals and documentation (noir-lang/noir#10260) chore: avoid unrolling loop headers twice in unrolling passes (noir-lang/noir#10284) chore(audit): Refactors in `BrilligGlobals`, `ConstantAllocation` and `VariableLiveness` (noir-lang/noir#10265) chore: Move variable elaboration to its own file (noir-lang/noir#10285) chore(ACIR): use u32::MAX for PLACEHOLDER_BRILLIG_INDEX (noir-lang/noir#10287) feat(github): Add Security Policy (noir-lang/noir#10262) chore(ACIR): handle TODO in `more_than_eq_var` (noir-lang/noir#10274) chore(ACIR): document AcirValue (noir-lang/noir#10276) chore(Brillig): no need to handle ArrayLen intrinsic (noir-lang/noir#10280) chore(frontend): Split out trait impl setup when defining function meta data (noir-lang/noir#10271) feat(LSP): show errors on stdlib files (noir-lang/noir#10283) chore: typos and some refactors, tests, etc in `noirc_evaluator/src/acir` (noir-lang/noir#10255) chore(ACIR): handle TODO in radix_decompose (noir-lang/noir#10272) feat(brillig): Automatic register deallocation (noir-lang/noir#10253) chore: Add some detail to the trait documentation (noir-lang/noir#10273) chore(frontend): Elaborator struct collection docs (noir-lang/noir#10266) chore(ACIR): add a test for OpcodeResolutionError::AcirMainCallAttempted (noir-lang/noir#10254) fix(ssa-interpreter): Add integer modulus to unfit `Field` if the value comes from a subtraction (noir-lang/noir#10241) chore(frontend): Elaborator function module (noir-lang/noir#10252) chore: typos and some refactors, tests, etc in `acvm/src/compiler` (noir-lang/noir#10111) chore(ACIR): turn "todo" into "unreachable" (noir-lang/noir#10251) chore(frontend): Elaborator module doc comments (noir-lang/noir#10249) chore(ACIR): more Circuit, Expression and Opcode parsing (noir-lang/noir#10250) chore: greenlight Elaborator visibility (noir-lang/noir#10248) chore(audit): Brillig VM nits (noir-lang/noir#10237) fix(mem2reg): Update array set value alias set and propagate array get result as alias (noir-lang/noir#10242) chore(frontend): Split up traits tests module into submodules (noir-lang/noir#10229) chore(frontend): HIR printer module for inline macro expansion unit tests (noir-lang/noir#10232) chore(frontend): Modularize the Elaborator (noir-lang/noir#10202) chore: Improve compilation time on `rollup-tx-base-public` (noir-lang/noir#10224) fix(mem2reg): Updating referenced value invalidate addresses with unknown aliases (noir-lang/noir#10175) chore(frontend): Re-organize frontend tests (noir-lang/noir#10221) chore(ACIR): simpler AsSlice implementation (noir-lang/noir#10214) chore: clone indexed call results (noir-lang/noir#10140) chore(acvm): Optimize logic ops (noir-lang/noir#10222) chore: simplify `x > 0` to `x != 0` for unsigned types in ACIR (noir-lang/noir#10220) fix(ACIR): correct brillig parameter slice length for dynamic arrays (noir-lang/noir#10198) chore: redo typo PR by spuradage (noir-lang/noir#10226) feat: attempt to inline successors in `simplify_cfg` (noir-lang/noir#9608) chore: remove incremental mutation tests (noir-lang/noir#10212) chore(ACIR): display/parse memory arrays as b0, b1, etc. (noir-lang/noir#10211) chore(ACIR): no need to return types in `flatten` (noir-lang/noir#10210) chore(ACIR): make it clear that modulo is only for signed integers (noir-lang/noir#10209) chore: document precondition to unrolling SSA pass (noir-lang/noir#10208) chore(ACIR): better display/parse for blackbox calls (noir-lang/noir#10157) chore: assume Intrinsic::ArrayLen never reaches ACIR (noir-lang/noir#10201) chore(ACIR): optimize slice_insert (noir-lang/noir#10164) chore: add minimal reproductions for Cantina issues + typo fixes (noir-lang/noir#10120) chore: address clippy warnings (noir-lang/noir#10207) fix: address off-by-one error when removing casts before constraining to constant (noir-lang/noir#10194) chore(ACIR): prefer displaying `ASSERT return_value = ...` (noir-lang/noir#10195) chore: remove if-condition from `array_set_optimization_pre_check` (noir-lang/noir#10193) chore(ssa_fuzzer): allow brillig fuzz target to work in multi threads (noir-lang/noir#10100) chore: add incremental mutation testing (noir-lang/noir#10196) chore: ensure that `useful_instructions` cannot overflow (noir-lang/noir#10173) 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(frontend): Elaborator assignment unit tests (noir-lang/noir#10362) fix(elaborator): Keep the status of the outer `unsafe` block if the inner is unnecessary (noir-lang/noir#10361) chore: Start greenlight of interpreter (noir-lang/noir#10354) chore: bump bb (noir-lang/noir#10359) feat: `TypeDefinition::as_type_with_generics` (noir-lang/noir#10315) fix(elaborator): Create new type variable for each generic kind of `FmtStr` (noir-lang/noir#10349) chore: require ≥2 `FunctionId`'s in `create_apply_function` (noir-lang/noir#10329) chore(test): Show that `#[oracle]` can take and return function pointers (noir-lang/noir#10178) fix: check value of `ArraySet` during `array_set_optimization` (noir-lang/noir#10325) chore(frontend): Comptime item generation unit tests (noir-lang/noir#10319) chore: bump external pinned commits (noir-lang/noir#10236) fix: do not simplify call-data values (noir-lang/noir#10032) chore: update directory name (noir-lang/noir#10348) feat: Add `#[must_use]` attribute to promote unused warning to an error (noir-lang/noir#10313) chore: green light for basic_conditional audit (noir-lang/noir#10134) chore: add unit tests to show some features of the analysis (noir-lang/noir#10286) fix(print): Convert `HirType::Function` into `PrintableType::Tuple` (noir-lang/noir#10189) chore(frontend): Quoting/unquoting roundtrip testing (noir-lang/noir#10327) fix: remove leading stars from block doc comments (noir-lang/noir#10316) fix: slice push_back when length is not known (noir-lang/noir#10206) chore: Fix typo in defunctionalize docs (noir-lang/noir#10321) chore(frontend): Elaborator comptime module docs (noir-lang/noir#10318) fix: "No size for slice" when using black_box (noir-lang/noir#10312) chore(audit): Fix vector items offset and other refactors (noir-lang/noir#10294) chore(audit): Refactors and tests for reg-to-reg movements (noir-lang/noir#10293) chore: Document each elaborator trait function (noir-lang/noir#10303) chore(frontend): Elaborator impls documentation and additional tests (noir-lang/noir#10302) feat(ACIR): reuse element_type_sizes blocks with the same structure (noir-lang/noir#10231) feat(SSA): simplify array_get from param (noir-lang/noir#10300) chore(frontend): Elaborator lazy globals and documentation (noir-lang/noir#10260) chore: avoid unrolling loop headers twice in unrolling passes (noir-lang/noir#10284) chore(audit): Refactors in `BrilligGlobals`, `ConstantAllocation` and `VariableLiveness` (noir-lang/noir#10265) chore: Move variable elaboration to its own file (noir-lang/noir#10285) chore(ACIR): use u32::MAX for PLACEHOLDER_BRILLIG_INDEX (noir-lang/noir#10287) feat(github): Add Security Policy (noir-lang/noir#10262) chore(ACIR): handle TODO in `more_than_eq_var` (noir-lang/noir#10274) chore(ACIR): document AcirValue (noir-lang/noir#10276) chore(Brillig): no need to handle ArrayLen intrinsic (noir-lang/noir#10280) chore(frontend): Split out trait impl setup when defining function meta data (noir-lang/noir#10271) feat(LSP): show errors on stdlib files (noir-lang/noir#10283) chore: typos and some refactors, tests, etc in `noirc_evaluator/src/acir` (noir-lang/noir#10255) chore(ACIR): handle TODO in radix_decompose (noir-lang/noir#10272) feat(brillig): Automatic register deallocation (noir-lang/noir#10253) chore: Add some detail to the trait documentation (noir-lang/noir#10273) chore(frontend): Elaborator struct collection docs (noir-lang/noir#10266) chore(ACIR): add a test for OpcodeResolutionError::AcirMainCallAttempted (noir-lang/noir#10254) fix(ssa-interpreter): Add integer modulus to unfit `Field` if the value comes from a subtraction (noir-lang/noir#10241) chore(frontend): Elaborator function module (noir-lang/noir#10252) chore: typos and some refactors, tests, etc in `acvm/src/compiler` (noir-lang/noir#10111) chore(ACIR): turn "todo" into "unreachable" (noir-lang/noir#10251) chore(frontend): Elaborator module doc comments (noir-lang/noir#10249) chore(ACIR): more Circuit, Expression and Opcode parsing (noir-lang/noir#10250) chore: greenlight Elaborator visibility (noir-lang/noir#10248) chore(audit): Brillig VM nits (noir-lang/noir#10237) fix(mem2reg): Update array set value alias set and propagate array get result as alias (noir-lang/noir#10242) chore(frontend): Split up traits tests module into submodules (noir-lang/noir#10229) chore(frontend): HIR printer module for inline macro expansion unit tests (noir-lang/noir#10232) chore(frontend): Modularize the Elaborator (noir-lang/noir#10202) chore: Improve compilation time on `rollup-tx-base-public` (noir-lang/noir#10224) fix(mem2reg): Updating referenced value invalidate addresses with unknown aliases (noir-lang/noir#10175) chore(frontend): Re-organize frontend tests (noir-lang/noir#10221) chore(ACIR): simpler AsSlice implementation (noir-lang/noir#10214) chore: clone indexed call results (noir-lang/noir#10140) chore(acvm): Optimize logic ops (noir-lang/noir#10222) chore: simplify `x > 0` to `x != 0` for unsigned types in ACIR (noir-lang/noir#10220) fix(ACIR): correct brillig parameter slice length for dynamic arrays (noir-lang/noir#10198) chore: redo typo PR by spuradage (noir-lang/noir#10226) feat: attempt to inline successors in `simplify_cfg` (noir-lang/noir#9608) chore: remove incremental mutation tests (noir-lang/noir#10212) chore(ACIR): display/parse memory arrays as b0, b1, etc. (noir-lang/noir#10211) chore(ACIR): no need to return types in `flatten` (noir-lang/noir#10210) chore(ACIR): make it clear that modulo is only for signed integers (noir-lang/noir#10209) chore: document precondition to unrolling SSA pass (noir-lang/noir#10208) chore(ACIR): better display/parse for blackbox calls (noir-lang/noir#10157) chore: assume Intrinsic::ArrayLen never reaches ACIR (noir-lang/noir#10201) chore(ACIR): optimize slice_insert (noir-lang/noir#10164) chore: add minimal reproductions for Cantina issues + typo fixes (noir-lang/noir#10120) chore: address clippy warnings (noir-lang/noir#10207) fix: address off-by-one error when removing casts before constraining to constant (noir-lang/noir#10194) chore(ACIR): prefer displaying `ASSERT return_value = ...` (noir-lang/noir#10195) chore: remove if-condition from `array_set_optimization_pre_check` (noir-lang/noir#10193) chore(ssa_fuzzer): allow brillig fuzz target to work in multi threads (noir-lang/noir#10100) chore: add incremental mutation testing (noir-lang/noir#10196) chore: ensure that `useful_instructions` cannot overflow (noir-lang/noir#10173) 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(frontend): Elaborator assignment unit tests (noir-lang/noir#10362) fix(elaborator): Keep the status of the outer `unsafe` block if the inner is unnecessary (noir-lang/noir#10361) chore: Start greenlight of interpreter (noir-lang/noir#10354) chore: bump bb (noir-lang/noir#10359) feat: `TypeDefinition::as_type_with_generics` (noir-lang/noir#10315) fix(elaborator): Create new type variable for each generic kind of `FmtStr` (noir-lang/noir#10349) chore: require ≥2 `FunctionId`'s in `create_apply_function` (noir-lang/noir#10329) chore(test): Show that `#[oracle]` can take and return function pointers (noir-lang/noir#10178) fix: check value of `ArraySet` during `array_set_optimization` (noir-lang/noir#10325) chore(frontend): Comptime item generation unit tests (noir-lang/noir#10319) chore: bump external pinned commits (noir-lang/noir#10236) fix: do not simplify call-data values (noir-lang/noir#10032) chore: update directory name (noir-lang/noir#10348) feat: Add `#[must_use]` attribute to promote unused warning to an error (noir-lang/noir#10313) chore: green light for basic_conditional audit (noir-lang/noir#10134) chore: add unit tests to show some features of the analysis (noir-lang/noir#10286) fix(print): Convert `HirType::Function` into `PrintableType::Tuple` (noir-lang/noir#10189) chore(frontend): Quoting/unquoting roundtrip testing (noir-lang/noir#10327) fix: remove leading stars from block doc comments (noir-lang/noir#10316) fix: slice push_back when length is not known (noir-lang/noir#10206) chore: Fix typo in defunctionalize docs (noir-lang/noir#10321) chore(frontend): Elaborator comptime module docs (noir-lang/noir#10318) fix: "No size for slice" when using black_box (noir-lang/noir#10312) chore(audit): Fix vector items offset and other refactors (noir-lang/noir#10294) chore(audit): Refactors and tests for reg-to-reg movements (noir-lang/noir#10293) chore: Document each elaborator trait function (noir-lang/noir#10303) chore(frontend): Elaborator impls documentation and additional tests (noir-lang/noir#10302) feat(ACIR): reuse element_type_sizes blocks with the same structure (noir-lang/noir#10231) feat(SSA): simplify array_get from param (noir-lang/noir#10300) chore(frontend): Elaborator lazy globals and documentation (noir-lang/noir#10260) chore: avoid unrolling loop headers twice in unrolling passes (noir-lang/noir#10284) chore(audit): Refactors in `BrilligGlobals`, `ConstantAllocation` and `VariableLiveness` (noir-lang/noir#10265) chore: Move variable elaboration to its own file (noir-lang/noir#10285) chore(ACIR): use u32::MAX for PLACEHOLDER_BRILLIG_INDEX (noir-lang/noir#10287) feat(github): Add Security Policy (noir-lang/noir#10262) chore(ACIR): handle TODO in `more_than_eq_var` (noir-lang/noir#10274) chore(ACIR): document AcirValue (noir-lang/noir#10276) chore(Brillig): no need to handle ArrayLen intrinsic (noir-lang/noir#10280) chore(frontend): Split out trait impl setup when defining function meta data (noir-lang/noir#10271) feat(LSP): show errors on stdlib files (noir-lang/noir#10283) chore: typos and some refactors, tests, etc in `noirc_evaluator/src/acir` (noir-lang/noir#10255) chore(ACIR): handle TODO in radix_decompose (noir-lang/noir#10272) feat(brillig): Automatic register deallocation (noir-lang/noir#10253) chore: Add some detail to the trait documentation (noir-lang/noir#10273) chore(frontend): Elaborator struct collection docs (noir-lang/noir#10266) chore(ACIR): add a test for OpcodeResolutionError::AcirMainCallAttempted (noir-lang/noir#10254) fix(ssa-interpreter): Add integer modulus to unfit `Field` if the value comes from a subtraction (noir-lang/noir#10241) chore(frontend): Elaborator function module (noir-lang/noir#10252) chore: typos and some refactors, tests, etc in `acvm/src/compiler` (noir-lang/noir#10111) chore(ACIR): turn "todo" into "unreachable" (noir-lang/noir#10251) chore(frontend): Elaborator module doc comments (noir-lang/noir#10249) chore(ACIR): more Circuit, Expression and Opcode parsing (noir-lang/noir#10250) chore: greenlight Elaborator visibility (noir-lang/noir#10248) chore(audit): Brillig VM nits (noir-lang/noir#10237) fix(mem2reg): Update array set value alias set and propagate array get result as alias (noir-lang/noir#10242) chore(frontend): Split up traits tests module into submodules (noir-lang/noir#10229) chore(frontend): HIR printer module for inline macro expansion unit tests (noir-lang/noir#10232) chore(frontend): Modularize the Elaborator (noir-lang/noir#10202) chore: Improve compilation time on `rollup-tx-base-public` (noir-lang/noir#10224) fix(mem2reg): Updating referenced value invalidate addresses with unknown aliases (noir-lang/noir#10175) chore(frontend): Re-organize frontend tests (noir-lang/noir#10221) chore(ACIR): simpler AsSlice implementation (noir-lang/noir#10214) chore: clone indexed call results (noir-lang/noir#10140) chore(acvm): Optimize logic ops (noir-lang/noir#10222) chore: simplify `x > 0` to `x != 0` for unsigned types in ACIR (noir-lang/noir#10220) fix(ACIR): correct brillig parameter slice length for dynamic arrays (noir-lang/noir#10198) chore: redo typo PR by spuradage (noir-lang/noir#10226) feat: attempt to inline successors in `simplify_cfg` (noir-lang/noir#9608) chore: remove incremental mutation tests (noir-lang/noir#10212) chore(ACIR): display/parse memory arrays as b0, b1, etc. (noir-lang/noir#10211) chore(ACIR): no need to return types in `flatten` (noir-lang/noir#10210) chore(ACIR): make it clear that modulo is only for signed integers (noir-lang/noir#10209) chore: document precondition to unrolling SSA pass (noir-lang/noir#10208) chore(ACIR): better display/parse for blackbox calls (noir-lang/noir#10157) chore: assume Intrinsic::ArrayLen never reaches ACIR (noir-lang/noir#10201) chore(ACIR): optimize slice_insert (noir-lang/noir#10164) chore: add minimal reproductions for Cantina issues + typo fixes (noir-lang/noir#10120) chore: address clippy warnings (noir-lang/noir#10207) fix: address off-by-one error when removing casts before constraining to constant (noir-lang/noir#10194) chore(ACIR): prefer displaying `ASSERT return_value = ...` (noir-lang/noir#10195) chore: remove if-condition from `array_set_optimization_pre_check` (noir-lang/noir#10193) chore(ssa_fuzzer): allow brillig fuzz target to work in multi threads (noir-lang/noir#10100) chore: add incremental mutation testing (noir-lang/noir#10196) chore: ensure that `useful_instructions` cannot overflow (noir-lang/noir#10173) END_COMMIT_OVERRIDE Co-authored-by: benesjan <janbenes1234@gmail.com>
Description
Problem*
No issue, just adding docs and small refactors.
Resolves #10282
Summary*
BrilligGlobalsso the partial destruction ofused_globalsandhoisted_global_constantscannot trip anyone up.ConstantAllocationcalculation, so it's only done once for function, not per-entry-and-inner combination.unrolling::Loopsavailable for the whole crate.Loops::find_allto simplifyConstantAllocationLoops::find_allto simplifyVariableLivenessAdditional Context
There was a bit of duplicated code in constant allocation and liveness analysis regarding finding loops, both back edges and blocks in the loop. For these we can use the
Loopstype in theunrollingmodule, which is already reused from a few other SSA passes. It's better tested, so instead of reviewing the code I decided to defer to that one: it turns out there was no wasted effort because everything about the loop was needed in both modules.I wanted to update
VariableLivenesstests to use SSA parsing instead of theSsaBuilder, but gave up trying to align the IDs.Documentation*
Check one:
PR Checklist*
cargo fmton default settings.