Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: inline simple functions #7160

Merged
merged 15 commits into from
Jan 23, 2025
Merged

feat: inline simple functions #7160

merged 15 commits into from
Jan 23, 2025

Conversation

asterite
Copy link
Collaborator

@asterite asterite commented Jan 23, 2025

Description

Problem

Part of #7148

Summary

Pending: add a few tests for this.

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.

Copy link
Contributor

github-actions bot commented Jan 23, 2025

Changes to number of Brillig opcodes executed

Generated at commit: 47cb8532cde5b4fef3f4fa607caef2cfba14a412, compared to commit: 8cab0e4578aada98402a95386e7c4258afd38a6c

🧾 Summary (10% most significant diffs)

Program Brillig opcodes (+/-) %
trait_impl_base_type_inliner_min -156 ✅ -37.23%
brillig_acir_as_brillig_inliner_min -74 ✅ -38.74%
wrapping_operations_inliner_min -84 ✅ -39.25%
derive_inliner_min -412 ✅ -40.47%
fold_after_inlined_calls_inliner_min -24 ✅ -40.68%
regression_6451_inliner_min -38 ✅ -42.22%
regression_4124_inliner_min -41 ✅ -42.71%
brillig_not_inliner_min -30 ✅ -49.18%
binary_operator_overloading_inliner_min -652 ✅ -50.54%
trait_as_return_type_inliner_zero -22 ✅ -52.38%
array_to_slice_constant_length_inliner_min -24 ✅ -55.81%
diamond_deps_0_inliner_min -46 ✅ -63.89%
1327_concrete_in_generic_inliner_min -83 ✅ -70.34%
brillig_identity_function_inliner_min -85 ✅ -81.73%
brillig_loop_size_regression_inliner_min -103 ✅ -83.74%
struct_inliner_min -141 ✅ -84.43%
trait_as_return_type_inliner_min -127 ✅ -86.39%
brillig_fns_as_values_inliner_zero -160 ✅ -88.89%
brillig_fns_as_values_inliner_min -250 ✅ -92.59%

Full diff report 👇
Program Brillig opcodes (+/-) %
keccak256_inliner_zero 31,641 (+870) +2.83%
6_inliner_zero 7,832 (+93) +1.20%
conditional_regression_short_circuit_inliner_zero 7,912 (+93) +1.19%
strings_inliner_max 1,722 (+6) +0.35%
slice_regex_inliner_max 3,103 (+6) +0.19%
strings_inliner_zero 2,077 (+3) +0.14%
ram_blowup_regression_inliner_max 683,267 (-1) -0.00%
brillig_cow_regression_inliner_zero 540,398 (-1) -0.00%
brillig_cow_regression_inliner_max 454,762 (-1) -0.00%
fold_2_to_17_inliner_max 1,056,623 (-4) -0.00%
sha256_regression_inliner_zero 155,323 (-1) -0.00%
poseidonsponge_x5_254_inliner_max 171,515 (-2) -0.00%
regression_5252_inliner_max 854,142 (-10) -0.00%
poseidon_bn254_hash_inliner_max 151,734 (-2) -0.00%
poseidon_bn254_hash_width_3_inliner_max 151,734 (-2) -0.00%
sha256_var_padding_regression_inliner_max 196,666 (-6) -0.00%
sha256_regression_inliner_max 111,644 (-4) -0.00%
regression_5252_inliner_min 1,021,038 (-56) -0.01%
regression_4709_inliner_min 1,064,045 (-61) -0.01%
poseidonsponge_x5_254_inliner_min 204,273 (-13) -0.01%
sha256_var_size_regression_inliner_max 15,504 (-1) -0.01%
sha256_inliner_max 13,198 (-1) -0.01%
u128_inliner_zero 44,448 (-5) -0.01%
array_dynamic_blackbox_input_inliner_max 17,473 (-2) -0.01%
poseidon_bn254_hash_inliner_min 183,702 (-25) -0.01%
poseidon_bn254_hash_width_3_inliner_min 183,702 (-25) -0.01%
sha256_var_witness_const_regression_inliner_max 6,268 (-1) -0.02%
hashmap_inliner_max 48,267 (-10) -0.02%
uhashmap_inliner_max 136,213 (-56) -0.04%
slice_regex_inliner_zero 3,862 (-2) -0.05%
u128_inliner_max 24,249 (-27) -0.11%
uhashmap_inliner_zero 174,599 (-312) -0.18%
array_to_slice_inliner_zero 1,958 (-4) -0.20%
array_to_slice_inliner_max 1,621 (-4) -0.25%
hashmap_inliner_zero 74,878 (-205) -0.27%
verify_honk_proof_inliner_min 4,218 (-16) -0.38%
double_verify_honk_proof_inliner_min 7,477 (-32) -0.43%
ram_blowup_regression_inliner_min 817,990 (-3,989) -0.49%
brillig_cow_regression_inliner_min 543,441 (-2,782) -0.51%
fold_numeric_generic_poseidon_inliner_min 5,786 (-31) -0.53%
regression_6674_3_inliner_zero 1,364 (-8) -0.58%
derive_inliner_zero 331 (-2) -0.60%
to_be_bytes_inliner_min 2,125 (-15) -0.70%
derive_inliner_max 136 (-1) -0.73%
single_verify_proof_inliner_min 1,530 (-15) -0.97%
regression_6674_3_inliner_max 1,358 (-14) -1.02%
brillig_rc_regression_6123_inliner_max 285 (-3) -1.04%
brillig_rc_regression_6123_inliner_zero 285 (-3) -1.04%
sha256_brillig_performance_regression_inliner_min 26,800 (-321) -1.18%
to_le_bytes_inliner_min 1,122 (-15) -1.32%
sha256_var_padding_regression_inliner_min 267,094 (-3,690) -1.36%
double_verify_proof_inliner_min 2,199 (-31) -1.39%
hash_to_field_inliner_min 965 (-15) -1.53%
to_bytes_integration_inliner_min 2,389 (-45) -1.85%
sha256_regression_inliner_min 157,332 (-3,690) -2.29%
conditional_1_inliner_min 5,954 (-149) -2.44%
regression_6674_2_inliner_max 593 (-16) -2.63%
regression_6674_1_inliner_max 590 (-16) -2.64%
slice_coercion_inliner_min 469 (-13) -2.70%
array_dynamic_blackbox_input_inliner_min 22,308 (-779) -3.37%
simple_shield_inliner_zero 2,718 (-101) -3.58%
regression_4449_inliner_min 266,453 (-10,979) -3.96%
nested_array_dynamic_inliner_max 3,008 (-136) -4.33%
to_bytes_consistent_inliner_min 659 (-30) -4.35%
array_dedup_regression_inliner_min 1,232 (-64) -4.94%
slice_regex_inliner_min 8,490 (-464) -5.18%
nested_array_in_slice_inliner_max 1,386 (-76) -5.20%
sha256_var_size_regression_inliner_min 22,086 (-1,260) -5.40%
keccak256_inliner_min 32,022 (-1,876) -5.53%
debug_logs_inliner_min 10,317 (-636) -5.81%
regression_7128_inliner_min 1,216 (-76) -5.88%
embedded_curve_ops_inliner_min 666 (-43) -6.06%
slices_inliner_min 4,269 (-282) -6.20%
array_to_slice_inliner_min 2,238 (-150) -6.28%
regression_6674_3_inliner_min 1,976 (-137) -6.48%
array_sort_inliner_min 678 (-50) -6.87%
7_function_inliner_max 2,059 (-152) -6.87%
ecdsa_secp256k1_inliner_min 8,165 (-629) -7.15%
reference_counts_inliner_min 970 (-86) -8.14%
conditional_regression_short_circuit_inliner_min 8,701 (-779) -8.22%
6_inliner_min 8,595 (-779) -8.31%
regression_3394_inliner_min 127 (-12) -8.63%
7_function_inliner_min 2,605 (-247) -8.66%
slice_dynamic_index_inliner_max 4,248 (-408) -8.76%
slice_dynamic_index_inliner_zero 4,248 (-408) -8.76%
references_inliner_min 642 (-65) -9.19%
sha256_var_witness_const_regression_inliner_min 7,704 (-780) -9.19%
simple_print_inliner_min 240 (-25) -9.43%
loop_keyword_inliner_min 102 (-11) -9.73%
loop_keyword_inliner_zero 102 (-11) -9.73%
fmtstr_with_global_inliner_min 124 (-14) -10.14%
pedersen_check_inliner_zero 852 (-97) -10.22%
sha256_inliner_min 16,448 (-1,995) -10.82%
array_dynamic_nested_blackbox_input_inliner_min 4,921 (-629) -11.33%
aes128_encrypt_inliner_min 3,482 (-480) -12.12%
inline_decompose_hint_brillig_call_inliner_min 274 (-39) -12.46%
slice_loop_inliner_min 1,284 (-184) -12.53%
brillig_pedersen_inliner_min 1,035 (-149) -12.58%
u16_support_inliner_min 82 (-12) -12.77%
higher_order_functions_inliner_min 2,291 (-336) -12.79%
reference_only_used_as_alias_inliner_min 475 (-70) -12.84%
pedersen_commitment_inliner_min 319 (-50) -13.55%
uhashmap_inliner_min 196,618 (-32,524) -14.19%
databus_inliner_min 86 (-15) -14.85%
simple_2d_array_inliner_min 171 (-30) -14.93%
regression_7062_inliner_min 79 (-14) -15.05%
pedersen_hash_inliner_min 548 (-99) -15.30%
brillig_calls_conditionals_inliner_min 198 (-36) -15.38%
fold_complex_outputs_inliner_min 1,085 (-210) -16.22%
simple_shield_inliner_min 2,785 (-541) -16.27%
merkle_insert_inliner_min 3,388 (-676) -16.63%
tuple_inputs_inliner_min 647 (-135) -17.26%
nested_array_dynamic_inliner_min 3,535 (-765) -17.79%
u128_inliner_min 52,143 (-11,625) -18.23%
struct_inputs_inliner_min 662 (-150) -18.47%
regression_4088_inliner_min 60 (-14) -18.92%
brillig_rc_regression_6123_inliner_min 359 (-84) -18.96%
brillig_uninitialized_arrays_inliner_min 64 (-15) -18.99%
hashmap_inliner_min 90,205 (-22,608) -20.04%
pedersen_check_inliner_min 1,035 (-264) -20.32%
sha2_byte_inliner_min 89,381 (-23,004) -20.47%
nested_array_in_slice_inliner_min 1,721 (-450) -20.73%
strings_inliner_min 2,896 (-759) -20.77%
conditional_2_inliner_min 158 (-43) -21.39%
regression_inliner_min 3,057 (-878) -22.31%
prelude_inliner_min 235 (-68) -22.44%
submodules_inliner_min 38 (-11) -22.45%
regression_3051_inliner_min 201 (-59) -22.69%
generics_inliner_min 328 (-101) -23.54%
bit_shifts_comptime_inliner_min 35 (-11) -23.91%
bit_shifts_comptime_inliner_zero 35 (-11) -23.91%
global_consts_inliner_min 1,697 (-536) -24.00%
brillig_cow_inliner_min 1,415 (-450) -24.13%
side_effects_constrain_array_inliner_min 136 (-45) -24.86%
signed_division_inliner_min 247 (-84) -25.38%
closures_mut_ref_inliner_zero 34 (-13) -27.66%
brillig_calls_inliner_min 189 (-74) -28.14%
array_neq_inliner_min 1,204 (-480) -28.50%
array_eq_inliner_min 1,203 (-480) -28.52%
regression_method_cannot_be_found_inliner_min 85 (-37) -30.33%
5_over_inliner_min 64 (-28) -30.43%
submodules_inliner_zero 25 (-11) -30.56%
no_predicates_brillig_inliner_min 29 (-13) -30.95%
7_inliner_min 1,062 (-480) -31.13%
blake3_inliner_min 1,062 (-480) -31.13%
4_sub_inliner_min 61 (-28) -31.46%
brillig_blake2s_inliner_min 1,059 (-494) -31.81%
6_array_inliner_min 2,890 (-1,400) -32.63%
array_len_inliner_min 203 (-101) -33.22%
field_attribute_inliner_min 24 (-12) -33.33%
import_inliner_min 140 (-70) -33.33%
unary_operator_overloading_inliner_min 70 (-37) -34.58%
modules_inliner_min 24 (-13) -35.14%
modules_more_inliner_min 24 (-13) -35.14%
missing_closure_env_inliner_zero 22 (-12) -35.29%
global_var_regression_simple_inliner_min 214 (-122) -36.31%
trait_impl_base_type_inliner_min 263 (-156) -37.23%
brillig_acir_as_brillig_inliner_min 117 (-74) -38.74%
wrapping_operations_inliner_min 130 (-84) -39.25%
derive_inliner_min 606 (-412) -40.47%
fold_after_inlined_calls_inliner_min 35 (-24) -40.68%
regression_6451_inliner_min 52 (-38) -42.22%
regression_4124_inliner_min 55 (-41) -42.71%
brillig_not_inliner_min 31 (-30) -49.18%
binary_operator_overloading_inliner_min 638 (-652) -50.54%
trait_as_return_type_inliner_zero 20 (-22) -52.38%
array_to_slice_constant_length_inliner_min 19 (-24) -55.81%
diamond_deps_0_inliner_min 26 (-46) -63.89%
1327_concrete_in_generic_inliner_min 35 (-83) -70.34%
brillig_identity_function_inliner_min 19 (-85) -81.73%
brillig_loop_size_regression_inliner_min 20 (-103) -83.74%
struct_inliner_min 26 (-141) -84.43%
trait_as_return_type_inliner_min 20 (-127) -86.39%
brillig_fns_as_values_inliner_zero 20 (-160) -88.89%
brillig_fns_as_values_inliner_min 20 (-250) -92.59%

Copy link
Contributor

github-actions bot commented Jan 23, 2025

Changes to Brillig bytecode sizes

Generated at commit: 47cb8532cde5b4fef3f4fa607caef2cfba14a412, compared to commit: 8cab0e4578aada98402a95386e7c4258afd38a6c

🧾 Summary (10% most significant diffs)

Program Brillig opcodes (+/-) %
brillig_not_inliner_min -18 ✅ -32.73%
closures_mut_ref_inliner_zero -17 ✅ -33.33%
regression_7128_inliner_min -78 ✅ -34.82%
brillig_acir_as_brillig_inliner_min -61 ✅ -35.06%
trait_impl_base_type_inliner_min -146 ✅ -36.87%
regression_4124_inliner_min -33 ✅ -37.50%
missing_closure_env_inliner_zero -16 ✅ -38.10%
trait_as_return_type_inliner_zero -14 ✅ -38.89%
array_len_inliner_min -81 ✅ -42.86%
fold_after_inlined_calls_inliner_min -27 ✅ -43.55%
array_to_slice_constant_length_inliner_min -20 ✅ -48.78%
diamond_deps_0_inliner_min -30 ✅ -51.72%
1327_concrete_in_generic_inliner_min -59 ✅ -64.13%
brillig_loop_size_regression_inliner_min -68 ✅ -75.56%
struct_inliner_min -125 ✅ -79.62%
brillig_identity_function_inliner_min -85 ✅ -80.19%
trait_as_return_type_inliner_min -94 ✅ -81.03%
brillig_fns_as_values_inliner_zero -148 ✅ -87.06%
brillig_fns_as_values_inliner_min -199 ✅ -90.05%

