-
Notifications
You must be signed in to change notification settings - Fork 234
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
refactor: towards plain struct flavor entities #3216
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Everything here seems fine to me but it's a bit hard for me to evaluate without having a full picture of how the final structure will look. Normally I'm all for the incremental approach but do you feel confident that you've thought through the simplifications that this will allow in the flavor classes? I'm a bit worried that if this ultimately relies on different collections of polys being adjacent in the struct (e.g. all "precomputed" or "to-be-shifted" are grouped together and accessible via a contiguous range) then this will lead to difficulties and possibly be too restrictive. Of course maybe we could explicitly specify subsets but then I'm not sure how much we've gained. Perhaps I just don't have enough insight into the plan - just want to make sure the path forward is clear enough to get in this intermediate work. Happy that you're on the case!
Summarizing slack discussion: Luke and I got to the understanding that this won't be that much of an overhaul, it will largely keep stuff as-is, this is the most dramatic of the rewriting right here, the followup would just be using this to remove the array backing so these structs don't have self-references to their own data (and thus won't be footguns that can't be copy-constructed) |
Benchmark resultsNo metrics with a significant change found. Detailed resultsAll benchmarks are run on txs on the This benchmark source data is available in JSON format on S3 here. Values are compared against data from master at commit L2 block published to L1Each column represents the number of txs on an L2 block published to L1.
L2 chain processingEach column represents the number of blocks on the L2 chain where each block has 16 txs.
Circuits statsStats on running time and I/O sizes collected for every circuit run across all benchmarks.
MiscellaneousTransaction sizes based on how many contracts are deployed in the tx.
|
"environment": { | ||
"CMAKE_BUILD_TYPE": "Debug" | ||
"CMAKE_BUILD_TYPE": "Debug", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This was not building in its own folder, nor was it compatible with the gdb on mainframe
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All LGTM
for (size_t i = 0; i < NUM_POLYNOMIALS; i++) { | ||
auto partially_evaluated_polynomials_array = sumcheck.partially_evaluated_polynomials.pointer_view(); | ||
size_t i = 0; | ||
for (auto* full_polynomial_pointer : full_polynomials.pointer_view()) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can this not be zipped?
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-packages: 0.15.0</summary> ## [0.15.0](aztec-packages-v0.14.2...aztec-packages-v0.15.0) (2023-11-16) ### ⚠ BREAKING CHANGES * Replace computing hashes in circuits wasm, with computing them in ts via bb.js pedersen call. ([#3114](#3114)) ### Features * **bb:** Add msan preset ([#3284](#3284)) ([bcf025c](bcf025c)) * Enable merge and root rollup circuits in noir ([#3248](#3248)) ([68555fc](68555fc)) * Protogalaxy combiner quotient ([#3245](#3245)) ([db0f3ab](db0f3ab)) * Public kernel in noir ([#3186](#3186)) ([15a522b](15a522b)) * Ultra honk arith from ultra ([#3274](#3274)) ([ec2b805](ec2b805)) ### Bug Fixes * Debug build ([#3283](#3283)) ([aca2624](aca2624)) * Fix block constraint key divergence bug. ([#3256](#3256)) ([1c71a0c](1c71a0c)) * Main.md typo ([#3278](#3278)) ([cb87c4d](cb87c4d)) * Typo fix roundup ([#3302](#3302)) ([9dd778d](9dd778d)) ### Miscellaneous * **bb:** Remove -Wfatal-errors ([#3318](#3318)) ([4229173](4229173)) * Clarify that barretenberg mirror should not take PRs ([#3303](#3303)) ([13f1a1d](13f1a1d)) * Clean up Plonk widgets ([#3305](#3305)) ([4623d91](4623d91)) * **docs:** Aztec.nr logging page ([#3281](#3281)) ([11e6ca7](11e6ca7)) * **docs:** Update netlify.toml and fix build ([#3304](#3304)) ([df76636](df76636)) * Explicitly instantiate Goblin translator relations ([#3239](#3239)) ([e3b5fb0](e3b5fb0)) * Plain struct flavor entities ([#3277](#3277)) ([f109512](f109512)) * Remove bn254 instantiation of eccvm plus naming changes ([#3330](#3330)) ([23d1e2d](23d1e2d)) * Replace computing hashes in circuits wasm, with computing them in ts via bb.js pedersen call. ([#3114](#3114)) ([87eeb71](87eeb71)) * Revert build-debug folder for debug preset ([#3324](#3324)) ([43a2e6b](43a2e6b)) * Towards plain struct flavor entities ([#3216](#3216)) ([3ba89cf](3ba89cf)) * Typo fixes based on cspell ([#3319](#3319)) ([8ae44dd](8ae44dd)) </details> <details><summary>barretenberg.js: 0.15.0</summary> ## [0.15.0](barretenberg.js-v0.14.2...barretenberg.js-v0.15.0) (2023-11-16) ### ⚠ BREAKING CHANGES * Replace computing hashes in circuits wasm, with computing them in ts via bb.js pedersen call. ([#3114](#3114)) ### Bug Fixes * Fix block constraint key divergence bug. ([#3256](#3256)) ([1c71a0c](1c71a0c)) ### Miscellaneous * Replace computing hashes in circuits wasm, with computing them in ts via bb.js pedersen call. ([#3114](#3114)) ([87eeb71](87eeb71)) * Typo fixes based on cspell ([#3319](#3319)) ([8ae44dd](8ae44dd)) </details> <details><summary>barretenberg: 0.15.0</summary> ## [0.15.0](barretenberg-v0.14.2...barretenberg-v0.15.0) (2023-11-16) ### ⚠ BREAKING CHANGES * Replace computing hashes in circuits wasm, with computing them in ts via bb.js pedersen call. ([#3114](#3114)) ### Features * **bb:** Add msan preset ([#3284](#3284)) ([bcf025c](bcf025c)) * Protogalaxy combiner quotient ([#3245](#3245)) ([db0f3ab](db0f3ab)) * Ultra honk arith from ultra ([#3274](#3274)) ([ec2b805](ec2b805)) ### Bug Fixes * Debug build ([#3283](#3283)) ([aca2624](aca2624)) * Fix block constraint key divergence bug. ([#3256](#3256)) ([1c71a0c](1c71a0c)) ### Miscellaneous * **bb:** Remove -Wfatal-errors ([#3318](#3318)) ([4229173](4229173)) * Clarify that barretenberg mirror should not take PRs ([#3303](#3303)) ([13f1a1d](13f1a1d)) * Clean up Plonk widgets ([#3305](#3305)) ([4623d91](4623d91)) * Explicitly instantiate Goblin translator relations ([#3239](#3239)) ([e3b5fb0](e3b5fb0)) * Plain struct flavor entities ([#3277](#3277)) ([f109512](f109512)) * Remove bn254 instantiation of eccvm plus naming changes ([#3330](#3330)) ([23d1e2d](23d1e2d)) * Replace computing hashes in circuits wasm, with computing them in ts via bb.js pedersen call. ([#3114](#3114)) ([87eeb71](87eeb71)) * Revert build-debug folder for debug preset ([#3324](#3324)) ([43a2e6b](43a2e6b)) * Towards plain struct flavor entities ([#3216](#3216)) ([3ba89cf](3ba89cf)) * Typo fixes based on cspell ([#3319](#3319)) ([8ae44dd](8ae44dd)) </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-packages: 0.15.0</summary> ## [0.15.0](AztecProtocol/aztec-packages@aztec-packages-v0.14.2...aztec-packages-v0.15.0) (2023-11-16) ### ⚠ BREAKING CHANGES * Replace computing hashes in circuits wasm, with computing them in ts via bb.js pedersen call. ([#3114](AztecProtocol/aztec-packages#3114)) ### Features * **bb:** Add msan preset ([#3284](AztecProtocol/aztec-packages#3284)) ([bcf025c](AztecProtocol/aztec-packages@bcf025c)) * Enable merge and root rollup circuits in noir ([#3248](AztecProtocol/aztec-packages#3248)) ([68555fc](AztecProtocol/aztec-packages@68555fc)) * Protogalaxy combiner quotient ([#3245](AztecProtocol/aztec-packages#3245)) ([db0f3ab](AztecProtocol/aztec-packages@db0f3ab)) * Public kernel in noir ([#3186](AztecProtocol/aztec-packages#3186)) ([15a522b](AztecProtocol/aztec-packages@15a522b)) * Ultra honk arith from ultra ([#3274](AztecProtocol/aztec-packages#3274)) ([ec2b805](AztecProtocol/aztec-packages@ec2b805)) ### Bug Fixes * Debug build ([#3283](AztecProtocol/aztec-packages#3283)) ([aca2624](AztecProtocol/aztec-packages@aca2624)) * Fix block constraint key divergence bug. ([#3256](AztecProtocol/aztec-packages#3256)) ([1c71a0c](AztecProtocol/aztec-packages@1c71a0c)) * Main.md typo ([#3278](AztecProtocol/aztec-packages#3278)) ([cb87c4d](AztecProtocol/aztec-packages@cb87c4d)) * Typo fix roundup ([#3302](AztecProtocol/aztec-packages#3302)) ([9dd778d](AztecProtocol/aztec-packages@9dd778d)) ### Miscellaneous * **bb:** Remove -Wfatal-errors ([#3318](AztecProtocol/aztec-packages#3318)) ([4229173](AztecProtocol/aztec-packages@4229173)) * Clarify that barretenberg mirror should not take PRs ([#3303](AztecProtocol/aztec-packages#3303)) ([13f1a1d](AztecProtocol/aztec-packages@13f1a1d)) * Clean up Plonk widgets ([#3305](AztecProtocol/aztec-packages#3305)) ([4623d91](AztecProtocol/aztec-packages@4623d91)) * **docs:** Aztec.nr logging page ([#3281](AztecProtocol/aztec-packages#3281)) ([11e6ca7](AztecProtocol/aztec-packages@11e6ca7)) * **docs:** Update netlify.toml and fix build ([#3304](AztecProtocol/aztec-packages#3304)) ([df76636](AztecProtocol/aztec-packages@df76636)) * Explicitly instantiate Goblin translator relations ([#3239](AztecProtocol/aztec-packages#3239)) ([e3b5fb0](AztecProtocol/aztec-packages@e3b5fb0)) * Plain struct flavor entities ([#3277](AztecProtocol/aztec-packages#3277)) ([f109512](AztecProtocol/aztec-packages@f109512)) * Remove bn254 instantiation of eccvm plus naming changes ([#3330](AztecProtocol/aztec-packages#3330)) ([23d1e2d](AztecProtocol/aztec-packages@23d1e2d)) * Replace computing hashes in circuits wasm, with computing them in ts via bb.js pedersen call. ([#3114](AztecProtocol/aztec-packages#3114)) ([87eeb71](AztecProtocol/aztec-packages@87eeb71)) * Revert build-debug folder for debug preset ([#3324](AztecProtocol/aztec-packages#3324)) ([43a2e6b](AztecProtocol/aztec-packages@43a2e6b)) * Towards plain struct flavor entities ([#3216](AztecProtocol/aztec-packages#3216)) ([3ba89cf](AztecProtocol/aztec-packages@3ba89cf)) * Typo fixes based on cspell ([#3319](AztecProtocol/aztec-packages#3319)) ([8ae44dd](AztecProtocol/aztec-packages@8ae44dd)) </details> <details><summary>barretenberg.js: 0.15.0</summary> ## [0.15.0](AztecProtocol/aztec-packages@barretenberg.js-v0.14.2...barretenberg.js-v0.15.0) (2023-11-16) ### ⚠ BREAKING CHANGES * Replace computing hashes in circuits wasm, with computing them in ts via bb.js pedersen call. ([#3114](AztecProtocol/aztec-packages#3114)) ### Bug Fixes * Fix block constraint key divergence bug. ([#3256](AztecProtocol/aztec-packages#3256)) ([1c71a0c](AztecProtocol/aztec-packages@1c71a0c)) ### Miscellaneous * Replace computing hashes in circuits wasm, with computing them in ts via bb.js pedersen call. ([#3114](AztecProtocol/aztec-packages#3114)) ([87eeb71](AztecProtocol/aztec-packages@87eeb71)) * Typo fixes based on cspell ([#3319](AztecProtocol/aztec-packages#3319)) ([8ae44dd](AztecProtocol/aztec-packages@8ae44dd)) </details> <details><summary>barretenberg: 0.15.0</summary> ## [0.15.0](AztecProtocol/aztec-packages@barretenberg-v0.14.2...barretenberg-v0.15.0) (2023-11-16) ### ⚠ BREAKING CHANGES * Replace computing hashes in circuits wasm, with computing them in ts via bb.js pedersen call. ([#3114](AztecProtocol/aztec-packages#3114)) ### Features * **bb:** Add msan preset ([#3284](AztecProtocol/aztec-packages#3284)) ([bcf025c](AztecProtocol/aztec-packages@bcf025c)) * Protogalaxy combiner quotient ([#3245](AztecProtocol/aztec-packages#3245)) ([db0f3ab](AztecProtocol/aztec-packages@db0f3ab)) * Ultra honk arith from ultra ([#3274](AztecProtocol/aztec-packages#3274)) ([ec2b805](AztecProtocol/aztec-packages@ec2b805)) ### Bug Fixes * Debug build ([#3283](AztecProtocol/aztec-packages#3283)) ([aca2624](AztecProtocol/aztec-packages@aca2624)) * Fix block constraint key divergence bug. ([#3256](AztecProtocol/aztec-packages#3256)) ([1c71a0c](AztecProtocol/aztec-packages@1c71a0c)) ### Miscellaneous * **bb:** Remove -Wfatal-errors ([#3318](AztecProtocol/aztec-packages#3318)) ([4229173](AztecProtocol/aztec-packages@4229173)) * Clarify that barretenberg mirror should not take PRs ([#3303](AztecProtocol/aztec-packages#3303)) ([13f1a1d](AztecProtocol/aztec-packages@13f1a1d)) * Clean up Plonk widgets ([#3305](AztecProtocol/aztec-packages#3305)) ([4623d91](AztecProtocol/aztec-packages@4623d91)) * Explicitly instantiate Goblin translator relations ([#3239](AztecProtocol/aztec-packages#3239)) ([e3b5fb0](AztecProtocol/aztec-packages@e3b5fb0)) * Plain struct flavor entities ([#3277](AztecProtocol/aztec-packages#3277)) ([f109512](AztecProtocol/aztec-packages@f109512)) * Remove bn254 instantiation of eccvm plus naming changes ([#3330](AztecProtocol/aztec-packages#3330)) ([23d1e2d](AztecProtocol/aztec-packages@23d1e2d)) * Replace computing hashes in circuits wasm, with computing them in ts via bb.js pedersen call. ([#3114](AztecProtocol/aztec-packages#3114)) ([87eeb71](AztecProtocol/aztec-packages@87eeb71)) * Revert build-debug folder for debug preset ([#3324](AztecProtocol/aztec-packages#3324)) ([43a2e6b](AztecProtocol/aztec-packages@43a2e6b)) * Towards plain struct flavor entities ([#3216](AztecProtocol/aztec-packages#3216)) ([3ba89cf](AztecProtocol/aztec-packages@3ba89cf)) * Typo fixes based on cspell ([#3319](AztecProtocol/aztec-packages#3319)) ([8ae44dd](AztecProtocol/aztec-packages@8ae44dd)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
Step towards removing the array backing in the flavor entity classes. This systematically removes all usage of operator[] so that the array backing can be deleted in a followup. This is achieved by having a pointer_view method that is defined in const and non-const forms (cleanest way I could find was through a simple macro) and returns an array of each pointer. Pointers were used over references to not have to deal with references decaying into values.
Happy to take feedback on the approach, it isn't cleaning up much just yet, but will make way for a followup PR that removes the backing arrays.
Also: