Skip to content

feat(performance): brillig array set optimization#8550

Merged
asterite merged 5 commits intomasterfrom
ab/brillig-array-get-and-set-optimization
May 16, 2025
Merged

feat(performance): brillig array set optimization#8550
asterite merged 5 commits intomasterfrom
ab/brillig-array-get-and-set-optimization

Conversation

@asterite
Copy link
Collaborator

Description

Problem

Follow up to #8536

Summary

Similar logic to the one of ArraySet.

While doing this I introduced a few refactors, for example just having one insert_array_get and insert_array_set on a FunctionBuilder.

Additional Context

Documentation

Check one:

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

PR Checklist

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

@asterite asterite force-pushed the ab/brillig-array-get-and-set-optimization branch from 8f2912e to c768688 Compare May 16, 2025 13:47
@github-actions
Copy link
Contributor

github-actions bot commented May 16, 2025

Changes to number of Brillig opcodes executed

Generated at commit: 9d4524a9acd0f733e2bcf230d5c4408e5c107efc, compared to commit: 8f70d14a03186124e12d6bce9a8b58e30d515b22

🧾 Summary (10% most significant diffs)

Program Brillig opcodes (+/-) %
fold_call_witness_condition_inliner_min +1 ❌ +1.49%
fold_call_witness_condition_inliner_max +1 ❌ +1.45%
fold_call_witness_condition_inliner_zero +1 ❌ +1.45%
brillig_arrays_inliner_max -2 ✅ -1.42%
brillig_arrays_inliner_zero -2 ✅ -1.42%
array_rc_regression_7842_inliner_min -3 ✅ -1.68%
mutate_array_copy_inliner_min -3 ✅ -1.69%
fold_distinct_return_inliner_min -2 ✅ -2.70%

Full diff report 👇
Program Brillig opcodes (+/-) %
fold_call_witness_condition_inliner_min 68 (+1) +1.49%
fold_call_witness_condition_inliner_max 70 (+1) +1.45%
fold_call_witness_condition_inliner_zero 70 (+1) +1.45%
brillig_cow_regression_inliner_min 197,026 (-5) -0.00%
brillig_cow_regression_inliner_max 194,345 (-5) -0.00%
brillig_cow_regression_inliner_zero 194,345 (-5) -0.00%
7_function_inliner_max 2,060 (-1) -0.05%
conditional_1_inliner_min 1,922 (-2) -0.10%
conditional_1_inliner_zero 1,922 (-2) -0.10%
conditional_1_inliner_max 1,882 (-2) -0.11%
poseidonsponge_x5_254_inliner_min 183,756 (-360) -0.20%
regression_5252_inliner_min 917,134 (-1,812) -0.20%
poseidonsponge_x5_254_inliner_zero 181,839 (-360) -0.20%
regression_5252_inliner_zero 905,221 (-1,812) -0.20%
poseidon_bn254_hash_width_3_inliner_min 168,130 (-351) -0.21%
poseidon_bn254_hash_width_3_inliner_zero 166,274 (-351) -0.21%
fold_numeric_generic_poseidon_inliner_min 4,721 (-10) -0.21%
no_predicates_numeric_generic_poseidon_inliner_min 4,693 (-10) -0.21%
fold_numeric_generic_poseidon_inliner_zero 4,453 (-10) -0.22%
no_predicates_numeric_generic_poseidon_inliner_zero 4,453 (-10) -0.22%
poseidonsponge_x5_254_inliner_max 150,769 (-360) -0.24%
regression_5252_inliner_max 749,365 (-1,812) -0.24%
global_slice_rc_regression_8259_inliner_min 393 (-1) -0.25%
poseidon_bn254_hash_width_3_inliner_max 135,862 (-351) -0.26%
fold_numeric_generic_poseidon_inliner_max 3,765 (-10) -0.26%
no_predicates_numeric_generic_poseidon_inliner_max 3,765 (-10) -0.26%
fold_2_to_17_inliner_min 1,069,076 (-3,106) -0.29%
bench_2_to_17_inliner_min 562,066 (-1,633) -0.29%
fold_2_to_17_inliner_zero 1,031,654 (-3,106) -0.30%
bench_2_to_17_inliner_zero 468,908 (-1,633) -0.35%
bench_2_to_17_inliner_max 429,693 (-1,633) -0.38%
fold_2_to_17_inliner_max 789,307 (-3,106) -0.39%
regression_struct_array_conditional_inliner_max 1,130 (-6) -0.53%
regression_struct_array_conditional_inliner_min 1,130 (-6) -0.53%
regression_struct_array_conditional_inliner_zero 1,130 (-6) -0.53%
global_array_rc_regression_8259_inliner_min 188 (-1) -0.53%
brillig_pedersen_inliner_min 790 (-5) -0.63%
pedersen_check_inliner_min 790 (-5) -0.63%
array_if_cond_simple_inliner_max 308 (-2) -0.65%
array_if_cond_simple_inliner_min 308 (-2) -0.65%
array_if_cond_simple_inliner_zero 308 (-2) -0.65%
simple_shield_inliner_min 2,171 (-15) -0.69%
simple_shield_inliner_zero 2,149 (-15) -0.69%
simple_shield_inliner_max 2,117 (-15) -0.70%
brillig_pedersen_inliner_zero 633 (-5) -0.78%
pedersen_check_inliner_zero 633 (-5) -0.78%
fold_complex_outputs_inliner_min 718 (-6) -0.83%
brillig_pedersen_inliner_max 588 (-5) -0.84%
pedersen_check_inliner_max 588 (-5) -0.84%
fold_complex_outputs_inliner_zero 645 (-6) -0.92%
merkle_insert_inliner_zero 3,084 (-30) -0.96%
merkle_insert_inliner_max 2,948 (-30) -1.01%
merkle_insert_inliner_min 2,848 (-30) -1.04%
pedersen_hash_inliner_min 462 (-5) -1.07%
brillig_arrays_inliner_min 167 (-2) -1.18%
pedersen_hash_inliner_max 397 (-5) -1.24%
pedersen_hash_inliner_zero 397 (-5) -1.24%
fold_complex_outputs_inliner_max 440 (-6) -1.35%
brillig_arrays_inliner_max 139 (-2) -1.42%
brillig_arrays_inliner_zero 139 (-2) -1.42%
array_rc_regression_7842_inliner_min 176 (-3) -1.68%
mutate_array_copy_inliner_min 175 (-3) -1.69%
fold_distinct_return_inliner_min 72 (-2) -2.70%

