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: unchecked math operations in SSA #7011

Merged
merged 28 commits into from
Jan 10, 2025
Merged

feat: unchecked math operations in SSA #7011

merged 28 commits into from
Jan 10, 2025

Conversation

asterite
Copy link
Collaborator

@asterite asterite commented Jan 9, 2025

Description

Problem

Resolves #6979

Summary

Additional Context

Documentation*

Check one:

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

PR Checklist*

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

@asterite asterite changed the title Ab/unchecked math feat: unchecked math operations in SSA Jan 9, 2025
Copy link
Contributor

github-actions bot commented Jan 9, 2025

Changes to Brillig bytecode sizes

Generated at commit: e9d6fbfcef46cd3f8b7b56205a9b524f9171d7f1, compared to commit: e71fcdfebd92c349d4b2f52d87ead2b18edfcd4a

🧾 Summary (10% most significant diffs)

Program Brillig opcodes (+/-) %
merkle_insert -70 ✅ -9.15%
pedersen_commitment -19 ✅ -9.22%
pedersen_hash -35 ✅ -9.54%
regression_6674_3 -54 ✅ -9.78%
loop_invariant_regression -15 ✅ -10.95%
higher_order_functions -9 ✅ -11.39%
signed_div -22 ✅ -12.36%
nested_array_dynamic -311 ✅ -12.67%
break_and_continue -10 ✅ -15.63%
brillig_nested_arrays -32 ✅ -17.58%

Full diff report 👇
Program Brillig opcodes (+/-) %
regression_4709 133,728 (-9) -0.01%
slice_dynamic_index 2,498 (-6) -0.24%
slice_regex 2,212 (-21) -0.94%
modulus 1,744 (-18) -1.02%
array_sort 290 (-3) -1.02%
slices 2,132 (-24) -1.11%
array_dedup_regression 256 (-3) -1.16%
databus_two_calldata 208 (-3) -1.42%
regression 924 (-15) -1.60%
strings 899 (-15) -1.64%
brillig_rc_regression_6123 167 (-3) -1.76%
array_dynamic 313 (-6) -1.88%
fold_complex_outputs 466 (-9) -1.89%
sha256_brillig_performance_regression 1,617 (-33) -2.00%
encrypted_log_regression 274 (-6) -2.14%
ecdsa_secp256k1 878 (-21) -2.34%
bigint 2,114 (-51) -2.36%
sha256_regression 6,676 (-162) -2.37%
signed_arithmetic 246 (-6) -2.38%
u128 2,688 (-66) -2.40%
poseidon_bn254_hash_width_3 5,281 (-132) -2.44%
poseidon_bn254_hash 5,281 (-132) -2.44%
sha2_byte 2,676 (-67) -2.44%
array_dynamic_blackbox_input 1,005 (-27) -2.62%
poseidon2 323 (-9) -2.71%
bench_2_to_17 316 (-9) -2.77%
regression_bignum 311 (-9) -2.81%
signed_cmp 101 (-3) -2.88%
sha256_var_padding_regression 4,904 (-147) -2.91%
array_to_slice 694 (-21) -2.94%
sha256_var_witness_const_regression 1,248 (-39) -3.03%
aes128_encrypt 409 (-13) -3.08%
fold_2_to_17 560 (-18) -3.11%
conditional_regression_short_circuit 1,207 (-39) -3.13%
ram_blowup_regression 927 (-30) -3.13%
fold_numeric_generic_poseidon 730 (-24) -3.18%
no_predicates_numeric_generic_poseidon 730 (-24) -3.18%
regression_4449 724 (-24) -3.21%
poseidonsponge_x5_254 4,109 (-139) -3.27%
regression_5252 4,440 (-151) -3.29%
sha256_var_size_regression 1,663 (-57) -3.31%
6 1,134 (-39) -3.32%
keccak256 2,086 (-72) -3.34%
sha256 2,284 (-81) -3.42%
struct_inputs 249 (-9) -3.49%
conditional_1 1,134 (-42) -3.57%
7_function 549 (-21) -3.68%
array_dynamic_nested_blackbox_input 855 (-37) -4.15%
blake3 138 (-6) -4.17%
7 138 (-6) -4.17%
brillig_blake2s 138 (-6) -4.17%
brillig_cow_regression 2,053 (-90) -4.20%
to_be_bytes 200 (-9) -4.31%
hash_to_field 133 (-6) -4.32%
6_array 375 (-17) -4.34%
brillig_cow_assign 132 (-6) -4.35%
to_bytes_consistent 129 (-6) -4.44%
hint_black_box 321 (-15) -4.46%
to_bits 192 (-9) -4.48%
brillig_cow 354 (-18) -4.84%
regression_4202 116 (-6) -4.92%
to_le_bytes 116 (-6) -4.92%
databus_composite_calldata 367 (-23) -5.90%
array_neq 95 (-6) -5.94%
array_eq 93 (-6) -6.06%
regression_6674_2 232 (-15) -6.07%
regression_6674_1 229 (-15) -6.15%
generics 88 (-6) -6.38%
wildcard_type 276 (-19) -6.44%
regression_struct_array_conditional 532 (-38) -6.67%
side_effects_constrain_array 120 (-9) -6.98%
tuple_inputs 338 (-28) -7.65%
global_consts 209 (-18) -7.93%
slice_loop 244 (-22) -8.27%
nested_array_in_slice 1,130 (-102) -8.28%
uhashmap 12,711 (-1,173) -8.45%
simple_shield 822 (-77) -8.57%
brillig_pedersen 508 (-48) -8.63%
pedersen_check 508 (-48) -8.63%
references 126 (-12) -8.70%
hashmap 19,778 (-1,912) -8.82%
merkle_insert 695 (-70) -9.15%
pedersen_commitment 187 (-19) -9.22%
pedersen_hash 332 (-35) -9.54%
regression_6674_3 498 (-54) -9.78%
loop_invariant_regression 122 (-15) -10.95%
higher_order_functions 70 (-9) -11.39%
signed_div 156 (-22) -12.36%
nested_array_dynamic 2,143 (-311) -12.67%
break_and_continue 54 (-10) -15.63%
brillig_nested_arrays 150 (-32) -17.58%

Copy link
Contributor

github-actions bot commented Jan 9, 2025

Changes to number of Brillig opcodes executed

Generated at commit: e9d6fbfcef46cd3f8b7b56205a9b524f9171d7f1, compared to commit: e71fcdfebd92c349d4b2f52d87ead2b18edfcd4a

🧾 Summary (10% most significant diffs)

Program Brillig opcodes (+/-) %
pedersen_hash -44 ✅ -8.37%
wildcard_type -40 ✅ -8.49%
hashmap -5,450 ✅ -10.09%
regression_6674_3 -166 ✅ -10.63%
higher_order_functions -12 ✅ -10.81%
regression_4709 -132,612 ✅ -11.08%
brillig_nested_arrays -20 ✅ -12.90%
references -30 ✅ -13.64%
signed_div -180 ✅ -13.91%
loop_invariant_regression -176 ✅ -15.12%

Full diff report 👇
Program Brillig opcodes (+/-) %
slice_dynamic_index 4,654 (-10) -0.21%
array_sort 517 (-6) -1.15%
slice_regex 3,434 (-40) -1.15%
slices 3,291 (-44) -1.32%
brillig_rc_regression_6123 286 (-4) -1.38%
array_dedup_regression 667 (-10) -1.48%
databus_two_calldata 393 (-6) -1.50%
u128 24,363 (-468) -1.88%
signed_arithmetic 201 (-4) -1.95%
array_dynamic 488 (-10) -2.01%
array_to_slice 1,629 (-38) -2.28%
signed_cmp 79 (-2) -2.47%
databus_composite_calldata 601 (-16) -2.59%
encrypted_log_regression 884 (-24) -2.64%
sha2_byte 44,557 (-1,320) -2.88%
poseidon2 675 (-20) -2.88%
regression_bignum 485 (-16) -3.19%
bench_2_to_17 570,234 (-19,604) -3.32%
fold_2_to_17 1,056,631 (-37,288) -3.41%
regression_struct_array_conditional 1,463 (-52) -3.43%
fold_numeric_generic_poseidon 4,771 (-170) -3.44%
no_predicates_numeric_generic_poseidon 4,771 (-170) -3.44%
hash_to_field 876 (-32) -3.52%
struct_inputs 546 (-20) -3.53%
brillig_cow_assign 513 (-20) -3.75%
sha256_brillig_performance_regression 21,954 (-860) -3.77%
regression_4202 203 (-8) -3.79%
ecdsa_secp256k1 6,284 (-256) -3.91%
fold_complex_outputs 732 (-30) -3.94%
array_dynamic_blackbox_input 17,473 (-736) -4.04%
strings 1,693 (-74) -4.19%
sha256_var_padding_regression 196,664 (-8,752) -4.26%
aes128_encrypt 2,868 (-128) -4.27%
sha256_regression 111,505 (-5,168) -4.43%
regression_4449 191,830 (-9,024) -4.49%
conditional_regression_short_circuit 6,710 (-320) -4.55%
array_dynamic_nested_blackbox_input 4,105 (-196) -4.56%
6 6,632 (-320) -4.60%
generics 124 (-6) -4.62%
sha256_var_witness_const_regression 6,267 (-304) -4.63%
uhashmap 137,696 (-6,962) -4.81%
sha256 13,193 (-672) -4.85%
slice_loop 893 (-46) -4.90%
sha256_var_size_regression 15,503 (-808) -4.95%
array_neq 1,188 (-64) -5.11%
array_eq 1,186 (-64) -5.12%
regression 2,666 (-144) -5.12%
ram_blowup_regression 683,266 (-37,772) -5.24%
brillig_cow_regression 454,764 (-25,170) -5.24%
brillig_cow 1,080 (-60) -5.26%
conditional_1 4,949 (-276) -5.28%
7_function 2,209 (-124) -5.32%
regression_6674_2 775 (-44) -5.37%
to_le_bytes 1,090 (-62) -5.38%
regression_6674_1 772 (-44) -5.39%
to_be_bytes 2,092 (-124) -5.60%
keccak256 30,618 (-1,856) -5.72%
7 1,042 (-64) -5.79%
blake3 1,042 (-64) -5.79%
brillig_blake2s 1,042 (-64) -5.79%
modulus 17,964 (-1,208) -6.30%
poseidonsponge_x5_254 171,765 (-11,880) -6.47%
poseidon_bn254_hash 151,885 (-10,558) -6.50%
poseidon_bn254_hash_width_3 151,885 (-10,558) -6.50%
regression_5252 855,406 (-59,580) -6.51%
to_bits 574 (-40) -6.51%
tuple_inputs 591 (-42) -6.64%
nested_array_in_slice 1,460 (-104) -6.65%
hint_black_box 667 (-50) -6.97%
side_effects_constrain_array 80 (-6) -6.98%
6_array 1,514 (-117) -7.17%
merkle_insert 3,493 (-276) -7.32%
simple_shield 2,508 (-208) -7.66%
global_consts 1,637 (-136) -7.67%
break_and_continue 104 (-9) -7.96%
nested_array_dynamic 3,142 (-275) -8.05%
pedersen_commitment 226 (-20) -8.13%
brillig_pedersen 718 (-64) -8.18%
pedersen_check 718 (-64) -8.18%
to_bytes_consistent 692 (-62) -8.22%
pedersen_hash 482 (-44) -8.37%
wildcard_type 431 (-40) -8.49%
hashmap 48,585 (-5,450) -10.09%
regression_6674_3 1,395 (-166) -10.63%
higher_order_functions 99 (-12) -10.81%
regression_4709 1,064,028 (-132,612) -11.08%
brillig_nested_arrays 135 (-20) -12.90%
references 190 (-30) -13.64%
signed_div 1,114 (-180) -13.91%
loop_invariant_regression 988 (-176) -15.12%

Copy link
Contributor

github-actions bot commented Jan 9, 2025

Changes to circuit sizes

Generated at commit: e9d6fbfcef46cd3f8b7b56205a9b524f9171d7f1, compared to commit: e71fcdfebd92c349d4b2f52d87ead2b18edfcd4a

🧾 Summary (10% most significant diffs)

Program ACIR opcodes (+/-) % Circuit size (+/-) %
sha256_var_size_regression -562 ✅ -5.18% -1,883 ✅ -2.90%
conditional_1 -466 ✅ -13.44% -682 ✅ -6.14%
hashmap -13,407 ✅ -26.64% -15,817 ✅ -13.82%
debug_logs -6 ✅ -13.04% -54 ✅ -73.97%

Full diff report 👇
Program ACIR opcodes (+/-) % Circuit size (+/-) %
ram_blowup_regression 148,436 (+7,424) +5.26% 650,939 (+7,424) +1.15%
hash_to_field 484 (+29) +6.37% 3,519 (+29) +0.83%
bigint 1,062 (+27) +2.61% 8,444 (+28) +0.33%
regression 293 (-3) -1.01% 3,828 (-1) -0.03%
conditional_regression_short_circuit 370 (-3) -0.80% 11,142 (-4) -0.04%
regression_mem_op_predicate 45 (-2) -4.26% 3,568 (-2) -0.06%
regression_6834 31 (-2) -6.06% 2,851 (-2) -0.07%
array_if_cond_simple 102 (-2) -1.92% 3,125 (-3) -0.10%
array_dynamic_nested_blackbox_input 245 (-6) -2.39% 7,304 (-9) -0.12%
conditional_2 19 (-3) -13.64% 2,778 (-4) -0.14%
array_dynamic 102 (-6) -5.56% 3,720 (-6) -0.16%
conditional_regression_661 23 (-4) -14.81% 2,791 (-5) -0.18%
u128 486 (-10) -2.02% 4,445 (-8) -0.18%
signed_arithmetic 184 (-4) -2.13% 2,931 (-6) -0.20%
regression_3607 38 (-4) -9.52% 2,799 (-6) -0.21%
databus_composite_calldata 139 (-4) -2.80% 3,131 (-7) -0.22%
regression_struct_array_conditional 66 (-9) -12.00% 3,196 (-12) -0.37%
sha256 1,460 (-81) -5.26% 24,607 (-110) -0.45%
sha256_var_witness_const_regression 1,098 (-81) -6.87% 16,500 (-110) -0.66%
slice_dynamic_index 963 (-39) -3.89% 6,354 (-51) -0.80%
signed_cmp 63 (-2) -3.08% 231 (-2) -0.86%
nested_array_dynamic 3,353 (-93) -2.70% 12,996 (-136) -1.04%
nested_array_in_slice 959 (-44) -4.39% 5,555 (-65) -1.16%
slices 715 (-41) -5.42% 3,816 (-90) -2.30%
sha256_regression 22,386 (-2,627) -10.50% 180,430 (-5,113) -2.76%
sha256_var_size_regression 10,285 (-562) -5.18% 63,056 (-1,883) -2.90%
conditional_1 3,001 (-466) -13.44% 10,430 (-682) -6.14%
hashmap 36,922 (-13,407) -26.64% 98,602 (-15,817) -13.82%
debug_logs 40 (-6) -13.04% 19 (-54) -73.97%

Copy link
Contributor

github-actions bot commented Jan 9, 2025

Execution Memory Report

Program Peak Memory %
keccak256 74.67M 0%
workspace 123.83M 0%
regression_4709 316.00M 0%
ram_blowup_regression 512.61M 0%
rollup-base-public 479.46M -1%
rollup-base-private 325.84M -1%
private-kernel-tail 180.42M 0%
private-kernel-reset 245.32M -2%
private-kernel-inner 208.68M -1%

Copy link
Contributor

github-actions bot commented Jan 9, 2025

Compilation Memory Report

Program Peak Memory %
keccak256 78.12M 0%
workspace 123.89M 0%
regression_4709 422.98M 0%
ram_blowup_regression 1.58G 0%
rollup-base-public 4.85G 0%
rollup-base-private 1.26G 0%
private-kernel-tail 207.09M 0%
private-kernel-reset 669.10M -9%
private-kernel-inner 294.32M 0%

Copy link
Contributor

github-actions bot commented Jan 9, 2025

Execution Report

Program Execution Time %
sha256_regression 0.051s -8%
regression_4709 0.001s 0%
ram_blowup_regression 0.636s 8%
rollup-base-public 1.236s -1%
rollup-base-private 0.460s -3%
private-kernel-tail 0.019s -10%

Copy link
Contributor

github-actions bot commented Jan 9, 2025

Compilation Report

Program Compilation Time %
sha256_regression 1.260s -5%
regression_4709 0.787s -2%
ram_blowup_regression 18.120s 0%
rollup-base-public 40.820s 2%
rollup-base-private 13.060s 5%
private-kernel-tail 0.996s 2%

@asterite
Copy link
Collaborator Author

asterite commented Jan 9, 2025

I'm taking a look at why regression_struct_array_conditional regressed. I think there should be no regressions in this PR.

@asterite
Copy link
Collaborator Author

asterite commented Jan 9, 2025

I couldn't understand why array_dynamic_nested_blackbox_input regresses, or why regression_struct_array_conditional executes more brillig opcodes (the only difference in SSA for this last one is some add changed to be `unchecked_add).

I left a lot of TODO: should this be unchecked? throughout the code so we could analyze each math operation and decide (I don't think I can figure it out for all of them alone).

@TomAFrench
Copy link
Member

I'm also a little concerned about some of these failures in the external repos. I'm not clear why removing the overflow check would cause issues like that.

@asterite
Copy link
Collaborator Author

asterite commented Jan 9, 2025

I'm also a little concerned about some of these failures in the external repos. I'm not clear why removing the overflow check would cause issues like that.

It seems it's the same error you got in #7010 so maybe CI in Aztec-Packages is broken.

@TomAFrench
Copy link
Member

Ah yeah, the protocol circuits team have updated the circuits but not the inputs which is why execution is failing.

@TomAFrench TomAFrench marked this pull request as ready for review January 10, 2025 13:00
@TomAFrench TomAFrench marked this pull request as draft January 10, 2025 13:00
@asterite
Copy link
Collaborator Author

I wonder if for field operations it makes sense to use unchecked: true

I just checked and it at least doesn't make a lot of difference in the SSA tests, so for now using unchecked: true for fields is probably fine.

@TomAFrench
Copy link
Member

why is this unchecked_mul over fields if they can't overflow?

I think mul would be more confusing as if it's sprinkled in amongst unchecked_mul it gives the impression that we're checking for if we overflow the field modulus, etc.

Copy link
Member

@TomAFrench TomAFrench left a comment

Choose a reason for hiding this comment

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

LGTM

@asterite
Copy link
Collaborator Author

I think mul would be more confusing as if it's sprinkled in amongst unchecked_mul it gives the impression that we're checking for if we overflow the field modulus, etc.

I'll make a change in this PR soon then 👍

@asterite
Copy link
Collaborator Author

Cool, I moved the check that checks that binary operands have the same type to when an instruction is created, right before inserting it, and it triggers some bugs in noir-bignum, and I guess noir-rsa too. I'll try to fix those here, it's probably an easy thing to fix.

@asterite asterite marked this pull request as ready for review January 10, 2025 15:48
@asterite asterite enabled auto-merge January 10, 2025 17:17
@asterite asterite added this pull request to the merge queue Jan 10, 2025
Merged via the queue into master with commit f6ed6aa Jan 10, 2025
83 of 87 checks passed
@asterite asterite deleted the ab/unchecked-math branch January 10, 2025 17:52
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Jan 10, 2025
chore: delete docs for versions which aren't used (noir-lang/noir#7020)
feat!: Disable mocks in `execute` (noir-lang/noir#6869)
chore(docs): backport 1.0.0-beta.0 doc fixes (noir-lang/noir#7014)
feat(cli): Add CLI option to filter by contract function name (noir-lang/noir#7018)
chore: Add more Field use info (noir-lang/noir#7019)
fix: let static_assert fail with the provided message (noir-lang/noir#7005)
chore: mark `aztec-nr` as expected to compile (noir-lang/noir#7015)
chore: clarity fix in docs (noir-lang/noir#7016)
fix: require generic trait impls to be in scope to call them (noir-lang/noir#6913)
feat!: require trait primitive functions/calls to have their trait in scope (noir-lang/noir#6901)
feat(lsp): use trait method docs for trait impl method docs on hover (noir-lang/noir#7003)
chore: turn on averaging for protocol circuits metrics in CI (noir-lang/noir#6999)
feat(comptime): Implement to_be_bits and to_le_bits in the interpreter (noir-lang/noir#7008)
chore: Add short circuit in ssa-gen for known if conditions (noir-lang/noir#7007)
chore: Only resolved globals monomorphization (noir-lang/noir#7006)
chore: Remove resolve_is_unconstrained pass (noir-lang/noir#7004)
chore: require safety doc comment for unsafe instead of `//@safety` (noir-lang/noir#6992)
fix: Reproduce and fix bytecode blowup (noir-lang/noir#6972)
chore: mark casts as able to be deduplicated (noir-lang/noir#6996)
fix: return trait impl method as FuncId if there's only one (noir-lang/noir#6989)
chore(ci): fail properly in `external-repo-checks` (noir-lang/noir#6988)
fix: allow multiple trait impls for the same trait as long as one is in scope (noir-lang/noir#6987)
chore: Use DFG in SSA printer (noir-lang/noir#6986)
chore!: Reserve `enum` and `match` keywords (noir-lang/noir#6961)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Jan 10, 2025
chore: delete docs for versions which aren't used (noir-lang/noir#7020)
feat!: Disable mocks in `execute` (noir-lang/noir#6869)
chore(docs): backport 1.0.0-beta.0 doc fixes (noir-lang/noir#7014)
feat(cli): Add CLI option to filter by contract function name (noir-lang/noir#7018)
chore: Add more Field use info (noir-lang/noir#7019)
fix: let static_assert fail with the provided message (noir-lang/noir#7005)
chore: mark `aztec-nr` as expected to compile (noir-lang/noir#7015)
chore: clarity fix in docs (noir-lang/noir#7016)
fix: require generic trait impls to be in scope to call them (noir-lang/noir#6913)
feat!: require trait primitive functions/calls to have their trait in scope (noir-lang/noir#6901)
feat(lsp): use trait method docs for trait impl method docs on hover (noir-lang/noir#7003)
chore: turn on averaging for protocol circuits metrics in CI (noir-lang/noir#6999)
feat(comptime): Implement to_be_bits and to_le_bits in the interpreter (noir-lang/noir#7008)
chore: Add short circuit in ssa-gen for known if conditions (noir-lang/noir#7007)
chore: Only resolved globals monomorphization (noir-lang/noir#7006)
chore: Remove resolve_is_unconstrained pass (noir-lang/noir#7004)
chore: require safety doc comment for unsafe instead of `//@safety` (noir-lang/noir#6992)
fix: Reproduce and fix bytecode blowup (noir-lang/noir#6972)
chore: mark casts as able to be deduplicated (noir-lang/noir#6996)
fix: return trait impl method as FuncId if there's only one (noir-lang/noir#6989)
chore(ci): fail properly in `external-repo-checks` (noir-lang/noir#6988)
fix: allow multiple trait impls for the same trait as long as one is in scope (noir-lang/noir#6987)
chore: Use DFG in SSA printer (noir-lang/noir#6986)
chore!: Reserve `enum` and `match` keywords (noir-lang/noir#6961)
TomAFrench added a commit that referenced this pull request Jan 10, 2025
* master:
  chore: simplify a couple of enum variants (#7025)
  chore: disallow inserting ACIR-only instructions into brillig functions (#7017)
  feat: unchecked math operations in SSA (#7011)
  chore: delete docs for versions which aren't used (#7020)
  feat!: Disable mocks in `execute` (#6869)
  chore(docs): backport 1.0.0-beta.0 doc fixes (#7014)
  feat(cli): Add CLI option to filter by contract function name (#7018)
  chore: Add more Field use info (#7019)
  fix: let static_assert fail with the provided message (#7005)
  chore: mark `aztec-nr` as expected to compile (#7015)
  chore: clarity fix in docs (#7016)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Jan 11, 2025
…ang/noir#6985)

feat!: disallow calling unconstrained functions outside of `unsafe` blocks and passing unconstrained functions in place of constrained functions (noir-lang/noir#6938)
chore: simplify a couple of enum variants (noir-lang/noir#7025)
chore: disallow inserting ACIR-only instructions into brillig functions (noir-lang/noir#7017)
feat: unchecked math operations in SSA (noir-lang/noir#7011)
chore: delete docs for versions which aren't used (noir-lang/noir#7020)
feat!: Disable mocks in `execute` (noir-lang/noir#6869)
chore(docs): backport 1.0.0-beta.0 doc fixes (noir-lang/noir#7014)
feat(cli): Add CLI option to filter by contract function name (noir-lang/noir#7018)
chore: Add more Field use info (noir-lang/noir#7019)
fix: let static_assert fail with the provided message (noir-lang/noir#7005)
chore: mark `aztec-nr` as expected to compile (noir-lang/noir#7015)
chore: clarity fix in docs (noir-lang/noir#7016)
fix: require generic trait impls to be in scope to call them (noir-lang/noir#6913)
feat!: require trait primitive functions/calls to have their trait in scope (noir-lang/noir#6901)
feat(lsp): use trait method docs for trait impl method docs on hover (noir-lang/noir#7003)
chore: turn on averaging for protocol circuits metrics in CI (noir-lang/noir#6999)
feat(comptime): Implement to_be_bits and to_le_bits in the interpreter (noir-lang/noir#7008)
chore: Add short circuit in ssa-gen for known if conditions (noir-lang/noir#7007)
chore: Only resolved globals monomorphization (noir-lang/noir#7006)
chore: Remove resolve_is_unconstrained pass (noir-lang/noir#7004)
chore: require safety doc comment for unsafe instead of `//@safety` (noir-lang/noir#6992)
fix: Reproduce and fix bytecode blowup (noir-lang/noir#6972)
chore: mark casts as able to be deduplicated (noir-lang/noir#6996)
fix: return trait impl method as FuncId if there's only one (noir-lang/noir#6989)
chore(ci): fail properly in `external-repo-checks` (noir-lang/noir#6988)
fix: allow multiple trait impls for the same trait as long as one is in scope (noir-lang/noir#6987)
chore: Use DFG in SSA printer (noir-lang/noir#6986)
chore!: Reserve `enum` and `match` keywords (noir-lang/noir#6961)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Jan 11, 2025
feat!: disallow calling unconstrained functions outside of `unsafe` blocks and passing unconstrained functions in place of constrained functions (noir-lang/noir#6938)
chore: simplify a couple of enum variants (noir-lang/noir#7025)
chore: disallow inserting ACIR-only instructions into brillig functions (noir-lang/noir#7017)
feat: unchecked math operations in SSA (noir-lang/noir#7011)
chore: delete docs for versions which aren't used (noir-lang/noir#7020)
feat!: Disable mocks in `execute` (noir-lang/noir#6869)
chore(docs): backport 1.0.0-beta.0 doc fixes (noir-lang/noir#7014)
feat(cli): Add CLI option to filter by contract function name (noir-lang/noir#7018)
chore: Add more Field use info (noir-lang/noir#7019)
fix: let static_assert fail with the provided message (noir-lang/noir#7005)
chore: mark `aztec-nr` as expected to compile (noir-lang/noir#7015)
chore: clarity fix in docs (noir-lang/noir#7016)
fix: require generic trait impls to be in scope to call them (noir-lang/noir#6913)
feat!: require trait primitive functions/calls to have their trait in scope (noir-lang/noir#6901)
feat(lsp): use trait method docs for trait impl method docs on hover (noir-lang/noir#7003)
chore: turn on averaging for protocol circuits metrics in CI (noir-lang/noir#6999)
feat(comptime): Implement to_be_bits and to_le_bits in the interpreter (noir-lang/noir#7008)
chore: Add short circuit in ssa-gen for known if conditions (noir-lang/noir#7007)
chore: Only resolved globals monomorphization (noir-lang/noir#7006)
chore: Remove resolve_is_unconstrained pass (noir-lang/noir#7004)
chore: require safety doc comment for unsafe instead of `//@safety` (noir-lang/noir#6992)
fix: Reproduce and fix bytecode blowup (noir-lang/noir#6972)
chore: mark casts as able to be deduplicated (noir-lang/noir#6996)
fix: return trait impl method as FuncId if there's only one (noir-lang/noir#6989)
chore(ci): fail properly in `external-repo-checks` (noir-lang/noir#6988)
fix: allow multiple trait impls for the same trait as long as one is in scope (noir-lang/noir#6987)
chore: Use DFG in SSA printer (noir-lang/noir#6986)
chore!: Reserve `enum` and `match` keywords (noir-lang/noir#6961)
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.

Separate overflow checks from arithmetic operations in SSA
3 participants