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

chore: aggregate with short scalars in UH Recursion #11478

Merged
merged 18 commits into from
Feb 6, 2025

Conversation

iakovenkos
Copy link
Contributor

@iakovenkos iakovenkos commented Jan 24, 2025

Take advantage of short challenges to create less gates while aggregating pairing points.

Fixed several short scalar issues and re-used bn254_endo_batch_mul(...) to define scalar mul operator in relevant contexts.

UH Recursive Verifier finalized num gates

Before: 866732
After: 729534

P0 += other.P0 * recursion_separator;
P1 += other.P1 * recursion_separator;
} else {
typename Curve::Group point_to_aggregate = other.P0.short_scalar_mul(recursion_separator, 128);
Copy link
Contributor Author

@iakovenkos iakovenkos Jan 24, 2025

Choose a reason for hiding this comment

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

does not look pretty, but it's much more efficient. can't use batch_mul with short scalars here because it's not handling edge cases (e.g. when P0 = other.P0). multiplying by scalar and adding is safe though and + is cheap in terms of gates

@iakovenkos iakovenkos marked this pull request as ready for review January 24, 2025 15:02
@iakovenkos iakovenkos marked this pull request as draft January 26, 2025 01:02
@iakovenkos iakovenkos marked this pull request as ready for review January 26, 2025 01:28
@iakovenkos iakovenkos self-assigned this Jan 30, 2025
@iakovenkos iakovenkos marked this pull request as draft February 1, 2025 10:10
@iakovenkos iakovenkos marked this pull request as ready for review February 1, 2025 12:43
@@ -525,7 +526,10 @@ template <class Builder, class Fq, class Fr, class NativeGroup> class element {
num_fives = num_points / 5;
num_sixes = 0;
// size-6 table is expensive and only benefits us if creating them reduces the number of total tables
if (num_fives * 5 == (num_points - 1)) {
if (num_points == 1) {
Copy link
Contributor Author

@iakovenkos iakovenkos Feb 1, 2025

Choose a reason for hiding this comment

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

Handle the case of a single point to re-use this function in the * operator and in scalar_mul method

Probably there are other edge cases

for (const auto& bit : naf) {
// Check that the tag is propagated to bits
EXPECT_EQ(bit.get_origin_tag(), submitted_value_origin_tag);
std::vector<size_t> bit_lengths = { 254, 128 };
Copy link
Contributor Author

@iakovenkos iakovenkos Feb 1, 2025

Choose a reason for hiding this comment

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

do we need any other lengths? maybe smth like 136?

Copy link
Contributor

Choose a reason for hiding this comment

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

I don't think 136 makes sense here

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I expanded the test range anyway

@@ -576,9 +576,23 @@ std::vector<bool_t<C>> element<C, Fq, Fr, G>::compute_naf(const Fr& scalar, cons
}
return std::make_pair(positive_accumulator, negative_accumulator);
};
const size_t midpoint = num_rounds - Fr::NUM_LIMB_BITS * 2;
Copy link
Contributor Author

Choose a reason for hiding this comment

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

although it accepts the length as an arg, it wasn't used to determine the midpoint

@iakovenkos iakovenkos requested a review from Rumata888 February 3, 2025 09:18
void aggregate(aggregation_state const& other, typename Curve::ScalarField recursion_separator)
{
P0 += other.P0 * recursion_separator;
Copy link
Contributor Author

Choose a reason for hiding this comment

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

this costs >140K per aggregate call

} else {
// Save gates using short scalars. We don't apply `bn254_endo_batch_mul` to the vector {1,
// recursion_separator} directly to avoid edge cases.
typename Curve::Group point_to_aggregate = other.P0.template scalar_mul<128>(recursion_separator);
Copy link
Contributor Author

Choose a reason for hiding this comment

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

this costs ~ 72K per aggregate call

Copy link
Contributor

@Rumata888 Rumata888 left a comment

Choose a reason for hiding this comment

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

I think we need to test every bitlength

for (size_t i = 0; i < num_repetitions; i++) {
fr scalar_val = fr::random_element();
if (max_num_bits == 128) {
uint256_t scalar_raw = fr::random_element();
Copy link
Contributor

Choose a reason for hiding this comment

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

You can get a random uint128 from the random engine

Copy link
Contributor Author

Choose a reason for hiding this comment

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

switched to taking uint256_t modulo 256-length

for (const auto& bit : naf) {
// Check that the tag is propagated to bits
EXPECT_EQ(bit.get_origin_tag(), submitted_value_origin_tag);
std::vector<size_t> bit_lengths = { 254, 128 };
Copy link
Contributor

Choose a reason for hiding this comment

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

I don't think 136 makes sense here

P.set_origin_tag(submitted_value_origin_tag);

std::cerr << "gates before mul " << builder.get_estimated_num_finalized_gates() << std::endl;
element_ct c = P.template scalar_mul<128>(x);
Copy link
Contributor

Choose a reason for hiding this comment

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

You can check the number of gates

Copy link
Contributor

Choose a reason for hiding this comment

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

And since you've created the arbitrary size scalar mul, could you create a test for every number of bits?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

added the check
added the tests for even numbers of bits + assert statements in compute nafs and bn254_endo_batch_mul. I don't see why there was an assertion on num bits >= 128. I'll add more tests for bn254_endo_batch_mul in a follow-up, maybe something fails when there are more small points.

scalar_raw.data[3] = 0ULL;
fr scalar = fr(scalar_raw);
// Add skew
if (uint256_t(scalar).get_bit(0)) {
Copy link
Contributor

Choose a reason for hiding this comment

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

What happens without the skew?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I think it's an artifact of some edge case testing, removed it.

Copy link
Contributor

@Rumata888 Rumata888 left a comment

Choose a reason for hiding this comment

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

LGTM

@iakovenkos iakovenkos merged commit a6fcdb0 into master Feb 6, 2025
25 checks passed
@iakovenkos iakovenkos deleted the si/short-scalars-aggregation branch February 6, 2025 16:19
sklppy88 pushed a commit that referenced this pull request Feb 10, 2025
🤖 I have created a release *beep* *boop*
---


<details><summary>aztec-package: 0.76.0</summary>

##
[0.76.0](aztec-package-v0.75.0...aztec-package-v0.76.0)
(2025-02-10)


### Features

* **spartan:** Blob sink in spartan
([#11307](#11307))
([d8e5bcc](d8e5bcc))


### Miscellaneous

* Check versioning
([#11611](#11611))
([b33f1da](b33f1da))
* **p2p:** Remove min peers option
([#11789](#11789))
([cfb6797](cfb6797))
</details>

<details><summary>barretenberg.js: 0.76.0</summary>

##
[0.76.0](barretenberg.js-v0.75.0...barretenberg.js-v0.76.0)
(2025-02-10)


### Bug Fixes

* **bb.js:** Make wasm imports bundleable
([#11812](#11812))
([1af69a9](1af69a9))
* Remove unnecessary console.log
([#11810](#11810))
([8a320bf](8a320bf))
</details>

<details><summary>aztec-packages: 0.76.0</summary>

##
[0.76.0](aztec-packages-v0.75.0...aztec-packages-v0.76.0)
(2025-02-10)


### ⚠ BREAKING CHANGES

* check abi integer input is within signed range
(noir-lang/noir#7316)
* using `WithHash<T>` in `SharedMutable` + fixing slot allocation
([#11716](#11716))

### Features

* `assert` and `assert_eq` are now expressions
(noir-lang/noir#7313)
([b883911](b883911))
* `assert` and `assert_eq` are now expressions
(noir-lang/noir#7313)
([3840e8e](3840e8e))
* **avm:** Add skippable condition for interactions
([#11800](#11800))
([67aec61](67aec61))
* **avm:** Range check opt via aliases
([#11846](#11846))
([ce6a5bf](ce6a5bf))
* **avm:** Restrict bytecode bytes
([#11798](#11798))
([be382bc](be382bc))
* **aztec-nr:** Do not compile functions with a private public macro and
unconstrained
([#11815](#11815))
([afb52e3](afb52e3))
* **blob-lib:** Make blob lib and fix encoding test flake
([#11782](#11782))
([753f505](753f505))
* Broker sends back job after accepting result
([#11754](#11754))
([62e5de7](62e5de7))
* **docs:** Notes page
([#11746](#11746))
([117200e](117200e))
* **docs:** Reindex typesense in CI
([#11791](#11791))
([6af8d54](6af8d54))
* Infer lambda parameter types from return type and let type
(noir-lang/noir#7267)
([b883911](b883911))
* Infer lambda parameter types from return type and let type
(noir-lang/noir#7267)
([3840e8e](3840e8e))
* Optimizing contract with config pattern
([#11756](#11756))
([7820cb7](7820cb7))
* **p2p:** Test bench scaffold
([#11758](#11758))
([48dc491](48dc491))
* Partial note handling in aztec-nr
([#11641](#11641))
([1c1a33b](1c1a33b))
* **perf:** Speed up TS AVM core simulator
([#11794](#11794))
([bb58c87](bb58c87))
* **reqresp:** Send status messages along with reqresp responses
([#11727](#11727))
([b212490](b212490))
* Simplify `Ord` implementation for arrays
(noir-lang/noir#7305)
([b883911](b883911))
* Simplify `Ord` implementation for arrays
(noir-lang/noir#7305)
([3840e8e](3840e8e))
* **spartan:** Blob sink in spartan
([#11307](#11307))
([d8e5bcc](d8e5bcc))
* Suport deploying contracts with public keys in txe
([#11882](#11882))
([94bdc85](94bdc85)),
closes
[#11881](#11881)
* Sync from aztec-packages (noir-lang/noir#7293)
([b883911](b883911))
* Sync from aztec-packages (noir-lang/noir#7293)
([3840e8e](3840e8e))
* Trust tree roots from the AVM in public base
([#11823](#11823))
([5d12f94](5d12f94))
* Using `WithHash&lt;T&gt;` in `SharedMutable` + fixing slot allocation
([#11716](#11716))
([952615b](952615b))


### Bug Fixes

* Add missing return in main
([#11786](#11786))
([8c1d477](8c1d477))
* Allows for infinite brillig loops
(noir-lang/noir#7296)
([b883911](b883911))
* Always normalize ssa when priting at least one pass
(noir-lang/noir#7299)
([b883911](b883911))
* Always normalize ssa when priting at least one pass
(noir-lang/noir#7299)
([3840e8e](3840e8e))
* Avoid recomputing contractclassid
([#11783](#11783))
([f8448bf](f8448bf))
* Avoid stack overflow on many comments in a row
(noir-lang/noir#7325)
([b883911](b883911))
* Aztec wallet partial address display on deployment
([#11866](#11866))
([eef5302](eef5302)),
closes
[#11864](#11864)
* **bb.js:** Make wasm imports bundleable
([#11812](#11812))
([1af69a9](1af69a9))
* Beacon chain doesn't eat mainframe
([#11854](#11854))
([ebbdbc7](ebbdbc7))
* Check abi integer input is within signed range
(noir-lang/noir#7316)
([b883911](b883911))
* **ci:** Enforce boxes-test on merge
([#11841](#11841))
([e26a288](e26a288))
* Downgrade to mainframe-compatible KIND
([#11883](#11883))
([9239b4f](9239b4f))
* Error on if without else when type mismatch
(noir-lang/noir#7302)
([b883911](b883911))
* Error on if without else when type mismatch
(noir-lang/noir#7302)
([3840e8e](3840e8e))
* Error on trailing doc comment
(noir-lang/noir#7300)
([b883911](b883911))
* Error on trailing doc comment
(noir-lang/noir#7300)
([3840e8e](3840e8e))
* Formatting in master
([#11879](#11879))
([fff0f04](fff0f04))
* Mark field division and modulo as requiring predicate for all
necessary types (noir-lang/noir#7290)
([b883911](b883911))
* Mark field division and modulo as requiring predicate for all
necessary types (noir-lang/noir#7290)
([3840e8e](3840e8e))
* Playground use new unbundled aztec.js
([#11780](#11780))
([fe2b666](fe2b666))
* Prover-client test
([#11853](#11853))
([e950c76](e950c76))
* Publish telemetry-client
([#11777](#11777))
([8634f6e](8634f6e))
* Pxe release
([#11877](#11877))
([4c0d2f2](4c0d2f2))
* Re exposing intent inner hash
([#11865](#11865))
([9638792](9638792)),
closes
[#11795](#11795)
* Remove unnecessary console.log
([#11810](#11810))
([8a320bf](8a320bf))
* Revert "feat: partial note handling in aztec-nr
([#11641](#11641))"
([#11797](#11797))
([c5c3f09](c5c3f09))
* Skip orchestrator_workflow test (see
[#11870](#11870))
([#11872](#11872))
([f8e7e4e](f8e7e4e))
* Skip vite browser test until
[#11874](#11874)
([#11876](#11876))
([e1adf23](e1adf23))
* **ssa:** Unused functions removals post folding constant Brillig calls
(noir-lang/noir#7265)
([b883911](b883911))
* **ssa:** Unused functions removals post folding constant Brillig calls
(noir-lang/noir#7265)
([3840e8e](3840e8e))
* Tracy run
([#11819](#11819))
([fde135d](fde135d))
* Txe block headers
([#11710](#11710))
([4f6b76f](4f6b76f))


### Miscellaneous

* Add sha256 library to test suite
(noir-lang/noir#7278)
([b883911](b883911))
* Add sha256 library to test suite
(noir-lang/noir#7278)
([3840e8e](3840e8e))
* Add timeouts to reports CI
(noir-lang/noir#7317)
([b883911](b883911))
* Aggregate with short scalars in UH Recursion
([#11478](#11478))
([a6fcdb0](a6fcdb0))
* **avm:** Remove some parentheses in codegen relations
([#11766](#11766))
([f2f2634](f2f2634))
* Bump noir_bigcurve timeout
(noir-lang/noir#7322)
([b883911](b883911))
* Check versioning
([#11611](#11611))
([b33f1da](b33f1da))
* Cleanup in AVM test fixture
([#11850](#11850))
([4526059](4526059))
* Create a CI action to download nargo and add to path
(noir-lang/noir#7281)
([b883911](b883911))
* Create a CI action to download nargo and add to path
(noir-lang/noir#7281)
([3840e8e](3840e8e))
* Disable exp-2 from nightly deployments
([#11880](#11880))
([bc42b60](bc42b60))
* Do not differentiate variable vs fixed length for Poseidon2
([#11740](#11740))
([ee5fc45](ee5fc45))
* Fix memory reports in CI (noir-lang/noir#7311)
([b883911](b883911))
* Fix memory reports in CI (noir-lang/noir#7311)
([3840e8e](3840e8e))
* **p2p:** Remove min peers option
([#11789](#11789))
([cfb6797](cfb6797))
* Push inlining info code into a submodule
(noir-lang/noir#7266)
([b883911](b883911))
* Push inlining info code into a submodule
(noir-lang/noir#7266)
([3840e8e](3840e8e))
* Reduce number of benchmarking scripts
(noir-lang/noir#7285)
([b883911](b883911))
* Reduce number of benchmarking scripts
(noir-lang/noir#7285)
([3840e8e](3840e8e))
* Remove dead code
([#11809](#11809))
([51ad298](51ad298))
* Remove Recoverable (noir-lang/noir#7307)
([b883911](b883911))
* Remove Recoverable (noir-lang/noir#7307)
([3840e8e](3840e8e))
* Replace benchmarks on fast test suites with a cut-off
(noir-lang/noir#7276)
([b883911](b883911))
* Replace benchmarks on fast test suites with a cut-off
(noir-lang/noir#7276)
([3840e8e](3840e8e))
* Replace relative paths to noir-protocol-circuits
([330f613](330f613))
* Replace relative paths to noir-protocol-circuits
([501ec66](501ec66))
* Replace relative paths to noir-protocol-circuits
([3fa986a](3fa986a))
* Sepolia mnemonic, e2e & ignition chain
([#11759](#11759))
([ff1536a](ff1536a))
* Simplify handling of pub inputs block
([#11747](#11747))
([4a8136c](4a8136c))
* **spartan:** Give services label names
([#11609](#11609))
([2da39df](2da39df))
* **spartan:** Update ethereum external host values
([#11590](#11590))
([f17a8f3](f17a8f3))
* Update migration_notes.md
([#11801](#11801))
([baa69a2](baa69a2))


### Documentation

* Some blob docs
([#11729](#11729))
([b1d65f1](b1d65f1))
</details>

<details><summary>barretenberg: 0.76.0</summary>

##
[0.76.0](barretenberg-v0.75.0...barretenberg-v0.76.0)
(2025-02-10)


### Features

* **avm:** Add skippable condition for interactions
([#11800](#11800))
([67aec61](67aec61))
* **avm:** Range check opt via aliases
([#11846](#11846))
([ce6a5bf](ce6a5bf))
* **avm:** Restrict bytecode bytes
([#11798](#11798))
([be382bc](be382bc))


### Bug Fixes

* Add missing return in main
([#11786](#11786))
([8c1d477](8c1d477))
* Tracy run
([#11819](#11819))
([fde135d](fde135d))


### Miscellaneous

* Aggregate with short scalars in UH Recursion
([#11478](#11478))
([a6fcdb0](a6fcdb0))
* **avm:** Remove some parentheses in codegen relations
([#11766](#11766))
([f2f2634](f2f2634))
* Do not differentiate variable vs fixed length for Poseidon2
([#11740](#11740))
([ee5fc45](ee5fc45))
* Simplify handling of pub inputs block
([#11747](#11747))
([4a8136c](4a8136c))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
AztecBot added a commit to AztecProtocol/barretenberg that referenced this pull request Feb 11, 2025
🤖 I have created a release *beep* *boop*
---


<details><summary>aztec-package: 0.76.0</summary>

##
[0.76.0](AztecProtocol/aztec-packages@aztec-package-v0.75.0...aztec-package-v0.76.0)
(2025-02-10)


### Features

* **spartan:** Blob sink in spartan
([#11307](AztecProtocol/aztec-packages#11307))
([d8e5bcc](AztecProtocol/aztec-packages@d8e5bcc))


### Miscellaneous

* Check versioning
([#11611](AztecProtocol/aztec-packages#11611))
([b33f1da](AztecProtocol/aztec-packages@b33f1da))
* **p2p:** Remove min peers option
([#11789](AztecProtocol/aztec-packages#11789))
([cfb6797](AztecProtocol/aztec-packages@cfb6797))
</details>

<details><summary>barretenberg.js: 0.76.0</summary>

##
[0.76.0](AztecProtocol/aztec-packages@barretenberg.js-v0.75.0...barretenberg.js-v0.76.0)
(2025-02-10)


### Bug Fixes

* **bb.js:** Make wasm imports bundleable
([#11812](AztecProtocol/aztec-packages#11812))
([1af69a9](AztecProtocol/aztec-packages@1af69a9))
* Remove unnecessary console.log
([#11810](AztecProtocol/aztec-packages#11810))
([8a320bf](AztecProtocol/aztec-packages@8a320bf))
</details>

<details><summary>aztec-packages: 0.76.0</summary>

##
[0.76.0](AztecProtocol/aztec-packages@aztec-packages-v0.75.0...aztec-packages-v0.76.0)
(2025-02-10)


### ⚠ BREAKING CHANGES

* check abi integer input is within signed range
(noir-lang/noir#7316)
* using `WithHash<T>` in `SharedMutable` + fixing slot allocation
([#11716](AztecProtocol/aztec-packages#11716))

### Features

* `assert` and `assert_eq` are now expressions
(noir-lang/noir#7313)
([b883911](AztecProtocol/aztec-packages@b883911))
* `assert` and `assert_eq` are now expressions
(noir-lang/noir#7313)
([3840e8e](AztecProtocol/aztec-packages@3840e8e))
* **avm:** Add skippable condition for interactions
([#11800](AztecProtocol/aztec-packages#11800))
([67aec61](AztecProtocol/aztec-packages@67aec61))
* **avm:** Range check opt via aliases
([#11846](AztecProtocol/aztec-packages#11846))
([ce6a5bf](AztecProtocol/aztec-packages@ce6a5bf))
* **avm:** Restrict bytecode bytes
([#11798](AztecProtocol/aztec-packages#11798))
([be382bc](AztecProtocol/aztec-packages@be382bc))
* **aztec-nr:** Do not compile functions with a private public macro and
unconstrained
([#11815](AztecProtocol/aztec-packages#11815))
([afb52e3](AztecProtocol/aztec-packages@afb52e3))
* **blob-lib:** Make blob lib and fix encoding test flake
([#11782](AztecProtocol/aztec-packages#11782))
([753f505](AztecProtocol/aztec-packages@753f505))
* Broker sends back job after accepting result
([#11754](AztecProtocol/aztec-packages#11754))
([62e5de7](AztecProtocol/aztec-packages@62e5de7))
* **docs:** Notes page
([#11746](AztecProtocol/aztec-packages#11746))
([117200e](AztecProtocol/aztec-packages@117200e))
* **docs:** Reindex typesense in CI
([#11791](AztecProtocol/aztec-packages#11791))
([6af8d54](AztecProtocol/aztec-packages@6af8d54))
* Infer lambda parameter types from return type and let type
(noir-lang/noir#7267)
([b883911](AztecProtocol/aztec-packages@b883911))
* Infer lambda parameter types from return type and let type
(noir-lang/noir#7267)
([3840e8e](AztecProtocol/aztec-packages@3840e8e))
* Optimizing contract with config pattern
([#11756](AztecProtocol/aztec-packages#11756))
([7820cb7](AztecProtocol/aztec-packages@7820cb7))
* **p2p:** Test bench scaffold
([#11758](AztecProtocol/aztec-packages#11758))
([48dc491](AztecProtocol/aztec-packages@48dc491))
* Partial note handling in aztec-nr
([#11641](AztecProtocol/aztec-packages#11641))
([1c1a33b](AztecProtocol/aztec-packages@1c1a33b))
* **perf:** Speed up TS AVM core simulator
([#11794](AztecProtocol/aztec-packages#11794))
([bb58c87](AztecProtocol/aztec-packages@bb58c87))
* **reqresp:** Send status messages along with reqresp responses
([#11727](AztecProtocol/aztec-packages#11727))
([b212490](AztecProtocol/aztec-packages@b212490))
* Simplify `Ord` implementation for arrays
(noir-lang/noir#7305)
([b883911](AztecProtocol/aztec-packages@b883911))
* Simplify `Ord` implementation for arrays
(noir-lang/noir#7305)
([3840e8e](AztecProtocol/aztec-packages@3840e8e))
* **spartan:** Blob sink in spartan
([#11307](AztecProtocol/aztec-packages#11307))
([d8e5bcc](AztecProtocol/aztec-packages@d8e5bcc))
* Suport deploying contracts with public keys in txe
([#11882](AztecProtocol/aztec-packages#11882))
([94bdc85](AztecProtocol/aztec-packages@94bdc85)),
closes
[#11881](AztecProtocol/aztec-packages#11881)
* Sync from aztec-packages (noir-lang/noir#7293)
([b883911](AztecProtocol/aztec-packages@b883911))
* Sync from aztec-packages (noir-lang/noir#7293)
([3840e8e](AztecProtocol/aztec-packages@3840e8e))
* Trust tree roots from the AVM in public base
([#11823](AztecProtocol/aztec-packages#11823))
([5d12f94](AztecProtocol/aztec-packages@5d12f94))
* Using `WithHash&lt;T&gt;` in `SharedMutable` + fixing slot allocation
([#11716](AztecProtocol/aztec-packages#11716))
([952615b](AztecProtocol/aztec-packages@952615b))


### Bug Fixes

* Add missing return in main
([#11786](AztecProtocol/aztec-packages#11786))
([8c1d477](AztecProtocol/aztec-packages@8c1d477))
* Allows for infinite brillig loops
(noir-lang/noir#7296)
([b883911](AztecProtocol/aztec-packages@b883911))
* Always normalize ssa when priting at least one pass
(noir-lang/noir#7299)
([b883911](AztecProtocol/aztec-packages@b883911))
* Always normalize ssa when priting at least one pass
(noir-lang/noir#7299)
([3840e8e](AztecProtocol/aztec-packages@3840e8e))
* Avoid recomputing contractclassid
([#11783](AztecProtocol/aztec-packages#11783))
([f8448bf](AztecProtocol/aztec-packages@f8448bf))
* Avoid stack overflow on many comments in a row
(noir-lang/noir#7325)
([b883911](AztecProtocol/aztec-packages@b883911))
* Aztec wallet partial address display on deployment
([#11866](AztecProtocol/aztec-packages#11866))
([eef5302](AztecProtocol/aztec-packages@eef5302)),
closes
[#11864](AztecProtocol/aztec-packages#11864)
* **bb.js:** Make wasm imports bundleable
([#11812](AztecProtocol/aztec-packages#11812))
([1af69a9](AztecProtocol/aztec-packages@1af69a9))
* Beacon chain doesn't eat mainframe
([#11854](AztecProtocol/aztec-packages#11854))
([ebbdbc7](AztecProtocol/aztec-packages@ebbdbc7))
* Check abi integer input is within signed range
(noir-lang/noir#7316)
([b883911](AztecProtocol/aztec-packages@b883911))
* **ci:** Enforce boxes-test on merge
([#11841](AztecProtocol/aztec-packages#11841))
([e26a288](AztecProtocol/aztec-packages@e26a288))
* Downgrade to mainframe-compatible KIND
([#11883](AztecProtocol/aztec-packages#11883))
([9239b4f](AztecProtocol/aztec-packages@9239b4f))
* Error on if without else when type mismatch
(noir-lang/noir#7302)
([b883911](AztecProtocol/aztec-packages@b883911))
* Error on if without else when type mismatch
(noir-lang/noir#7302)
([3840e8e](AztecProtocol/aztec-packages@3840e8e))
* Error on trailing doc comment
(noir-lang/noir#7300)
([b883911](AztecProtocol/aztec-packages@b883911))
* Error on trailing doc comment
(noir-lang/noir#7300)
([3840e8e](AztecProtocol/aztec-packages@3840e8e))
* Formatting in master
([#11879](AztecProtocol/aztec-packages#11879))
([fff0f04](AztecProtocol/aztec-packages@fff0f04))
* Mark field division and modulo as requiring predicate for all
necessary types (noir-lang/noir#7290)
([b883911](AztecProtocol/aztec-packages@b883911))
* Mark field division and modulo as requiring predicate for all
necessary types (noir-lang/noir#7290)
([3840e8e](AztecProtocol/aztec-packages@3840e8e))
* Playground use new unbundled aztec.js
([#11780](AztecProtocol/aztec-packages#11780))
([fe2b666](AztecProtocol/aztec-packages@fe2b666))
* Prover-client test
([#11853](AztecProtocol/aztec-packages#11853))
([e950c76](AztecProtocol/aztec-packages@e950c76))
* Publish telemetry-client
([#11777](AztecProtocol/aztec-packages#11777))
([8634f6e](AztecProtocol/aztec-packages@8634f6e))
* Pxe release
([#11877](AztecProtocol/aztec-packages#11877))
([4c0d2f2](AztecProtocol/aztec-packages@4c0d2f2))
* Re exposing intent inner hash
([#11865](AztecProtocol/aztec-packages#11865))
([9638792](AztecProtocol/aztec-packages@9638792)),
closes
[#11795](AztecProtocol/aztec-packages#11795)
* Remove unnecessary console.log
([#11810](AztecProtocol/aztec-packages#11810))
([8a320bf](AztecProtocol/aztec-packages@8a320bf))
* Revert "feat: partial note handling in aztec-nr
([#11641](AztecProtocol/aztec-packages#11641))"
([#11797](AztecProtocol/aztec-packages#11797))
([c5c3f09](AztecProtocol/aztec-packages@c5c3f09))
* Skip orchestrator_workflow test (see
[#11870](AztecProtocol/aztec-packages#11870))
([#11872](AztecProtocol/aztec-packages#11872))
([f8e7e4e](AztecProtocol/aztec-packages@f8e7e4e))
* Skip vite browser test until
[#11874](AztecProtocol/aztec-packages#11874)
([#11876](AztecProtocol/aztec-packages#11876))
([e1adf23](AztecProtocol/aztec-packages@e1adf23))
* **ssa:** Unused functions removals post folding constant Brillig calls
(noir-lang/noir#7265)
([b883911](AztecProtocol/aztec-packages@b883911))
* **ssa:** Unused functions removals post folding constant Brillig calls
(noir-lang/noir#7265)
([3840e8e](AztecProtocol/aztec-packages@3840e8e))
* Tracy run
([#11819](AztecProtocol/aztec-packages#11819))
([fde135d](AztecProtocol/aztec-packages@fde135d))
* Txe block headers
([#11710](AztecProtocol/aztec-packages#11710))
([4f6b76f](AztecProtocol/aztec-packages@4f6b76f))


### Miscellaneous

* Add sha256 library to test suite
(noir-lang/noir#7278)
([b883911](AztecProtocol/aztec-packages@b883911))
* Add sha256 library to test suite
(noir-lang/noir#7278)
([3840e8e](AztecProtocol/aztec-packages@3840e8e))
* Add timeouts to reports CI
(noir-lang/noir#7317)
([b883911](AztecProtocol/aztec-packages@b883911))
* Aggregate with short scalars in UH Recursion
([#11478](AztecProtocol/aztec-packages#11478))
([a6fcdb0](AztecProtocol/aztec-packages@a6fcdb0))
* **avm:** Remove some parentheses in codegen relations
([#11766](AztecProtocol/aztec-packages#11766))
([f2f2634](AztecProtocol/aztec-packages@f2f2634))
* Bump noir_bigcurve timeout
(noir-lang/noir#7322)
([b883911](AztecProtocol/aztec-packages@b883911))
* Check versioning
([#11611](AztecProtocol/aztec-packages#11611))
([b33f1da](AztecProtocol/aztec-packages@b33f1da))
* Cleanup in AVM test fixture
([#11850](AztecProtocol/aztec-packages#11850))
([4526059](AztecProtocol/aztec-packages@4526059))
* Create a CI action to download nargo and add to path
(noir-lang/noir#7281)
([b883911](AztecProtocol/aztec-packages@b883911))
* Create a CI action to download nargo and add to path
(noir-lang/noir#7281)
([3840e8e](AztecProtocol/aztec-packages@3840e8e))
* Disable exp-2 from nightly deployments
([#11880](AztecProtocol/aztec-packages#11880))
([bc42b60](AztecProtocol/aztec-packages@bc42b60))
* Do not differentiate variable vs fixed length for Poseidon2
([#11740](AztecProtocol/aztec-packages#11740))
([ee5fc45](AztecProtocol/aztec-packages@ee5fc45))
* Fix memory reports in CI (noir-lang/noir#7311)
([b883911](AztecProtocol/aztec-packages@b883911))
* Fix memory reports in CI (noir-lang/noir#7311)
([3840e8e](AztecProtocol/aztec-packages@3840e8e))
* **p2p:** Remove min peers option
([#11789](AztecProtocol/aztec-packages#11789))
([cfb6797](AztecProtocol/aztec-packages@cfb6797))
* Push inlining info code into a submodule
(noir-lang/noir#7266)
([b883911](AztecProtocol/aztec-packages@b883911))
* Push inlining info code into a submodule
(noir-lang/noir#7266)
([3840e8e](AztecProtocol/aztec-packages@3840e8e))
* Reduce number of benchmarking scripts
(noir-lang/noir#7285)
([b883911](AztecProtocol/aztec-packages@b883911))
* Reduce number of benchmarking scripts
(noir-lang/noir#7285)
([3840e8e](AztecProtocol/aztec-packages@3840e8e))
* Remove dead code
([#11809](AztecProtocol/aztec-packages#11809))
([51ad298](AztecProtocol/aztec-packages@51ad298))
* Remove Recoverable (noir-lang/noir#7307)
([b883911](AztecProtocol/aztec-packages@b883911))
* Remove Recoverable (noir-lang/noir#7307)
([3840e8e](AztecProtocol/aztec-packages@3840e8e))
* Replace benchmarks on fast test suites with a cut-off
(noir-lang/noir#7276)
([b883911](AztecProtocol/aztec-packages@b883911))
* Replace benchmarks on fast test suites with a cut-off
(noir-lang/noir#7276)
([3840e8e](AztecProtocol/aztec-packages@3840e8e))
* Replace relative paths to noir-protocol-circuits
([330f613](AztecProtocol/aztec-packages@330f613))
* Replace relative paths to noir-protocol-circuits
([501ec66](AztecProtocol/aztec-packages@501ec66))
* Replace relative paths to noir-protocol-circuits
([3fa986a](AztecProtocol/aztec-packages@3fa986a))
* Sepolia mnemonic, e2e & ignition chain
([#11759](AztecProtocol/aztec-packages#11759))
([ff1536a](AztecProtocol/aztec-packages@ff1536a))
* Simplify handling of pub inputs block
([#11747](AztecProtocol/aztec-packages#11747))
([4a8136c](AztecProtocol/aztec-packages@4a8136c))
* **spartan:** Give services label names
([#11609](AztecProtocol/aztec-packages#11609))
([2da39df](AztecProtocol/aztec-packages@2da39df))
* **spartan:** Update ethereum external host values
([#11590](AztecProtocol/aztec-packages#11590))
([f17a8f3](AztecProtocol/aztec-packages@f17a8f3))
* Update migration_notes.md
([#11801](AztecProtocol/aztec-packages#11801))
([baa69a2](AztecProtocol/aztec-packages@baa69a2))


### Documentation

* Some blob docs
([#11729](AztecProtocol/aztec-packages#11729))
([b1d65f1](AztecProtocol/aztec-packages@b1d65f1))
</details>

<details><summary>barretenberg: 0.76.0</summary>

##
[0.76.0](AztecProtocol/aztec-packages@barretenberg-v0.75.0...barretenberg-v0.76.0)
(2025-02-10)


### Features

* **avm:** Add skippable condition for interactions
([#11800](AztecProtocol/aztec-packages#11800))
([67aec61](AztecProtocol/aztec-packages@67aec61))
* **avm:** Range check opt via aliases
([#11846](AztecProtocol/aztec-packages#11846))
([ce6a5bf](AztecProtocol/aztec-packages@ce6a5bf))
* **avm:** Restrict bytecode bytes
([#11798](AztecProtocol/aztec-packages#11798))
([be382bc](AztecProtocol/aztec-packages@be382bc))


### Bug Fixes

* Add missing return in main
([#11786](AztecProtocol/aztec-packages#11786))
([8c1d477](AztecProtocol/aztec-packages@8c1d477))
* Tracy run
([#11819](AztecProtocol/aztec-packages#11819))
([fde135d](AztecProtocol/aztec-packages@fde135d))


### Miscellaneous

* Aggregate with short scalars in UH Recursion
([#11478](AztecProtocol/aztec-packages#11478))
([a6fcdb0](AztecProtocol/aztec-packages@a6fcdb0))
* **avm:** Remove some parentheses in codegen relations
([#11766](AztecProtocol/aztec-packages#11766))
([f2f2634](AztecProtocol/aztec-packages@f2f2634))
* Do not differentiate variable vs fixed length for Poseidon2
([#11740](AztecProtocol/aztec-packages#11740))
([ee5fc45](AztecProtocol/aztec-packages@ee5fc45))
* Simplify handling of pub inputs block
([#11747](AztecProtocol/aztec-packages#11747))
([4a8136c](AztecProtocol/aztec-packages@4a8136c))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
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