@github-actions
Copy link
Contributor

github-actions bot commented May 16, 2025

Changes to Brillig bytecode sizes

Generated at commit: 9d4524a9acd0f733e2bcf230d5c4408e5c107efc, compared to commit: 8f70d14a03186124e12d6bce9a8b58e30d515b22

🧾 Summary (10% most significant diffs)

Program Brillig opcodes (+/-) %
array_if_cond_simple_inliner_max -2 ✅ -1.54%
array_if_cond_simple_inliner_min -2 ✅ -1.54%
array_if_cond_simple_inliner_zero -2 ✅ -1.54%
fold_complex_outputs_inliner_max -6 ✅ -1.69%
pedersen_hash_inliner_min -5 ✅ -1.71%
brillig_arrays_inliner_max -2 ✅ -1.72%
brillig_arrays_inliner_zero -2 ✅ -1.72%
merkle_insert_inliner_max -10 ✅ -1.80%
pedersen_hash_inliner_max -5 ✅ -1.87%
pedersen_hash_inliner_zero -5 ✅ -1.87%
fold_distinct_return_inliner_min -2 ✅ -2.13%

Full diff report 👇
Program Brillig opcodes (+/-) %
hashmap_inliner_min 8,841 (-1) -0.01%
hashmap_inliner_zero 7,828 (-1) -0.01%
uhashmap_inliner_min 7,561 (-1) -0.01%
uhashmap_inliner_zero 6,897 (-1) -0.01%
poseidonsponge_x5_254_inliner_min 3,020 (-3) -0.10%
poseidonsponge_x5_254_inliner_zero 2,893 (-3) -0.10%
regression_5252_inliner_min 3,396 (-4) -0.12%
poseidon_bn254_hash_width_3_inliner_max 4,856 (-6) -0.12%
regression_5252_inliner_zero 3,226 (-4) -0.12%
poseidon_bn254_hash_width_3_inliner_min 4,762 (-6) -0.13%
poseidon_bn254_hash_width_3_inliner_zero 4,443 (-6) -0.13%
poseidonsponge_x5_254_inliner_max 3,680 (-6) -0.16%
regression_5252_inliner_max 3,966 (-7) -0.18%
7_function_inliner_max 526 (-1) -0.19%
fold_2_to_17_inliner_min 363 (-1) -0.27%
fold_2_to_17_inliner_zero 355 (-1) -0.28%
bench_2_to_17_inliner_min 332 (-1) -0.30%
fold_numeric_generic_poseidon_inliner_min 597 (-2) -0.33%
no_predicates_numeric_generic_poseidon_inliner_min 577 (-2) -0.35%
bench_2_to_17_inliner_max 276 (-1) -0.36%
bench_2_to_17_inliner_zero 258 (-1) -0.39%
brillig_cow_regression_inliner_min 1,267 (-5) -0.39%
no_predicates_numeric_generic_poseidon_inliner_zero 503 (-2) -0.40%
fold_numeric_generic_poseidon_inliner_zero 503 (-2) -0.40%
brillig_cow_regression_inliner_max 1,202 (-5) -0.41%
brillig_cow_regression_inliner_zero 1,202 (-5) -0.41%
fold_2_to_17_inliner_max 478 (-2) -0.42%
global_slice_rc_regression_8259_inliner_min 234 (-1) -0.43%
reference_counts_inliner_max_inliner_zero 847 (-4) -0.47%
reference_counts_inliner_0_inliner_zero 847 (-4) -0.47%
reference_counts_inliner_min_inliner_zero 847 (-4) -0.47%
no_predicates_numeric_generic_poseidon_inliner_max 635 (-3) -0.47%
fold_numeric_generic_poseidon_inliner_max 635 (-3) -0.47%
regression_struct_array_conditional_inliner_max 384 (-2) -0.52%
regression_struct_array_conditional_inliner_min 384 (-2) -0.52%
regression_struct_array_conditional_inliner_zero 384 (-2) -0.52%
reference_counts_slices_inliner_0_inliner_zero 956 (-6) -0.62%
reference_counts_inliner_max_inliner_min 928 (-6) -0.64%
reference_counts_inliner_0_inliner_min 928 (-6) -0.64%
reference_counts_inliner_min_inliner_min 928 (-6) -0.64%
simple_shield_inliner_min 708 (-5) -0.70%
simple_shield_inliner_max 678 (-5) -0.73%
fold_call_witness_condition_inliner_min 127 (-1) -0.78%
simple_shield_inliner_zero 616 (-5) -0.81%
fold_call_witness_condition_inliner_max 113 (-1) -0.88%
fold_call_witness_condition_inliner_zero 113 (-1) -0.88%
conditional_1_inliner_max 557 (-5) -0.89%
conditional_1_inliner_min 531 (-5) -0.93%
conditional_1_inliner_zero 531 (-5) -0.93%
global_array_rc_regression_8259_inliner_min 106 (-1) -0.93%
reference_counts_slices_inliner_0_inliner_min 1,059 (-10) -0.94%
pedersen_check_inliner_min 460 (-5) -1.08%
brillig_pedersen_inliner_min 460 (-5) -1.08%
fold_complex_outputs_inliner_min 506 (-6) -1.17%
brillig_pedersen_inliner_zero 418 (-5) -1.18%
pedersen_check_inliner_zero 418 (-5) -1.18%
brillig_pedersen_inliner_max 406 (-5) -1.22%
pedersen_check_inliner_max 406 (-5) -1.22%
merkle_insert_inliner_min 403 (-5) -1.23%
merkle_insert_inliner_zero 385 (-5) -1.28%
fold_complex_outputs_inliner_zero 435 (-6) -1.36%
array_rc_regression_7842_inliner_min 139 (-2) -1.42%
mutate_array_copy_inliner_min 138 (-2) -1.43%
brillig_arrays_inliner_min 136 (-2) -1.45%
array_if_cond_simple_inliner_max 128 (-2) -1.54%
array_if_cond_simple_inliner_min 128 (-2) -1.54%
array_if_cond_simple_inliner_zero 128 (-2) -1.54%
fold_complex_outputs_inliner_max 349 (-6) -1.69%
pedersen_hash_inliner_min 287 (-5) -1.71%
brillig_arrays_inliner_max 114 (-2) -1.72%
brillig_arrays_inliner_zero 114 (-2) -1.72%
merkle_insert_inliner_max 545 (-10) -1.80%
pedersen_hash_inliner_max 263 (-5) -1.87%
pedersen_hash_inliner_zero 263 (-5) -1.87%
fold_distinct_return_inliner_min 92 (-2) -2.13%

Copy link
Contributor

@vezenovm vezenovm left a comment

Choose a reason for hiding this comment

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

Looks good just some nits

@asterite
Copy link
Collaborator Author

I looked at the regression in fold_call_witness_condition, which isn't a big deal (just one more instruction). It seems there's a new constant needed now, with value 2, where previously there was no such constant. Maybe because of the offset it appears now. But I guess in most cases this PR will make things better.

@vezenovm
Copy link
Contributor

I looked at the regression in fold_call_witness_condition, which isn't a big deal (just one more instruction). It seems there's a new constant needed now, with value 2, where previously there was no such constant. Maybe because of the offset it appears now. But I guess in most cases this PR will make things better.

Yeah I noticed the same thing. For most cases this optimization should make things better and this regression is tiny so it is fine.

@asterite asterite enabled auto-merge May 16, 2025 14:49
@asterite asterite added this pull request to the merge queue May 16, 2025
Merged via the queue into master with commit 9ec22c1 May 16, 2025
118 checks passed
@asterite asterite deleted the ab/brillig-array-get-and-set-optimization branch May 16, 2025 15:22
github-merge-queue bot pushed a commit to AztecProtocol/aztec-packages that referenced this pull request May 22, 2025
Automated pull of nightly from the
[noir](https://github.com/noir-lang/noir) programming language, a
dependency of Aztec.
BEGIN_COMMIT_OVERRIDE
fix(licm): Account for nested loops being control dependent when
analyzing outer loops (noir-lang/noir#8593)
chore(refactor): Switch unreachable function removal to use centralized
call graph (noir-lang/noir#8578)
chore(test): Allow lambdas in fuzzing
(noir-lang/noir#8584)
chore: use insta for execution_success stdout
(noir-lang/noir#8576)
chore: use generator instead of zero for ec-add predicate
(noir-lang/noir#8552)
fix: use predicate expression as binary result
(noir-lang/noir#8583)
fix(ssa): Do not generate apply functions when no lambda variants exist
(noir-lang/noir#8573)
chore: put `nargo expand` snapshosts in the same directory
(noir-lang/noir#8577)
chore: Use FxHashMap for TypeBindings
(noir-lang/noir#8574)
chore(experimental): use larger stack size for parsing
(noir-lang/noir#8347)
chore: use insta snapshots for compile_failure stderr
(noir-lang/noir#8569)
chore(inlining): Mark functions with <= 10 instructions and no control
flow as inline always (noir-lang/noir#8533)
chore(ssa): Add weighted edges to call graph, move callers and callees
methods to call graph (noir-lang/noir#8513)
fix(frontend): Override to allow empty array input
(noir-lang/noir#8568)
fix: avoid logging all unused params in DIE pass
(noir-lang/noir#8566)
chore: bump external pinned commits
(noir-lang/noir#8562)
chore(deps): bump base-x from 3.0.9 to 3.0.11
(noir-lang/noir#8555)
chore(fuzz): Call function pointers
(noir-lang/noir#8531)
feat: C++ codegen for msgpack
(noir-lang/noir#7716)
feat(performance): brillig array set optimization
(noir-lang/noir#8550)
chore(fuzz): AST fuzzer to use function valued arguments (Part 1)
(noir-lang/noir#8514)
fix(licm): Check whether the loop is executed when hoisting with a
predicate (noir-lang/noir#8546)
feat: Implement $crate (noir-lang/noir#8537)
fix: add offset to ArrayGet
(noir-lang/noir#8536)
chore: remove some unused enum variants and functions
(noir-lang/noir#8538)
fix: disallow `()` in entry points
(noir-lang/noir#8529)
chore: Remove println in ssa interpreter
(noir-lang/noir#8528)
fix: don't overflow when casting signed value to u128
(noir-lang/noir#8526)
chore(performance): Enable hoisting pure with predicate calls
(noir-lang/noir#8522)
feat(fuzz): AST fuzzing with SSA interpreter
(noir-lang/noir#8436)
chore: Add u1 ops to interpreter, convert Value panics to errors
(noir-lang/noir#8469)
chore: Release Noir(1.0.0-beta.6)
(noir-lang/noir#8438)
chore(fuzz): AST generator to add `ctx_limit` to all functions
(noir-lang/noir#8507)
fix(inlining): Use centralized CallGraph structure for inline info
computation (noir-lang/noir#8489)
fix: remove private builtins from `Field` impl
(noir-lang/noir#8496)
feat: primitive types are no longer keywords
(noir-lang/noir#8470)
fix: parenthesized pattern, and correct 1-element tuple printing
(noir-lang/noir#8482)
fix: fix visibility of methods in `std::meta`
(noir-lang/noir#8497)
fix: Change `can_be_main` to be recursive
(noir-lang/noir#8501)
chore: add SSA interpreter test for higher order functions
(noir-lang/noir#8486)
fix(frontend)!: Ban zero sized arrays and strings as program input
(noir-lang/noir#8491)
fix!: remove `to_be_radix` and `to_le_radix` from stdlib interface
(noir-lang/noir#8495)
END_COMMIT_OVERRIDE

---------

Co-authored-by: AztecBot <tech@aztecprotocol.com>
Co-authored-by: Tom French <15848336+TomAFrench@users.noreply.github.com>
AztecBot added a commit to AztecProtocol/aztec-nr that referenced this pull request May 23, 2025
Automated pull of nightly from the
[noir](https://github.com/noir-lang/noir) programming language, a
dependency of Aztec.
BEGIN_COMMIT_OVERRIDE
fix(licm): Account for nested loops being control dependent when
analyzing outer loops (noir-lang/noir#8593)
chore(refactor): Switch unreachable function removal to use centralized
call graph (noir-lang/noir#8578)
chore(test): Allow lambdas in fuzzing
(noir-lang/noir#8584)
chore: use insta for execution_success stdout
(noir-lang/noir#8576)
chore: use generator instead of zero for ec-add predicate
(noir-lang/noir#8552)
fix: use predicate expression as binary result
(noir-lang/noir#8583)
fix(ssa): Do not generate apply functions when no lambda variants exist
(noir-lang/noir#8573)
chore: put `nargo expand` snapshosts in the same directory
(noir-lang/noir#8577)
chore: Use FxHashMap for TypeBindings
(noir-lang/noir#8574)
chore(experimental): use larger stack size for parsing
(noir-lang/noir#8347)
chore: use insta snapshots for compile_failure stderr
(noir-lang/noir#8569)
chore(inlining): Mark functions with <= 10 instructions and no control
flow as inline always (noir-lang/noir#8533)
chore(ssa): Add weighted edges to call graph, move callers and callees
methods to call graph (noir-lang/noir#8513)
fix(frontend): Override to allow empty array input
(noir-lang/noir#8568)
fix: avoid logging all unused params in DIE pass
(noir-lang/noir#8566)
chore: bump external pinned commits
(noir-lang/noir#8562)
chore(deps): bump base-x from 3.0.9 to 3.0.11
(noir-lang/noir#8555)
chore(fuzz): Call function pointers
(noir-lang/noir#8531)
feat: C++ codegen for msgpack
(noir-lang/noir#7716)
feat(performance): brillig array set optimization
(noir-lang/noir#8550)
chore(fuzz): AST fuzzer to use function valued arguments (Part 1)
(noir-lang/noir#8514)
fix(licm): Check whether the loop is executed when hoisting with a
predicate (noir-lang/noir#8546)
feat: Implement $crate (noir-lang/noir#8537)
fix: add offset to ArrayGet
(noir-lang/noir#8536)
chore: remove some unused enum variants and functions
(noir-lang/noir#8538)
fix: disallow `()` in entry points
(noir-lang/noir#8529)
chore: Remove println in ssa interpreter
(noir-lang/noir#8528)
fix: don't overflow when casting signed value to u128
(noir-lang/noir#8526)
chore(performance): Enable hoisting pure with predicate calls
(noir-lang/noir#8522)
feat(fuzz): AST fuzzing with SSA interpreter
(noir-lang/noir#8436)
chore: Add u1 ops to interpreter, convert Value panics to errors
(noir-lang/noir#8469)
chore: Release Noir(1.0.0-beta.6)
(noir-lang/noir#8438)
chore(fuzz): AST generator to add `ctx_limit` to all functions
(noir-lang/noir#8507)
fix(inlining): Use centralized CallGraph structure for inline info
computation (noir-lang/noir#8489)
fix: remove private builtins from `Field` impl
(noir-lang/noir#8496)
feat: primitive types are no longer keywords
(noir-lang/noir#8470)
fix: parenthesized pattern, and correct 1-element tuple printing
(noir-lang/noir#8482)
fix: fix visibility of methods in `std::meta`
(noir-lang/noir#8497)
fix: Change `can_be_main` to be recursive
(noir-lang/noir#8501)
chore: add SSA interpreter test for higher order functions
(noir-lang/noir#8486)
fix(frontend)!: Ban zero sized arrays and strings as program input
(noir-lang/noir#8491)
fix!: remove `to_be_radix` and `to_le_radix` from stdlib interface
(noir-lang/noir#8495)
END_COMMIT_OVERRIDE

---------

Co-authored-by: AztecBot <tech@aztecprotocol.com>
Co-authored-by: Tom French <15848336+TomAFrench@users.noreply.github.com>
Thunkar pushed a commit to AztecProtocol/aztec-packages that referenced this pull request May 23, 2025
Automated pull of nightly from the
[noir](https://github.com/noir-lang/noir) programming language, a
dependency of Aztec.
BEGIN_COMMIT_OVERRIDE
fix(licm): Account for nested loops being control dependent when
analyzing outer loops (noir-lang/noir#8593)
chore(refactor): Switch unreachable function removal to use centralized
call graph (noir-lang/noir#8578)
chore(test): Allow lambdas in fuzzing
(noir-lang/noir#8584)
chore: use insta for execution_success stdout
(noir-lang/noir#8576)
chore: use generator instead of zero for ec-add predicate
(noir-lang/noir#8552)
fix: use predicate expression as binary result
(noir-lang/noir#8583)
fix(ssa): Do not generate apply functions when no lambda variants exist
(noir-lang/noir#8573)
chore: put `nargo expand` snapshosts in the same directory
(noir-lang/noir#8577)
chore: Use FxHashMap for TypeBindings
(noir-lang/noir#8574)
chore(experimental): use larger stack size for parsing
(noir-lang/noir#8347)
chore: use insta snapshots for compile_failure stderr
(noir-lang/noir#8569)
chore(inlining): Mark functions with <= 10 instructions and no control
flow as inline always (noir-lang/noir#8533)
chore(ssa): Add weighted edges to call graph, move callers and callees
methods to call graph (noir-lang/noir#8513)
fix(frontend): Override to allow empty array input
(noir-lang/noir#8568)
fix: avoid logging all unused params in DIE pass
(noir-lang/noir#8566)
chore: bump external pinned commits
(noir-lang/noir#8562)
chore(deps): bump base-x from 3.0.9 to 3.0.11
(noir-lang/noir#8555)
chore(fuzz): Call function pointers
(noir-lang/noir#8531)
feat: C++ codegen for msgpack
(noir-lang/noir#7716)
feat(performance): brillig array set optimization
(noir-lang/noir#8550)
chore(fuzz): AST fuzzer to use function valued arguments (Part 1)
(noir-lang/noir#8514)
fix(licm): Check whether the loop is executed when hoisting with a
predicate (noir-lang/noir#8546)
feat: Implement $crate (noir-lang/noir#8537)
fix: add offset to ArrayGet
(noir-lang/noir#8536)
chore: remove some unused enum variants and functions
(noir-lang/noir#8538)
fix: disallow `()` in entry points
(noir-lang/noir#8529)
chore: Remove println in ssa interpreter
(noir-lang/noir#8528)
fix: don't overflow when casting signed value to u128
(noir-lang/noir#8526)
chore(performance): Enable hoisting pure with predicate calls
(noir-lang/noir#8522)
feat(fuzz): AST fuzzing with SSA interpreter
(noir-lang/noir#8436)
chore: Add u1 ops to interpreter, convert Value panics to errors
(noir-lang/noir#8469)
chore: Release Noir(1.0.0-beta.6)
(noir-lang/noir#8438)
chore(fuzz): AST generator to add `ctx_limit` to all functions
(noir-lang/noir#8507)
fix(inlining): Use centralized CallGraph structure for inline info
computation (noir-lang/noir#8489)
fix: remove private builtins from `Field` impl
(noir-lang/noir#8496)
feat: primitive types are no longer keywords
(noir-lang/noir#8470)
fix: parenthesized pattern, and correct 1-element tuple printing
(noir-lang/noir#8482)
fix: fix visibility of methods in `std::meta`
(noir-lang/noir#8497)
fix: Change `can_be_main` to be recursive
(noir-lang/noir#8501)
chore: add SSA interpreter test for higher order functions
(noir-lang/noir#8486)
fix(frontend)!: Ban zero sized arrays and strings as program input
(noir-lang/noir#8491)
fix!: remove `to_be_radix` and `to_le_radix` from stdlib interface
(noir-lang/noir#8495)
END_COMMIT_OVERRIDE

---------

Co-authored-by: AztecBot <tech@aztecprotocol.com>
Co-authored-by: Tom French <15848336+TomAFrench@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants