feat(avm): use template engine for codegen#7299
Conversation
|
This stack of pull requests is managed by Graphite. Learn more about stacking. Join @fcarreiro and the rest of your teammates on |
7aeec2e to
5254518
Compare
78285a5 to
f42a05e
Compare
|
much better |
jeanmon
left a comment
There was a problem hiding this comment.
This template language looks very readable to me. I would continue to commit the generated cpp files though. This is very security sensitive and I would prefer not to depend on such a template library in a blind way.
Benchmark resultsMetrics with a significant change:
Detailed resultsAll benchmarks are run on txs on the This benchmark source data is available in JSON format on S3 here. Proof generationEach column represents the number of threads used in proof generation.
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 8 txs.
Circuits statsStats on running time and I/O sizes collected for every kernel circuit run across all benchmarks.
Stats on running time collected for app circuits
AVM SimulationTime to simulate various public functions in the AVM.
Public DB AccessTime to access various public DBs.
Tree insertion statsThe duration to insert a fixed batch of leaves into each tree type.
MiscellaneousTransaction sizes based on how many contract classes are registered in the tx.
Transaction size based on fee payment method | Metric | | |
f90d4e6 to
e668e16
Compare
44ebee2 to
d42812e
Compare
Merge activity
|
d42812e to
9fab71f
Compare
AztecBot
left a comment
There was a problem hiding this comment.
⚠️ Performance Alert ⚠️
Possible performance regression was detected for benchmark 'C++ Benchmark'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.05.
| Benchmark suite | Current: 9fab71f | Previous: d42812e | Ratio |
|---|---|---|---|
nativeconstruct_proof_ultrahonk_power_of_2/20 |
5219.444651999993 ms/iter |
4759.664720999993 ms/iter |
1.10 |
This comment was automatically generated by workflow using github-action-benchmark.
CC: @ludamad @codygunton
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.45.1</summary> ## [0.45.1](aztec-package-v0.45.0...aztec-package-v0.45.1) (2024-07-04) ### Miscellaneous * **aztec-package:** Synchronize aztec-packages versions </details> <details><summary>barretenberg.js: 0.45.1</summary> ## [0.45.1](barretenberg.js-v0.45.0...barretenberg.js-v0.45.1) (2024-07-04) ### Miscellaneous * **barretenberg.js:** Synchronize aztec-packages versions </details> <details><summary>aztec-packages: 0.45.1</summary> ## [0.45.1](aztec-packages-v0.45.0...aztec-packages-v0.45.1) (2024-07-04) ### Features * Add support for fieldable in events ([#7310](#7310)) ([694cebc](694cebc)), closes [#6951](#6951) * **avm:** Use template engine for codegen ([#7299](#7299)) ([d4359a3](d4359a3)) * Build releases for `aarch64-unknown-linux-gnu` target (noir-lang/noir#5289) ([2ae17f2](2ae17f2)) * Create codeql.yml ([#7318](#7318)) ([11fcfd2](11fcfd2)) * Deploy l1 contracts on devnet ([#7306](#7306)) ([b8eef86](b8eef86)) * Implement trait dispatch in the comptime interpreter (noir-lang/noir#5376) ([ccfa69c](ccfa69c)) * Lsp "find all references" (noir-lang/noir#5395) ([10076d9](10076d9)) * Lsp rename struct (noir-lang/noir#5380) ([2ae17f2](2ae17f2)) * **lsp:** Allow function rename (noir-lang/noir#4294) ([ccfa69c](ccfa69c)) * Remove note hash nullifier counter. ([#7294](#7294)) ([c0c9144](c0c9144)) * Sync from aztec-packages (noir-lang/noir#5387) ([ccfa69c](ccfa69c)) * Sync from aztec-packages (noir-lang/noir#5401) ([10076d9](10076d9)) ### Bug Fixes * Correctly detect signed/unsigned integer overflows/underflows (noir-lang/noir#5375) ([10076d9](10076d9)) * **docs:** Fix broken docs link to gihtub (noir-lang/noir#5398) ([10076d9](10076d9)) * **docs:** Fix colour leak ([#7289](#7289)) ([d3388d4](d3388d4)) * Don't panic when using undefined variables in the interpreter (noir-lang/noir#5381) ([10076d9](10076d9)) * Go to definition from `use` statement (noir-lang/noir#5390) ([2ae17f2](2ae17f2)) * Go to definition from aliased use (noir-lang/noir#5396) ([10076d9](10076d9)) * ICE when using a comptime let variable in runtime code (noir-lang/noir#5391) ([10076d9](10076d9)) * Include artifacts in noir-contracts package.json ([#7339](#7339)) ([7dd87c7](7dd87c7)) * Only create d.ts files for contract artifacts ([#7307](#7307)) ([b5e2a67](b5e2a67)) * Remove event selector from unencrypted log ([#7309](#7309)) ([c6eb734](c6eb734)) * Remove panics in the interpreter when a builtin fails to type check (noir-lang/noir#5382) ([ccfa69c](ccfa69c)) * Replace expects in interpreter with errors (noir-lang/noir#5383) ([ccfa69c](ccfa69c)) * Replace std::HashMap with FxHashMap to fix frontend indeterminism (noir-lang/noir#5385) ([ccfa69c](ccfa69c)) * Truncate flamegraph text to the right ([#7333](#7333)) ([b7c6593](b7c6593)) ### Miscellaneous * Add bb-pilcom to rust analyzer ([#7317](#7317)) ([694e68e](694e68e)) * ARGS_HASH constants 64 -> 16 ([#7284](#7284)) ([c19029a](c19029a)) * **avm:** Basic stat collection ([#7283](#7283)) ([adf2331](adf2331)) * **avm:** Less code in prover and verifier ([#7302](#7302)) ([f401a9a](f401a9a)) * **avm:** Migrate lookups and permutations ([#7335](#7335)) ([56fe4fe](56fe4fe)) * **avm:** Migrate to template engine ([#7316](#7316)) ([0fbfe11](0fbfe11)) * **avm:** Re-ordering routines by opcode order ([#7298](#7298)) ([4bb512d](4bb512d)) * **avm:** Remove shifts from full row ([#7327](#7327)) ([4d641ee](4d641ee)) * Charge for more l2 gas costs ([#7157](#7157)) ([3ab00c4](3ab00c4)) * **docs:** Remove persona boxes from the landing page (noir-lang/noir#5400) ([10076d9](10076d9)) * Nuking "new" from names ([#7273](#7273)) ([b12c6cb](b12c6cb)) * Refactor conversion between `FieldElement` and signed integers (noir-lang/noir#5397) ([10076d9](10076d9)) * Replace relative paths to noir-protocol-circuits ([0124665](0124665)) * Replace relative paths to noir-protocol-circuits ([4007885](4007885)) * Update flamegraph script link ([#7329](#7329)) ([0ec83ee](0ec83ee)) * Use `mod.nr` files in stdlib (noir-lang/noir#5379) ([ccfa69c](ccfa69c)) </details> <details><summary>barretenberg: 0.45.1</summary> ## [0.45.1](barretenberg-v0.45.0...barretenberg-v0.45.1) (2024-07-04) ### Features * **avm:** Use template engine for codegen ([#7299](#7299)) ([d4359a3](d4359a3)) ### Miscellaneous * **avm:** Basic stat collection ([#7283](#7283)) ([adf2331](adf2331)) * **avm:** Less code in prover and verifier ([#7302](#7302)) ([f401a9a](f401a9a)) * **avm:** Migrate lookups and permutations ([#7335](#7335)) ([56fe4fe](56fe4fe)) * **avm:** Migrate to template engine ([#7316](#7316)) ([0fbfe11](0fbfe11)) * **avm:** Re-ordering routines by opcode order ([#7298](#7298)) ([4bb512d](4bb512d)) * **avm:** Remove shifts from full row ([#7327](#7327)) ([4d641ee](4d641ee)) * Nuking "new" from names ([#7273](#7273)) ([b12c6cb](b12c6cb)) </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.45.1</summary> ## [0.45.1](AztecProtocol/aztec-packages@aztec-package-v0.45.0...aztec-package-v0.45.1) (2024-07-04) ### Miscellaneous * **aztec-package:** Synchronize aztec-packages versions </details> <details><summary>barretenberg.js: 0.45.1</summary> ## [0.45.1](AztecProtocol/aztec-packages@barretenberg.js-v0.45.0...barretenberg.js-v0.45.1) (2024-07-04) ### Miscellaneous * **barretenberg.js:** Synchronize aztec-packages versions </details> <details><summary>aztec-packages: 0.45.1</summary> ## [0.45.1](AztecProtocol/aztec-packages@aztec-packages-v0.45.0...aztec-packages-v0.45.1) (2024-07-04) ### Features * Add support for fieldable in events ([#7310](AztecProtocol/aztec-packages#7310)) ([694cebc](AztecProtocol/aztec-packages@694cebc)), closes [#6951](AztecProtocol/aztec-packages#6951) * **avm:** Use template engine for codegen ([#7299](AztecProtocol/aztec-packages#7299)) ([d4359a3](AztecProtocol/aztec-packages@d4359a3)) * Build releases for `aarch64-unknown-linux-gnu` target (noir-lang/noir#5289) ([2ae17f2](AztecProtocol/aztec-packages@2ae17f2)) * Create codeql.yml ([#7318](AztecProtocol/aztec-packages#7318)) ([11fcfd2](AztecProtocol/aztec-packages@11fcfd2)) * Deploy l1 contracts on devnet ([#7306](AztecProtocol/aztec-packages#7306)) ([b8eef86](AztecProtocol/aztec-packages@b8eef86)) * Implement trait dispatch in the comptime interpreter (noir-lang/noir#5376) ([ccfa69c](AztecProtocol/aztec-packages@ccfa69c)) * Lsp "find all references" (noir-lang/noir#5395) ([10076d9](AztecProtocol/aztec-packages@10076d9)) * Lsp rename struct (noir-lang/noir#5380) ([2ae17f2](AztecProtocol/aztec-packages@2ae17f2)) * **lsp:** Allow function rename (noir-lang/noir#4294) ([ccfa69c](AztecProtocol/aztec-packages@ccfa69c)) * Remove note hash nullifier counter. ([#7294](AztecProtocol/aztec-packages#7294)) ([c0c9144](AztecProtocol/aztec-packages@c0c9144)) * Sync from aztec-packages (noir-lang/noir#5387) ([ccfa69c](AztecProtocol/aztec-packages@ccfa69c)) * Sync from aztec-packages (noir-lang/noir#5401) ([10076d9](AztecProtocol/aztec-packages@10076d9)) ### Bug Fixes * Correctly detect signed/unsigned integer overflows/underflows (noir-lang/noir#5375) ([10076d9](AztecProtocol/aztec-packages@10076d9)) * **docs:** Fix broken docs link to gihtub (noir-lang/noir#5398) ([10076d9](AztecProtocol/aztec-packages@10076d9)) * **docs:** Fix colour leak ([#7289](AztecProtocol/aztec-packages#7289)) ([d3388d4](AztecProtocol/aztec-packages@d3388d4)) * Don't panic when using undefined variables in the interpreter (noir-lang/noir#5381) ([10076d9](AztecProtocol/aztec-packages@10076d9)) * Go to definition from `use` statement (noir-lang/noir#5390) ([2ae17f2](AztecProtocol/aztec-packages@2ae17f2)) * Go to definition from aliased use (noir-lang/noir#5396) ([10076d9](AztecProtocol/aztec-packages@10076d9)) * ICE when using a comptime let variable in runtime code (noir-lang/noir#5391) ([10076d9](AztecProtocol/aztec-packages@10076d9)) * Include artifacts in noir-contracts package.json ([#7339](AztecProtocol/aztec-packages#7339)) ([7dd87c7](AztecProtocol/aztec-packages@7dd87c7)) * Only create d.ts files for contract artifacts ([#7307](AztecProtocol/aztec-packages#7307)) ([b5e2a67](AztecProtocol/aztec-packages@b5e2a67)) * Remove event selector from unencrypted log ([#7309](AztecProtocol/aztec-packages#7309)) ([c6eb734](AztecProtocol/aztec-packages@c6eb734)) * Remove panics in the interpreter when a builtin fails to type check (noir-lang/noir#5382) ([ccfa69c](AztecProtocol/aztec-packages@ccfa69c)) * Replace expects in interpreter with errors (noir-lang/noir#5383) ([ccfa69c](AztecProtocol/aztec-packages@ccfa69c)) * Replace std::HashMap with FxHashMap to fix frontend indeterminism (noir-lang/noir#5385) ([ccfa69c](AztecProtocol/aztec-packages@ccfa69c)) * Truncate flamegraph text to the right ([#7333](AztecProtocol/aztec-packages#7333)) ([b7c6593](AztecProtocol/aztec-packages@b7c6593)) ### Miscellaneous * Add bb-pilcom to rust analyzer ([#7317](AztecProtocol/aztec-packages#7317)) ([694e68e](AztecProtocol/aztec-packages@694e68e)) * ARGS_HASH constants 64 -> 16 ([#7284](AztecProtocol/aztec-packages#7284)) ([c19029a](AztecProtocol/aztec-packages@c19029a)) * **avm:** Basic stat collection ([#7283](AztecProtocol/aztec-packages#7283)) ([adf2331](AztecProtocol/aztec-packages@adf2331)) * **avm:** Less code in prover and verifier ([#7302](AztecProtocol/aztec-packages#7302)) ([f401a9a](AztecProtocol/aztec-packages@f401a9a)) * **avm:** Migrate lookups and permutations ([#7335](AztecProtocol/aztec-packages#7335)) ([56fe4fe](AztecProtocol/aztec-packages@56fe4fe)) * **avm:** Migrate to template engine ([#7316](AztecProtocol/aztec-packages#7316)) ([0fbfe11](AztecProtocol/aztec-packages@0fbfe11)) * **avm:** Re-ordering routines by opcode order ([#7298](AztecProtocol/aztec-packages#7298)) ([4bb512d](AztecProtocol/aztec-packages@4bb512d)) * **avm:** Remove shifts from full row ([#7327](AztecProtocol/aztec-packages#7327)) ([4d641ee](AztecProtocol/aztec-packages@4d641ee)) * Charge for more l2 gas costs ([#7157](AztecProtocol/aztec-packages#7157)) ([3ab00c4](AztecProtocol/aztec-packages@3ab00c4)) * **docs:** Remove persona boxes from the landing page (noir-lang/noir#5400) ([10076d9](AztecProtocol/aztec-packages@10076d9)) * Nuking "new" from names ([#7273](AztecProtocol/aztec-packages#7273)) ([b12c6cb](AztecProtocol/aztec-packages@b12c6cb)) * Refactor conversion between `FieldElement` and signed integers (noir-lang/noir#5397) ([10076d9](AztecProtocol/aztec-packages@10076d9)) * Replace relative paths to noir-protocol-circuits ([0124665](AztecProtocol/aztec-packages@0124665)) * Replace relative paths to noir-protocol-circuits ([4007885](AztecProtocol/aztec-packages@4007885)) * Update flamegraph script link ([#7329](AztecProtocol/aztec-packages#7329)) ([0ec83ee](AztecProtocol/aztec-packages@0ec83ee)) * Use `mod.nr` files in stdlib (noir-lang/noir#5379) ([ccfa69c](AztecProtocol/aztec-packages@ccfa69c)) </details> <details><summary>barretenberg: 0.45.1</summary> ## [0.45.1](AztecProtocol/aztec-packages@barretenberg-v0.45.0...barretenberg-v0.45.1) (2024-07-04) ### Features * **avm:** Use template engine for codegen ([#7299](AztecProtocol/aztec-packages#7299)) ([d4359a3](AztecProtocol/aztec-packages@d4359a3)) ### Miscellaneous * **avm:** Basic stat collection ([#7283](AztecProtocol/aztec-packages#7283)) ([adf2331](AztecProtocol/aztec-packages@adf2331)) * **avm:** Less code in prover and verifier ([#7302](AztecProtocol/aztec-packages#7302)) ([f401a9a](AztecProtocol/aztec-packages@f401a9a)) * **avm:** Migrate lookups and permutations ([#7335](AztecProtocol/aztec-packages#7335)) ([56fe4fe](AztecProtocol/aztec-packages@56fe4fe)) * **avm:** Migrate to template engine ([#7316](AztecProtocol/aztec-packages#7316)) ([0fbfe11](AztecProtocol/aztec-packages@0fbfe11)) * **avm:** Re-ordering routines by opcode order ([#7298](AztecProtocol/aztec-packages#7298)) ([4bb512d](AztecProtocol/aztec-packages@4bb512d)) * **avm:** Remove shifts from full row ([#7327](AztecProtocol/aztec-packages#7327)) ([4d641ee](AztecProtocol/aztec-packages@4d641ee)) * Nuking "new" from names ([#7273](AztecProtocol/aztec-packages#7273)) ([b12c6cb](AztecProtocol/aztec-packages@b12c6cb)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).

Generating flavor file as an example.