Full diff report 👇
Program Brillig opcodes (+/-) %
keccak256_inliner_zero 1,967 (+283) +16.81%
6_inliner_zero 843 (+113) +15.48%
conditional_regression_short_circuit_inliner_zero 925 (+113) +13.92%
keccak256_inliner_min 1,665 (+157) +10.41%
simple_shield_inliner_zero 812 (+28) +3.57%
reference_counts_inliner_zero 663 (+5) +0.76%
strings_inliner_max 928 (+6) +0.65%
slice_regex_inliner_max 2,076 (+6) +0.29%
sha256_regression_inliner_zero 4,848 (-1) -0.02%
poseidon_bn254_hash_inliner_max 5,268 (-2) -0.04%
poseidon_bn254_hash_width_3_inliner_max 5,268 (-2) -0.04%
regression_5252_inliner_max 4,433 (-2) -0.05%
brillig_cow_regression_inliner_zero 2,089 (-1) -0.05%
poseidonsponge_x5_254_inliner_max 4,105 (-2) -0.05%
brillig_cow_regression_inliner_max 2,051 (-1) -0.05%
regression_4709_inliner_min 133,741 (-67) -0.05%
hashmap_inliner_max 19,605 (-10) -0.05%
sha256_regression_inliner_max 6,687 (-4) -0.06%
sha256_var_size_regression_inliner_max 1,664 (-1) -0.06%
sha256_inliner_max 2,288 (-2) -0.09%
array_dynamic_blackbox_input_inliner_max 1,006 (-1) -0.10%
ram_blowup_regression_inliner_max 928 (-1) -0.11%
sha256_var_padding_regression_inliner_max 4,906 (-6) -0.12%
sha256_var_witness_const_regression_inliner_zero 803 (-1) -0.12%
slice_regex_inliner_zero 1,600 (-2) -0.12%
uhashmap_inliner_max 12,121 (-17) -0.14%
sha256_inliner_zero 1,253 (-2) -0.16%
sha256_var_witness_const_regression_inliner_max 1,248 (-2) -0.16%
hashmap_inliner_zero 7,889 (-19) -0.24%
u128_inliner_zero 1,986 (-5) -0.25%
poseidon_bn254_hash_width_3_inliner_min 4,985 (-14) -0.28%
poseidon_bn254_hash_inliner_min 4,985 (-14) -0.28%
poseidonsponge_x5_254_inliner_min 3,129 (-9) -0.29%
regression_5252_inliner_min 3,542 (-19) -0.53%
array_to_slice_inliner_zero 743 (-4) -0.54%
array_to_slice_inliner_max 686 (-4) -0.58%
nested_array_dynamic_inliner_min 1,856 (-11) -0.59%
derive_inliner_zero 333 (-2) -0.60%
sha256_regression_inliner_min 5,281 (-33) -0.62%
derive_inliner_max 139 (-1) -0.71%
fold_2_to_17_inliner_max 552 (-4) -0.72%
uhashmap_inliner_zero 7,417 (-67) -0.90%
sha256_var_padding_regression_inliner_min 3,232 (-33) -1.01%
array_to_slice_inliner_min 995 (-11) -1.09%
nested_array_in_slice_inliner_min 985 (-11) -1.10%
u128_inliner_max 2,658 (-31) -1.15%
regression_6674_3_inliner_zero 467 (-8) -1.68%
brillig_rc_regression_6123_inliner_max 166 (-3) -1.78%
brillig_rc_regression_6123_inliner_zero 166 (-3) -1.78%
slice_coercion_inliner_min 486 (-9) -1.82%
reference_counts_inliner_min 839 (-17) -1.99%
conditional_1_inliner_min 1,418 (-32) -2.21%
simple_shield_inliner_min 939 (-23) -2.39%
aes128_encrypt_inliner_min 434 (-11) -2.47%
sha2_byte_inliner_min 2,986 (-88) -2.86%
array_dedup_regression_inliner_min 265 (-8) -2.93%
regression_6674_3_inliner_max 461 (-14) -2.95%
sha256_inliner_min 1,408 (-44) -3.03%
array_dynamic_blackbox_input_inliner_min 1,275 (-43) -3.26%
brillig_cow_inliner_min 321 (-11) -3.31%
fold_complex_outputs_inliner_min 707 (-25) -3.42%
ecdsa_secp256k1_inliner_min 1,213 (-43) -3.42%
tuple_inputs_inliner_min 310 (-11) -3.43%
sha256_var_size_regression_inliner_min 1,239 (-44) -3.43%
array_dynamic_nested_blackbox_input_inliner_min 1,200 (-43) -3.46%
fold_numeric_generic_poseidon_inliner_min 632 (-23) -3.51%
struct_inputs_inliner_min 292 (-11) -3.63%
ram_blowup_regression_inliner_min 1,130 (-43) -3.67%
bigint_inliner_min 1,979 (-76) -3.70%
slices_inliner_min 2,517 (-100) -3.82%
regression_4449_inliner_min 1,066 (-43) -3.88%
sha256_brillig_performance_regression_inliner_min 1,838 (-75) -3.92%
pedersen_check_inliner_zero 536 (-22) -3.94%
6_inliner_min 1,018 (-42) -3.96%
sha256_var_witness_const_regression_inliner_min 984 (-44) -4.28%
brillig_cow_regression_inliner_min 2,317 (-104) -4.30%
debug_logs_inliner_min 9,751 (-439) -4.31%
conditional_regression_short_circuit_inliner_min 1,119 (-54) -4.60%
strings_inliner_zero 925 (-45) -4.64%
to_be_bytes_inliner_min 225 (-11) -4.66%
hash_to_field_inliner_min 213 (-11) -4.91%
slice_regex_inliner_min 2,055 (-112) -5.17%
u128_inliner_min 2,279 (-136) -5.63%
regression_3394_inliner_min 124 (-8) -6.06%
higher_order_functions_inliner_min 1,349 (-89) -6.19%
embedded_curve_ops_inliner_min 515 (-35) -6.36%
brillig_pedersen_inliner_min 594 (-41) -6.46%
signed_division_inliner_min 230 (-16) -6.50%
7_inliner_min 154 (-11) -6.67%
blake3_inliner_min 154 (-11) -6.67%
regression_5045_inliner_min 224 (-16) -6.67%
simple_print_inliner_min 232 (-17) -6.83%
fmtstr_with_global_inliner_min 121 (-10) -7.63%
6_array_inliner_min 462 (-40) -7.97%
nested_array_dynamic_inliner_max 1,973 (-172) -8.02%
side_effects_constrain_array_inliner_min 124 (-11) -8.15%
regression_7062_inliner_min 109 (-10) -8.40%
regression_6674_3_inliner_min 837 (-80) -8.72%
array_sort_inliner_min 355 (-34) -8.74%
slice_loop_inliner_min 327 (-32) -8.91%
7_function_inliner_min 635 (-65) -9.29%
array_neq_inliner_min 107 (-11) -9.32%
array_eq_inliner_min 106 (-11) -9.40%
regression_6674_2_inliner_max 186 (-20) -9.71%
regression_6674_1_inliner_max 183 (-20) -9.85%
pedersen_commitment_inliner_min 236 (-26) -9.92%
strings_inliner_min 1,138 (-126) -9.97%
references_inliner_min 421 (-47) -10.04%
merkle_insert_inliner_min 481 (-54) -10.09%
loop_keyword_inliner_min 62 (-7) -10.14%
loop_keyword_inliner_zero 62 (-7) -10.14%
nested_array_in_slice_inliner_max 1,014 (-118) -10.42%
u16_support_inliner_min 65 (-8) -10.96%
simple_2d_array_inliner_min 146 (-18) -10.98%
inline_decompose_hint_brillig_call_inliner_min 243 (-31) -11.31%
to_le_bytes_inliner_min 161 (-22) -12.02%
brillig_blake2s_inliner_min 151 (-21) -12.21%
to_bytes_consistent_inliner_min 78 (-11) -12.36%
pedersen_hash_inliner_min 358 (-51) -12.47%
databus_inliner_min 74 (-11) -12.94%
7_function_inliner_max 477 (-74) -13.43%
pedersen_check_inliner_min 594 (-93) -13.54%
single_verify_proof_inliner_min 69 (-11) -13.75%
bit_shifts_comptime_inliner_min 43 (-7) -14.00%
bit_shifts_comptime_inliner_zero 43 (-7) -14.00%
brillig_uninitialized_arrays_inliner_min 67 (-11) -14.10%
uhashmap_inliner_min 8,338 (-1,446) -14.78%
verify_honk_proof_inliner_min 69 (-12) -14.81%
slice_dynamic_index_inliner_max 2,123 (-377) -15.08%
slice_dynamic_index_inliner_zero 2,123 (-377) -15.08%
regression_4088_inliner_min 56 (-10) -15.15%
brillig_calls_conditionals_inliner_min 134 (-24) -15.19%
reference_only_used_as_alias_inliner_min 315 (-58) -15.55%
submodules_inliner_min 38 (-7) -15.56%
to_bytes_integration_inliner_min 178 (-33) -15.64%
regression_inliner_min 1,110 (-215) -16.23%
regression_5435_inliner_min 41 (-8) -16.33%
conditional_2_inliner_min 164 (-33) -16.75%
brillig_rc_regression_6123_inliner_min 230 (-52) -18.44%
prelude_inliner_min 227 (-52) -18.64%
no_predicates_brillig_inliner_min 39 (-9) -18.75%
generics_inliner_min 244 (-58) -19.21%
global_consts_inliner_min 253 (-61) -19.43%
submodules_inliner_zero 29 (-7) -19.44%
regression_3051_inliner_min 193 (-47) -19.58%
double_verify_proof_inliner_min 81 (-20) -19.80%
5_over_inliner_min 62 (-16) -20.51%
double_verify_honk_proof_inliner_min 81 (-22) -21.36%
4_sub_inliner_min 57 (-16) -21.92%
hashmap_inliner_min 9,771 (-2,773) -22.11%
field_attribute_inliner_min 28 (-8) -22.22%
unary_operator_overloading_inliner_min 72 (-21) -22.58%
regression_method_cannot_be_found_inliner_min 82 (-25) -23.36%
brillig_calls_inliner_min 193 (-61) -24.02%
modules_inliner_min 28 (-9) -24.32%
modules_more_inliner_min 28 (-9) -24.32%
wrapping_operations_inliner_min 104 (-40) -27.78%
binary_operator_overloading_inliner_min 448 (-173) -27.86%
import_inliner_min 134 (-52) -27.96%
global_var_regression_simple_inliner_min 167 (-67) -28.63%
regression_6451_inliner_min 58 (-26) -30.95%
derive_inliner_min 584 (-270) -31.62%
brillig_not_inliner_min 37 (-18) -32.73%
closures_mut_ref_inliner_zero 34 (-17) -33.33%
regression_7128_inliner_min 146 (-78) -34.82%
brillig_acir_as_brillig_inliner_min 113 (-61) -35.06%
trait_impl_base_type_inliner_min 250 (-146) -36.87%
regression_4124_inliner_min 55 (-33) -37.50%
missing_closure_env_inliner_zero 26 (-16) -38.10%
trait_as_return_type_inliner_zero 22 (-14) -38.89%
array_len_inliner_min 108 (-81) -42.86%
fold_after_inlined_calls_inliner_min 35 (-27) -43.55%
array_to_slice_constant_length_inliner_min 21 (-20) -48.78%
diamond_deps_0_inliner_min 28 (-30) -51.72%
1327_concrete_in_generic_inliner_min 33 (-59) -64.13%
brillig_loop_size_regression_inliner_min 22 (-68) -75.56%
struct_inliner_min 32 (-125) -79.62%
brillig_identity_function_inliner_min 21 (-85) -80.19%
trait_as_return_type_inliner_min 22 (-94) -81.03%
brillig_fns_as_values_inliner_zero 22 (-148) -87.06%
brillig_fns_as_values_inliner_min 22 (-199) -90.05%

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 'Compilation Time'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20.

