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: passes copy_cycles by const reference to avoid copying #8051

Merged
merged 1 commit into from
Aug 16, 2024

Conversation

lucasxia01
Copy link
Contributor

@lucasxia01 lucasxia01 commented Aug 16, 2024

As part of my memory deep-dive, I discovered some unnecessary memory copying of the copy_cycles vector.

In particular, this vector has length variables.size(), which can be huge. In the case of ultra_honk_bench on a mock 2^20 sized circuit which has approximately 2^20 variables as well, this copy_cycles vector takes up around 24MB (for just the 2^20 empty vectors) plus 32MB of memory for the actual data (it has full capacity of 36MB, since it's made up of a bunch of small vectors of lengths 2, 3, and 4, and the length 3 vectors have the same capacity as a length 4 vector).

When this copy_cycles vector is passed into compute_permutation_argument_polynomials and compute_permutation_mapping, it was actually passed by value, which meant that 24+32=56MB of memory was getting copied twice. This had the effect of bumping up peak memory during proving key construction by an extra 112MB.

More context on why I think memory during proving key construction is important:
Proving key construction memory is not the memory bottleneck in the case of ultra_honk_bench (ever since my recent memory fix removing unnecessary polynomial initialization in the TraceData constructor) since sumcheck takes up way more memory. However, we care a lot about peak memory during proving key construction because we expect this to be the bottleneck during ClientIVC when we need to construct the proving key of one instance while holding all the memory of the accumulator as well.

The graph below shows the 112MB allocation under the first half of compute_permutation_argument_polynomials.
Tracy graph

Effect on timing:
Not sure why but it seems to make the benchmark 150ms slower?
Before: construct_proof_ultrahonk_power_of_2/20 4858 ms 4423 ms 1
After: construct_proof_ultrahonk_power_of_2/20 5016 ms 4579 ms 1

@lucasxia01 lucasxia01 self-assigned this Aug 16, 2024
@lucasxia01 lucasxia01 added the C-barretenberg Component: barretenberg cryptography library label Aug 16, 2024
Copy link
Contributor

@ledwards2225 ledwards2225 left a comment

Choose a reason for hiding this comment

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

Lovely.

@lucasxia01 lucasxia01 merged commit 495d363 into master Aug 16, 2024
47 checks passed
@lucasxia01 lucasxia01 deleted the lx/remove-copy-cycle-copying branch August 16, 2024 22:32
@@ -98,7 +98,7 @@ template <typename Flavor, bool generalized>
PermutationMapping<Flavor::NUM_WIRES, generalized> compute_permutation_mapping(
const typename Flavor::CircuitBuilder& circuit_constructor,
typename Flavor::ProvingKey* proving_key,
std::vector<CyclicPermutation> wire_copy_cycles)
const std::vector<CyclicPermutation>& wire_copy_cycles)
{

// Initialize the table of permutations so that every element points to itself
Copy link
Contributor

Choose a reason for hiding this comment

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

[Re: line +112]

This should probably be a const auto& now (the compiler will infer it though)

See this comment inline on Graphite.

@@ -98,7 +98,7 @@ template <typename Flavor, bool generalized>
PermutationMapping<Flavor::NUM_WIRES, generalized> compute_permutation_mapping(
const typename Flavor::CircuitBuilder& circuit_constructor,
typename Flavor::ProvingKey* proving_key,
std::vector<CyclicPermutation> wire_copy_cycles)
const std::vector<CyclicPermutation>& wire_copy_cycles)
{

// Initialize the table of permutations so that every element points to itself
Copy link
Contributor

Choose a reason for hiding this comment

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

[Re: line +118]

Here you are making another copy. If you do

const cycle_node& next_cycle_node you can avoid it.

See this comment inline on Graphite.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

good catch, wonder if this was maybe a reason I was seeing slower timing

PhilWindle pushed a commit that referenced this pull request Aug 22, 2024
🤖 I have created a release *beep* *boop*
---


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

##
[0.50.0](aztec-package-v0.49.2...aztec-package-v0.50.0)
(2024-08-22)


### Features

* Add a prover-node to the proving e2e tests
([#7952](#7952))
([ec5a5fb](ec5a5fb))
* Add max pending txs to bot
([#8046](#8046))
([7f5517e](7f5517e))
* Deterministic deployments for L1
([#8031](#8031))
([abc6b19](abc6b19))
* Introduce validator client
([#7854](#7854))
([e3be8e6](e3be8e6))
* JSON logging
([#8095](#8095))
([048fa12](048fa12))


### Bug Fixes

* Port option & extracting correct namespaced options
([#8097](#8097))
([e74c83e](e74c83e))
* Txe port and aztec start options
([#8071](#8071))
([23778c5](23778c5))


### Miscellaneous

* Configuration for bot on various networks
([#8063](#8063))
([453a096](453a096))
* Merge devnet fixes back to master
([#8149](#8149))
([6be2183](6be2183))
* Merge Provernet back to master
([#8070](#8070))
([82f3dc7](82f3dc7))
</details>

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

##
[0.50.0](barretenberg.js-v0.49.2...barretenberg.js-v0.50.0)
(2024-08-22)


### Miscellaneous

* Merge devnet fixes back to master
([#8149](#8149))
([6be2183](6be2183))
</details>

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

##
[0.50.0](aztec-packages-v0.49.2...aztec-packages-v0.50.0)
(2024-08-22)


### ⚠ BREAKING CHANGES

* replace public key fetching API
([#7996](#7996))

### Features

* (LSP) suggest names that match any part of the current prefix
(noir-lang/noir#5752)
([0379462](0379462))
* Add `Expr::as_any_integer` and `Expr::as_member_access`
(noir-lang/noir#5742)
([0379462](0379462))
* Add `Expr::as_array`, `Expr::as_repeated_element_array` and same for
slice (noir-lang/noir#5750)
([0379462](0379462))
* Add `Expr::as_binary_op` (noir-lang/noir#5734)
([0379462](0379462))
* Add `Expr::as_bool` (noir-lang/noir#5729)
([0379462](0379462))
* Add `Expr::as_unary` (noir-lang/noir#5731)
([0379462](0379462))
* Add `Expr` methods: `as_tuple`, `as_parenthesized`, `as_index`,
`as_if` (noir-lang/noir#5726)
([0379462](0379462))
* Add `TraitImpl::trait_generic_args` and `TraitImpl::methods`
(noir-lang/noir#5722)
([0379462](0379462))
* Add `unsafe` blocks for calling unconstrained code from constrained
functions (noir-lang/noir#4429)
([0379462](0379462))
* Add a prover-node to the proving e2e tests
([#7952](#7952))
([ec5a5fb](ec5a5fb))
* Add max pending txs to bot
([#8046](#8046))
([7f5517e](7f5517e))
* Add reusable procedures to brillig generation
([#7981](#7981))
([99d1131](99d1131))
* Automate verify_honk_proof input generation
([#8092](#8092))
([bf38d61](bf38d61))
* **avm:** Enable zeromorph in AVM verification
([#8111](#8111))
([b1f9fb6](b1f9fb6)),
closes
[#4944](#4944)
* Build for arm
([#7994](#7994))
([0dffe1b](0dffe1b))
* Completing MockNote
([#8059](#8059))
([05efe23](05efe23)),
closes
[#7636](#7636)
* Constant addresses as addresses
([#8056](#8056))
([1da5caf](1da5caf))
* Deterministic deployments for L1
([#8031](#8031))
([abc6b19](abc6b19))
* **docs:** Cookbook integration
([#8083](#8083))
([19bd8a9](19bd8a9))
* Enabling public and private bridging w/ cli
([#8011](#8011))
([f0f9c73](f0f9c73))
* Fault-tolerant parsing of `fn` and `impl`
(noir-lang/noir#5753)
([0379462](0379462))
* Flush sequencer
([#8050](#8050))
([8821e5f](8821e5f))
* Introduce blob circuit
([#8101](#8101))
([4bb3bac](4bb3bac))
* Introduce validator client
([#7854](#7854))
([e3be8e6](e3be8e6))
* JSON logging
([#8095](#8095))
([048fa12](048fa12))
* LSP auto-import completion
(noir-lang/noir#5741)
([0379462](0379462))
* LSP autocomplete constructor fields
(noir-lang/noir#5732)
([0379462](0379462))
* LSP signature help (noir-lang/noir#5725)
([0379462](0379462))
* Max pending jobs in prover node
([#8045](#8045))
([c857604](c857604))
* Move out_hash inside tx_effect_hash
([#7489](#7489))
([ff0effe](ff0effe))
* Native Merkle Trees
([#7037](#7037))
([8a1032e](8a1032e))
* Oink recursive verifier
([#8121](#8121))
([580708a](580708a))
* **optimization:** Follow past `array_set`s when optimizing
`array_get`s (noir-lang/noir#5772)
([0379462](0379462))
* Passes copy_cycles by const reference to avoid copying
([#8051](#8051))
([495d363](495d363))
* **perf:** Mem2reg function state for value loads to optimize across
blocks (noir-lang/noir#5757)
([0379462](0379462))
* PG recursive verifier constructors based on stdlib inputs
([#8052](#8052))
([4c568b0](4c568b0))
* Poseidon2 gates for Ultra arithmetisation
([#7494](#7494))
([d86577c](d86577c))
* Prover node metrics
([#8086](#8086))
([ab018ff](ab018ff))
* Removed socat, fixed aztec-run
([#8145](#8145))
([ff94aa2](ff94aa2))
* Removing redundant key fetching
([#8043](#8043))
([2bbcc7b](2bbcc7b))
* Replace public key fetching API
([#7996](#7996))
([73d6aa9](73d6aa9))
* Small optimization in toradix
([#8040](#8040))
([0dc7a50](0dc7a50))
* Some fixes and cleanup in PG recursive verifier
([#8053](#8053))
([5f2a9bd](5f2a9bd))
* Suggest trait methods in LSP completion
(noir-lang/noir#5735)
([0379462](0379462))
* Suggest tuple fields in LSP completion
(noir-lang/noir#5730)
([0379462](0379462))
* Track world state metrics
([#8109](#8109))
([ca58d94](ca58d94))
* Typing specific pub keys
([#8099](#8099))
([638793a](638793a))
* Unify all acir recursion constraints based on RecursionConstraint and
proof_type
([#7993](#7993))
([7cb39bc](7cb39bc))
* User `super::` in LSP autocompletion if possible
(noir-lang/noir#5751)
([0379462](0379462))
* Various token note improvements
([#8062](#8062))
([8f9dfd9](8f9dfd9))
* Zk sumcheck
([#7517](#7517))
([0e9a530](0e9a530))


### Bug Fixes

* (LSP) only add cached files relevant to workspace
(noir-lang/noir#5775)
([2d70215](2d70215))
* Add DEBUG and LOG_LEVEL to valid env vars
([#8094](#8094))
([70e61f9](70e61f9))
* Add link to l1-artifacts
([#7940](#7940))
([dcfd120](dcfd120))
* Add missing trait impls for integer types to stdlib
(noir-lang/noir#5738)
([0379462](0379462))
* Allow comptime code to use break without also being `unconstrained`
(noir-lang/noir#5744)
([0379462](0379462))
* **avm:** Real bytes finalization
([#8041](#8041))
([047461a](047461a))
* **ci:** Correctly run bb tests with asserts
([#7607](#7607))
([7b73f69](7b73f69))
* Correctly constrain get header at
([#7893](#7893))
([2ebba0d](2ebba0d))
* Deploy L1 rollup contract using salt if provided
([#8074](#8074))
([1e8eddf](1e8eddf))
* Flaky e2e_prover_node test
([#8116](#8116))
([9d97bd4](9d97bd4))
* **frontend:** Continue type check if we are missing an unsafe block
(noir-lang/noir#5720)
([0379462](0379462))
* Let LSP autocompletion work in more contexts
(noir-lang/noir#5719)
([0379462](0379462))
* Port option & extracting correct namespaced options
([#8097](#8097))
([e74c83e](e74c83e))
* Set prover node max pending jobs in tests
([#8055](#8055))
([403c26f](403c26f))
* Stop WorldStrateSynchronizer in prover node
([#8126](#8126))
([f724b07](f724b07))
* Txe port and aztec start options
([#8071](#8071))
([23778c5](23778c5))
* Unconstrained fn mismatch is now a warning
(noir-lang/noir#5764)
([0379462](0379462))
* Wallet fixes for devnet, testing and misc
([#8058](#8058))
([15f3e8c](15f3e8c))


### Miscellaneous

* Add Brillig loop bytecode size regression and update noir-gates-diff
report (noir-lang/noir#5747)
([0379462](0379462))
* Apply some new lints across workspace
(noir-lang/noir#5736)
([0379462](0379462))
* **avm:** Kernel trace and finalization
([#8049](#8049))
([d7edd24](d7edd24))
* **avm:** Separate alu finalization
([#8069](#8069))
([e8a9eb4](e8a9eb4))
* **bb:** IPA parallelization cleanup
([#8088](#8088))
([9227fa9](9227fa9))
* **bb:** Simplify parallel_for_if_effective
([#8079](#8079))
([5bff26b](5bff26b))
* **bb:** Small cleanup in protogalaxy prover
([#8072](#8072))
([4cb5c83](4cb5c83))
* **ci:** Only show last 50 master cpp benches
([#8075](#8075))
([96f35bc](96f35bc))
* Clarify Field use (noir-lang/noir#5740)
([0379462](0379462))
* CLI command to set latest block as proven
([#7987](#7987))
([80eaf1d](80eaf1d))
* Configuration for bot on various networks
([#8063](#8063))
([453a096](453a096))
* Count brillig opcodes in nargo info
(noir-lang/noir#5189)
([0379462](0379462))
* Deduplication in Protogalaxy
([#8067](#8067))
([a5cc3ba](a5cc3ba))
* **docs:** Expanding solidity verifier chain list
(noir-lang/noir#5587)
([0379462](0379462))
* Dont trail whitespace in vscode
([#5661](#5661))
([7595d91](7595d91))
* Handle constant output for ec add opcode
([#8108](#8108))
([2ee79d2](2ee79d2))
* Make spans non-optional on `UnresolvedType`
(noir-lang/noir#5773)
([2d70215](2d70215))
* Merge devnet fixes back to master
([#8149](#8149))
([6be2183](6be2183))
* Merge devnet to master
([#8044](#8044))
([f84950f](f84950f))
* Merge Provernet back to master
([#8070](#8070))
([82f3dc7](82f3dc7))
* Merging `TokenWithRefunds` with `Token`
([#8042](#8042))
([8b795eb](8b795eb))
* Modified devnet config
([#8087](#8087))
([854ab45](854ab45))
* Nuking old registry contract
([#8057](#8057))
([3bd08a8](3bd08a8)),
closes
[#7955](#7955)
* Pedersen hash related cleanup in aztec.nr
([#8009](#8009))
([3c4ac65](3c4ac65))
* Portal manager cli
([#8047](#8047))
([618e251](618e251))
* Proper portal setup for fees + test
([#7944](#7944))
([9fec67e](9fec67e))
* Public kernel
([#8061](#8061))
([617a69c](617a69c))
* Refactor ACIR function IDs from raw integers to struct
(noir-lang/noir#5748)
([0379462](0379462))
* Replace relative paths to noir-protocol-circuits
([5ddf0e6](5ddf0e6))
* Replace relative paths to noir-protocol-circuits
([ca77c17](ca77c17))
* Replace relative paths to noir-protocol-circuits
([fe73c93](fe73c93))
* Replace relative paths to noir-protocol-circuits
([576bc2f](576bc2f))
* Replace relative paths to noir-protocol-circuits
([0d05d6b](0d05d6b))
* Simplify sequencer and l1 communication
([#7989](#7989))
([cee4eba](cee4eba))
* Split LSP completion.rs into several files
(noir-lang/noir#5723)
([0379462](0379462))
* Split up stdlib/recursion
([#8054](#8054))
([ec03e40](ec03e40))
* **sync-noir:** Fix modify/delete conflicts automatically
([#8090](#8090))
([a09627c](a09627c))
* Use decider verifier in ultra verifier
([#8115](#8115))
([6c5ab2b](6c5ab2b))


### Documentation

* Fix typo overview.md
([#7908](#7908))
([3749211](3749211))
* Update installation info for bb and noir
([#8119](#8119))
([a744321](a744321))
</details>

<details><summary>barretenberg: 0.50.0</summary>

##
[0.50.0](barretenberg-v0.49.2...barretenberg-v0.50.0)
(2024-08-22)


### Features

* Add a prover-node to the proving e2e tests
([#7952](#7952))
([ec5a5fb](ec5a5fb))
* Automate verify_honk_proof input generation
([#8092](#8092))
([bf38d61](bf38d61))
* **avm:** Enable zeromorph in AVM verification
([#8111](#8111))
([b1f9fb6](b1f9fb6)),
closes
[#4944](#4944)
* Native Merkle Trees
([#7037](#7037))
([8a1032e](8a1032e))
* Oink recursive verifier
([#8121](#8121))
([580708a](580708a))
* Passes copy_cycles by const reference to avoid copying
([#8051](#8051))
([495d363](495d363))
* PG recursive verifier constructors based on stdlib inputs
([#8052](#8052))
([4c568b0](4c568b0))
* Poseidon2 gates for Ultra arithmetisation
([#7494](#7494))
([d86577c](d86577c))
* Some fixes and cleanup in PG recursive verifier
([#8053](#8053))
([5f2a9bd](5f2a9bd))
* Unify all acir recursion constraints based on RecursionConstraint and
proof_type
([#7993](#7993))
([7cb39bc](7cb39bc))
* Zk sumcheck
([#7517](#7517))
([0e9a530](0e9a530))


### Bug Fixes

* **avm:** Real bytes finalization
([#8041](#8041))
([047461a](047461a))
* **ci:** Correctly run bb tests with asserts
([#7607](#7607))
([7b73f69](7b73f69))


### Miscellaneous

* **avm:** Kernel trace and finalization
([#8049](#8049))
([d7edd24](d7edd24))
* **avm:** Separate alu finalization
([#8069](#8069))
([e8a9eb4](e8a9eb4))
* **bb:** IPA parallelization cleanup
([#8088](#8088))
([9227fa9](9227fa9))
* **bb:** Simplify parallel_for_if_effective
([#8079](#8079))
([5bff26b](5bff26b))
* **bb:** Small cleanup in protogalaxy prover
([#8072](#8072))
([4cb5c83](4cb5c83))
* Deduplication in Protogalaxy
([#8067](#8067))
([a5cc3ba](a5cc3ba))
* Handle constant output for ec add opcode
([#8108](#8108))
([2ee79d2](2ee79d2))
* Merge devnet fixes back to master
([#8149](#8149))
([6be2183](6be2183))
* Split up stdlib/recursion
([#8054](#8054))
([ec03e40](ec03e40))
* Use decider verifier in ultra verifier
([#8115](#8115))
([6c5ab2b](6c5ab2b))


### Documentation

* Update installation info for bb and noir
([#8119](#8119))
([a744321](a744321))
</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 Aug 23, 2024
🤖 I have created a release *beep* *boop*
---


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

##
[0.50.0](AztecProtocol/aztec-packages@aztec-package-v0.49.2...aztec-package-v0.50.0)
(2024-08-22)


### Features

* Add a prover-node to the proving e2e tests
([#7952](AztecProtocol/aztec-packages#7952))
([ec5a5fb](AztecProtocol/aztec-packages@ec5a5fb))
* Add max pending txs to bot
([#8046](AztecProtocol/aztec-packages#8046))
([7f5517e](AztecProtocol/aztec-packages@7f5517e))
* Deterministic deployments for L1
([#8031](AztecProtocol/aztec-packages#8031))
([abc6b19](AztecProtocol/aztec-packages@abc6b19))
* Introduce validator client
([#7854](AztecProtocol/aztec-packages#7854))
([e3be8e6](AztecProtocol/aztec-packages@e3be8e6))
* JSON logging
([#8095](AztecProtocol/aztec-packages#8095))
([048fa12](AztecProtocol/aztec-packages@048fa12))


### Bug Fixes

* Port option & extracting correct namespaced options
([#8097](AztecProtocol/aztec-packages#8097))
([e74c83e](AztecProtocol/aztec-packages@e74c83e))
* Txe port and aztec start options
([#8071](AztecProtocol/aztec-packages#8071))
([23778c5](AztecProtocol/aztec-packages@23778c5))


### Miscellaneous

* Configuration for bot on various networks
([#8063](AztecProtocol/aztec-packages#8063))
([453a096](AztecProtocol/aztec-packages@453a096))
* Merge devnet fixes back to master
([#8149](AztecProtocol/aztec-packages#8149))
([6be2183](AztecProtocol/aztec-packages@6be2183))
* Merge Provernet back to master
([#8070](AztecProtocol/aztec-packages#8070))
([82f3dc7](AztecProtocol/aztec-packages@82f3dc7))
</details>

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

##
[0.50.0](AztecProtocol/aztec-packages@barretenberg.js-v0.49.2...barretenberg.js-v0.50.0)
(2024-08-22)


### Miscellaneous

* Merge devnet fixes back to master
([#8149](AztecProtocol/aztec-packages#8149))
([6be2183](AztecProtocol/aztec-packages@6be2183))
</details>

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

##
[0.50.0](AztecProtocol/aztec-packages@aztec-packages-v0.49.2...aztec-packages-v0.50.0)
(2024-08-22)


### ⚠ BREAKING CHANGES

* replace public key fetching API
([#7996](AztecProtocol/aztec-packages#7996))

### Features

* (LSP) suggest names that match any part of the current prefix
(noir-lang/noir#5752)
([0379462](AztecProtocol/aztec-packages@0379462))
* Add `Expr::as_any_integer` and `Expr::as_member_access`
(noir-lang/noir#5742)
([0379462](AztecProtocol/aztec-packages@0379462))
* Add `Expr::as_array`, `Expr::as_repeated_element_array` and same for
slice (noir-lang/noir#5750)
([0379462](AztecProtocol/aztec-packages@0379462))
* Add `Expr::as_binary_op` (noir-lang/noir#5734)
([0379462](AztecProtocol/aztec-packages@0379462))
* Add `Expr::as_bool` (noir-lang/noir#5729)
([0379462](AztecProtocol/aztec-packages@0379462))
* Add `Expr::as_unary` (noir-lang/noir#5731)
([0379462](AztecProtocol/aztec-packages@0379462))
* Add `Expr` methods: `as_tuple`, `as_parenthesized`, `as_index`,
`as_if` (noir-lang/noir#5726)
([0379462](AztecProtocol/aztec-packages@0379462))
* Add `TraitImpl::trait_generic_args` and `TraitImpl::methods`
(noir-lang/noir#5722)
([0379462](AztecProtocol/aztec-packages@0379462))
* Add `unsafe` blocks for calling unconstrained code from constrained
functions (noir-lang/noir#4429)
([0379462](AztecProtocol/aztec-packages@0379462))
* Add a prover-node to the proving e2e tests
([#7952](AztecProtocol/aztec-packages#7952))
([ec5a5fb](AztecProtocol/aztec-packages@ec5a5fb))
* Add max pending txs to bot
([#8046](AztecProtocol/aztec-packages#8046))
([7f5517e](AztecProtocol/aztec-packages@7f5517e))
* Add reusable procedures to brillig generation
([#7981](AztecProtocol/aztec-packages#7981))
([99d1131](AztecProtocol/aztec-packages@99d1131))
* Automate verify_honk_proof input generation
([#8092](AztecProtocol/aztec-packages#8092))
([bf38d61](AztecProtocol/aztec-packages@bf38d61))
* **avm:** Enable zeromorph in AVM verification
([#8111](AztecProtocol/aztec-packages#8111))
([b1f9fb6](AztecProtocol/aztec-packages@b1f9fb6)),
closes
[#4944](AztecProtocol/aztec-packages#4944)
* Build for arm
([#7994](AztecProtocol/aztec-packages#7994))
([0dffe1b](AztecProtocol/aztec-packages@0dffe1b))
* Completing MockNote
([#8059](AztecProtocol/aztec-packages#8059))
([05efe23](AztecProtocol/aztec-packages@05efe23)),
closes
[#7636](AztecProtocol/aztec-packages#7636)
* Constant addresses as addresses
([#8056](AztecProtocol/aztec-packages#8056))
([1da5caf](AztecProtocol/aztec-packages@1da5caf))
* Deterministic deployments for L1
([#8031](AztecProtocol/aztec-packages#8031))
([abc6b19](AztecProtocol/aztec-packages@abc6b19))
* **docs:** Cookbook integration
([#8083](AztecProtocol/aztec-packages#8083))
([19bd8a9](AztecProtocol/aztec-packages@19bd8a9))
* Enabling public and private bridging w/ cli
([#8011](AztecProtocol/aztec-packages#8011))
([f0f9c73](AztecProtocol/aztec-packages@f0f9c73))
* Fault-tolerant parsing of `fn` and `impl`
(noir-lang/noir#5753)
([0379462](AztecProtocol/aztec-packages@0379462))
* Flush sequencer
([#8050](AztecProtocol/aztec-packages#8050))
([8821e5f](AztecProtocol/aztec-packages@8821e5f))
* Introduce blob circuit
([#8101](AztecProtocol/aztec-packages#8101))
([4bb3bac](AztecProtocol/aztec-packages@4bb3bac))
* Introduce validator client
([#7854](AztecProtocol/aztec-packages#7854))
([e3be8e6](AztecProtocol/aztec-packages@e3be8e6))
* JSON logging
([#8095](AztecProtocol/aztec-packages#8095))
([048fa12](AztecProtocol/aztec-packages@048fa12))
* LSP auto-import completion
(noir-lang/noir#5741)
([0379462](AztecProtocol/aztec-packages@0379462))
* LSP autocomplete constructor fields
(noir-lang/noir#5732)
([0379462](AztecProtocol/aztec-packages@0379462))
* LSP signature help (noir-lang/noir#5725)
([0379462](AztecProtocol/aztec-packages@0379462))
* Max pending jobs in prover node
([#8045](AztecProtocol/aztec-packages#8045))
([c857604](AztecProtocol/aztec-packages@c857604))
* Move out_hash inside tx_effect_hash
([#7489](AztecProtocol/aztec-packages#7489))
([ff0effe](AztecProtocol/aztec-packages@ff0effe))
* Native Merkle Trees
([#7037](AztecProtocol/aztec-packages#7037))
([8a1032e](AztecProtocol/aztec-packages@8a1032e))
* Oink recursive verifier
([#8121](AztecProtocol/aztec-packages#8121))
([580708a](AztecProtocol/aztec-packages@580708a))
* **optimization:** Follow past `array_set`s when optimizing
`array_get`s (noir-lang/noir#5772)
([0379462](AztecProtocol/aztec-packages@0379462))
* Passes copy_cycles by const reference to avoid copying
([#8051](AztecProtocol/aztec-packages#8051))
([495d363](AztecProtocol/aztec-packages@495d363))
* **perf:** Mem2reg function state for value loads to optimize across
blocks (noir-lang/noir#5757)
([0379462](AztecProtocol/aztec-packages@0379462))
* PG recursive verifier constructors based on stdlib inputs
([#8052](AztecProtocol/aztec-packages#8052))
([4c568b0](AztecProtocol/aztec-packages@4c568b0))
* Poseidon2 gates for Ultra arithmetisation
([#7494](AztecProtocol/aztec-packages#7494))
([d86577c](AztecProtocol/aztec-packages@d86577c))
* Prover node metrics
([#8086](AztecProtocol/aztec-packages#8086))
([ab018ff](AztecProtocol/aztec-packages@ab018ff))
* Removed socat, fixed aztec-run
([#8145](AztecProtocol/aztec-packages#8145))
([ff94aa2](AztecProtocol/aztec-packages@ff94aa2))
* Removing redundant key fetching
([#8043](AztecProtocol/aztec-packages#8043))
([2bbcc7b](AztecProtocol/aztec-packages@2bbcc7b))
* Replace public key fetching API
([#7996](AztecProtocol/aztec-packages#7996))
([73d6aa9](AztecProtocol/aztec-packages@73d6aa9))
* Small optimization in toradix
([#8040](AztecProtocol/aztec-packages#8040))
([0dc7a50](AztecProtocol/aztec-packages@0dc7a50))
* Some fixes and cleanup in PG recursive verifier
([#8053](AztecProtocol/aztec-packages#8053))
([5f2a9bd](AztecProtocol/aztec-packages@5f2a9bd))
* Suggest trait methods in LSP completion
(noir-lang/noir#5735)
([0379462](AztecProtocol/aztec-packages@0379462))
* Suggest tuple fields in LSP completion
(noir-lang/noir#5730)
([0379462](AztecProtocol/aztec-packages@0379462))
* Track world state metrics
([#8109](AztecProtocol/aztec-packages#8109))
([ca58d94](AztecProtocol/aztec-packages@ca58d94))
* Typing specific pub keys
([#8099](AztecProtocol/aztec-packages#8099))
([638793a](AztecProtocol/aztec-packages@638793a))
* Unify all acir recursion constraints based on RecursionConstraint and
proof_type
([#7993](AztecProtocol/aztec-packages#7993))
([7cb39bc](AztecProtocol/aztec-packages@7cb39bc))
* User `super::` in LSP autocompletion if possible
(noir-lang/noir#5751)
([0379462](AztecProtocol/aztec-packages@0379462))
* Various token note improvements
([#8062](AztecProtocol/aztec-packages#8062))
([8f9dfd9](AztecProtocol/aztec-packages@8f9dfd9))
* Zk sumcheck
([#7517](AztecProtocol/aztec-packages#7517))
([0e9a530](AztecProtocol/aztec-packages@0e9a530))


### Bug Fixes

* (LSP) only add cached files relevant to workspace
(noir-lang/noir#5775)
([2d70215](AztecProtocol/aztec-packages@2d70215))
* Add DEBUG and LOG_LEVEL to valid env vars
([#8094](AztecProtocol/aztec-packages#8094))
([70e61f9](AztecProtocol/aztec-packages@70e61f9))
* Add link to l1-artifacts
([#7940](AztecProtocol/aztec-packages#7940))
([dcfd120](AztecProtocol/aztec-packages@dcfd120))
* Add missing trait impls for integer types to stdlib
(noir-lang/noir#5738)
([0379462](AztecProtocol/aztec-packages@0379462))
* Allow comptime code to use break without also being `unconstrained`
(noir-lang/noir#5744)
([0379462](AztecProtocol/aztec-packages@0379462))
* **avm:** Real bytes finalization
([#8041](AztecProtocol/aztec-packages#8041))
([047461a](AztecProtocol/aztec-packages@047461a))
* **ci:** Correctly run bb tests with asserts
([#7607](AztecProtocol/aztec-packages#7607))
([7b73f69](AztecProtocol/aztec-packages@7b73f69))
* Correctly constrain get header at
([#7893](AztecProtocol/aztec-packages#7893))
([2ebba0d](AztecProtocol/aztec-packages@2ebba0d))
* Deploy L1 rollup contract using salt if provided
([#8074](AztecProtocol/aztec-packages#8074))
([1e8eddf](AztecProtocol/aztec-packages@1e8eddf))
* Flaky e2e_prover_node test
([#8116](AztecProtocol/aztec-packages#8116))
([9d97bd4](AztecProtocol/aztec-packages@9d97bd4))
* **frontend:** Continue type check if we are missing an unsafe block
(noir-lang/noir#5720)
([0379462](AztecProtocol/aztec-packages@0379462))
* Let LSP autocompletion work in more contexts
(noir-lang/noir#5719)
([0379462](AztecProtocol/aztec-packages@0379462))
* Port option & extracting correct namespaced options
([#8097](AztecProtocol/aztec-packages#8097))
([e74c83e](AztecProtocol/aztec-packages@e74c83e))
* Set prover node max pending jobs in tests
([#8055](AztecProtocol/aztec-packages#8055))
([403c26f](AztecProtocol/aztec-packages@403c26f))
* Stop WorldStrateSynchronizer in prover node
([#8126](AztecProtocol/aztec-packages#8126))
([f724b07](AztecProtocol/aztec-packages@f724b07))
* Txe port and aztec start options
([#8071](AztecProtocol/aztec-packages#8071))
([23778c5](AztecProtocol/aztec-packages@23778c5))
* Unconstrained fn mismatch is now a warning
(noir-lang/noir#5764)
([0379462](AztecProtocol/aztec-packages@0379462))
* Wallet fixes for devnet, testing and misc
([#8058](AztecProtocol/aztec-packages#8058))
([15f3e8c](AztecProtocol/aztec-packages@15f3e8c))


### Miscellaneous

* Add Brillig loop bytecode size regression and update noir-gates-diff
report (noir-lang/noir#5747)
([0379462](AztecProtocol/aztec-packages@0379462))
* Apply some new lints across workspace
(noir-lang/noir#5736)
([0379462](AztecProtocol/aztec-packages@0379462))
* **avm:** Kernel trace and finalization
([#8049](AztecProtocol/aztec-packages#8049))
([d7edd24](AztecProtocol/aztec-packages@d7edd24))
* **avm:** Separate alu finalization
([#8069](AztecProtocol/aztec-packages#8069))
([e8a9eb4](AztecProtocol/aztec-packages@e8a9eb4))
* **bb:** IPA parallelization cleanup
([#8088](AztecProtocol/aztec-packages#8088))
([9227fa9](AztecProtocol/aztec-packages@9227fa9))
* **bb:** Simplify parallel_for_if_effective
([#8079](AztecProtocol/aztec-packages#8079))
([5bff26b](AztecProtocol/aztec-packages@5bff26b))
* **bb:** Small cleanup in protogalaxy prover
([#8072](AztecProtocol/aztec-packages#8072))
([4cb5c83](AztecProtocol/aztec-packages@4cb5c83))
* **ci:** Only show last 50 master cpp benches
([#8075](AztecProtocol/aztec-packages#8075))
([96f35bc](AztecProtocol/aztec-packages@96f35bc))
* Clarify Field use (noir-lang/noir#5740)
([0379462](AztecProtocol/aztec-packages@0379462))
* CLI command to set latest block as proven
([#7987](AztecProtocol/aztec-packages#7987))
([80eaf1d](AztecProtocol/aztec-packages@80eaf1d))
* Configuration for bot on various networks
([#8063](AztecProtocol/aztec-packages#8063))
([453a096](AztecProtocol/aztec-packages@453a096))
* Count brillig opcodes in nargo info
(noir-lang/noir#5189)
([0379462](AztecProtocol/aztec-packages@0379462))
* Deduplication in Protogalaxy
([#8067](AztecProtocol/aztec-packages#8067))
([a5cc3ba](AztecProtocol/aztec-packages@a5cc3ba))
* **docs:** Expanding solidity verifier chain list
(noir-lang/noir#5587)
([0379462](AztecProtocol/aztec-packages@0379462))
* Dont trail whitespace in vscode
([#5661](AztecProtocol/aztec-packages#5661))
([7595d91](AztecProtocol/aztec-packages@7595d91))
* Handle constant output for ec add opcode
([#8108](AztecProtocol/aztec-packages#8108))
([2ee79d2](AztecProtocol/aztec-packages@2ee79d2))
* Make spans non-optional on `UnresolvedType`
(noir-lang/noir#5773)
([2d70215](AztecProtocol/aztec-packages@2d70215))
* Merge devnet fixes back to master
([#8149](AztecProtocol/aztec-packages#8149))
([6be2183](AztecProtocol/aztec-packages@6be2183))
* Merge devnet to master
([#8044](AztecProtocol/aztec-packages#8044))
([f84950f](AztecProtocol/aztec-packages@f84950f))
* Merge Provernet back to master
([#8070](AztecProtocol/aztec-packages#8070))
([82f3dc7](AztecProtocol/aztec-packages@82f3dc7))
* Merging `TokenWithRefunds` with `Token`
([#8042](AztecProtocol/aztec-packages#8042))
([8b795eb](AztecProtocol/aztec-packages@8b795eb))
* Modified devnet config
([#8087](AztecProtocol/aztec-packages#8087))
([854ab45](AztecProtocol/aztec-packages@854ab45))
* Nuking old registry contract
([#8057](AztecProtocol/aztec-packages#8057))
([3bd08a8](AztecProtocol/aztec-packages@3bd08a8)),
closes
[#7955](AztecProtocol/aztec-packages#7955)
* Pedersen hash related cleanup in aztec.nr
([#8009](AztecProtocol/aztec-packages#8009))
([3c4ac65](AztecProtocol/aztec-packages@3c4ac65))
* Portal manager cli
([#8047](AztecProtocol/aztec-packages#8047))
([618e251](AztecProtocol/aztec-packages@618e251))
* Proper portal setup for fees + test
([#7944](AztecProtocol/aztec-packages#7944))
([9fec67e](AztecProtocol/aztec-packages@9fec67e))
* Public kernel
([#8061](AztecProtocol/aztec-packages#8061))
([617a69c](AztecProtocol/aztec-packages@617a69c))
* Refactor ACIR function IDs from raw integers to struct
(noir-lang/noir#5748)
([0379462](AztecProtocol/aztec-packages@0379462))
* Replace relative paths to noir-protocol-circuits
([5ddf0e6](AztecProtocol/aztec-packages@5ddf0e6))
* Replace relative paths to noir-protocol-circuits
([ca77c17](AztecProtocol/aztec-packages@ca77c17))
* Replace relative paths to noir-protocol-circuits
([fe73c93](AztecProtocol/aztec-packages@fe73c93))
* Replace relative paths to noir-protocol-circuits
([576bc2f](AztecProtocol/aztec-packages@576bc2f))
* Replace relative paths to noir-protocol-circuits
([0d05d6b](AztecProtocol/aztec-packages@0d05d6b))
* Simplify sequencer and l1 communication
([#7989](AztecProtocol/aztec-packages#7989))
([cee4eba](AztecProtocol/aztec-packages@cee4eba))
* Split LSP completion.rs into several files
(noir-lang/noir#5723)
([0379462](AztecProtocol/aztec-packages@0379462))
* Split up stdlib/recursion
([#8054](AztecProtocol/aztec-packages#8054))
([ec03e40](AztecProtocol/aztec-packages@ec03e40))
* **sync-noir:** Fix modify/delete conflicts automatically
([#8090](AztecProtocol/aztec-packages#8090))
([a09627c](AztecProtocol/aztec-packages@a09627c))
* Use decider verifier in ultra verifier
([#8115](AztecProtocol/aztec-packages#8115))
([6c5ab2b](AztecProtocol/aztec-packages@6c5ab2b))


### Documentation

* Fix typo overview.md
([#7908](AztecProtocol/aztec-packages#7908))
([3749211](AztecProtocol/aztec-packages@3749211))
* Update installation info for bb and noir
([#8119](AztecProtocol/aztec-packages#8119))
([a744321](AztecProtocol/aztec-packages@a744321))
</details>

<details><summary>barretenberg: 0.50.0</summary>

##
[0.50.0](AztecProtocol/aztec-packages@barretenberg-v0.49.2...barretenberg-v0.50.0)
(2024-08-22)


### Features

* Add a prover-node to the proving e2e tests
([#7952](AztecProtocol/aztec-packages#7952))
([ec5a5fb](AztecProtocol/aztec-packages@ec5a5fb))
* Automate verify_honk_proof input generation
([#8092](AztecProtocol/aztec-packages#8092))
([bf38d61](AztecProtocol/aztec-packages@bf38d61))
* **avm:** Enable zeromorph in AVM verification
([#8111](AztecProtocol/aztec-packages#8111))
([b1f9fb6](AztecProtocol/aztec-packages@b1f9fb6)),
closes
[#4944](AztecProtocol/aztec-packages#4944)
* Native Merkle Trees
([#7037](AztecProtocol/aztec-packages#7037))
([8a1032e](AztecProtocol/aztec-packages@8a1032e))
* Oink recursive verifier
([#8121](AztecProtocol/aztec-packages#8121))
([580708a](AztecProtocol/aztec-packages@580708a))
* Passes copy_cycles by const reference to avoid copying
([#8051](AztecProtocol/aztec-packages#8051))
([495d363](AztecProtocol/aztec-packages@495d363))
* PG recursive verifier constructors based on stdlib inputs
([#8052](AztecProtocol/aztec-packages#8052))
([4c568b0](AztecProtocol/aztec-packages@4c568b0))
* Poseidon2 gates for Ultra arithmetisation
([#7494](AztecProtocol/aztec-packages#7494))
([d86577c](AztecProtocol/aztec-packages@d86577c))
* Some fixes and cleanup in PG recursive verifier
([#8053](AztecProtocol/aztec-packages#8053))
([5f2a9bd](AztecProtocol/aztec-packages@5f2a9bd))
* Unify all acir recursion constraints based on RecursionConstraint and
proof_type
([#7993](AztecProtocol/aztec-packages#7993))
([7cb39bc](AztecProtocol/aztec-packages@7cb39bc))
* Zk sumcheck
([#7517](AztecProtocol/aztec-packages#7517))
([0e9a530](AztecProtocol/aztec-packages@0e9a530))


### Bug Fixes

* **avm:** Real bytes finalization
([#8041](AztecProtocol/aztec-packages#8041))
([047461a](AztecProtocol/aztec-packages@047461a))
* **ci:** Correctly run bb tests with asserts
([#7607](AztecProtocol/aztec-packages#7607))
([7b73f69](AztecProtocol/aztec-packages@7b73f69))


### Miscellaneous

* **avm:** Kernel trace and finalization
([#8049](AztecProtocol/aztec-packages#8049))
([d7edd24](AztecProtocol/aztec-packages@d7edd24))
* **avm:** Separate alu finalization
([#8069](AztecProtocol/aztec-packages#8069))
([e8a9eb4](AztecProtocol/aztec-packages@e8a9eb4))
* **bb:** IPA parallelization cleanup
([#8088](AztecProtocol/aztec-packages#8088))
([9227fa9](AztecProtocol/aztec-packages@9227fa9))
* **bb:** Simplify parallel_for_if_effective
([#8079](AztecProtocol/aztec-packages#8079))
([5bff26b](AztecProtocol/aztec-packages@5bff26b))
* **bb:** Small cleanup in protogalaxy prover
([#8072](AztecProtocol/aztec-packages#8072))
([4cb5c83](AztecProtocol/aztec-packages@4cb5c83))
* Deduplication in Protogalaxy
([#8067](AztecProtocol/aztec-packages#8067))
([a5cc3ba](AztecProtocol/aztec-packages@a5cc3ba))
* Handle constant output for ec add opcode
([#8108](AztecProtocol/aztec-packages#8108))
([2ee79d2](AztecProtocol/aztec-packages@2ee79d2))
* Merge devnet fixes back to master
([#8149](AztecProtocol/aztec-packages#8149))
([6be2183](AztecProtocol/aztec-packages@6be2183))
* Split up stdlib/recursion
([#8054](AztecProtocol/aztec-packages#8054))
([ec03e40](AztecProtocol/aztec-packages@ec03e40))
* Use decider verifier in ultra verifier
([#8115](AztecProtocol/aztec-packages#8115))
([6c5ab2b](AztecProtocol/aztec-packages@6c5ab2b))


### Documentation

* Update installation info for bb and noir
([#8119](AztecProtocol/aztec-packages#8119))
([a744321](AztecProtocol/aztec-packages@a744321))
</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
C-barretenberg Component: barretenberg cryptography library
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants