refactor: Make MSM builder more explicit#6110
Conversation
| using AffineElement = typename CycleGroup::affine_element; | ||
|
|
||
| struct TranscriptState { | ||
| struct TranscriptRow { |
There was a problem hiding this comment.
If you renamed it (much appreciated) can you also add a sentence above explaining what this is? We have to start somewhere.
There was a problem hiding this comment.
Scope of the PR is only MSM builder
| static constexpr size_t WNAF_SLICES_PER_ROW = 4; | ||
| static constexpr size_t ADDITIONS_PER_ROW = 4; | ||
|
|
||
| // WORKTODO: naming: raw ops? ECCVM op? |
There was a problem hiding this comment.
Will you make an issue about this please?
There was a problem hiding this comment.
I don't think it's worth it, will leave it to whoever does an audit to rename things as they see fit.
| static constexpr size_t NUM_SCALAR_BITS = 128; | ||
| static constexpr size_t WNAF_SLICE_BITS = 4; | ||
| static constexpr size_t NUM_WNAF_SLICES = (NUM_SCALAR_BITS + WNAF_SLICE_BITS - 1) / WNAF_SLICE_BITS; | ||
| static constexpr size_t NUM_WNAF_DIGITS_PER_SCALAR = NUM_SCALAR_BITS / WNAF_SLICE_BITS; // 32 |
There was a problem hiding this comment.
can you add a brief description about why 32
There was a problem hiding this comment.
and i think it would be nice to do the same for 4 and 128 so it's easier to understand the circuit builder code
There was a problem hiding this comment.
Well 32 is just the result of the division (the other formula is more complicated but has the same result...). The others are just chosen parameters but yeah I documented and renamed (slice ~> digit, which IMO is clearer)
| private: | ||
| /** | ||
| * @brief when inserting operations, update the number of multiplications in the latest scalar mul | ||
| * @brief Update cached_active_msm_count or update other row counts and reset cached_active_msm_count. |
There was a problem hiding this comment.
can you add a comment about what cached_active_msm_count is on the line its defined
|
|
||
| if (i == 0 && is_even) { | ||
| // if least significant slice is even, we add 1 to create an odd value && set 'skew' to true | ||
| // WORKTODO: skew is set where? |
There was a problem hiding this comment.
No but it's not in scope
| namespace bb { | ||
|
|
||
| class ECCVMPrecomputedTablesBuilder { | ||
| class ECCVMPointTablePrecomputationBuilder { |
There was a problem hiding this comment.
would you please add a brief comment to this class as well?
| FF accumulator_y = 0; | ||
| }; | ||
|
|
||
| struct alignas(64) MSMRowTranscript { |
There was a problem hiding this comment.
Tried to search for it, maybe I'm misunderstanding something, was it deleted because it's not actually used?
There was a problem hiding this comment.
Yeah it wasn't in use 🙃
| // When we perform a scalar multiplication, x into four-bit scalars and conver them to wNAF form, then look | ||
| // these precomputed values up with. We record read counts in a table with the following structure: |
There was a problem hiding this comment.
This sentence is a bit hard to read, typo "conver" and I think you forgot decompose before x
There was a problem hiding this comment.
Whoops, idk what happened. I rewrote as
// When we perform a scalar multiplication, we decompose x into base-16 wNAF digits then look these precomputed
// values up with digit-by-digit. We record read counts in a table with the following structure:
| * the slice value is in *compressed* windowed-non-adjacent-form format: | ||
| * A non-compressed WNAF slice is in the range: `-15, -13, ..., 15` | ||
| * In compressed form, tney become `0, ..., 15` | ||
| * The wNAF digits lie in the range -15, -13, ..., 13, 15. |
There was a problem hiding this comment.
mention it's because we use base 16?
| * (for negative point table) T[0] = -P, T[1] = -3P, ..., T[15] = -15P | ||
| * i.e. if the slice value is negative, we can use the compressed WNAF directly as the table index | ||
| * if the slice value is positive, we must take `15 - compressedWNAF` to get the table index | ||
| * if the slice value is positive, we must take 15 - (compressed wNAF) to get the table index |
There was a problem hiding this comment.
it'd be great to have a sentence explaining why the positive-negative separation is required
There was a problem hiding this comment.
It's not required, idk why he did it this way.
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.39.0</summary> ## [0.39.0](aztec-package-v0.38.0...aztec-package-v0.39.0) (2024-05-14) ### Features * **p2p:** GossibSub ([#6170](#6170)) ([98d32f1](98d32f1)), closes [#5055](#5055) * PublicKeys struct ([#6333](#6333)) ([2633cfc](2633cfc)) ### Miscellaneous * `CompleteAddress` cleanup ([#6300](#6300)) ([9c30759](9c30759)), closes [#5834](#5834) </details> <details><summary>barretenberg.js: 0.39.0</summary> ## [0.39.0](barretenberg.js-v0.38.0...barretenberg.js-v0.39.0) (2024-05-14) ### ⚠ BREAKING CHANGES * switch `bb` over to read ACIR from nargo artifacts ([#6283](#6283)) ### Features * Switch `bb` over to read ACIR from nargo artifacts ([#6283](#6283)) ([78adcc0](78adcc0)) </details> <details><summary>aztec-packages: 0.39.0</summary> ## [0.39.0](aztec-packages-v0.38.0...aztec-packages-v0.39.0) (2024-05-14) ### ⚠ BREAKING CHANGES * switch `bb` over to read ACIR from nargo artifacts ([#6283](#6283)) * shared mutable configurable delays ([#6104](#6104)) * specify databus arrays for BB ([#6239](#6239)) ### Features * Add `Not` trait to stdlib (noir-lang/noir#4999) ([11cde44](11cde44)) * Add support for u16/i16 (noir-lang/noir#4985) ([11cde44](11cde44)) * Avm support for public input columns ([#5700](#5700)) ([8cf9168](8cf9168)) * **avm-simulator:** Add to_radix_le instruction ([#6308](#6308)) ([6374a32](6374a32)) * **avm-simulator:** Error stack tracking and enriching in AVM to match ACVM/ACIR-SIM ([#6289](#6289)) ([5c1f895](5c1f895)) * **aztec-nr:** Add 'with_gas()' function to avm call interface ([#6256](#6256)) ([0aedd23](0aedd23)) * **aztec-nr:** Add enqueue functions to AvmCallInterface ([#6264](#6264)) ([1c74387](1c74387)) * Build-images as earthly. ([#6194](#6194)) ([67fedf1](67fedf1)) * Div opcode ([#6053](#6053)) ([8e111f8](8e111f8)) * Encrypted log body ([#6251](#6251)) ([ba618d5](ba618d5)) * Enforce note hash read requests to read within own contract ([#6310](#6310)) ([bd10595](bd10595)) * Expose `set_as_fee_payer` and test it in e2e ([#6380](#6380)) ([a8274f3](a8274f3)) * Implement `ops` traits on `u16`/`i16` (noir-lang/noir#4996) ([11cde44](11cde44)) * Increase default expression width to 4 (noir-lang/noir#4995) ([11cde44](11cde44)) * Move abi demonomorphizer to noir_codegen and use noir_codegen in protocol types ([#6302](#6302)) ([690e500](690e500)) * Move to_radix to a blackbox ([#6294](#6294)) ([ac27376](ac27376)) * **p2p:** GossibSub ([#6170](#6170)) ([98d32f1](98d32f1)), closes [#5055](#5055) * Plumb fee payer ([#6286](#6286)) ([1f8fd1c](1f8fd1c)) * Private Kernel Recursion ([#6278](#6278)) ([eae5822](eae5822)) * Proper padding in ts AES and constrained AES in body and header computations ([#6269](#6269)) ([ef9cdde](ef9cdde)) * PublicKeys struct ([#6333](#6333)) ([2633cfc](2633cfc)) * Re-enabling authwit constraint ([#6323](#6323)) ([aa06d55](aa06d55)), closes [#5830](#5830) * Remove query to backend to get expression width (noir-lang/noir#4975) ([11cde44](11cde44)) * Replacing mentions to aztec-starter with codespace methods ([#6177](#6177)) ([63e8788](63e8788)) * Return gas usage per phase from node tx simulation ([#6255](#6255)) ([fb58dfc](fb58dfc)) * Shared mutable configurable delays ([#6104](#6104)) ([c191a40](c191a40)) * Small translator optimisations ([#6354](#6354)) ([ba6c42e](ba6c42e)) * Specify databus arrays for BB ([#6239](#6239)) ([01d9f24](01d9f24)) * Structured trace in client ivc ([#6132](#6132)) ([92c1478](92c1478)) * Switch `bb` over to read ACIR from nargo artifacts ([#6283](#6283)) ([78adcc0](78adcc0)) * Sync from aztec-packages (noir-lang/noir#4993) ([11cde44](11cde44)) * ToRadix BB + avm transpiler support ([#6330](#6330)) ([c3c602f](c3c602f)) * **vm:** Reading kernel state opcodes ([#5739](#5739)) ([3250a8a](3250a8a)) ### Bug Fixes * `CombinedConstantData` not registered for serialization ([#6292](#6292)) ([89ab8ee](89ab8ee)) * **avm-context:** Enqueueing of public from private ([#6299](#6299)) ([bd2ccf0](bd2ccf0)) * **avm-simulator:** Always set revertReason when reverting ([#6297](#6297)) ([cc59981](cc59981)) * **avm-simulator:** Correctly create call stack in shallow assertions ([#6274](#6274)) ([f6045fd](f6045fd)) * **avm-simulator:** Fix env getters ([#6357](#6357)) ([485fe40](485fe40)) * **avm-simulator:** Fix message sender ([#6331](#6331)) ([f7e2d26](f7e2d26)) * **avm-simulator:** Fix test expectation ([#6293](#6293)) ([f51acfa](f51acfa)) * **avm-simulator:** Rethrow nested assertions ([#6275](#6275)) ([cd05b91](cd05b91)) * **avm-transpiler:** Patch debug infos with modified PCs ([#6371](#6371)) ([c36f0fa](c36f0fa)) * Check for public args in aztec functions ([#6355](#6355)) ([219efd6](219efd6)) * **ci:** Bench list ([#6282](#6282)) ([2652576](2652576)) * **circuits.js:** Fix nullifier non existent hints ([#6346](#6346)) ([297779a](297779a)) * **ci:** Stop mass serialization ([#6290](#6290)) ([60104e9](60104e9)) * Defer overflow checks for unsigned integers to acir-gen (noir-lang/noir#4832) ([11cde44](11cde44)) * Enable client proof tests ([#6249](#6249)) ([6d3a800](6d3a800)) * Ignore no_predicates in brillig functions (noir-lang/noir#5012) ([3cda21a](3cda21a)) * Noir_js import ([#6381](#6381)) ([e9c7e5f](e9c7e5f)) * Pw/update merge check ([#6201](#6201)) ([856657f](856657f)) * Run noir browser tests in series ([#6232](#6232)) ([e092514](e092514)) * Temporarily revert to_radix blackbox ([#6304](#6304)) ([044d0fe](044d0fe)) ### Miscellaneous * `CompleteAddress` cleanup ([#6300](#6300)) ([9c30759](9c30759)), closes [#5834](#5834) * Adding name shadowing tests template program (noir-lang/noir#4799) ([11cde44](11cde44)) * **avm-context:** Implement Empty ([#6303](#6303)) ([27534ac](27534ac)) * **avm-simulator:** Add U128 overflow tests to AVM simulator ([#6281](#6281)) ([5514143](5514143)) * Bump public bytecode size to 40000 in prep for AVM migration ([#6266](#6266)) ([2b61123](2b61123)) * Bump timeout for after-hook for data store test ([#6364](#6364)) ([18eca39](18eca39)) * **ci:** Fix master, better spot copy times ([#6374](#6374)) ([fee7649](fee7649)) * **ci:** Hotfix runner checks ([#6373](#6373)) ([d5fd668](d5fd668)) * **ci:** Reuse ssh connections ([#6382](#6382)) ([5f6c31e](5f6c31e)) * **ci:** Revert inline cache push for now ([#6318](#6318)) ([4c9bfb0](4c9bfb0)) * **ci:** Run clippy on benchmarks (noir-lang/noir#4988) ([11cde44](11cde44)) * **ci:** Run e2e on isolated spots ([#6287](#6287)) ([e7d2dd6](e7d2dd6)) * **ci:** Spot health fix, earthly workarounds ([#6379](#6379)) ([da7573c](da7573c)) * **ci:** Stability after spot changes ([#6367](#6367)) ([7ad4179](7ad4179)) * **ci:** Use on-demand runners ([#6311](#6311)) ([dba835d](dba835d)) * Deploying accounts after key registry ([#6322](#6322)) ([84878d1](84878d1)) * Disable `gates_report.yml` (noir-lang/noir#4997) ([11cde44](11cde44)) * **docs:** Update contract deployments page ([#6319](#6319)) ([2e331b5](2e331b5)) * **dsl:** Update backend gateCount command to query a Program in a single request ([#6228](#6228)) ([8079f60](8079f60)) * Enforce formatting of noir code ([#6271](#6271)) ([356f7bb](356f7bb)) * **experimental:** Add compiler option to enable the Elaborator (noir-lang/noir#5003) ([3cda21a](3cda21a)) * **experimental:** Add Elaborator pass (noir-lang/noir#4992) ([3cda21a](3cda21a)) * Make coinbase and fee_recipient inaccessible ([#6375](#6375)) ([ded28b7](ded28b7)) * Make MSM builder more explicit ([#6110](#6110)) ([40306b6](40306b6)) * Pw/refactor bb prover ([#6349](#6349)) ([8eb0398](8eb0398)) * Remove `bb info` command ([#6276](#6276)) ([f0a1c89](f0a1c89)) * Replace relative paths to noir-protocol-circuits ([fd40d99](fd40d99)) * Replace relative paths to noir-protocol-circuits ([53dbcb5](53dbcb5)) * Replace relative paths to noir-protocol-circuits ([48e07c3](48e07c3)) * Replace relative paths to noir-protocol-circuits ([6532725](6532725)) * Replace relative paths to noir-protocol-circuits ([8330f70](8330f70)) * Replace relative paths to noir-protocol-circuits ([484741a](484741a)) * Replacing old pub key oracle with get_ivpk_m ([#6219](#6219)) ([9acc9ec](9acc9ec)) * Siloing in tails ([#6167](#6167)) ([c20dd50](c20dd50)) * Simplify nargo CLI to read from artifacts ([#6279](#6279)) ([b2c019b](b2c019b)) * Skip formatting informattable comments ([#6288](#6288)) ([95b499b](95b499b)) * Split `ops` into `arith` and `bit` modules (noir-lang/noir#4989) ([11cde44](11cde44)) * **test-contracts:** Prepare e2e_token_contract+ error msgs for AVM migration ([#6307](#6307)) ([0c20f44](0c20f44)) * Update cspell for abi demonomorphizer ([#6258](#6258)) ([ce2d43c](ce2d43c)) * Update serialisation ([#6378](#6378)) ([527129d](527129d)) * Validating private call data ([#6316](#6316)) ([84b9fcd](84b9fcd)) ### Documentation * Call types ([#5472](#5472)) ([1ca0d28](1ca0d28)) * Re-add and update accounts docs ([#6345](#6345)) ([4926d15](4926d15)) * Updated protocol specs ([#6341](#6341)) ([a0f82db](a0f82db)) </details> <details><summary>barretenberg: 0.39.0</summary> ## [0.39.0](barretenberg-v0.38.0...barretenberg-v0.39.0) (2024-05-14) ### ⚠ BREAKING CHANGES * switch `bb` over to read ACIR from nargo artifacts ([#6283](#6283)) * specify databus arrays for BB ([#6239](#6239)) ### Features * Avm support for public input columns ([#5700](#5700)) ([8cf9168](8cf9168)) * **avm-simulator:** Add to_radix_le instruction ([#6308](#6308)) ([6374a32](6374a32)) * Div opcode ([#6053](#6053)) ([8e111f8](8e111f8)) * Move to_radix to a blackbox ([#6294](#6294)) ([ac27376](ac27376)) * Small translator optimisations ([#6354](#6354)) ([ba6c42e](ba6c42e)) * Specify databus arrays for BB ([#6239](#6239)) ([01d9f24](01d9f24)) * Structured trace in client ivc ([#6132](#6132)) ([92c1478](92c1478)) * Switch `bb` over to read ACIR from nargo artifacts ([#6283](#6283)) ([78adcc0](78adcc0)) * ToRadix BB + avm transpiler support ([#6330](#6330)) ([c3c602f](c3c602f)) * **vm:** Reading kernel state opcodes ([#5739](#5739)) ([3250a8a](3250a8a)) ### Bug Fixes * Temporarily revert to_radix blackbox ([#6304](#6304)) ([044d0fe](044d0fe)) ### Miscellaneous * **dsl:** Update backend gateCount command to query a Program in a single request ([#6228](#6228)) ([8079f60](8079f60)) * Make MSM builder more explicit ([#6110](#6110)) ([40306b6](40306b6)) * Remove `bb info` command ([#6276](#6276)) ([f0a1c89](f0a1c89)) * Update serialisation ([#6378](#6378)) ([527129d](527129d)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.39.0</summary> ## [0.39.0](AztecProtocol/aztec-packages@aztec-package-v0.38.0...aztec-package-v0.39.0) (2024-05-14) ### Features * **p2p:** GossibSub ([#6170](AztecProtocol/aztec-packages#6170)) ([98d32f1](AztecProtocol/aztec-packages@98d32f1)), closes [#5055](AztecProtocol/aztec-packages#5055) * PublicKeys struct ([#6333](AztecProtocol/aztec-packages#6333)) ([2633cfc](AztecProtocol/aztec-packages@2633cfc)) ### Miscellaneous * `CompleteAddress` cleanup ([#6300](AztecProtocol/aztec-packages#6300)) ([9c30759](AztecProtocol/aztec-packages@9c30759)), closes [#5834](AztecProtocol/aztec-packages#5834) </details> <details><summary>barretenberg.js: 0.39.0</summary> ## [0.39.0](AztecProtocol/aztec-packages@barretenberg.js-v0.38.0...barretenberg.js-v0.39.0) (2024-05-14) ### ⚠ BREAKING CHANGES * switch `bb` over to read ACIR from nargo artifacts ([#6283](AztecProtocol/aztec-packages#6283)) ### Features * Switch `bb` over to read ACIR from nargo artifacts ([#6283](AztecProtocol/aztec-packages#6283)) ([78adcc0](AztecProtocol/aztec-packages@78adcc0)) </details> <details><summary>aztec-packages: 0.39.0</summary> ## [0.39.0](AztecProtocol/aztec-packages@aztec-packages-v0.38.0...aztec-packages-v0.39.0) (2024-05-14) ### ⚠ BREAKING CHANGES * switch `bb` over to read ACIR from nargo artifacts ([#6283](AztecProtocol/aztec-packages#6283)) * shared mutable configurable delays ([#6104](AztecProtocol/aztec-packages#6104)) * specify databus arrays for BB ([#6239](AztecProtocol/aztec-packages#6239)) ### Features * Add `Not` trait to stdlib (noir-lang/noir#4999) ([11cde44](AztecProtocol/aztec-packages@11cde44)) * Add support for u16/i16 (noir-lang/noir#4985) ([11cde44](AztecProtocol/aztec-packages@11cde44)) * Avm support for public input columns ([#5700](AztecProtocol/aztec-packages#5700)) ([8cf9168](AztecProtocol/aztec-packages@8cf9168)) * **avm-simulator:** Add to_radix_le instruction ([#6308](AztecProtocol/aztec-packages#6308)) ([6374a32](AztecProtocol/aztec-packages@6374a32)) * **avm-simulator:** Error stack tracking and enriching in AVM to match ACVM/ACIR-SIM ([#6289](AztecProtocol/aztec-packages#6289)) ([5c1f895](AztecProtocol/aztec-packages@5c1f895)) * **aztec-nr:** Add 'with_gas()' function to avm call interface ([#6256](AztecProtocol/aztec-packages#6256)) ([0aedd23](AztecProtocol/aztec-packages@0aedd23)) * **aztec-nr:** Add enqueue functions to AvmCallInterface ([#6264](AztecProtocol/aztec-packages#6264)) ([1c74387](AztecProtocol/aztec-packages@1c74387)) * Build-images as earthly. ([#6194](AztecProtocol/aztec-packages#6194)) ([67fedf1](AztecProtocol/aztec-packages@67fedf1)) * Div opcode ([#6053](AztecProtocol/aztec-packages#6053)) ([8e111f8](AztecProtocol/aztec-packages@8e111f8)) * Encrypted log body ([#6251](AztecProtocol/aztec-packages#6251)) ([ba618d5](AztecProtocol/aztec-packages@ba618d5)) * Enforce note hash read requests to read within own contract ([#6310](AztecProtocol/aztec-packages#6310)) ([bd10595](AztecProtocol/aztec-packages@bd10595)) * Expose `set_as_fee_payer` and test it in e2e ([#6380](AztecProtocol/aztec-packages#6380)) ([a8274f3](AztecProtocol/aztec-packages@a8274f3)) * Implement `ops` traits on `u16`/`i16` (noir-lang/noir#4996) ([11cde44](AztecProtocol/aztec-packages@11cde44)) * Increase default expression width to 4 (noir-lang/noir#4995) ([11cde44](AztecProtocol/aztec-packages@11cde44)) * Move abi demonomorphizer to noir_codegen and use noir_codegen in protocol types ([#6302](AztecProtocol/aztec-packages#6302)) ([690e500](AztecProtocol/aztec-packages@690e500)) * Move to_radix to a blackbox ([#6294](AztecProtocol/aztec-packages#6294)) ([ac27376](AztecProtocol/aztec-packages@ac27376)) * **p2p:** GossibSub ([#6170](AztecProtocol/aztec-packages#6170)) ([98d32f1](AztecProtocol/aztec-packages@98d32f1)), closes [#5055](AztecProtocol/aztec-packages#5055) * Plumb fee payer ([#6286](AztecProtocol/aztec-packages#6286)) ([1f8fd1c](AztecProtocol/aztec-packages@1f8fd1c)) * Private Kernel Recursion ([#6278](AztecProtocol/aztec-packages#6278)) ([eae5822](AztecProtocol/aztec-packages@eae5822)) * Proper padding in ts AES and constrained AES in body and header computations ([#6269](AztecProtocol/aztec-packages#6269)) ([ef9cdde](AztecProtocol/aztec-packages@ef9cdde)) * PublicKeys struct ([#6333](AztecProtocol/aztec-packages#6333)) ([2633cfc](AztecProtocol/aztec-packages@2633cfc)) * Re-enabling authwit constraint ([#6323](AztecProtocol/aztec-packages#6323)) ([aa06d55](AztecProtocol/aztec-packages@aa06d55)), closes [#5830](AztecProtocol/aztec-packages#5830) * Remove query to backend to get expression width (noir-lang/noir#4975) ([11cde44](AztecProtocol/aztec-packages@11cde44)) * Replacing mentions to aztec-starter with codespace methods ([#6177](AztecProtocol/aztec-packages#6177)) ([63e8788](AztecProtocol/aztec-packages@63e8788)) * Return gas usage per phase from node tx simulation ([#6255](AztecProtocol/aztec-packages#6255)) ([fb58dfc](AztecProtocol/aztec-packages@fb58dfc)) * Shared mutable configurable delays ([#6104](AztecProtocol/aztec-packages#6104)) ([c191a40](AztecProtocol/aztec-packages@c191a40)) * Small translator optimisations ([#6354](AztecProtocol/aztec-packages#6354)) ([ba6c42e](AztecProtocol/aztec-packages@ba6c42e)) * Specify databus arrays for BB ([#6239](AztecProtocol/aztec-packages#6239)) ([01d9f24](AztecProtocol/aztec-packages@01d9f24)) * Structured trace in client ivc ([#6132](AztecProtocol/aztec-packages#6132)) ([92c1478](AztecProtocol/aztec-packages@92c1478)) * Switch `bb` over to read ACIR from nargo artifacts ([#6283](AztecProtocol/aztec-packages#6283)) ([78adcc0](AztecProtocol/aztec-packages@78adcc0)) * Sync from aztec-packages (noir-lang/noir#4993) ([11cde44](AztecProtocol/aztec-packages@11cde44)) * ToRadix BB + avm transpiler support ([#6330](AztecProtocol/aztec-packages#6330)) ([c3c602f](AztecProtocol/aztec-packages@c3c602f)) * **vm:** Reading kernel state opcodes ([#5739](AztecProtocol/aztec-packages#5739)) ([3250a8a](AztecProtocol/aztec-packages@3250a8a)) ### Bug Fixes * `CombinedConstantData` not registered for serialization ([#6292](AztecProtocol/aztec-packages#6292)) ([89ab8ee](AztecProtocol/aztec-packages@89ab8ee)) * **avm-context:** Enqueueing of public from private ([#6299](AztecProtocol/aztec-packages#6299)) ([bd2ccf0](AztecProtocol/aztec-packages@bd2ccf0)) * **avm-simulator:** Always set revertReason when reverting ([#6297](AztecProtocol/aztec-packages#6297)) ([cc59981](AztecProtocol/aztec-packages@cc59981)) * **avm-simulator:** Correctly create call stack in shallow assertions ([#6274](AztecProtocol/aztec-packages#6274)) ([f6045fd](AztecProtocol/aztec-packages@f6045fd)) * **avm-simulator:** Fix env getters ([#6357](AztecProtocol/aztec-packages#6357)) ([485fe40](AztecProtocol/aztec-packages@485fe40)) * **avm-simulator:** Fix message sender ([#6331](AztecProtocol/aztec-packages#6331)) ([f7e2d26](AztecProtocol/aztec-packages@f7e2d26)) * **avm-simulator:** Fix test expectation ([#6293](AztecProtocol/aztec-packages#6293)) ([f51acfa](AztecProtocol/aztec-packages@f51acfa)) * **avm-simulator:** Rethrow nested assertions ([#6275](AztecProtocol/aztec-packages#6275)) ([cd05b91](AztecProtocol/aztec-packages@cd05b91)) * **avm-transpiler:** Patch debug infos with modified PCs ([#6371](AztecProtocol/aztec-packages#6371)) ([c36f0fa](AztecProtocol/aztec-packages@c36f0fa)) * Check for public args in aztec functions ([#6355](AztecProtocol/aztec-packages#6355)) ([219efd6](AztecProtocol/aztec-packages@219efd6)) * **ci:** Bench list ([#6282](AztecProtocol/aztec-packages#6282)) ([2652576](AztecProtocol/aztec-packages@2652576)) * **circuits.js:** Fix nullifier non existent hints ([#6346](AztecProtocol/aztec-packages#6346)) ([297779a](AztecProtocol/aztec-packages@297779a)) * **ci:** Stop mass serialization ([#6290](AztecProtocol/aztec-packages#6290)) ([60104e9](AztecProtocol/aztec-packages@60104e9)) * Defer overflow checks for unsigned integers to acir-gen (noir-lang/noir#4832) ([11cde44](AztecProtocol/aztec-packages@11cde44)) * Enable client proof tests ([#6249](AztecProtocol/aztec-packages#6249)) ([6d3a800](AztecProtocol/aztec-packages@6d3a800)) * Ignore no_predicates in brillig functions (noir-lang/noir#5012) ([3cda21a](AztecProtocol/aztec-packages@3cda21a)) * Noir_js import ([#6381](AztecProtocol/aztec-packages#6381)) ([e9c7e5f](AztecProtocol/aztec-packages@e9c7e5f)) * Pw/update merge check ([#6201](AztecProtocol/aztec-packages#6201)) ([856657f](AztecProtocol/aztec-packages@856657f)) * Run noir browser tests in series ([#6232](AztecProtocol/aztec-packages#6232)) ([e092514](AztecProtocol/aztec-packages@e092514)) * Temporarily revert to_radix blackbox ([#6304](AztecProtocol/aztec-packages#6304)) ([044d0fe](AztecProtocol/aztec-packages@044d0fe)) ### Miscellaneous * `CompleteAddress` cleanup ([#6300](AztecProtocol/aztec-packages#6300)) ([9c30759](AztecProtocol/aztec-packages@9c30759)), closes [#5834](AztecProtocol/aztec-packages#5834) * Adding name shadowing tests template program (noir-lang/noir#4799) ([11cde44](AztecProtocol/aztec-packages@11cde44)) * **avm-context:** Implement Empty ([#6303](AztecProtocol/aztec-packages#6303)) ([27534ac](AztecProtocol/aztec-packages@27534ac)) * **avm-simulator:** Add U128 overflow tests to AVM simulator ([#6281](AztecProtocol/aztec-packages#6281)) ([5514143](AztecProtocol/aztec-packages@5514143)) * Bump public bytecode size to 40000 in prep for AVM migration ([#6266](AztecProtocol/aztec-packages#6266)) ([2b61123](AztecProtocol/aztec-packages@2b61123)) * Bump timeout for after-hook for data store test ([#6364](AztecProtocol/aztec-packages#6364)) ([18eca39](AztecProtocol/aztec-packages@18eca39)) * **ci:** Fix master, better spot copy times ([#6374](AztecProtocol/aztec-packages#6374)) ([fee7649](AztecProtocol/aztec-packages@fee7649)) * **ci:** Hotfix runner checks ([#6373](AztecProtocol/aztec-packages#6373)) ([d5fd668](AztecProtocol/aztec-packages@d5fd668)) * **ci:** Reuse ssh connections ([#6382](AztecProtocol/aztec-packages#6382)) ([5f6c31e](AztecProtocol/aztec-packages@5f6c31e)) * **ci:** Revert inline cache push for now ([#6318](AztecProtocol/aztec-packages#6318)) ([4c9bfb0](AztecProtocol/aztec-packages@4c9bfb0)) * **ci:** Run clippy on benchmarks (noir-lang/noir#4988) ([11cde44](AztecProtocol/aztec-packages@11cde44)) * **ci:** Run e2e on isolated spots ([#6287](AztecProtocol/aztec-packages#6287)) ([e7d2dd6](AztecProtocol/aztec-packages@e7d2dd6)) * **ci:** Spot health fix, earthly workarounds ([#6379](AztecProtocol/aztec-packages#6379)) ([da7573c](AztecProtocol/aztec-packages@da7573c)) * **ci:** Stability after spot changes ([#6367](AztecProtocol/aztec-packages#6367)) ([7ad4179](AztecProtocol/aztec-packages@7ad4179)) * **ci:** Use on-demand runners ([#6311](AztecProtocol/aztec-packages#6311)) ([dba835d](AztecProtocol/aztec-packages@dba835d)) * Deploying accounts after key registry ([#6322](AztecProtocol/aztec-packages#6322)) ([84878d1](AztecProtocol/aztec-packages@84878d1)) * Disable `gates_report.yml` (noir-lang/noir#4997) ([11cde44](AztecProtocol/aztec-packages@11cde44)) * **docs:** Update contract deployments page ([#6319](AztecProtocol/aztec-packages#6319)) ([2e331b5](AztecProtocol/aztec-packages@2e331b5)) * **dsl:** Update backend gateCount command to query a Program in a single request ([#6228](AztecProtocol/aztec-packages#6228)) ([8079f60](AztecProtocol/aztec-packages@8079f60)) * Enforce formatting of noir code ([#6271](AztecProtocol/aztec-packages#6271)) ([356f7bb](AztecProtocol/aztec-packages@356f7bb)) * **experimental:** Add compiler option to enable the Elaborator (noir-lang/noir#5003) ([3cda21a](AztecProtocol/aztec-packages@3cda21a)) * **experimental:** Add Elaborator pass (noir-lang/noir#4992) ([3cda21a](AztecProtocol/aztec-packages@3cda21a)) * Make coinbase and fee_recipient inaccessible ([#6375](AztecProtocol/aztec-packages#6375)) ([ded28b7](AztecProtocol/aztec-packages@ded28b7)) * Make MSM builder more explicit ([#6110](AztecProtocol/aztec-packages#6110)) ([40306b6](AztecProtocol/aztec-packages@40306b6)) * Pw/refactor bb prover ([#6349](AztecProtocol/aztec-packages#6349)) ([8eb0398](AztecProtocol/aztec-packages@8eb0398)) * Remove `bb info` command ([#6276](AztecProtocol/aztec-packages#6276)) ([f0a1c89](AztecProtocol/aztec-packages@f0a1c89)) * Replace relative paths to noir-protocol-circuits ([fd40d99](AztecProtocol/aztec-packages@fd40d99)) * Replace relative paths to noir-protocol-circuits ([53dbcb5](AztecProtocol/aztec-packages@53dbcb5)) * Replace relative paths to noir-protocol-circuits ([48e07c3](AztecProtocol/aztec-packages@48e07c3)) * Replace relative paths to noir-protocol-circuits ([6532725](AztecProtocol/aztec-packages@6532725)) * Replace relative paths to noir-protocol-circuits ([8330f70](AztecProtocol/aztec-packages@8330f70)) * Replace relative paths to noir-protocol-circuits ([484741a](AztecProtocol/aztec-packages@484741a)) * Replacing old pub key oracle with get_ivpk_m ([#6219](AztecProtocol/aztec-packages#6219)) ([9acc9ec](AztecProtocol/aztec-packages@9acc9ec)) * Siloing in tails ([#6167](AztecProtocol/aztec-packages#6167)) ([c20dd50](AztecProtocol/aztec-packages@c20dd50)) * Simplify nargo CLI to read from artifacts ([#6279](AztecProtocol/aztec-packages#6279)) ([b2c019b](AztecProtocol/aztec-packages@b2c019b)) * Skip formatting informattable comments ([#6288](AztecProtocol/aztec-packages#6288)) ([95b499b](AztecProtocol/aztec-packages@95b499b)) * Split `ops` into `arith` and `bit` modules (noir-lang/noir#4989) ([11cde44](AztecProtocol/aztec-packages@11cde44)) * **test-contracts:** Prepare e2e_token_contract+ error msgs for AVM migration ([#6307](AztecProtocol/aztec-packages#6307)) ([0c20f44](AztecProtocol/aztec-packages@0c20f44)) * Update cspell for abi demonomorphizer ([#6258](AztecProtocol/aztec-packages#6258)) ([ce2d43c](AztecProtocol/aztec-packages@ce2d43c)) * Update serialisation ([#6378](AztecProtocol/aztec-packages#6378)) ([527129d](AztecProtocol/aztec-packages@527129d)) * Validating private call data ([#6316](AztecProtocol/aztec-packages#6316)) ([84b9fcd](AztecProtocol/aztec-packages@84b9fcd)) ### Documentation * Call types ([#5472](AztecProtocol/aztec-packages#5472)) ([1ca0d28](AztecProtocol/aztec-packages@1ca0d28)) * Re-add and update accounts docs ([#6345](AztecProtocol/aztec-packages#6345)) ([4926d15](AztecProtocol/aztec-packages@4926d15)) * Updated protocol specs ([#6341](AztecProtocol/aztec-packages#6341)) ([a0f82db](AztecProtocol/aztec-packages@a0f82db)) </details> <details><summary>barretenberg: 0.39.0</summary> ## [0.39.0](AztecProtocol/aztec-packages@barretenberg-v0.38.0...barretenberg-v0.39.0) (2024-05-14) ### ⚠ BREAKING CHANGES * switch `bb` over to read ACIR from nargo artifacts ([#6283](AztecProtocol/aztec-packages#6283)) * specify databus arrays for BB ([#6239](AztecProtocol/aztec-packages#6239)) ### Features * Avm support for public input columns ([#5700](AztecProtocol/aztec-packages#5700)) ([8cf9168](AztecProtocol/aztec-packages@8cf9168)) * **avm-simulator:** Add to_radix_le instruction ([#6308](AztecProtocol/aztec-packages#6308)) ([6374a32](AztecProtocol/aztec-packages@6374a32)) * Div opcode ([#6053](AztecProtocol/aztec-packages#6053)) ([8e111f8](AztecProtocol/aztec-packages@8e111f8)) * Move to_radix to a blackbox ([#6294](AztecProtocol/aztec-packages#6294)) ([ac27376](AztecProtocol/aztec-packages@ac27376)) * Small translator optimisations ([#6354](AztecProtocol/aztec-packages#6354)) ([ba6c42e](AztecProtocol/aztec-packages@ba6c42e)) * Specify databus arrays for BB ([#6239](AztecProtocol/aztec-packages#6239)) ([01d9f24](AztecProtocol/aztec-packages@01d9f24)) * Structured trace in client ivc ([#6132](AztecProtocol/aztec-packages#6132)) ([92c1478](AztecProtocol/aztec-packages@92c1478)) * Switch `bb` over to read ACIR from nargo artifacts ([#6283](AztecProtocol/aztec-packages#6283)) ([78adcc0](AztecProtocol/aztec-packages@78adcc0)) * ToRadix BB + avm transpiler support ([#6330](AztecProtocol/aztec-packages#6330)) ([c3c602f](AztecProtocol/aztec-packages@c3c602f)) * **vm:** Reading kernel state opcodes ([#5739](AztecProtocol/aztec-packages#5739)) ([3250a8a](AztecProtocol/aztec-packages@3250a8a)) ### Bug Fixes * Temporarily revert to_radix blackbox ([#6304](AztecProtocol/aztec-packages#6304)) ([044d0fe](AztecProtocol/aztec-packages@044d0fe)) ### Miscellaneous * **dsl:** Update backend gateCount command to query a Program in a single request ([#6228](AztecProtocol/aztec-packages#6228)) ([8079f60](AztecProtocol/aztec-packages@8079f60)) * Make MSM builder more explicit ([#6110](AztecProtocol/aztec-packages#6110)) ([40306b6](AztecProtocol/aztec-packages@40306b6)) * Remove `bb info` command ([#6276](AztecProtocol/aztec-packages#6276)) ([f0a1c89](AztecProtocol/aztec-packages@f0a1c89)) * Update serialisation ([#6378](AztecProtocol/aztec-packages#6378)) ([527129d](AztecProtocol/aztec-packages@527129d)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.39.0</summary> ## [0.39.0](aztec-package-v0.38.0...aztec-package-v0.39.0) (2024-05-14) ### Features * **p2p:** GossibSub ([#6170](#6170)) ([98d32f1](98d32f1)), closes [#5055](#5055) * PublicKeys struct ([#6333](#6333)) ([2633cfc](2633cfc)) ### Miscellaneous * `CompleteAddress` cleanup ([#6300](#6300)) ([9c30759](9c30759)), closes [#5834](#5834) </details> <details><summary>barretenberg.js: 0.39.0</summary> ## [0.39.0](barretenberg.js-v0.38.0...barretenberg.js-v0.39.0) (2024-05-14) ### ⚠ BREAKING CHANGES * switch `bb` over to read ACIR from nargo artifacts ([#6283](#6283)) ### Features * Switch `bb` over to read ACIR from nargo artifacts ([#6283](#6283)) ([78adcc0](78adcc0)) </details> <details><summary>aztec-packages: 0.39.0</summary> ## [0.39.0](aztec-packages-v0.38.0...aztec-packages-v0.39.0) (2024-05-14) ### ⚠ BREAKING CHANGES * switch `bb` over to read ACIR from nargo artifacts ([#6283](#6283)) * shared mutable configurable delays ([#6104](#6104)) * specify databus arrays for BB ([#6239](#6239)) ### Features * Add `Not` trait to stdlib (noir-lang/noir#4999) ([11cde44](11cde44)) * Add support for u16/i16 (noir-lang/noir#4985) ([11cde44](11cde44)) * Avm support for public input columns ([#5700](#5700)) ([8cf9168](8cf9168)) * **avm-simulator:** Add to_radix_le instruction ([#6308](#6308)) ([6374a32](6374a32)) * **avm-simulator:** Error stack tracking and enriching in AVM to match ACVM/ACIR-SIM ([#6289](#6289)) ([5c1f895](5c1f895)) * **aztec-nr:** Add 'with_gas()' function to avm call interface ([#6256](#6256)) ([0aedd23](0aedd23)) * **aztec-nr:** Add enqueue functions to AvmCallInterface ([#6264](#6264)) ([1c74387](1c74387)) * Build-images as earthly. ([#6194](#6194)) ([67fedf1](67fedf1)) * Div opcode ([#6053](#6053)) ([8e111f8](8e111f8)) * Encrypted log body ([#6251](#6251)) ([ba618d5](ba618d5)) * Enforce note hash read requests to read within own contract ([#6310](#6310)) ([bd10595](bd10595)) * Expose `set_as_fee_payer` and test it in e2e ([#6380](#6380)) ([a8274f3](a8274f3)) * Implement `ops` traits on `u16`/`i16` (noir-lang/noir#4996) ([11cde44](11cde44)) * Increase default expression width to 4 (noir-lang/noir#4995) ([11cde44](11cde44)) * Move abi demonomorphizer to noir_codegen and use noir_codegen in protocol types ([#6302](#6302)) ([690e500](690e500)) * Move to_radix to a blackbox ([#6294](#6294)) ([ac27376](ac27376)) * **p2p:** GossibSub ([#6170](#6170)) ([98d32f1](98d32f1)), closes [#5055](#5055) * Plumb fee payer ([#6286](#6286)) ([1f8fd1c](1f8fd1c)) * Private Kernel Recursion ([#6278](#6278)) ([eae5822](eae5822)) * Proper padding in ts AES and constrained AES in body and header computations ([#6269](#6269)) ([ef9cdde](ef9cdde)) * PublicKeys struct ([#6333](#6333)) ([2633cfc](2633cfc)) * Re-enabling authwit constraint ([#6323](#6323)) ([aa06d55](aa06d55)), closes [#5830](#5830) * Remove query to backend to get expression width (noir-lang/noir#4975) ([11cde44](11cde44)) * Replacing mentions to aztec-starter with codespace methods ([#6177](#6177)) ([63e8788](63e8788)) * Return gas usage per phase from node tx simulation ([#6255](#6255)) ([fb58dfc](fb58dfc)) * Shared mutable configurable delays ([#6104](#6104)) ([c191a40](c191a40)) * Small translator optimisations ([#6354](#6354)) ([ba6c42e](ba6c42e)) * Specify databus arrays for BB ([#6239](#6239)) ([01d9f24](01d9f24)) * Structured trace in client ivc ([#6132](#6132)) ([92c1478](92c1478)) * Switch `bb` over to read ACIR from nargo artifacts ([#6283](#6283)) ([78adcc0](78adcc0)) * Sync from aztec-packages (noir-lang/noir#4993) ([11cde44](11cde44)) * ToRadix BB + avm transpiler support ([#6330](#6330)) ([c3c602f](c3c602f)) * **vm:** Reading kernel state opcodes ([#5739](#5739)) ([3250a8a](3250a8a)) ### Bug Fixes * `CombinedConstantData` not registered for serialization ([#6292](#6292)) ([89ab8ee](89ab8ee)) * **avm-context:** Enqueueing of public from private ([#6299](#6299)) ([bd2ccf0](bd2ccf0)) * **avm-simulator:** Always set revertReason when reverting ([#6297](#6297)) ([cc59981](cc59981)) * **avm-simulator:** Correctly create call stack in shallow assertions ([#6274](#6274)) ([f6045fd](f6045fd)) * **avm-simulator:** Fix env getters ([#6357](#6357)) ([485fe40](485fe40)) * **avm-simulator:** Fix message sender ([#6331](#6331)) ([f7e2d26](f7e2d26)) * **avm-simulator:** Fix test expectation ([#6293](#6293)) ([f51acfa](f51acfa)) * **avm-simulator:** Rethrow nested assertions ([#6275](#6275)) ([cd05b91](cd05b91)) * **avm-transpiler:** Patch debug infos with modified PCs ([#6371](#6371)) ([c36f0fa](c36f0fa)) * Check for public args in aztec functions ([#6355](#6355)) ([219efd6](219efd6)) * **ci:** Bench list ([#6282](#6282)) ([2652576](2652576)) * **circuits.js:** Fix nullifier non existent hints ([#6346](#6346)) ([297779a](297779a)) * **ci:** Stop mass serialization ([#6290](#6290)) ([60104e9](60104e9)) * Defer overflow checks for unsigned integers to acir-gen (noir-lang/noir#4832) ([11cde44](11cde44)) * Enable client proof tests ([#6249](#6249)) ([6d3a800](6d3a800)) * Ignore no_predicates in brillig functions (noir-lang/noir#5012) ([3cda21a](3cda21a)) * Noir_js import ([#6381](#6381)) ([e9c7e5f](e9c7e5f)) * Pw/update merge check ([#6201](#6201)) ([856657f](856657f)) * Run noir browser tests in series ([#6232](#6232)) ([e092514](e092514)) * Temporarily revert to_radix blackbox ([#6304](#6304)) ([044d0fe](044d0fe)) ### Miscellaneous * `CompleteAddress` cleanup ([#6300](#6300)) ([9c30759](9c30759)), closes [#5834](#5834) * Adding name shadowing tests template program (noir-lang/noir#4799) ([11cde44](11cde44)) * **avm-context:** Implement Empty ([#6303](#6303)) ([27534ac](27534ac)) * **avm-simulator:** Add U128 overflow tests to AVM simulator ([#6281](#6281)) ([5514143](5514143)) * Bump public bytecode size to 40000 in prep for AVM migration ([#6266](#6266)) ([2b61123](2b61123)) * Bump timeout for after-hook for data store test ([#6364](#6364)) ([18eca39](18eca39)) * **ci:** Fix master, better spot copy times ([#6374](#6374)) ([fee7649](fee7649)) * **ci:** Hotfix runner checks ([#6373](#6373)) ([d5fd668](d5fd668)) * **ci:** Reuse ssh connections ([#6382](#6382)) ([5f6c31e](5f6c31e)) * **ci:** Revert inline cache push for now ([#6318](#6318)) ([4c9bfb0](4c9bfb0)) * **ci:** Run clippy on benchmarks (noir-lang/noir#4988) ([11cde44](11cde44)) * **ci:** Run e2e on isolated spots ([#6287](#6287)) ([e7d2dd6](e7d2dd6)) * **ci:** Spot health fix, earthly workarounds ([#6379](#6379)) ([da7573c](da7573c)) * **ci:** Stability after spot changes ([#6367](#6367)) ([7ad4179](7ad4179)) * **ci:** Use on-demand runners ([#6311](#6311)) ([dba835d](dba835d)) * Deploying accounts after key registry ([#6322](#6322)) ([84878d1](84878d1)) * Disable `gates_report.yml` (noir-lang/noir#4997) ([11cde44](11cde44)) * **docs:** Update contract deployments page ([#6319](#6319)) ([2e331b5](2e331b5)) * **dsl:** Update backend gateCount command to query a Program in a single request ([#6228](#6228)) ([8079f60](8079f60)) * Enforce formatting of noir code ([#6271](#6271)) ([356f7bb](356f7bb)) * **experimental:** Add compiler option to enable the Elaborator (noir-lang/noir#5003) ([3cda21a](3cda21a)) * **experimental:** Add Elaborator pass (noir-lang/noir#4992) ([3cda21a](3cda21a)) * Make coinbase and fee_recipient inaccessible ([#6375](#6375)) ([ded28b7](ded28b7)) * Make MSM builder more explicit ([#6110](#6110)) ([40306b6](40306b6)) * Pw/refactor bb prover ([#6349](#6349)) ([8eb0398](8eb0398)) * Remove `bb info` command ([#6276](#6276)) ([f0a1c89](f0a1c89)) * Replace relative paths to noir-protocol-circuits ([fd40d99](fd40d99)) * Replace relative paths to noir-protocol-circuits ([53dbcb5](53dbcb5)) * Replace relative paths to noir-protocol-circuits ([48e07c3](48e07c3)) * Replace relative paths to noir-protocol-circuits ([6532725](6532725)) * Replace relative paths to noir-protocol-circuits ([8330f70](8330f70)) * Replace relative paths to noir-protocol-circuits ([484741a](484741a)) * Replacing old pub key oracle with get_ivpk_m ([#6219](#6219)) ([9acc9ec](9acc9ec)) * Siloing in tails ([#6167](#6167)) ([c20dd50](c20dd50)) * Simplify nargo CLI to read from artifacts ([#6279](#6279)) ([b2c019b](b2c019b)) * Skip formatting informattable comments ([#6288](#6288)) ([95b499b](95b499b)) * Split `ops` into `arith` and `bit` modules (noir-lang/noir#4989) ([11cde44](11cde44)) * **test-contracts:** Prepare e2e_token_contract+ error msgs for AVM migration ([#6307](#6307)) ([0c20f44](0c20f44)) * Update cspell for abi demonomorphizer ([#6258](#6258)) ([ce2d43c](ce2d43c)) * Update serialisation ([#6378](#6378)) ([527129d](527129d)) * Validating private call data ([#6316](#6316)) ([84b9fcd](84b9fcd)) ### Documentation * Call types ([#5472](#5472)) ([1ca0d28](1ca0d28)) * Re-add and update accounts docs ([#6345](#6345)) ([4926d15](4926d15)) * Updated protocol specs ([#6341](#6341)) ([a0f82db](a0f82db)) </details> <details><summary>barretenberg: 0.39.0</summary> ## [0.39.0](barretenberg-v0.38.0...barretenberg-v0.39.0) (2024-05-14) ### ⚠ BREAKING CHANGES * switch `bb` over to read ACIR from nargo artifacts ([#6283](#6283)) * specify databus arrays for BB ([#6239](#6239)) ### Features * Avm support for public input columns ([#5700](#5700)) ([8cf9168](8cf9168)) * **avm-simulator:** Add to_radix_le instruction ([#6308](#6308)) ([6374a32](6374a32)) * Div opcode ([#6053](#6053)) ([8e111f8](8e111f8)) * Move to_radix to a blackbox ([#6294](#6294)) ([ac27376](ac27376)) * Small translator optimisations ([#6354](#6354)) ([ba6c42e](ba6c42e)) * Specify databus arrays for BB ([#6239](#6239)) ([01d9f24](01d9f24)) * Structured trace in client ivc ([#6132](#6132)) ([92c1478](92c1478)) * Switch `bb` over to read ACIR from nargo artifacts ([#6283](#6283)) ([78adcc0](78adcc0)) * ToRadix BB + avm transpiler support ([#6330](#6330)) ([c3c602f](c3c602f)) * **vm:** Reading kernel state opcodes ([#5739](#5739)) ([3250a8a](3250a8a)) ### Bug Fixes * Temporarily revert to_radix blackbox ([#6304](#6304)) ([044d0fe](044d0fe)) ### Miscellaneous * **dsl:** Update backend gateCount command to query a Program in a single request ([#6228](#6228)) ([8079f60](8079f60)) * Make MSM builder more explicit ([#6110](#6110)) ([40306b6](40306b6)) * Remove `bb info` command ([#6276](#6276)) ([f0a1c89](f0a1c89)) * Update serialisation ([#6378](#6378)) ([527129d](527129d)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
After trying to understand the MSM builder part of the ECCVM builder, I did a refactor for clarity. This is almost entirely naming (e.g we had sometimes 4+ indices
i, j, k, m, idxin deeply nested loops that I gave more explicit names) and comments. I also made the function that computes the trace rows return a table rather than to mutate one since there was no real reason to take the latter pattern.Note: the diff is quit dense, but I have not moved things around so it should be fairly straightforward to read. I may do a followup that actually splits up the big builder function into smaller functions. I may also move the point table and some of its isolated logic into its own data structure--but I wait to make the diff more manageable.