Benchmark suite Current: 36ff6ad Previous: c8d5ce5 Ratio
rollup-root 4.438 s 3.556 s 1.25
rollup-merge 2.738 s 2.004 s 1.37
rollup-block-merge 4.384 s 3.626 s 1.21
rollup-base-private 12.78 s 10.32 s 1.24

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 'Compilation Memory'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20.

Benchmark suite Current: 8c96690 Previous: c8d5ce5 Ratio
ram_blowup_regression 2200 MB 1480 MB 1.49
rollup-block-root-single-tx 16210 MB 6250 MB 2.59

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: 01ceaa3 Previous: c8d5ce5 Ratio
regression_4709 0.002 s 0.001 s 2

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

CC: @TomAFrench

@TomAFrench
Copy link
Member

Very nice! There's some regressions on keccak256 when using a zero aggressiveness, can you take a look (non blocker but it would need an issue)

@asterite
Copy link
Collaborator Author

Sure! I'll take a look at it before merging this.

Base automatically changed from ab/inlined-should_inline_cal to master January 23, 2025 16:05
@asterite
Copy link
Collaborator Author

@TomAFrench I was wondering if the --inliner-aggressiveness argument should be taken into account by this new pass or not. It's maybe strange that --inliner-aggressiveness=0 would still inline these, but I'm not sure.

(so far the only difference I found was that a to_le_radix call is inlined now, and that somehow makes things work with zero inlining)

@asterite
Copy link
Collaborator Author

I think I'll merge this PR and then look at that issue because it seems to need an extra fix.

@asterite
Copy link
Collaborator Author

Regarding keccak256, what I found was that std::hash::keccak256 calls the one in another module:

pub fn keccak256<let N: u32>(input: [u8; N], message_size: u32) -> [u8; 32]
// docs:end:keccak256
{
crate::hash::keccak::keccak256(input, message_size)
}

And that function is no_predicates. So what's end up happening is that the call to the no_predicates function ends up in the caller... but maybe that's fine? After all the wrapper function doesn't have no_predicates. From there I still couldn't understand why it changes the final SSA.

@vezenovm
Copy link
Contributor

rollup-block-root-single-tx 16210 MB 6250 MB 2.59

Looks like we have a really big regression here as well reversing the gains made by #7072.

@TomAFrench
Copy link
Member

Looks like we have a really big regression here as well reversing the gains made by #7072.

Interesting. I think this would likely be fixed by running some of the additional passes done as part of the preprocessing pass on the functions which we've just inlined into. Once we've inlined these simple functions then we will be able to remove a lot of allocations whereas I'm guessing that this PR is resulting in these optimizations being deferred again.

@asterite asterite disabled auto-merge January 23, 2025 18:16
@TomAFrench
Copy link
Member

@asterite Chucking a mem2reg pass afterwards should help

@asterite
Copy link
Collaborator Author

@asterite Chucking a mem2reg pass afterwards should help

Done.

Regarding keccak256, I think now that there are some inlined functions before the preoprocessing, the weight of functions changes and so that pass behaves differently... in this case maybe it makes it into a regression. It's a bit hard to debug or understand 😊

@TomAFrench
Copy link
Member

Looks like the regression is fixed now but there's a test failure 🤔

@TomAFrench
Copy link
Member

Yeah, inlining with weight scores is a little bit of a pain for that reason. Let's just record it and once we've done all of these optimizations which definitely should reduce bytecode sizes then we can see if there's ways to improve these cases.

@vezenovm
Copy link
Contributor

Looks like the regression is fixed now but there's a test failure 🤔

I ran into the same thing in #7165 and fixed it there. I'll extract it.

@vezenovm
Copy link
Contributor

Merging in #7169 should fix those panics in https://github.com/noir-lang/noir/actions/runs/12935521653/job/36079229284?pr=7160

@vezenovm vezenovm reopened this Jan 23, 2025
@vezenovm
Copy link
Contributor

I guess linking the comment we want to resolve will close the PR 😅

@asterite
Copy link
Collaborator Author

Looks like the regression is fixed

Where can this be seen?

@vezenovm
Copy link
Contributor

vezenovm commented Jan 23, 2025

Where can this be seen?

https://github.com/noir-lang/noir/actions/runs/12936395030/job/36082771664?pr=7160 under the merge reports job we print out the report to the shell. Looks like there was even an improvement.

@TomAFrench TomAFrench added this pull request to the merge queue Jan 23, 2025
Merged via the queue into master with commit c17e228 Jan 23, 2025
99 checks passed
@TomAFrench TomAFrench deleted the ab/simple-inline branch January 23, 2025 19:59
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Jan 24, 2025
fix: ensure canonical bits decomposition (noir-lang/noir#7168)
fix: Keep `inc_rc` for array inputs during preprocessing  (noir-lang/noir#7163)
fix(docs): Update broken links to EC lib (noir-lang/noir#7141)
feat: inline simple functions (noir-lang/noir#7160)
feat(ssa): Expand feature set of the Brillig constraint check (noir-lang/noir#7060)
fix(ssa): Resolve value before fetching from DFG in a couple cases (noir-lang/noir#7169)
fix: `Function::is_no_predicates` always returned false for brillig f… (noir-lang/noir#7167)
chore(refactor): Remove globals field on Ssa object and use only the shared globals graph (noir-lang/noir#7156)
chore: let `Function::inlined` take a `should_inline_call` function (noir-lang/noir#7149)
chore: add compile-time assertions on generic arguments of stdlib functions (noir-lang/noir#6981)
fix: LSP hover over function with `&mut self` (noir-lang/noir#7155)
feat(brillig): Set global memory size at program compile time (noir-lang/noir#7151)
feat: LSP autocomplete module declaration (noir-lang/noir#7154)
feat(ssa): Reuse constants from the globals graph when making constants in a function DFG (noir-lang/noir#7153)
feat: LSP chain inlay hints (noir-lang/noir#7152)
chore: turn on overflow checks in CI rust tests (noir-lang/noir#7145)
fix(ssa): Use post order when mapping instructions in loop invariant pass (noir-lang/noir#7140)
fix: preserve types when reading from calldata arrays (noir-lang/noir#7144)
feat: Resolve enums & prepare type system (noir-lang/noir#7115)
feat: `loop` must have at least one `break` (noir-lang/noir#7126)
feat: parse globals in SSA parser (noir-lang/noir#7112)
fix: allow calling trait impl method from struct if multiple impls exist (noir-lang/noir#7124)
fix: avoid creating unnecessary memory blocks (noir-lang/noir#7114)
chore: relax threshold for reporting regressions (noir-lang/noir#7130)
fix: proper cleanup when breaking from comptime loop on error (noir-lang/noir#7125)
fix: Prevent overlapping associated types impls (noir-lang/noir#7047)
feat: unconstrained optimizations for BoundedVec (noir-lang/noir#7119)
chore: mark libs good (noir-lang/noir#7123)
chore: remove comments for time/memory benchmarks (noir-lang/noir#7121)
fix: don't always use an exclusive lock in `nargo check` (noir-lang/noir#7120)
feat(ssa): Pass to preprocess functions (noir-lang/noir#7072)
chore: Formatting issues / minor errors in the docs (noir-lang/noir#7105)
fix: defunctionalize pass on the caller runtime to apply (noir-lang/noir#7100)
feat: Parser and formatter support for `enum`s (noir-lang/noir#7110)
feat(brillig): SSA globals code gen (noir-lang/noir#7021)
feat: `loop` keyword in runtime and comptime code (noir-lang/noir#7096)
chore: Add benchmarking dashboard (noir-lang/noir#7068)
feat(experimental): try to infer lambda argument types inside calls (noir-lang/noir#7088)
feat(ssa): Add flag to DIE pass to be able to keep `store` instructions (noir-lang/noir#7106)
chore: Cookbook Onboard integration (noir-lang/noir#7044)
chore: lock to ubuntu 22.04 (noir-lang/noir#7098)
fix: Remove unused brillig functions (noir-lang/noir#7102)
chore(ssa): Use correct prefix when printing array values in global space (noir-lang/noir#7095)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Jan 24, 2025
fix: ensure canonical bits decomposition (noir-lang/noir#7168)
fix: Keep `inc_rc` for array inputs during preprocessing  (noir-lang/noir#7163)
fix(docs): Update broken links to EC lib (noir-lang/noir#7141)
feat: inline simple functions (noir-lang/noir#7160)
feat(ssa): Expand feature set of the Brillig constraint check (noir-lang/noir#7060)
fix(ssa): Resolve value before fetching from DFG in a couple cases (noir-lang/noir#7169)
fix: `Function::is_no_predicates` always returned false for brillig f… (noir-lang/noir#7167)
chore(refactor): Remove globals field on Ssa object and use only the shared globals graph (noir-lang/noir#7156)
chore: let `Function::inlined` take a `should_inline_call` function (noir-lang/noir#7149)
chore: add compile-time assertions on generic arguments of stdlib functions (noir-lang/noir#6981)
fix: LSP hover over function with `&mut self` (noir-lang/noir#7155)
feat(brillig): Set global memory size at program compile time (noir-lang/noir#7151)
feat: LSP autocomplete module declaration (noir-lang/noir#7154)
feat(ssa): Reuse constants from the globals graph when making constants in a function DFG (noir-lang/noir#7153)
feat: LSP chain inlay hints (noir-lang/noir#7152)
chore: turn on overflow checks in CI rust tests (noir-lang/noir#7145)
fix(ssa): Use post order when mapping instructions in loop invariant pass (noir-lang/noir#7140)
fix: preserve types when reading from calldata arrays (noir-lang/noir#7144)
feat: Resolve enums & prepare type system (noir-lang/noir#7115)
feat: `loop` must have at least one `break` (noir-lang/noir#7126)
feat: parse globals in SSA parser (noir-lang/noir#7112)
fix: allow calling trait impl method from struct if multiple impls exist (noir-lang/noir#7124)
fix: avoid creating unnecessary memory blocks (noir-lang/noir#7114)
chore: relax threshold for reporting regressions (noir-lang/noir#7130)
fix: proper cleanup when breaking from comptime loop on error (noir-lang/noir#7125)
fix: Prevent overlapping associated types impls (noir-lang/noir#7047)
feat: unconstrained optimizations for BoundedVec (noir-lang/noir#7119)
chore: mark libs good (noir-lang/noir#7123)
chore: remove comments for time/memory benchmarks (noir-lang/noir#7121)
fix: don't always use an exclusive lock in `nargo check` (noir-lang/noir#7120)
feat(ssa): Pass to preprocess functions (noir-lang/noir#7072)
chore: Formatting issues / minor errors in the docs (noir-lang/noir#7105)
fix: defunctionalize pass on the caller runtime to apply (noir-lang/noir#7100)
feat: Parser and formatter support for `enum`s (noir-lang/noir#7110)
feat(brillig): SSA globals code gen (noir-lang/noir#7021)
feat: `loop` keyword in runtime and comptime code (noir-lang/noir#7096)
chore: Add benchmarking dashboard (noir-lang/noir#7068)
feat(experimental): try to infer lambda argument types inside calls (noir-lang/noir#7088)
feat(ssa): Add flag to DIE pass to be able to keep `store` instructions (noir-lang/noir#7106)
chore: Cookbook Onboard integration (noir-lang/noir#7044)
chore: lock to ubuntu 22.04 (noir-lang/noir#7098)
fix: Remove unused brillig functions (noir-lang/noir#7102)
chore(ssa): Use correct prefix when printing array values in global space (noir-lang/noir#7095)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Jan 25, 2025
…r-lang/noir#7185)

fix(LSP): correct signature for assert and assert_eq (noir-lang/noir#7184)
chore(experimental): Prevent enum panics by returning Options where possible instead of panicking (noir-lang/noir#7180)
feat(experimental): Construct enum variants in expressions (noir-lang/noir#7174)
feat: add `noir-inspector` (noir-lang/noir#7136)
fix: ensure canonical bits decomposition (noir-lang/noir#7168)
fix: Keep `inc_rc` for array inputs during preprocessing  (noir-lang/noir#7163)
fix(docs): Update broken links to EC lib (noir-lang/noir#7141)
feat: inline simple functions (noir-lang/noir#7160)
feat(ssa): Expand feature set of the Brillig constraint check (noir-lang/noir#7060)
fix(ssa): Resolve value before fetching from DFG in a couple cases (noir-lang/noir#7169)
fix: `Function::is_no_predicates` always returned false for brillig f… (noir-lang/noir#7167)
chore(refactor): Remove globals field on Ssa object and use only the shared globals graph (noir-lang/noir#7156)
chore: let `Function::inlined` take a `should_inline_call` function (noir-lang/noir#7149)
chore: add compile-time assertions on generic arguments of stdlib functions (noir-lang/noir#6981)
fix: LSP hover over function with `&mut self` (noir-lang/noir#7155)
feat(brillig): Set global memory size at program compile time (noir-lang/noir#7151)
feat: LSP autocomplete module declaration (noir-lang/noir#7154)
feat(ssa): Reuse constants from the globals graph when making constants in a function DFG (noir-lang/noir#7153)
feat: LSP chain inlay hints (noir-lang/noir#7152)
chore: turn on overflow checks in CI rust tests (noir-lang/noir#7145)
fix(ssa): Use post order when mapping instructions in loop invariant pass (noir-lang/noir#7140)
fix: preserve types when reading from calldata arrays (noir-lang/noir#7144)
feat: Resolve enums & prepare type system (noir-lang/noir#7115)
feat: `loop` must have at least one `break` (noir-lang/noir#7126)
feat: parse globals in SSA parser (noir-lang/noir#7112)
fix: allow calling trait impl method from struct if multiple impls exist (noir-lang/noir#7124)
fix: avoid creating unnecessary memory blocks (noir-lang/noir#7114)
chore: relax threshold for reporting regressions (noir-lang/noir#7130)
fix: proper cleanup when breaking from comptime loop on error (noir-lang/noir#7125)
fix: Prevent overlapping associated types impls (noir-lang/noir#7047)
feat: unconstrained optimizations for BoundedVec (noir-lang/noir#7119)
chore: mark libs good (noir-lang/noir#7123)
chore: remove comments for time/memory benchmarks (noir-lang/noir#7121)
fix: don't always use an exclusive lock in `nargo check` (noir-lang/noir#7120)
feat(ssa): Pass to preprocess functions (noir-lang/noir#7072)
chore: Formatting issues / minor errors in the docs (noir-lang/noir#7105)
fix: defunctionalize pass on the caller runtime to apply (noir-lang/noir#7100)
feat: Parser and formatter support for `enum`s (noir-lang/noir#7110)
feat(brillig): SSA globals code gen (noir-lang/noir#7021)
feat: `loop` keyword in runtime and comptime code (noir-lang/noir#7096)
chore: Add benchmarking dashboard (noir-lang/noir#7068)
feat(experimental): try to infer lambda argument types inside calls (noir-lang/noir#7088)
feat(ssa): Add flag to DIE pass to be able to keep `store` instructions (noir-lang/noir#7106)
chore: Cookbook Onboard integration (noir-lang/noir#7044)
chore: lock to ubuntu 22.04 (noir-lang/noir#7098)
fix: Remove unused brillig functions (noir-lang/noir#7102)
chore(ssa): Use correct prefix when printing array values in global space (noir-lang/noir#7095)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Jan 25, 2025
…7185)

fix(LSP): correct signature for assert and assert_eq (noir-lang/noir#7184)
chore(experimental): Prevent enum panics by returning Options where possible instead of panicking (noir-lang/noir#7180)
feat(experimental): Construct enum variants in expressions (noir-lang/noir#7174)
feat: add `noir-inspector` (noir-lang/noir#7136)
fix: ensure canonical bits decomposition (noir-lang/noir#7168)
fix: Keep `inc_rc` for array inputs during preprocessing  (noir-lang/noir#7163)
fix(docs): Update broken links to EC lib (noir-lang/noir#7141)
feat: inline simple functions (noir-lang/noir#7160)
feat(ssa): Expand feature set of the Brillig constraint check (noir-lang/noir#7060)
fix(ssa): Resolve value before fetching from DFG in a couple cases (noir-lang/noir#7169)
fix: `Function::is_no_predicates` always returned false for brillig f… (noir-lang/noir#7167)
chore(refactor): Remove globals field on Ssa object and use only the shared globals graph (noir-lang/noir#7156)
chore: let `Function::inlined` take a `should_inline_call` function (noir-lang/noir#7149)
chore: add compile-time assertions on generic arguments of stdlib functions (noir-lang/noir#6981)
fix: LSP hover over function with `&mut self` (noir-lang/noir#7155)
feat(brillig): Set global memory size at program compile time (noir-lang/noir#7151)
feat: LSP autocomplete module declaration (noir-lang/noir#7154)
feat(ssa): Reuse constants from the globals graph when making constants in a function DFG (noir-lang/noir#7153)
feat: LSP chain inlay hints (noir-lang/noir#7152)
chore: turn on overflow checks in CI rust tests (noir-lang/noir#7145)
fix(ssa): Use post order when mapping instructions in loop invariant pass (noir-lang/noir#7140)
fix: preserve types when reading from calldata arrays (noir-lang/noir#7144)
feat: Resolve enums & prepare type system (noir-lang/noir#7115)
feat: `loop` must have at least one `break` (noir-lang/noir#7126)
feat: parse globals in SSA parser (noir-lang/noir#7112)
fix: allow calling trait impl method from struct if multiple impls exist (noir-lang/noir#7124)
fix: avoid creating unnecessary memory blocks (noir-lang/noir#7114)
chore: relax threshold for reporting regressions (noir-lang/noir#7130)
fix: proper cleanup when breaking from comptime loop on error (noir-lang/noir#7125)
fix: Prevent overlapping associated types impls (noir-lang/noir#7047)
feat: unconstrained optimizations for BoundedVec (noir-lang/noir#7119)
chore: mark libs good (noir-lang/noir#7123)
chore: remove comments for time/memory benchmarks (noir-lang/noir#7121)
fix: don't always use an exclusive lock in `nargo check` (noir-lang/noir#7120)
feat(ssa): Pass to preprocess functions (noir-lang/noir#7072)
chore: Formatting issues / minor errors in the docs (noir-lang/noir#7105)
fix: defunctionalize pass on the caller runtime to apply (noir-lang/noir#7100)
feat: Parser and formatter support for `enum`s (noir-lang/noir#7110)
feat(brillig): SSA globals code gen (noir-lang/noir#7021)
feat: `loop` keyword in runtime and comptime code (noir-lang/noir#7096)
chore: Add benchmarking dashboard (noir-lang/noir#7068)
feat(experimental): try to infer lambda argument types inside calls (noir-lang/noir#7088)
feat(ssa): Add flag to DIE pass to be able to keep `store` instructions (noir-lang/noir#7106)
chore: Cookbook Onboard integration (noir-lang/noir#7044)
chore: lock to ubuntu 22.04 (noir-lang/noir#7098)
fix: Remove unused brillig functions (noir-lang/noir#7102)
chore(ssa): Use correct prefix when printing array values in global space (noir-lang/noir#7095)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Jan 26, 2025
…r-lang/noir#7185)

fix(LSP): correct signature for assert and assert_eq (noir-lang/noir#7184)
chore(experimental): Prevent enum panics by returning Options where possible instead of panicking (noir-lang/noir#7180)
feat(experimental): Construct enum variants in expressions (noir-lang/noir#7174)
feat: add `noir-inspector` (noir-lang/noir#7136)
fix: ensure canonical bits decomposition (noir-lang/noir#7168)
fix: Keep `inc_rc` for array inputs during preprocessing  (noir-lang/noir#7163)
fix(docs): Update broken links to EC lib (noir-lang/noir#7141)
feat: inline simple functions (noir-lang/noir#7160)
feat(ssa): Expand feature set of the Brillig constraint check (noir-lang/noir#7060)
fix(ssa): Resolve value before fetching from DFG in a couple cases (noir-lang/noir#7169)
fix: `Function::is_no_predicates` always returned false for brillig f… (noir-lang/noir#7167)
chore(refactor): Remove globals field on Ssa object and use only the shared globals graph (noir-lang/noir#7156)
chore: let `Function::inlined` take a `should_inline_call` function (noir-lang/noir#7149)
chore: add compile-time assertions on generic arguments of stdlib functions (noir-lang/noir#6981)
fix: LSP hover over function with `&mut self` (noir-lang/noir#7155)
feat(brillig): Set global memory size at program compile time (noir-lang/noir#7151)
feat: LSP autocomplete module declaration (noir-lang/noir#7154)
feat(ssa): Reuse constants from the globals graph when making constants in a function DFG (noir-lang/noir#7153)
feat: LSP chain inlay hints (noir-lang/noir#7152)
chore: turn on overflow checks in CI rust tests (noir-lang/noir#7145)
fix(ssa): Use post order when mapping instructions in loop invariant pass (noir-lang/noir#7140)
fix: preserve types when reading from calldata arrays (noir-lang/noir#7144)
feat: Resolve enums & prepare type system (noir-lang/noir#7115)
feat: `loop` must have at least one `break` (noir-lang/noir#7126)
feat: parse globals in SSA parser (noir-lang/noir#7112)
fix: allow calling trait impl method from struct if multiple impls exist (noir-lang/noir#7124)
fix: avoid creating unnecessary memory blocks (noir-lang/noir#7114)
chore: relax threshold for reporting regressions (noir-lang/noir#7130)
fix: proper cleanup when breaking from comptime loop on error (noir-lang/noir#7125)
fix: Prevent overlapping associated types impls (noir-lang/noir#7047)
feat: unconstrained optimizations for BoundedVec (noir-lang/noir#7119)
chore: mark libs good (noir-lang/noir#7123)
chore: remove comments for time/memory benchmarks (noir-lang/noir#7121)
fix: don't always use an exclusive lock in `nargo check` (noir-lang/noir#7120)
feat(ssa): Pass to preprocess functions (noir-lang/noir#7072)
chore: Formatting issues / minor errors in the docs (noir-lang/noir#7105)
fix: defunctionalize pass on the caller runtime to apply (noir-lang/noir#7100)
feat: Parser and formatter support for `enum`s (noir-lang/noir#7110)
feat(brillig): SSA globals code gen (noir-lang/noir#7021)
feat: `loop` keyword in runtime and comptime code (noir-lang/noir#7096)
chore: Add benchmarking dashboard (noir-lang/noir#7068)
feat(experimental): try to infer lambda argument types inside calls (noir-lang/noir#7088)
feat(ssa): Add flag to DIE pass to be able to keep `store` instructions (noir-lang/noir#7106)
chore: Cookbook Onboard integration (noir-lang/noir#7044)
chore: lock to ubuntu 22.04 (noir-lang/noir#7098)
fix: Remove unused brillig functions (noir-lang/noir#7102)
chore(ssa): Use correct prefix when printing array values in global space (noir-lang/noir#7095)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Jan 26, 2025
…7185)

fix(LSP): correct signature for assert and assert_eq (noir-lang/noir#7184)
chore(experimental): Prevent enum panics by returning Options where possible instead of panicking (noir-lang/noir#7180)
feat(experimental): Construct enum variants in expressions (noir-lang/noir#7174)
feat: add `noir-inspector` (noir-lang/noir#7136)
fix: ensure canonical bits decomposition (noir-lang/noir#7168)
fix: Keep `inc_rc` for array inputs during preprocessing  (noir-lang/noir#7163)
fix(docs): Update broken links to EC lib (noir-lang/noir#7141)
feat: inline simple functions (noir-lang/noir#7160)
feat(ssa): Expand feature set of the Brillig constraint check (noir-lang/noir#7060)
fix(ssa): Resolve value before fetching from DFG in a couple cases (noir-lang/noir#7169)
fix: `Function::is_no_predicates` always returned false for brillig f… (noir-lang/noir#7167)
chore(refactor): Remove globals field on Ssa object and use only the shared globals graph (noir-lang/noir#7156)
chore: let `Function::inlined` take a `should_inline_call` function (noir-lang/noir#7149)
chore: add compile-time assertions on generic arguments of stdlib functions (noir-lang/noir#6981)
fix: LSP hover over function with `&mut self` (noir-lang/noir#7155)
feat(brillig): Set global memory size at program compile time (noir-lang/noir#7151)
feat: LSP autocomplete module declaration (noir-lang/noir#7154)
feat(ssa): Reuse constants from the globals graph when making constants in a function DFG (noir-lang/noir#7153)
feat: LSP chain inlay hints (noir-lang/noir#7152)
chore: turn on overflow checks in CI rust tests (noir-lang/noir#7145)
fix(ssa): Use post order when mapping instructions in loop invariant pass (noir-lang/noir#7140)
fix: preserve types when reading from calldata arrays (noir-lang/noir#7144)
feat: Resolve enums & prepare type system (noir-lang/noir#7115)
feat: `loop` must have at least one `break` (noir-lang/noir#7126)
feat: parse globals in SSA parser (noir-lang/noir#7112)
fix: allow calling trait impl method from struct if multiple impls exist (noir-lang/noir#7124)
fix: avoid creating unnecessary memory blocks (noir-lang/noir#7114)
chore: relax threshold for reporting regressions (noir-lang/noir#7130)
fix: proper cleanup when breaking from comptime loop on error (noir-lang/noir#7125)
fix: Prevent overlapping associated types impls (noir-lang/noir#7047)
feat: unconstrained optimizations for BoundedVec (noir-lang/noir#7119)
chore: mark libs good (noir-lang/noir#7123)
chore: remove comments for time/memory benchmarks (noir-lang/noir#7121)
fix: don't always use an exclusive lock in `nargo check` (noir-lang/noir#7120)
feat(ssa): Pass to preprocess functions (noir-lang/noir#7072)
chore: Formatting issues / minor errors in the docs (noir-lang/noir#7105)
fix: defunctionalize pass on the caller runtime to apply (noir-lang/noir#7100)
feat: Parser and formatter support for `enum`s (noir-lang/noir#7110)
feat(brillig): SSA globals code gen (noir-lang/noir#7021)
feat: `loop` keyword in runtime and comptime code (noir-lang/noir#7096)
chore: Add benchmarking dashboard (noir-lang/noir#7068)
feat(experimental): try to infer lambda argument types inside calls (noir-lang/noir#7088)
feat(ssa): Add flag to DIE pass to be able to keep `store` instructions (noir-lang/noir#7106)
chore: Cookbook Onboard integration (noir-lang/noir#7044)
chore: lock to ubuntu 22.04 (noir-lang/noir#7098)
fix: Remove unused brillig functions (noir-lang/noir#7102)
chore(ssa): Use correct prefix when printing array values in global space (noir-lang/noir#7095)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Jan 27, 2025
…r-lang/noir#7185)

fix(LSP): correct signature for assert and assert_eq (noir-lang/noir#7184)
chore(experimental): Prevent enum panics by returning Options where possible instead of panicking (noir-lang/noir#7180)
feat(experimental): Construct enum variants in expressions (noir-lang/noir#7174)
feat: add `noir-inspector` (noir-lang/noir#7136)
fix: ensure canonical bits decomposition (noir-lang/noir#7168)
fix: Keep `inc_rc` for array inputs during preprocessing  (noir-lang/noir#7163)
fix(docs): Update broken links to EC lib (noir-lang/noir#7141)
feat: inline simple functions (noir-lang/noir#7160)
feat(ssa): Expand feature set of the Brillig constraint check (noir-lang/noir#7060)
fix(ssa): Resolve value before fetching from DFG in a couple cases (noir-lang/noir#7169)
fix: `Function::is_no_predicates` always returned false for brillig f… (noir-lang/noir#7167)
chore(refactor): Remove globals field on Ssa object and use only the shared globals graph (noir-lang/noir#7156)
chore: let `Function::inlined` take a `should_inline_call` function (noir-lang/noir#7149)
chore: add compile-time assertions on generic arguments of stdlib functions (noir-lang/noir#6981)
fix: LSP hover over function with `&mut self` (noir-lang/noir#7155)
feat(brillig): Set global memory size at program compile time (noir-lang/noir#7151)
feat: LSP autocomplete module declaration (noir-lang/noir#7154)
feat(ssa): Reuse constants from the globals graph when making constants in a function DFG (noir-lang/noir#7153)
feat: LSP chain inlay hints (noir-lang/noir#7152)
chore: turn on overflow checks in CI rust tests (noir-lang/noir#7145)
fix(ssa): Use post order when mapping instructions in loop invariant pass (noir-lang/noir#7140)
fix: preserve types when reading from calldata arrays (noir-lang/noir#7144)
feat: Resolve enums & prepare type system (noir-lang/noir#7115)
feat: `loop` must have at least one `break` (noir-lang/noir#7126)
feat: parse globals in SSA parser (noir-lang/noir#7112)
fix: allow calling trait impl method from struct if multiple impls exist (noir-lang/noir#7124)
fix: avoid creating unnecessary memory blocks (noir-lang/noir#7114)
chore: relax threshold for reporting regressions (noir-lang/noir#7130)
fix: proper cleanup when breaking from comptime loop on error (noir-lang/noir#7125)
fix: Prevent overlapping associated types impls (noir-lang/noir#7047)
feat: unconstrained optimizations for BoundedVec (noir-lang/noir#7119)
chore: mark libs good (noir-lang/noir#7123)
chore: remove comments for time/memory benchmarks (noir-lang/noir#7121)
fix: don't always use an exclusive lock in `nargo check` (noir-lang/noir#7120)
feat(ssa): Pass to preprocess functions (noir-lang/noir#7072)
chore: Formatting issues / minor errors in the docs (noir-lang/noir#7105)
fix: defunctionalize pass on the caller runtime to apply (noir-lang/noir#7100)
feat: Parser and formatter support for `enum`s (noir-lang/noir#7110)
feat(brillig): SSA globals code gen (noir-lang/noir#7021)
feat: `loop` keyword in runtime and comptime code (noir-lang/noir#7096)
chore: Add benchmarking dashboard (noir-lang/noir#7068)
feat(experimental): try to infer lambda argument types inside calls (noir-lang/noir#7088)
feat(ssa): Add flag to DIE pass to be able to keep `store` instructions (noir-lang/noir#7106)
chore: Cookbook Onboard integration (noir-lang/noir#7044)
chore: lock to ubuntu 22.04 (noir-lang/noir#7098)
fix: Remove unused brillig functions (noir-lang/noir#7102)
chore(ssa): Use correct prefix when printing array values in global space (noir-lang/noir#7095)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Jan 27, 2025
…7185)

fix(LSP): correct signature for assert and assert_eq (noir-lang/noir#7184)
chore(experimental): Prevent enum panics by returning Options where possible instead of panicking (noir-lang/noir#7180)
feat(experimental): Construct enum variants in expressions (noir-lang/noir#7174)
feat: add `noir-inspector` (noir-lang/noir#7136)
fix: ensure canonical bits decomposition (noir-lang/noir#7168)
fix: Keep `inc_rc` for array inputs during preprocessing  (noir-lang/noir#7163)
fix(docs): Update broken links to EC lib (noir-lang/noir#7141)
feat: inline simple functions (noir-lang/noir#7160)
feat(ssa): Expand feature set of the Brillig constraint check (noir-lang/noir#7060)
fix(ssa): Resolve value before fetching from DFG in a couple cases (noir-lang/noir#7169)
fix: `Function::is_no_predicates` always returned false for brillig f… (noir-lang/noir#7167)
chore(refactor): Remove globals field on Ssa object and use only the shared globals graph (noir-lang/noir#7156)
chore: let `Function::inlined` take a `should_inline_call` function (noir-lang/noir#7149)
chore: add compile-time assertions on generic arguments of stdlib functions (noir-lang/noir#6981)
fix: LSP hover over function with `&mut self` (noir-lang/noir#7155)
feat(brillig): Set global memory size at program compile time (noir-lang/noir#7151)
feat: LSP autocomplete module declaration (noir-lang/noir#7154)
feat(ssa): Reuse constants from the globals graph when making constants in a function DFG (noir-lang/noir#7153)
feat: LSP chain inlay hints (noir-lang/noir#7152)
chore: turn on overflow checks in CI rust tests (noir-lang/noir#7145)
fix(ssa): Use post order when mapping instructions in loop invariant pass (noir-lang/noir#7140)
fix: preserve types when reading from calldata arrays (noir-lang/noir#7144)
feat: Resolve enums & prepare type system (noir-lang/noir#7115)
feat: `loop` must have at least one `break` (noir-lang/noir#7126)
feat: parse globals in SSA parser (noir-lang/noir#7112)
fix: allow calling trait impl method from struct if multiple impls exist (noir-lang/noir#7124)
fix: avoid creating unnecessary memory blocks (noir-lang/noir#7114)
chore: relax threshold for reporting regressions (noir-lang/noir#7130)
fix: proper cleanup when breaking from comptime loop on error (noir-lang/noir#7125)
fix: Prevent overlapping associated types impls (noir-lang/noir#7047)
feat: unconstrained optimizations for BoundedVec (noir-lang/noir#7119)
chore: mark libs good (noir-lang/noir#7123)
chore: remove comments for time/memory benchmarks (noir-lang/noir#7121)
fix: don't always use an exclusive lock in `nargo check` (noir-lang/noir#7120)
feat(ssa): Pass to preprocess functions (noir-lang/noir#7072)
chore: Formatting issues / minor errors in the docs (noir-lang/noir#7105)
fix: defunctionalize pass on the caller runtime to apply (noir-lang/noir#7100)
feat: Parser and formatter support for `enum`s (noir-lang/noir#7110)
feat(brillig): SSA globals code gen (noir-lang/noir#7021)
feat: `loop` keyword in runtime and comptime code (noir-lang/noir#7096)
chore: Add benchmarking dashboard (noir-lang/noir#7068)
feat(experimental): try to infer lambda argument types inside calls (noir-lang/noir#7088)
feat(ssa): Add flag to DIE pass to be able to keep `store` instructions (noir-lang/noir#7106)
chore: Cookbook Onboard integration (noir-lang/noir#7044)
chore: lock to ubuntu 22.04 (noir-lang/noir#7098)
fix: Remove unused brillig functions (noir-lang/noir#7102)
chore(ssa): Use correct prefix when printing array values in global space (noir-lang/noir#7095)
TomAFrench added a commit to AztecProtocol/aztec-packages that referenced this pull request Jan 30, 2025
Automated pull of development from the
[noir](https://github.com/noir-lang/noir) programming language, a
dependency of Aztec.
BEGIN_COMMIT_OVERRIDE
chore: let `add_definition_location` take a Location
(noir-lang/noir#7185)
fix(LSP): correct signature for assert and assert_eq
(noir-lang/noir#7184)
chore(experimental): Prevent enum panics by returning Options where
possible instead of panicking
(noir-lang/noir#7180)
feat(experimental): Construct enum variants in expressions
(noir-lang/noir#7174)
feat: add `noir-inspector` (noir-lang/noir#7136)
fix: ensure canonical bits decomposition
(noir-lang/noir#7168)
fix: Keep `inc_rc` for array inputs during preprocessing
(noir-lang/noir#7163)
fix(docs): Update broken links to EC lib
(noir-lang/noir#7141)
feat: inline simple functions
(noir-lang/noir#7160)
feat(ssa): Expand feature set of the Brillig constraint check
(noir-lang/noir#7060)
fix(ssa): Resolve value before fetching from DFG in a couple cases
(noir-lang/noir#7169)
fix: `Function::is_no_predicates` always returned false for brillig f…
(noir-lang/noir#7167)
chore(refactor): Remove globals field on Ssa object and use only the
shared globals graph (noir-lang/noir#7156)
chore: let `Function::inlined` take a `should_inline_call` function
(noir-lang/noir#7149)
chore: add compile-time assertions on generic arguments of stdlib
functions (noir-lang/noir#6981)
fix: LSP hover over function with `&mut self`
(noir-lang/noir#7155)
feat(brillig): Set global memory size at program compile time
(noir-lang/noir#7151)
feat: LSP autocomplete module declaration
(noir-lang/noir#7154)
feat(ssa): Reuse constants from the globals graph when making constants
in a function DFG (noir-lang/noir#7153)
feat: LSP chain inlay hints
(noir-lang/noir#7152)
chore: turn on overflow checks in CI rust tests
(noir-lang/noir#7145)
fix(ssa): Use post order when mapping instructions in loop invariant
pass (noir-lang/noir#7140)
fix: preserve types when reading from calldata arrays
(noir-lang/noir#7144)
feat: Resolve enums & prepare type system
(noir-lang/noir#7115)
feat: `loop` must have at least one `break`
(noir-lang/noir#7126)
feat: parse globals in SSA parser
(noir-lang/noir#7112)
fix: allow calling trait impl method from struct if multiple impls exist
(noir-lang/noir#7124)
fix: avoid creating unnecessary memory blocks
(noir-lang/noir#7114)
chore: relax threshold for reporting regressions
(noir-lang/noir#7130)
fix: proper cleanup when breaking from comptime loop on error
(noir-lang/noir#7125)
fix: Prevent overlapping associated types impls
(noir-lang/noir#7047)
feat: unconstrained optimizations for BoundedVec
(noir-lang/noir#7119)
chore: mark libs good (noir-lang/noir#7123)
chore: remove comments for time/memory benchmarks
(noir-lang/noir#7121)
fix: don't always use an exclusive lock in `nargo check`
(noir-lang/noir#7120)
feat(ssa): Pass to preprocess functions
(noir-lang/noir#7072)
chore: Formatting issues / minor errors in the docs
(noir-lang/noir#7105)
fix: defunctionalize pass on the caller runtime to apply
(noir-lang/noir#7100)
feat: Parser and formatter support for `enum`s
(noir-lang/noir#7110)
feat(brillig): SSA globals code gen
(noir-lang/noir#7021)
feat: `loop` keyword in runtime and comptime code
(noir-lang/noir#7096)
chore: Add benchmarking dashboard
(noir-lang/noir#7068)
feat(experimental): try to infer lambda argument types inside calls
(noir-lang/noir#7088)
feat(ssa): Add flag to DIE pass to be able to keep `store` instructions
(noir-lang/noir#7106)
chore: Cookbook Onboard integration
(noir-lang/noir#7044)
chore: lock to ubuntu 22.04
(noir-lang/noir#7098)
fix: Remove unused brillig functions
(noir-lang/noir#7102)
chore(ssa): Use correct prefix when printing array values in global
space (noir-lang/noir#7095)
END_COMMIT_OVERRIDE

---------

Co-authored-by: Tom French <[email protected]>
Co-authored-by: Tom French <[email protected]>
Co-authored-by: aakoshh <[email protected]>
Co-authored-by: Akosh Farkash <[email protected]>
Co-authored-by: Maxim Vezenov <[email protected]>
AztecBot added a commit to AztecProtocol/barretenberg that referenced this pull request Jan 31, 2025
Automated pull of development from the
[noir](https://github.com/noir-lang/noir) programming language, a
dependency of Aztec.
BEGIN_COMMIT_OVERRIDE
chore: let `add_definition_location` take a Location
(noir-lang/noir#7185)
fix(LSP): correct signature for assert and assert_eq
(noir-lang/noir#7184)
chore(experimental): Prevent enum panics by returning Options where
possible instead of panicking
(noir-lang/noir#7180)
feat(experimental): Construct enum variants in expressions
(noir-lang/noir#7174)
feat: add `noir-inspector` (noir-lang/noir#7136)
fix: ensure canonical bits decomposition
(noir-lang/noir#7168)
fix: Keep `inc_rc` for array inputs during preprocessing
(noir-lang/noir#7163)
fix(docs): Update broken links to EC lib
(noir-lang/noir#7141)
feat: inline simple functions
(noir-lang/noir#7160)
feat(ssa): Expand feature set of the Brillig constraint check
(noir-lang/noir#7060)
fix(ssa): Resolve value before fetching from DFG in a couple cases
(noir-lang/noir#7169)
fix: `Function::is_no_predicates` always returned false for brillig f…
(noir-lang/noir#7167)
chore(refactor): Remove globals field on Ssa object and use only the
shared globals graph (noir-lang/noir#7156)
chore: let `Function::inlined` take a `should_inline_call` function
(noir-lang/noir#7149)
chore: add compile-time assertions on generic arguments of stdlib
functions (noir-lang/noir#6981)
fix: LSP hover over function with `&mut self`
(noir-lang/noir#7155)
feat(brillig): Set global memory size at program compile time
(noir-lang/noir#7151)
feat: LSP autocomplete module declaration
(noir-lang/noir#7154)
feat(ssa): Reuse constants from the globals graph when making constants
in a function DFG (noir-lang/noir#7153)
feat: LSP chain inlay hints
(noir-lang/noir#7152)
chore: turn on overflow checks in CI rust tests
(noir-lang/noir#7145)
fix(ssa): Use post order when mapping instructions in loop invariant
pass (noir-lang/noir#7140)
fix: preserve types when reading from calldata arrays
(noir-lang/noir#7144)
feat: Resolve enums & prepare type system
(noir-lang/noir#7115)
feat: `loop` must have at least one `break`
(noir-lang/noir#7126)
feat: parse globals in SSA parser
(noir-lang/noir#7112)
fix: allow calling trait impl method from struct if multiple impls exist
(noir-lang/noir#7124)
fix: avoid creating unnecessary memory blocks
(noir-lang/noir#7114)
chore: relax threshold for reporting regressions
(noir-lang/noir#7130)
fix: proper cleanup when breaking from comptime loop on error
(noir-lang/noir#7125)
fix: Prevent overlapping associated types impls
(noir-lang/noir#7047)
feat: unconstrained optimizations for BoundedVec
(noir-lang/noir#7119)
chore: mark libs good (noir-lang/noir#7123)
chore: remove comments for time/memory benchmarks
(noir-lang/noir#7121)
fix: don't always use an exclusive lock in `nargo check`
(noir-lang/noir#7120)
feat(ssa): Pass to preprocess functions
(noir-lang/noir#7072)
chore: Formatting issues / minor errors in the docs
(noir-lang/noir#7105)
fix: defunctionalize pass on the caller runtime to apply
(noir-lang/noir#7100)
feat: Parser and formatter support for `enum`s
(noir-lang/noir#7110)
feat(brillig): SSA globals code gen
(noir-lang/noir#7021)
feat: `loop` keyword in runtime and comptime code
(noir-lang/noir#7096)
chore: Add benchmarking dashboard
(noir-lang/noir#7068)
feat(experimental): try to infer lambda argument types inside calls
(noir-lang/noir#7088)
feat(ssa): Add flag to DIE pass to be able to keep `store` instructions
(noir-lang/noir#7106)
chore: Cookbook Onboard integration
(noir-lang/noir#7044)
chore: lock to ubuntu 22.04
(noir-lang/noir#7098)
fix: Remove unused brillig functions
(noir-lang/noir#7102)
chore(ssa): Use correct prefix when printing array values in global
space (noir-lang/noir#7095)
END_COMMIT_OVERRIDE

---------

Co-authored-by: Tom French <[email protected]>
Co-authored-by: Tom French <[email protected]>
Co-authored-by: aakoshh <[email protected]>
Co-authored-by: Akosh Farkash <[email protected]>
Co-authored-by: Maxim Vezenov <[email protected]>
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.

3 participants