Skip to content

feat: remove useless jump when branching in brillig#9778

Merged
TomAFrench merged 4 commits intomasterfrom
tf/remove-useless-jump-in-brillig-gen
Sep 9, 2025
Merged

feat: remove useless jump when branching in brillig#9778
TomAFrench merged 4 commits intomasterfrom
tf/remove-useless-jump-in-brillig-gen

Conversation

@TomAFrench
Copy link
Member

Description

Problem*

Resolves

Summary*

We're currently inserting a jmp instruction from the end of an else block in brillig to the location immediately after the if-else section. We can instead just fall through into this section without a jump at all.

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.

@TomAFrench TomAFrench marked this pull request as ready for review September 9, 2025 12:26
@TomAFrench TomAFrench requested a review from a team September 9, 2025 12:26
@github-actions
Copy link
Contributor

github-actions bot commented Sep 9, 2025

Changes to Brillig bytecode sizes

Generated at commit: 166815e1aee725592fb48da8f5e9c9a233ee2655, compared to commit: 1d18fbc73e16a9a6f83213d3733cf549587554f4

🧾 Summary (10% most significant diffs)

Program Brillig opcodes (+/-) %
regression_1144_1169_2399_6609_inliner_max -13 ✅ -1.49%
regression_1144_1169_2399_6609_inliner_zero -13 ✅ -1.49%
higher_order_functions_inliner_zero -11 ✅ -1.52%
bit_shifts_comptime_inliner_max -3 ✅ -2.94%
regression_9546_inliner_max -3 ✅ -2.94%
bit_shifts_comptime_inliner_min -3 ✅ -2.94%
regression_9546_inliner_min -3 ✅ -2.94%
bit_shifts_comptime_inliner_zero -3 ✅ -2.94%
regression_9546_inliner_zero -3 ✅ -2.94%
signed_inactive_division_by_zero_inliner_max -2 ✅ -3.28%
signed_inactive_division_by_zero_inliner_min -2 ✅ -3.28%
signed_inactive_division_by_zero_inliner_zero -2 ✅ -3.28%
regression_8009_inliner_max -4 ✅ -3.67%
regression_8009_inliner_min -4 ✅ -3.67%
regression_8009_inliner_zero -4 ✅ -3.67%
signed_division_inliner_max -8 ✅ -3.94%
signed_division_inliner_min -8 ✅ -3.94%
signed_division_inliner_zero -8 ✅ -3.94%
inactive_signed_bitshift_inliner_max -3 ✅ -4.29%
inactive_signed_bitshift_inliner_min -3 ✅ -4.29%
inactive_signed_bitshift_inliner_zero -3 ✅ -4.29%
bit_shifts_runtime_inliner_max -21 ✅ -4.69%
bit_shifts_runtime_inliner_min -21 ✅ -4.69%
bit_shifts_runtime_inliner_zero -21 ✅ -4.69%
regression_8726_inliner_max -4 ✅ -5.26%
regression_8726_inliner_min -4 ✅ -5.26%
regression_8726_inliner_zero -4 ✅ -5.26%

Full diff report 👇
Program Brillig opcodes (+/-) %
poseidon_bn254_hash_width_3_inliner_max 4,811 (-1) -0.02%
poseidon_bn254_hash_width_3_inliner_min 4,717 (-1) -0.02%
hashmap_inliner_max 18,555 (-4) -0.02%
poseidon_bn254_hash_width_3_inliner_zero 4,420 (-1) -0.02%
regression_5252_inliner_max 3,927 (-1) -0.03%
poseidonsponge_x5_254_inliner_max 3,643 (-1) -0.03%
regression_5252_inliner_min 3,365 (-1) -0.03%
regression_5252_inliner_zero 3,216 (-1) -0.03%
poseidonsponge_x5_254_inliner_min 3,006 (-1) -0.03%
poseidonsponge_x5_254_inliner_zero 2,884 (-1) -0.03%
hashmap_inliner_min 9,321 (-4) -0.04%
uhashmap_inliner_max 11,093 (-5) -0.05%
hashmap_inliner_zero 7,963 (-4) -0.05%
nested_array_dynamic_inliner_max 1,545 (-1) -0.06%
uhashmap_inliner_min 7,416 (-5) -0.07%
uhashmap_inliner_zero 6,918 (-5) -0.07%
nested_array_dynamic_inliner_min 1,331 (-1) -0.08%
nested_array_dynamic_inliner_zero 1,331 (-1) -0.08%
brillig_cow_regression_inliner_min 1,211 (-1) -0.08%
brillig_cow_regression_inliner_max 1,200 (-1) -0.08%
reference_counts_slices_inliner_0_inliner_min 1,200 (-1) -0.08%
brillig_cow_regression_inliner_zero 1,200 (-1) -0.08%
slice_regex_inliner_max 2,100 (-2) -0.10%
reference_counts_inliner_max_inliner_min 1,040 (-1) -0.10%
reference_counts_inliner_0_inliner_min 1,040 (-1) -0.10%
reference_counts_inliner_min_inliner_min 1,040 (-1) -0.10%
reference_counts_slices_inliner_0_inliner_zero 993 (-1) -0.10%
slice_regex_inliner_min 1,870 (-2) -0.11%
reference_counts_inliner_min_inliner_zero 889 (-1) -0.11%
reference_counts_inliner_0_inliner_zero 889 (-1) -0.11%
reference_counts_inliner_max_inliner_zero 889 (-1) -0.11%
nested_array_in_slice_inliner_max 869 (-1) -0.11%
slice_regex_inliner_zero 1,635 (-2) -0.12%
nested_array_in_slice_inliner_min 802 (-1) -0.12%
nested_array_in_slice_inliner_zero 802 (-1) -0.12%
simple_shield_inliner_min 694 (-1) -0.14%
simple_shield_inliner_max 674 (-1) -0.15%
simple_shield_inliner_zero 674 (-1) -0.15%
regression_6674_3_inliner_min 671 (-1) -0.15%
fold_numeric_generic_poseidon_inliner_max 623 (-1) -0.16%
no_predicates_numeric_generic_poseidon_inliner_max 623 (-1) -0.16%
no_predicates_numeric_generic_poseidon_inliner_min 564 (-1) -0.18%
fold_numeric_generic_poseidon_inliner_min 564 (-1) -0.18%
merkle_insert_inliner_max 538 (-1) -0.19%
fold_complex_outputs_inliner_min 535 (-1) -0.19%
conditional_1_inliner_max 505 (-1) -0.20%
no_predicates_numeric_generic_poseidon_inliner_zero 502 (-1) -0.20%
fold_numeric_generic_poseidon_inliner_zero 502 (-1) -0.20%
conditional_1_inliner_min 472 (-1) -0.21%
conditional_1_inliner_zero 472 (-1) -0.21%
fold_2_to_17_inliner_max 465 (-1) -0.21%
fold_complex_outputs_inliner_zero 464 (-1) -0.22%
numeric_type_alias_inliner_min 463 (-1) -0.22%
last_uses_regression_8935_inliner_min 458 (-1) -0.22%
a_7_function_inliner_min 448 (-1) -0.22%
a_7_function_inliner_zero 438 (-1) -0.23%
regression_6674_3_inliner_max 409 (-1) -0.24%
regression_6674_3_inliner_zero 409 (-1) -0.24%
fold_complex_outputs_inliner_max 408 (-1) -0.24%
brillig_pedersen_inliner_max 402 (-1) -0.25%
pedersen_check_inliner_max 402 (-1) -0.25%
brillig_pedersen_inliner_min 402 (-1) -0.25%
pedersen_check_inliner_min 402 (-1) -0.25%
pedersen_check_inliner_zero 402 (-1) -0.25%
brillig_pedersen_inliner_zero 402 (-1) -0.25%
aes128_encrypt_inliner_max 399 (-1) -0.25%
a_7_function_inliner_max 391 (-1) -0.26%
regression_struct_array_conditional_inliner_max 389 (-1) -0.26%
regression_struct_array_conditional_inliner_min 389 (-1) -0.26%
regression_struct_array_conditional_inliner_zero 389 (-1) -0.26%
array_dynamic_blackbox_input_inliner_min 387 (-1) -0.26%
aes128_encrypt_inliner_min 384 (-1) -0.26%
merkle_insert_inliner_zero 381 (-1) -0.26%
merkle_insert_inliner_min 375 (-1) -0.27%
aes128_encrypt_inliner_zero 375 (-1) -0.27%
array_dynamic_blackbox_input_inliner_max 366 (-1) -0.27%
regression_9160_inliner_max 366 (-1) -0.27%
regression_9160_inliner_min 366 (-1) -0.27%
regression_9160_inliner_zero 366 (-1) -0.27%
array_dynamic_blackbox_input_inliner_zero 366 (-1) -0.27%
slices_inliner_min 2,192 (-6) -0.27%
fold_2_to_17_inliner_min 347 (-1) -0.29%
brillig_cow_inliner_max 332 (-1) -0.30%
brillig_cow_inliner_min 329 (-1) -0.30%
numeric_type_alias_inliner_max 325 (-1) -0.31%
bench_2_to_17_inliner_min 325 (-1) -0.31%
numeric_type_alias_inliner_zero 325 (-1) -0.31%
array_dynamic_nested_blackbox_input_inliner_min 324 (-1) -0.31%
fold_2_to_17_inliner_zero 319 (-1) -0.31%
array_dynamic_nested_blackbox_input_inliner_max 314 (-1) -0.32%
array_dynamic_nested_blackbox_input_inliner_zero 314 (-1) -0.32%
array_dynamic_inliner_min 308 (-1) -0.32%
regression_11294_inliner_min 303 (-1) -0.33%
array_dynamic_inliner_max 298 (-1) -0.33%
array_dynamic_inliner_zero 298 (-1) -0.33%
last_uses_regression_8935_inliner_max 296 (-1) -0.34%
last_uses_regression_8935_inliner_zero 296 (-1) -0.34%
encrypted_log_regression_inliner_min 277 (-1) -0.36%
slices_inliner_zero 1,629 (-6) -0.37%
bench_2_to_17_inliner_max 271 (-1) -0.37%
wildcard_type_inliner_min 271 (-1) -0.37%
encrypted_log_regression_inliner_max 264 (-1) -0.38%
encrypted_log_regression_inliner_zero 264 (-1) -0.38%
pedersen_hash_inliner_max 262 (-1) -0.38%
pedersen_hash_inliner_min 262 (-1) -0.38%
pedersen_hash_inliner_zero 262 (-1) -0.38%
wildcard_type_inliner_max 261 (-1) -0.38%
wildcard_type_inliner_zero 261 (-1) -0.38%
array_dedup_regression_inliner_max 258 (-1) -0.39%
array_dedup_regression_inliner_min 258 (-1) -0.39%
array_dedup_regression_inliner_zero 258 (-1) -0.39%
bench_2_to_17_inliner_zero 254 (-1) -0.39%
regression_6674_2_inliner_min 242 (-1) -0.41%
slices_inliner_max 1,688 (-7) -0.41%
brillig_cow_inliner_zero 239 (-1) -0.42%
ram_blowup_regression_inliner_min 229 (-1) -0.43%
global_slice_rc_regression_8259_inliner_min 224 (-1) -0.44%
regression_11294_inliner_max 222 (-1) -0.45%
reference_only_used_as_alias_inliner_min 222 (-1) -0.45%
regression_11294_inliner_zero 222 (-1) -0.45%
regression_6674_1_inliner_min 220 (-1) -0.45%
ram_blowup_regression_inliner_max 219 (-1) -0.45%
ram_blowup_regression_inliner_zero 219 (-1) -0.45%
regression_9116_inliner_min 217 (-1) -0.46%
array_to_slice_inliner_min 868 (-4) -0.46%
regression_9593_inliner_max 208 (-1) -0.48%
regression_9593_inliner_min 208 (-1) -0.48%
regression_9593_inliner_zero 208 (-1) -0.48%
regression_9116_inliner_max 207 (-1) -0.48%
regression_9116_inliner_zero 207 (-1) -0.48%
regression_6674_2_inliner_max 204 (-1) -0.49%
regression_6674_1_inliner_max 204 (-1) -0.49%
to_be_bytes_inliner_min 197 (-1) -0.51%
slice_dynamic_index_inliner_min 2,118 (-11) -0.52%
databus_two_calldata_inliner_max 192 (-1) -0.52%
databus_two_calldata_inliner_min 192 (-1) -0.52%
global_nested_array_regression_9270_inliner_min 192 (-1) -0.52%
databus_two_calldata_inliner_zero 192 (-1) -0.52%
to_be_bytes_inliner_max 188 (-1) -0.53%
to_be_bytes_inliner_zero 188 (-1) -0.53%
regression_9037_inliner_max 185 (-1) -0.54%
regression_9037_inliner_min 185 (-1) -0.54%
regression_9037_inliner_zero 185 (-1) -0.54%
global_nested_array_regression_9270_inliner_max 184 (-1) -0.54%
regression_6674_1_inliner_zero 184 (-1) -0.54%
regression_6674_2_inliner_zero 184 (-1) -0.54%
global_nested_array_regression_9270_inliner_zero 184 (-1) -0.54%
regression_8174_inliner_max 181 (-1) -0.55%
regression_8174_inliner_min 181 (-1) -0.55%
regression_8174_inliner_zero 181 (-1) -0.55%
brillig_rc_regression_6123_inliner_min 178 (-1) -0.56%
array_to_slice_inliner_zero 664 (-4) -0.60%
pedersen_commitment_inliner_max 162 (-1) -0.61%
pedersen_commitment_inliner_min 162 (-1) -0.61%
pedersen_commitment_inliner_zero 162 (-1) -0.61%
slice_dynamic_index_inliner_max 1,723 (-11) -0.63%
slice_dynamic_index_inliner_zero 1,723 (-11) -0.63%
slice_loop_inliner_min 292 (-2) -0.68%
nested_dyn_array_regression_5782_inliner_max 143 (-1) -0.69%
nested_dyn_array_regression_5782_inliner_min 143 (-1) -0.69%
nested_dyn_array_regression_5782_inliner_zero 143 (-1) -0.69%
slice_loop_inliner_zero 282 (-2) -0.70%
regression_9102_inliner_min 139 (-1) -0.71%
brillig_arrays_inliner_min 135 (-1) -0.74%
array_rc_regression_7842_inliner_min 135 (-1) -0.74%
mutate_array_copy_inliner_min 134 (-1) -0.74%
regression_9102_inliner_max 131 (-1) -0.76%
regression_9102_inliner_zero 131 (-1) -0.76%
array_if_cond_simple_inliner_max 127 (-1) -0.78%
array_if_cond_simple_inliner_min 127 (-1) -0.78%
array_if_cond_simple_inliner_zero 127 (-1) -0.78%
regression_9329_inliner_min 125 (-1) -0.79%
brillig_cow_assign_inliner_max 124 (-1) -0.80%
brillig_cow_assign_inliner_min 124 (-1) -0.80%
brillig_cow_assign_inliner_zero 124 (-1) -0.80%
regression_7128_inliner_min 123 (-1) -0.81%
array_to_slice_inliner_max 487 (-4) -0.81%
signed_arithmetic_inliner_max 237 (-2) -0.84%
signed_arithmetic_inliner_min 237 (-2) -0.84%
signed_arithmetic_inliner_zero 237 (-2) -0.84%
array_sort_inliner_min 466 (-4) -0.85%
regression_9329_inliner_max 115 (-1) -0.86%
regression_9329_inliner_zero 115 (-1) -0.86%
brillig_arrays_inliner_max 113 (-1) -0.88%
brillig_arrays_inliner_zero 113 (-1) -0.88%
slice_loop_inliner_max 225 (-2) -0.88%
fold_call_witness_condition_inliner_max 112 (-1) -0.88%
regression_7128_inliner_max 112 (-1) -0.88%
fold_call_witness_condition_inliner_min 112 (-1) -0.88%
regression_7128_inliner_zero 112 (-1) -0.88%
fold_call_witness_condition_inliner_zero 112 (-1) -0.88%
regression_9496_inliner_max 546 (-5) -0.91%
regression_9496_inliner_min 546 (-5) -0.91%
regression_9496_inliner_zero 546 (-5) -0.91%
regression_mem_op_predicate_inliner_max 104 (-1) -0.95%
regression_mem_op_predicate_inliner_min 104 (-1) -0.95%
regression_mem_op_predicate_inliner_zero 104 (-1) -0.95%
array_sort_inliner_max 405 (-4) -0.98%
array_sort_inliner_zero 405 (-4) -0.98%
global_array_rc_regression_8259_inliner_max 98 (-1) -1.01%
global_array_rc_regression_8259_inliner_min 98 (-1) -1.01%
global_array_rc_regression_8259_inliner_zero 98 (-1) -1.01%
regression_7062_inliner_max 97 (-1) -1.02%
regression_7062_inliner_min 97 (-1) -1.02%
regression_7062_inliner_zero 97 (-1) -1.02%
higher_order_functions_inliner_min 1,588 (-17) -1.06%
regression_8975_inliner_min 93 (-1) -1.06%
array_dynamic_main_output_inliner_max 90 (-1) -1.10%
array_dynamic_main_output_inliner_min 90 (-1) -1.10%
array_dynamic_main_output_inliner_zero 90 (-1) -1.10%
regression_9467_inliner_max 161 (-2) -1.23%
regression_9467_inliner_min 161 (-2) -1.23%
regression_9467_inliner_zero 161 (-2) -1.23%
regression_1144_1169_2399_6609_inliner_min 958 (-13) -1.34%
higher_order_functions_inliner_max 514 (-7) -1.34%
regression_capacity_tracker_inliner_max 215 (-3) -1.38%
regression_capacity_tracker_inliner_min 215 (-3) -1.38%
regression_capacity_tracker_inliner_zero 215 (-3) -1.38%
regression_9439_inliner_max 142 (-2) -1.39%
regression_9439_inliner_min 142 (-2) -1.39%
regression_9439_inliner_zero 142 (-2) -1.39%
signed_div_inliner_max 141 (-2) -1.40%
signed_div_inliner_min 141 (-2) -1.40%
signed_div_inliner_zero 141 (-2) -1.40%
regression_9312_inliner_max 202 (-3) -1.46%
regression_9312_inliner_min 202 (-3) -1.46%
regression_9312_inliner_zero 202 (-3) -1.46%
regression_1144_1169_2399_6609_inliner_max 857 (-13) -1.49%
regression_1144_1169_2399_6609_inliner_zero 857 (-13) -1.49%
higher_order_functions_inliner_zero 715 (-11) -1.52%
bit_shifts_comptime_inliner_max 99 (-3) -2.94%
regression_9546_inliner_max 99 (-3) -2.94%
bit_shifts_comptime_inliner_min 99 (-3) -2.94%
regression_9546_inliner_min 99 (-3) -2.94%
bit_shifts_comptime_inliner_zero 99 (-3) -2.94%
regression_9546_inliner_zero 99 (-3) -2.94%
signed_inactive_division_by_zero_inliner_max 59 (-2) -3.28%
signed_inactive_division_by_zero_inliner_min 59 (-2) -3.28%
signed_inactive_division_by_zero_inliner_zero 59 (-2) -3.28%
regression_8009_inliner_max 105 (-4) -3.67%
regression_8009_inliner_min 105 (-4) -3.67%
regression_8009_inliner_zero 105 (-4) -3.67%
signed_division_inliner_max 195 (-8) -3.94%
signed_division_inliner_min 195 (-8) -3.94%
signed_division_inliner_zero 195 (-8) -3.94%
inactive_signed_bitshift_inliner_max 67 (-3) -4.29%
inactive_signed_bitshift_inliner_min 67 (-3) -4.29%
inactive_signed_bitshift_inliner_zero 67 (-3) -4.29%
bit_shifts_runtime_inliner_max 427 (-21) -4.69%
bit_shifts_runtime_inliner_min 427 (-21) -4.69%
bit_shifts_runtime_inliner_zero 427 (-21) -4.69%
regression_8726_inliner_max 72 (-4) -5.26%
regression_8726_inliner_min 72 (-4) -5.26%
regression_8726_inliner_zero 72 (-4) -5.26%

@github-actions
Copy link
Contributor

github-actions bot commented Sep 9, 2025

Changes to number of Brillig opcodes executed

Generated at commit: 166815e1aee725592fb48da8f5e9c9a233ee2655, compared to commit: 1d18fbc73e16a9a6f83213d3733cf549587554f4

🧾 Summary (10% most significant diffs)

Program Brillig opcodes (+/-) %
signed_div_inliner_max -15 ✅ -1.53%
signed_div_inliner_min -15 ✅ -1.53%
signed_div_inliner_zero -15 ✅ -1.53%
regression_8726_inliner_max -1 ✅ -1.67%
regression_8726_inliner_min -1 ✅ -1.67%
regression_8726_inliner_zero -1 ✅ -1.67%
regression_8009_inliner_max -2 ✅ -2.41%
regression_8009_inliner_min -2 ✅ -2.41%
regression_8009_inliner_zero -2 ✅ -2.41%
signed_division_inliner_max -4 ✅ -2.53%
signed_division_inliner_min -4 ✅ -2.53%
signed_division_inliner_zero -4 ✅ -2.53%
bit_shifts_runtime_inliner_max -8 ✅ -2.87%
bit_shifts_runtime_inliner_min -8 ✅ -2.87%
bit_shifts_runtime_inliner_zero -8 ✅ -2.87%

Full diff report 👇
Program Brillig opcodes (+/-) %
poseidonsponge_x5_254_inliner_min 187,179 (-18) -0.01%
poseidonsponge_x5_254_inliner_zero 185,154 (-18) -0.01%
regression_5252_inliner_min 934,275 (-92) -0.01%
regression_5252_inliner_zero 921,744 (-96) -0.01%
poseidon_bn254_hash_width_3_inliner_min 170,356 (-18) -0.01%
poseidon_bn254_hash_width_3_inliner_zero 166,889 (-18) -0.01%
poseidonsponge_x5_254_inliner_max 151,503 (-32) -0.02%
regression_5252_inliner_max 752,982 (-176) -0.02%
poseidon_bn254_hash_width_3_inliner_max 136,344 (-32) -0.02%
array_dynamic_blackbox_input_inliner_min 6,555 (-2) -0.03%
array_dynamic_blackbox_input_inliner_max 6,526 (-2) -0.03%
array_dynamic_blackbox_input_inliner_zero 6,526 (-2) -0.03%
fold_numeric_generic_poseidon_inliner_zero 4,490 (-2) -0.04%
no_predicates_numeric_generic_poseidon_inliner_zero 4,490 (-2) -0.04%
conditional_1_inliner_min 1,885 (-1) -0.05%
conditional_1_inliner_zero 1,885 (-1) -0.05%
conditional_1_inliner_max 1,859 (-1) -0.05%
fold_numeric_generic_poseidon_inliner_max 3,715 (-2) -0.05%
no_predicates_numeric_generic_poseidon_inliner_max 3,715 (-2) -0.05%
regression_11294_inliner_min 1,254 (-1) -0.08%
array_dynamic_nested_blackbox_input_inliner_min 1,191 (-1) -0.08%
array_dynamic_nested_blackbox_input_inliner_max 1,177 (-1) -0.08%
array_dynamic_nested_blackbox_input_inliner_zero 1,177 (-1) -0.08%
regression_11294_inliner_max 1,125 (-1) -0.09%
regression_11294_inliner_zero 1,125 (-1) -0.09%
regression_6674_3_inliner_min 1,529 (-2) -0.13%
hashmap_inliner_min 80,386 (-112) -0.14%
nested_array_dynamic_inliner_min 2,730 (-4) -0.15%
nested_array_dynamic_inliner_zero 2,730 (-4) -0.15%
hashmap_inliner_zero 71,866 (-112) -0.16%
regression_1144_1169_2399_6609_inliner_min 2,525 (-4) -0.16%
nested_array_dynamic_inliner_max 2,476 (-4) -0.16%
regression_6674_3_inliner_max 1,144 (-2) -0.17%
regression_6674_3_inliner_zero 1,144 (-2) -0.17%
regression_capacity_tracker_inliner_max 568 (-1) -0.18%
regression_capacity_tracker_inliner_min 568 (-1) -0.18%
regression_capacity_tracker_inliner_zero 568 (-1) -0.18%
regression_1144_1169_2399_6609_inliner_max 2,232 (-4) -0.18%
regression_1144_1169_2399_6609_inliner_zero 2,232 (-4) -0.18%
brillig_cow_inliner_max 925 (-2) -0.22%
regression_6674_2_inliner_min 861 (-2) -0.23%
regression_6674_1_inliner_min 835 (-2) -0.24%
uhashmap_inliner_min 174,603 (-438) -0.25%
uhashmap_inliner_zero 164,403 (-438) -0.27%
brillig_cow_inliner_zero 714 (-2) -0.28%
hashmap_inliner_max 56,470 (-160) -0.28%
simple_shield_inliner_max 2,111 (-6) -0.28%
simple_shield_inliner_zero 2,111 (-6) -0.28%
regression_6674_1_inliner_zero 685 (-2) -0.29%
regression_6674_2_inliner_zero 685 (-2) -0.29%
regression_6674_1_inliner_max 661 (-2) -0.30%
regression_6674_2_inliner_max 661 (-2) -0.30%
uhashmap_inliner_max 142,963 (-453) -0.32%
brillig_cow_inliner_min 1,188 (-4) -0.34%
regression_8174_inliner_max 290 (-1) -0.34%
regression_8174_inliner_min 290 (-1) -0.34%
regression_8174_inliner_zero 290 (-1) -0.34%
global_slice_rc_regression_8259_inliner_min 259 (-1) -0.38%
last_uses_regression_8935_inliner_min 512 (-2) -0.39%
merkle_insert_inliner_zero 3,072 (-12) -0.39%
merkle_insert_inliner_max 2,936 (-12) -0.41%
brillig_cow_assign_inliner_max 481 (-2) -0.41%
brillig_cow_assign_inliner_min 481 (-2) -0.41%
brillig_cow_assign_inliner_zero 481 (-2) -0.41%
regression_9160_inliner_max 412 (-2) -0.48%
regression_9160_inliner_min 412 (-2) -0.48%
regression_9160_inliner_zero 412 (-2) -0.48%
regression_struct_array_conditional_inliner_max 1,142 (-6) -0.52%
regression_struct_array_conditional_inliner_min 1,142 (-6) -0.52%
regression_struct_array_conditional_inliner_zero 1,142 (-6) -0.52%
higher_order_functions_inliner_min 2,136 (-12) -0.56%
array_to_slice_inliner_min 1,887 (-11) -0.58%
last_uses_regression_8935_inliner_max 342 (-2) -0.58%
last_uses_regression_8935_inliner_zero 342 (-2) -0.58%
array_rc_regression_7842_inliner_min 169 (-1) -0.59%
mutate_array_copy_inliner_min 168 (-1) -0.59%
regression_9102_inliner_min 168 (-1) -0.59%
regression_9496_inliner_max 499 (-3) -0.60%
regression_9496_inliner_min 499 (-3) -0.60%
regression_9496_inliner_zero 499 (-3) -0.60%
brillig_arrays_inliner_min 166 (-1) -0.60%
slice_regex_inliner_min 4,415 (-28) -0.63%
regression_9102_inliner_max 156 (-1) -0.64%
regression_9102_inliner_zero 156 (-1) -0.64%
slices_inliner_min 3,810 (-25) -0.65%
slice_loop_inliner_min 1,162 (-8) -0.68%
slice_loop_inliner_zero 1,148 (-8) -0.69%
slice_regex_inliner_zero 4,004 (-28) -0.69%
brillig_arrays_inliner_max 138 (-1) -0.72%
brillig_arrays_inliner_zero 138 (-1) -0.72%
array_to_slice_inliner_zero 1,775 (-13) -0.73%
slices_inliner_zero 2,709 (-20) -0.73%
higher_order_functions_inliner_max 811 (-6) -0.73%
array_dedup_regression_inliner_max 670 (-5) -0.74%
array_dedup_regression_inliner_min 670 (-5) -0.74%
array_dedup_regression_inliner_zero 670 (-5) -0.74%
global_array_rc_regression_8259_inliner_max 133 (-1) -0.75%
global_array_rc_regression_8259_inliner_min 133 (-1) -0.75%
global_array_rc_regression_8259_inliner_zero 133 (-1) -0.75%
global_nested_array_regression_9270_inliner_min 264 (-2) -0.75%
global_nested_array_regression_9270_inliner_max 252 (-2) -0.79%
global_nested_array_regression_9270_inliner_zero 252 (-2) -0.79%
array_sort_inliner_min 982 (-8) -0.81%
slice_regex_inliner_max 3,281 (-27) -0.82%
array_to_slice_inliner_max 941 (-8) -0.84%
slices_inliner_max 2,467 (-21) -0.84%
regression_9439_inliner_max 115 (-1) -0.86%
regression_9439_inliner_min 115 (-1) -0.86%
regression_9439_inliner_zero 115 (-1) -0.86%
slice_dynamic_index_inliner_min 4,557 (-41) -0.89%
regression_9467_inliner_max 110 (-1) -0.90%
regression_9467_inliner_min 110 (-1) -0.90%
regression_9467_inliner_zero 110 (-1) -0.90%
array_sort_inliner_max 860 (-8) -0.92%
array_sort_inliner_zero 860 (-8) -0.92%
brillig_rc_regression_6123_inliner_min 315 (-3) -0.94%
slice_loop_inliner_max 832 (-8) -0.95%
slice_dynamic_index_inliner_max 4,055 (-39) -0.95%
slice_dynamic_index_inliner_zero 4,055 (-39) -0.95%
higher_order_functions_inliner_zero 1,244 (-12) -0.96%
regression_9312_inliner_max 160 (-2) -1.23%
regression_9312_inliner_min 160 (-2) -1.23%
regression_9312_inliner_zero 160 (-2) -1.23%
bit_shifts_comptime_inliner_max 78 (-1) -1.27%
bit_shifts_comptime_inliner_min 78 (-1) -1.27%
bit_shifts_comptime_inliner_zero 78 (-1) -1.27%
signed_div_inliner_max 966 (-15) -1.53%
signed_div_inliner_min 966 (-15) -1.53%
signed_div_inliner_zero 966 (-15) -1.53%
regression_8726_inliner_max 59 (-1) -1.67%
regression_8726_inliner_min 59 (-1) -1.67%
regression_8726_inliner_zero 59 (-1) -1.67%
regression_8009_inliner_max 81 (-2) -2.41%
regression_8009_inliner_min 81 (-2) -2.41%
regression_8009_inliner_zero 81 (-2) -2.41%
signed_division_inliner_max 154 (-4) -2.53%
signed_division_inliner_min 154 (-4) -2.53%
signed_division_inliner_zero 154 (-4) -2.53%
bit_shifts_runtime_inliner_max 271 (-8) -2.87%
bit_shifts_runtime_inliner_min 271 (-8) -2.87%
bit_shifts_runtime_inliner_zero 271 (-8) -2.87%

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

⚠️ Performance Alert ⚠️

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

Benchmark suite Current: ffe2707 Previous: e7252a2 Ratio
test_report_zkpassport_noir_rsa_ 2 s 1 s 2

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

CC: @TomAFrench

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

⚠️ 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: 7c0a33b Previous: e7252a2 Ratio
semaphore-depth-10 0.027 s 0.019 s 1.42

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

CC: @TomAFrench

Copy link
Collaborator

@asterite asterite left a comment

Choose a reason for hiding this comment

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

Nice!

@TomAFrench TomAFrench added this pull request to the merge queue Sep 9, 2025
@asterite
Copy link
Collaborator

asterite commented Sep 9, 2025

I'm really curious about how you find these things 😄

@TomAFrench
Copy link
Member Author

from accidentally writing a duplicate version of this function in 7cce332 😅

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

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants