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!: Unify ABIs between nargo and yarn-project #3989

Merged
merged 19 commits into from
Jan 17, 2024
Merged

Conversation

spalladino
Copy link
Collaborator

@spalladino spalladino commented Jan 12, 2024

Changes the output of nargo and noir-wasm to generate a single artifact that includes debug information. Compiled contracts now have a file_map at the root of the artifact, and a debug_symbols within each function. For consistency, compiled programs also have file_map and debug_symbols. Debug symbols are compressed and base64-encoded, as they were by the former noir-compiler postprocessing. The debug json artifact is no longer emitted.

Removes all code related to generating yarn-project-specific ABIs from noir compiler. Instead, types now exposes a loadContractArtifact that renames fields as needed (and use camel instead of snake case), and is required when loading a noir contract artifact. Autogenerated types run this automatically.

Since we are no longer post-processing artifacts, the noir-contracts project shape is changed. JSON files live in the target folder where nargo outputs them (this is not configurable), and are loaded by the autogenerated typescript interfaces from there.

As part of the refactor, moves functions for getting functions debug info out of acir-simulator and into types.

Breaking change: This removes the need to run codegen for using a compiled contract. However, when creating a new contract object from aztec.js, a dev needs to call loadContractArtifact.

Future changes: Type information for a compilation artifact is now spread all over the place, and duplicated in more than one place. There are types defined within rust code in Noir as [wasm_bindgen(typescript_custom_section)], others defined within typescript code in the noir_wasm package, others in foundation, and others in types. We should unify it in a single place.

Fixes #3812

Supersedes #3906

Noir subrepo has been pushed to noir-lang/noir#4035 to run the Noir CI

Copy link

New dependencies detected. Learn more about Socket for GitHub ↗︎

Packages Version New capabilities Transitives Size Publisher
@types/pako 2.0.3 None +0 7.8 kB types

@spalladino spalladino force-pushed the palla/unify-abis-2 branch 2 times, most recently from 1efd474 to 76f03df Compare January 15, 2024 14:41
@AztecBot
Copy link
Collaborator

AztecBot commented Jan 15, 2024

Benchmark results

No metrics with a significant change found.

Detailed results

All benchmarks are run on txs on the Benchmarking contract on the repository. Each tx consists of a batch call to create_note and increment_balance, which guarantees that each tx has a private call, a nested private call, a public call, and a nested public call, as well as an emitted private note, an unencrypted log, and public storage read and write.

This benchmark source data is available in JSON format on S3 here.

Values are compared against data from master at commit dda7c9c4 and shown if the difference exceeds 1%.

L2 block published to L1

Each column represents the number of txs on an L2 block published to L1.

Metric 8 txs 32 txs 128 txs
l1_rollup_calldata_size_in_bytes 45,444 179,588 716,132
l1_rollup_calldata_gas 220,992 866,240 3,447,848
l1_rollup_execution_gas 934,136 3,968,714 24,791,384
l2_block_processing_time_in_ms 1,406 (-13%) 5,320 21,742 (-1%)
note_successful_decrypting_time_in_ms 310 (-3%) 922 (-3%) 3,314 (-4%)
note_trial_decrypting_time_in_ms 23.7 (-16%) 49.9 (-36%) 144 (-1%)
l2_block_building_time_in_ms 16,101 (-1%) 63,861 255,669 (-1%)
l2_block_rollup_simulation_time_in_ms 11,697 (-1%) 46,502 186,514 (-1%)
l2_block_public_tx_process_time_in_ms 4,369 17,268 68,863 (-1%)

L2 chain processing

Each column represents the number of blocks on the L2 chain where each block has 16 txs.

Metric 5 blocks 10 blocks
node_history_sync_time_in_ms 16,669 (+4%) 30,925 (+1%)
note_history_successful_decrypting_time_in_ms 2,238 (+1%) 4,338
note_history_trial_decrypting_time_in_ms 148 (-42%) 199 (-2%)
node_database_size_in_bytes 3,581,567 3,643,551
pxe_database_size_in_bytes 29,923 59,478

Circuits stats

Stats on running time and I/O sizes collected for every circuit run across all benchmarks.

Circuit circuit_simulation_time_in_ms circuit_input_size_in_bytes circuit_output_size_in_bytes
private-kernel-init 214 44,681 25,561
private-kernel-ordering 166 43,753 14,809
base-rollup 1,193 128,338 881
root-rollup 79.4 4,088 677
private-kernel-inner 292 71,208 25,561
public-kernel-private-input 205 31,863 25,561
public-kernel-non-first-iteration 204 31,905 25,561
merge-rollup 7.64 (-1%) 2,608 881

Tree insertion stats

The duration to insert a fixed batch of leaves into each tree type.

Metric 1 leaves 2 leaves 8 leaves 16 leaves 32 leaves 128 leaves 64 leaves 512 leaves 1024 leaves 2048 leaves 8192 leaves
batch_insert_into_append_only_tree_16_depth_ms 12.6 24.6 (+15%) 13.6 (-11%) 19.8 (-2%) 25.3 (-1%) 65.2 (-3%) N/A N/A N/A N/A N/A
batch_insert_into_append_only_tree_16_depth_hash_count 16.9 17.5 23.0 31.6 47.0 143 N/A N/A N/A N/A N/A
batch_insert_into_append_only_tree_16_depth_hash_ms 0.629 0.807 (+20%) 0.544 (-11%) 0.544 0.484 0.441 N/A N/A N/A N/A N/A
batch_insert_into_append_only_tree_32_depth_ms N/A N/A N/A N/A N/A 109 (+19%) 52.0 (-1%) 254 (+1%) 488 (+2%) 915 (-1%) 3,564 (-1%)
batch_insert_into_append_only_tree_32_depth_hash_count N/A N/A N/A N/A N/A 159 96.0 543 1,055 2,079 8,223
batch_insert_into_append_only_tree_32_depth_hash_ms N/A N/A N/A N/A N/A 0.554 (+10%) 0.498 (-1%) 0.439 0.442 (+1%) 0.430 0.426
batch_insert_into_indexed_tree_20_depth_ms N/A N/A N/A N/A N/A 121 (-8%) 62.7 (-1%) 378 (-10%) 783 (+2%) 1,432 (-1%) 5,893 (-2%)
batch_insert_into_indexed_tree_20_depth_hash_count N/A N/A N/A N/A N/A 197 104 691 1,363 2,707 10,771
batch_insert_into_indexed_tree_20_depth_hash_ms N/A N/A N/A N/A N/A 0.507 (-2%) 0.504 0.485 (-6%) 0.490 (+1%) 0.475 0.487 (+1%)
batch_insert_into_indexed_tree_40_depth_ms N/A N/A N/A 68.4 N/A N/A N/A N/A N/A N/A N/A
batch_insert_into_indexed_tree_40_depth_hash_count N/A N/A N/A 94.1 N/A N/A N/A N/A N/A N/A N/A
batch_insert_into_indexed_tree_40_depth_hash_ms N/A N/A N/A 0.598 N/A N/A N/A N/A N/A N/A N/A

Miscellaneous

Transaction sizes based on how many contracts are deployed in the tx.

Metric 0 deployed contracts 1 deployed contracts
tx_size_in_bytes 15,455 32,219

Transaction processing duration by data writes.

Metric 0 new commitments 1 new commitments
tx_pxe_processing_time_ms 374 1,087
Metric 1 public data writes
tx_sequencer_processing_time_ms 536

@spalladino
Copy link
Collaborator Author

Future changes: Type information for a compilation artifact is now spread all over the place, and duplicated in more than one place. There are types defined within rust code in Noir as [wasm_bindgen(typescript_custom_section)], others defined within typescript code in the noir_wasm package, others in foundation, and others in types. We should unify it in a single place.

About this, I suggest creating a new types-only package in the Noir repo with typescript types for Noir abi and compilation artifacts (and potentially a zod validator, already implemented on a discarded commit), and can be consumed from yarn-project. Reason for not reusing noir-wasm is because the types are needed also when building with nargo and consuming from ts, and it makes no sense to pull in the whole wasm package just for the type information.

This would allow us to remove the type info from within the rust files, and also from foundation and types in yarn-packages. Thoughts @TomAFrench?

@spalladino spalladino marked this pull request as ready for review January 15, 2024 20:51
@TomAFrench
Copy link
Member

new types-only package in the Noir repo with typescript types for Noir abi and compilation artifacts

That works for me as long as we have tests to check for drift against these types.

@spalladino spalladino merged commit d083438 into master Jan 17, 2024
80 of 82 checks passed
@spalladino spalladino deleted the palla/unify-abis-2 branch January 17, 2024 14:36
rahul-kothari pushed a commit that referenced this pull request Jan 23, 2024
🤖 I have created a release *beep* *boop*
---


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

##
[0.20.0](aztec-packages-v0.19.0...aztec-packages-v0.20.0)
(2024-01-22)


### ⚠ BREAKING CHANGES

* nullifier key
([#4166](#4166))
* Unify ABIs between nargo and yarn-project
([#3989](#3989))

### Features

* **avm:** Add internal jump and return, adjust control flow
([#4140](#4140))
([b77afb1](b77afb1))
* **avm:** Better field arithmetic
([#4142](#4142))
([7308e31](7308e31))
* **avm:** Encode TS AVM instructions as bytecode, especially for
testing
([#4115](#4115))
([de6e2ed](de6e2ed))
* **avm:** Improve interpreter errors and tests
([#4173](#4173))
([f0fb594](f0fb594))
* Benchmark commit function
([#4178](#4178))
([ea84085](ea84085))
* Goblin acir composer
([#4112](#4112))
([5e85b92](5e85b92))
* Nullifier key
([#4166](#4166))
([7c07665](7c07665))
* **public-vm:** Avm journal
([#3945](#3945))
([5658468](5658468))
* Publish block body separately
([#4118](#4118))
([a04e1e3](a04e1e3)),
closes
[#3944](#3944)
* Unify ABIs between nargo and yarn-project
([#3989](#3989))
([d083438](d083438))
* Update noir
([#4082](#4082))
([0e6037a](0e6037a))
* Updating L2 Block encoding and `Rollup.process` function
([#4015](#4015))
([2d8eb37](2d8eb37)),
closes
[#3936](#3936)
[#4010](#4010)
[#4011](#4011)


### Bug Fixes

* Bb.js version in yarn lockfile
([7b96760](7b96760))
* **build:** Publish bb.js from CCI
([#4151](#4151))
([09dbfcd](09dbfcd))
* Make CMake version warning fatal
([#4144](#4144))
([b1443fa](b1443fa))
* Misleading error message in `PublicState::read`
([#4149](#4149))
([fa4d919](fa4d919))
* Nargo destination path in bootstrap cache
([#4103](#4103))
([4901309](4901309))
* Reinstate Ultra arith rec verifier test
([#3886](#3886))
([995973b](995973b))
* Upload_benchmarks_to_s3.sh missing exit
([#4046](#4046))
([52a9327](52a9327))


### Miscellaneous

* Archiver store
([#3966](#3966))
([af2be87](af2be87))
* **avm:** List avm opcodes in a (enum =&gt; class) map in TS
([#4113](#4113))
([dee564a](dee564a))
* **bb:** More concise namespaces, plookup =&gt; bb::plookup
([#4146](#4146))
([14d39ed](14d39ed))
* **bb:** Namespace plonk::stdlib =&gt; stdlib
([#4117](#4117))
([cd2f67f](cd2f67f))
* **bb:** Namespace proof_system=&gt;bb
([#4116](#4116))
([7438db3](7438db3))
* **docs:** Aztec-up doesnt need `latest`, remove warnings around
sandbox/cli npm pkgs
([#4138](#4138))
([2bbf7a9](2bbf7a9))
* **docs:** Update js release notes for 0.18.0
([#4051](#4051))
([bdbe963](bdbe963))
* **docs:** Update lsp install instructions
([#4110](#4110))
([3138816](3138816)),
closes
[#4098](#4098)
* Dont mirror build-system mirror_repos.yml
([#4067](#4067))
([04f8e0d](04f8e0d))
* Fixes many broken urls
([#4109](#4109))
([41ae75c](41ae75c))
* Remove dependency cycles in `sequencer-client`
([#4017](#4017))
([fe4538b](fe4538b))
* Remove lodash times in favor of foundation fn
([#3877](#3877))
([a10eef0](a10eef0))
* Remove mutex dependency
([#4160](#4160))
([3b82be0](3b82be0))
* Remove unnecessary computation
([#4133](#4133))
([f35bdb8](f35bdb8))
* Remove unused noir-version json
([#4105](#4105))
([afca819](afca819))
* Remove unwanted submodules
([#4085](#4085))
([dda7c9c](dda7c9c))
* Replace relative paths to noir-protocol-circuits
([59feeb5](59feeb5))
* Replace relative paths to noir-protocol-circuits
([44d9136](44d9136))
* Replace relative paths to noir-protocol-circuits
([84b0bad](84b0bad))
* Simplify and fix DocsExample contract, e2e singleton + codegen to not
show internal methods
([#4169](#4169))
([38d262e](38d262e))
* Update noir
([#4168](#4168))
([d40ad06](d40ad06))


### Documentation

* Update migration notes
([#4175](#4175))
([dbc8174](dbc8174))
* **yellow-paper:** Update circuit sections for nullifier keys and
static calls
([#4155](#4155))
([ed71a57](ed71a57))
* **yellowpaper:** Refresh of avm instruction set
([#4081](#4081))
([52162ee](52162ee))
</details>

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

##
[0.20.0](barretenberg.js-v0.19.0...barretenberg.js-v0.20.0)
(2024-01-22)


### Features

* Goblin acir composer
([#4112](#4112))
([5e85b92](5e85b92))
</details>

<details><summary>barretenberg: 0.20.0</summary>

##
[0.20.0](barretenberg-v0.19.0...barretenberg-v0.20.0)
(2024-01-22)


### Features

* Benchmark commit function
([#4178](#4178))
([ea84085](ea84085))
* Goblin acir composer
([#4112](#4112))
([5e85b92](5e85b92))


### Bug Fixes

* Make CMake version warning fatal
([#4144](#4144))
([b1443fa](b1443fa))
* Reinstate Ultra arith rec verifier test
([#3886](#3886))
([995973b](995973b))
* Upload_benchmarks_to_s3.sh missing exit
([#4046](#4046))
([52a9327](52a9327))


### Miscellaneous

* **bb:** More concise namespaces, plookup =&gt; bb::plookup
([#4146](#4146))
([14d39ed](14d39ed))
* **bb:** Namespace plonk::stdlib =&gt; stdlib
([#4117](#4117))
([cd2f67f](cd2f67f))
* **bb:** Namespace proof_system=&gt;bb
([#4116](#4116))
([7438db3](7438db3))
* Remove mutex dependency
([#4160](#4160))
([3b82be0](3b82be0))
* Remove unwanted submodules
([#4085](#4085))
([dda7c9c](dda7c9c))
</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 Jan 24, 2024
🤖 I have created a release *beep* *boop*
---


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

##
[0.20.0](AztecProtocol/aztec-packages@aztec-packages-v0.19.0...aztec-packages-v0.20.0)
(2024-01-22)


### ⚠ BREAKING CHANGES

* nullifier key
([#4166](AztecProtocol/aztec-packages#4166))
* Unify ABIs between nargo and yarn-project
([#3989](AztecProtocol/aztec-packages#3989))

### Features

* **avm:** Add internal jump and return, adjust control flow
([#4140](AztecProtocol/aztec-packages#4140))
([b77afb1](AztecProtocol/aztec-packages@b77afb1))
* **avm:** Better field arithmetic
([#4142](AztecProtocol/aztec-packages#4142))
([7308e31](AztecProtocol/aztec-packages@7308e31))
* **avm:** Encode TS AVM instructions as bytecode, especially for
testing
([#4115](AztecProtocol/aztec-packages#4115))
([de6e2ed](AztecProtocol/aztec-packages@de6e2ed))
* **avm:** Improve interpreter errors and tests
([#4173](AztecProtocol/aztec-packages#4173))
([f0fb594](AztecProtocol/aztec-packages@f0fb594))
* Benchmark commit function
([#4178](AztecProtocol/aztec-packages#4178))
([ea84085](AztecProtocol/aztec-packages@ea84085))
* Goblin acir composer
([#4112](AztecProtocol/aztec-packages#4112))
([5e85b92](AztecProtocol/aztec-packages@5e85b92))
* Nullifier key
([#4166](AztecProtocol/aztec-packages#4166))
([7c07665](AztecProtocol/aztec-packages@7c07665))
* **public-vm:** Avm journal
([#3945](AztecProtocol/aztec-packages#3945))
([5658468](AztecProtocol/aztec-packages@5658468))
* Publish block body separately
([#4118](AztecProtocol/aztec-packages#4118))
([a04e1e3](AztecProtocol/aztec-packages@a04e1e3)),
closes
[#3944](AztecProtocol/aztec-packages#3944)
* Unify ABIs between nargo and yarn-project
([#3989](AztecProtocol/aztec-packages#3989))
([d083438](AztecProtocol/aztec-packages@d083438))
* Update noir
([#4082](AztecProtocol/aztec-packages#4082))
([0e6037a](AztecProtocol/aztec-packages@0e6037a))
* Updating L2 Block encoding and `Rollup.process` function
([#4015](AztecProtocol/aztec-packages#4015))
([2d8eb37](AztecProtocol/aztec-packages@2d8eb37)),
closes
[#3936](AztecProtocol/aztec-packages#3936)
[#4010](AztecProtocol/aztec-packages#4010)
[#4011](AztecProtocol/aztec-packages#4011)


### Bug Fixes

* Bb.js version in yarn lockfile
([7b96760](AztecProtocol/aztec-packages@7b96760))
* **build:** Publish bb.js from CCI
([#4151](AztecProtocol/aztec-packages#4151))
([09dbfcd](AztecProtocol/aztec-packages@09dbfcd))
* Make CMake version warning fatal
([#4144](AztecProtocol/aztec-packages#4144))
([b1443fa](AztecProtocol/aztec-packages@b1443fa))
* Misleading error message in `PublicState::read`
([#4149](AztecProtocol/aztec-packages#4149))
([fa4d919](AztecProtocol/aztec-packages@fa4d919))
* Nargo destination path in bootstrap cache
([#4103](AztecProtocol/aztec-packages#4103))
([4901309](AztecProtocol/aztec-packages@4901309))
* Reinstate Ultra arith rec verifier test
([#3886](AztecProtocol/aztec-packages#3886))
([995973b](AztecProtocol/aztec-packages@995973b))
* Upload_benchmarks_to_s3.sh missing exit
([#4046](AztecProtocol/aztec-packages#4046))
([52a9327](AztecProtocol/aztec-packages@52a9327))


### Miscellaneous

* Archiver store
([#3966](AztecProtocol/aztec-packages#3966))
([af2be87](AztecProtocol/aztec-packages@af2be87))
* **avm:** List avm opcodes in a (enum =&gt; class) map in TS
([#4113](AztecProtocol/aztec-packages#4113))
([dee564a](AztecProtocol/aztec-packages@dee564a))
* **bb:** More concise namespaces, plookup =&gt; bb::plookup
([#4146](AztecProtocol/aztec-packages#4146))
([14d39ed](AztecProtocol/aztec-packages@14d39ed))
* **bb:** Namespace plonk::stdlib =&gt; stdlib
([#4117](AztecProtocol/aztec-packages#4117))
([cd2f67f](AztecProtocol/aztec-packages@cd2f67f))
* **bb:** Namespace proof_system=&gt;bb
([#4116](AztecProtocol/aztec-packages#4116))
([7438db3](AztecProtocol/aztec-packages@7438db3))
* **docs:** Aztec-up doesnt need `latest`, remove warnings around
sandbox/cli npm pkgs
([#4138](AztecProtocol/aztec-packages#4138))
([2bbf7a9](AztecProtocol/aztec-packages@2bbf7a9))
* **docs:** Update js release notes for 0.18.0
([#4051](AztecProtocol/aztec-packages#4051))
([bdbe963](AztecProtocol/aztec-packages@bdbe963))
* **docs:** Update lsp install instructions
([#4110](AztecProtocol/aztec-packages#4110))
([3138816](AztecProtocol/aztec-packages@3138816)),
closes
[#4098](AztecProtocol/aztec-packages#4098)
* Dont mirror build-system mirror_repos.yml
([#4067](AztecProtocol/aztec-packages#4067))
([04f8e0d](AztecProtocol/aztec-packages@04f8e0d))
* Fixes many broken urls
([#4109](AztecProtocol/aztec-packages#4109))
([41ae75c](AztecProtocol/aztec-packages@41ae75c))
* Remove dependency cycles in `sequencer-client`
([#4017](AztecProtocol/aztec-packages#4017))
([fe4538b](AztecProtocol/aztec-packages@fe4538b))
* Remove lodash times in favor of foundation fn
([#3877](AztecProtocol/aztec-packages#3877))
([a10eef0](AztecProtocol/aztec-packages@a10eef0))
* Remove mutex dependency
([#4160](AztecProtocol/aztec-packages#4160))
([3b82be0](AztecProtocol/aztec-packages@3b82be0))
* Remove unnecessary computation
([#4133](AztecProtocol/aztec-packages#4133))
([f35bdb8](AztecProtocol/aztec-packages@f35bdb8))
* Remove unused noir-version json
([#4105](AztecProtocol/aztec-packages#4105))
([afca819](AztecProtocol/aztec-packages@afca819))
* Remove unwanted submodules
([#4085](AztecProtocol/aztec-packages#4085))
([dda7c9c](AztecProtocol/aztec-packages@dda7c9c))
* Replace relative paths to noir-protocol-circuits
([59feeb5](AztecProtocol/aztec-packages@59feeb5))
* Replace relative paths to noir-protocol-circuits
([44d9136](AztecProtocol/aztec-packages@44d9136))
* Replace relative paths to noir-protocol-circuits
([84b0bad](AztecProtocol/aztec-packages@84b0bad))
* Simplify and fix DocsExample contract, e2e singleton + codegen to not
show internal methods
([#4169](AztecProtocol/aztec-packages#4169))
([38d262e](AztecProtocol/aztec-packages@38d262e))
* Update noir
([#4168](AztecProtocol/aztec-packages#4168))
([d40ad06](AztecProtocol/aztec-packages@d40ad06))


### Documentation

* Update migration notes
([#4175](AztecProtocol/aztec-packages#4175))
([dbc8174](AztecProtocol/aztec-packages@dbc8174))
* **yellow-paper:** Update circuit sections for nullifier keys and
static calls
([#4155](AztecProtocol/aztec-packages#4155))
([ed71a57](AztecProtocol/aztec-packages@ed71a57))
* **yellowpaper:** Refresh of avm instruction set
([#4081](AztecProtocol/aztec-packages#4081))
([52162ee](AztecProtocol/aztec-packages@52162ee))
</details>

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

##
[0.20.0](AztecProtocol/aztec-packages@barretenberg.js-v0.19.0...barretenberg.js-v0.20.0)
(2024-01-22)


### Features

* Goblin acir composer
([#4112](AztecProtocol/aztec-packages#4112))
([5e85b92](AztecProtocol/aztec-packages@5e85b92))
</details>

<details><summary>barretenberg: 0.20.0</summary>

##
[0.20.0](AztecProtocol/aztec-packages@barretenberg-v0.19.0...barretenberg-v0.20.0)
(2024-01-22)


### Features

* Benchmark commit function
([#4178](AztecProtocol/aztec-packages#4178))
([ea84085](AztecProtocol/aztec-packages@ea84085))
* Goblin acir composer
([#4112](AztecProtocol/aztec-packages#4112))
([5e85b92](AztecProtocol/aztec-packages@5e85b92))


### Bug Fixes

* Make CMake version warning fatal
([#4144](AztecProtocol/aztec-packages#4144))
([b1443fa](AztecProtocol/aztec-packages@b1443fa))
* Reinstate Ultra arith rec verifier test
([#3886](AztecProtocol/aztec-packages#3886))
([995973b](AztecProtocol/aztec-packages@995973b))
* Upload_benchmarks_to_s3.sh missing exit
([#4046](AztecProtocol/aztec-packages#4046))
([52a9327](AztecProtocol/aztec-packages@52a9327))


### Miscellaneous

* **bb:** More concise namespaces, plookup =&gt; bb::plookup
([#4146](AztecProtocol/aztec-packages#4146))
([14d39ed](AztecProtocol/aztec-packages@14d39ed))
* **bb:** Namespace plonk::stdlib =&gt; stdlib
([#4117](AztecProtocol/aztec-packages#4117))
([cd2f67f](AztecProtocol/aztec-packages@cd2f67f))
* **bb:** Namespace proof_system=&gt;bb
([#4116](AztecProtocol/aztec-packages#4116))
([7438db3](AztecProtocol/aztec-packages@7438db3))
* Remove mutex dependency
([#4160](AztecProtocol/aztec-packages#4160))
([3b82be0](AztecProtocol/aztec-packages@3b82be0))
* Remove unwanted submodules
([#4085](AztecProtocol/aztec-packages#4085))
([dda7c9c](AztecProtocol/aztec-packages@dda7c9c))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
alexghr added a commit that referenced this pull request Feb 1, 2024
This PR makes the cli compatible with the changes in #3989
michaelelliot pushed a commit to Swoir/noir_rs that referenced this pull request Feb 28, 2024
Changes the output of `nargo` and `noir-wasm` to generate a single
artifact that includes debug information. Compiled contracts now have a
`file_map` at the root of the artifact, and a `debug_symbols` within
each function. For consistency, compiled programs also have `file_map`
and `debug_symbols`. Debug symbols are compressed and base64-encoded, as
they were by the former `noir-compiler` postprocessing. The `debug` json
artifact is no longer emitted.

Removes all code related to generating `yarn-project`-specific ABIs from
noir compiler. Instead, `types` now exposes a `loadContractArtifact`
that renames fields as needed (and use camel instead of snake case), and
is required when loading a noir contract artifact. Autogenerated types
run this automatically.

Since we are no longer post-processing artifacts, the `noir-contracts`
project shape is changed. JSON files live in the `target` folder where
nargo outputs them (this is not configurable), and are loaded by the
autogenerated typescript interfaces from there.

As part of the refactor, moves functions for getting functions debug
info out of `acir-simulator` and into `types`.

**Breaking change**: This removes the need to run `codegen` for using a
compiled contract. However, when creating a new contract object from
aztec.js, a dev needs to call `loadContractArtifact`.

**Future changes**: Type information for a compilation artifact is now
spread all over the place, and duplicated in more than one place. There
are types defined within rust code in Noir as
`[wasm_bindgen(typescript_custom_section)]`, others defined within
typescript code in the `noir_wasm` package, others in `foundation`, and
others in `types`. We should unify it in a single place.

Fixes AztecProtocol#3812

Supersedes AztecProtocol#3906

Noir subrepo has been pushed to
noir-lang/noir#4035 to run the Noir CI
michaelelliot pushed a commit to Swoir/noir_rs that referenced this pull request Feb 28, 2024
🤖 I have created a release *beep* *boop*
---


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

##
[0.20.0](AztecProtocol/aztec-packages@aztec-packages-v0.19.0...aztec-packages-v0.20.0)
(2024-01-22)


### ⚠ BREAKING CHANGES

* nullifier key
([AztecProtocol#4166](AztecProtocol#4166))
* Unify ABIs between nargo and yarn-project
([AztecProtocol#3989](AztecProtocol#3989))

### Features

* **avm:** Add internal jump and return, adjust control flow
([AztecProtocol#4140](AztecProtocol#4140))
([b77afb1](AztecProtocol@b77afb1))
* **avm:** Better field arithmetic
([AztecProtocol#4142](AztecProtocol#4142))
([7308e31](AztecProtocol@7308e31))
* **avm:** Encode TS AVM instructions as bytecode, especially for
testing
([AztecProtocol#4115](AztecProtocol#4115))
([de6e2ed](AztecProtocol@de6e2ed))
* **avm:** Improve interpreter errors and tests
([AztecProtocol#4173](AztecProtocol#4173))
([f0fb594](AztecProtocol@f0fb594))
* Benchmark commit function
([AztecProtocol#4178](AztecProtocol#4178))
([ea84085](AztecProtocol@ea84085))
* Goblin acir composer
([AztecProtocol#4112](AztecProtocol#4112))
([5e85b92](AztecProtocol@5e85b92))
* Nullifier key
([AztecProtocol#4166](AztecProtocol#4166))
([7c07665](AztecProtocol@7c07665))
* **public-vm:** Avm journal
([AztecProtocol#3945](AztecProtocol#3945))
([5658468](AztecProtocol@5658468))
* Publish block body separately
([AztecProtocol#4118](AztecProtocol#4118))
([a04e1e3](AztecProtocol@a04e1e3)),
closes
[AztecProtocol#3944](AztecProtocol#3944)
* Unify ABIs between nargo and yarn-project
([AztecProtocol#3989](AztecProtocol#3989))
([d083438](AztecProtocol@d083438))
* Update noir
([AztecProtocol#4082](AztecProtocol#4082))
([0e6037a](AztecProtocol@0e6037a))
* Updating L2 Block encoding and `Rollup.process` function
([AztecProtocol#4015](AztecProtocol#4015))
([2d8eb37](AztecProtocol@2d8eb37)),
closes
[AztecProtocol#3936](AztecProtocol#3936)
[AztecProtocol#4010](AztecProtocol#4010)
[AztecProtocol#4011](AztecProtocol#4011)


### Bug Fixes

* Bb.js version in yarn lockfile
([7b96760](AztecProtocol@7b96760))
* **build:** Publish bb.js from CCI
([AztecProtocol#4151](AztecProtocol#4151))
([09dbfcd](AztecProtocol@09dbfcd))
* Make CMake version warning fatal
([AztecProtocol#4144](AztecProtocol#4144))
([b1443fa](AztecProtocol@b1443fa))
* Misleading error message in `PublicState::read`
([AztecProtocol#4149](AztecProtocol#4149))
([fa4d919](AztecProtocol@fa4d919))
* Nargo destination path in bootstrap cache
([AztecProtocol#4103](AztecProtocol#4103))
([4901309](AztecProtocol@4901309))
* Reinstate Ultra arith rec verifier test
([AztecProtocol#3886](AztecProtocol#3886))
([995973b](AztecProtocol@995973b))
* Upload_benchmarks_to_s3.sh missing exit
([AztecProtocol#4046](AztecProtocol#4046))
([52a9327](AztecProtocol@52a9327))


### Miscellaneous

* Archiver store
([AztecProtocol#3966](AztecProtocol#3966))
([af2be87](AztecProtocol@af2be87))
* **avm:** List avm opcodes in a (enum =&gt; class) map in TS
([AztecProtocol#4113](AztecProtocol#4113))
([dee564a](AztecProtocol@dee564a))
* **bb:** More concise namespaces, plookup =&gt; bb::plookup
([AztecProtocol#4146](AztecProtocol#4146))
([14d39ed](AztecProtocol@14d39ed))
* **bb:** Namespace plonk::stdlib =&gt; stdlib
([AztecProtocol#4117](AztecProtocol#4117))
([cd2f67f](AztecProtocol@cd2f67f))
* **bb:** Namespace proof_system=&gt;bb
([AztecProtocol#4116](AztecProtocol#4116))
([7438db3](AztecProtocol@7438db3))
* **docs:** Aztec-up doesnt need `latest`, remove warnings around
sandbox/cli npm pkgs
([AztecProtocol#4138](AztecProtocol#4138))
([2bbf7a9](AztecProtocol@2bbf7a9))
* **docs:** Update js release notes for 0.18.0
([AztecProtocol#4051](AztecProtocol#4051))
([bdbe963](AztecProtocol@bdbe963))
* **docs:** Update lsp install instructions
([AztecProtocol#4110](AztecProtocol#4110))
([3138816](AztecProtocol@3138816)),
closes
[AztecProtocol#4098](AztecProtocol#4098)
* Dont mirror build-system mirror_repos.yml
([AztecProtocol#4067](AztecProtocol#4067))
([04f8e0d](AztecProtocol@04f8e0d))
* Fixes many broken urls
([AztecProtocol#4109](AztecProtocol#4109))
([41ae75c](AztecProtocol@41ae75c))
* Remove dependency cycles in `sequencer-client`
([AztecProtocol#4017](AztecProtocol#4017))
([fe4538b](AztecProtocol@fe4538b))
* Remove lodash times in favor of foundation fn
([AztecProtocol#3877](AztecProtocol#3877))
([a10eef0](AztecProtocol@a10eef0))
* Remove mutex dependency
([AztecProtocol#4160](AztecProtocol#4160))
([3b82be0](AztecProtocol@3b82be0))
* Remove unnecessary computation
([AztecProtocol#4133](AztecProtocol#4133))
([f35bdb8](AztecProtocol@f35bdb8))
* Remove unused noir-version json
([AztecProtocol#4105](AztecProtocol#4105))
([afca819](AztecProtocol@afca819))
* Remove unwanted submodules
([AztecProtocol#4085](AztecProtocol#4085))
([dda7c9c](AztecProtocol@dda7c9c))
* Replace relative paths to noir-protocol-circuits
([59feeb5](AztecProtocol@59feeb5))
* Replace relative paths to noir-protocol-circuits
([44d9136](AztecProtocol@44d9136))
* Replace relative paths to noir-protocol-circuits
([84b0bad](AztecProtocol@84b0bad))
* Simplify and fix DocsExample contract, e2e singleton + codegen to not
show internal methods
([AztecProtocol#4169](AztecProtocol#4169))
([38d262e](AztecProtocol@38d262e))
* Update noir
([AztecProtocol#4168](AztecProtocol#4168))
([d40ad06](AztecProtocol@d40ad06))


### Documentation

* Update migration notes
([AztecProtocol#4175](AztecProtocol#4175))
([dbc8174](AztecProtocol@dbc8174))
* **yellow-paper:** Update circuit sections for nullifier keys and
static calls
([AztecProtocol#4155](AztecProtocol#4155))
([ed71a57](AztecProtocol@ed71a57))
* **yellowpaper:** Refresh of avm instruction set
([AztecProtocol#4081](AztecProtocol#4081))
([52162ee](AztecProtocol@52162ee))
</details>

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

##
[0.20.0](AztecProtocol/aztec-packages@barretenberg.js-v0.19.0...barretenberg.js-v0.20.0)
(2024-01-22)


### Features

* Goblin acir composer
([AztecProtocol#4112](AztecProtocol#4112))
([5e85b92](AztecProtocol@5e85b92))
</details>

<details><summary>barretenberg: 0.20.0</summary>

##
[0.20.0](AztecProtocol/aztec-packages@barretenberg-v0.19.0...barretenberg-v0.20.0)
(2024-01-22)


### Features

* Benchmark commit function
([AztecProtocol#4178](AztecProtocol#4178))
([ea84085](AztecProtocol@ea84085))
* Goblin acir composer
([AztecProtocol#4112](AztecProtocol#4112))
([5e85b92](AztecProtocol@5e85b92))


### Bug Fixes

* Make CMake version warning fatal
([AztecProtocol#4144](AztecProtocol#4144))
([b1443fa](AztecProtocol@b1443fa))
* Reinstate Ultra arith rec verifier test
([AztecProtocol#3886](AztecProtocol#3886))
([995973b](AztecProtocol@995973b))
* Upload_benchmarks_to_s3.sh missing exit
([AztecProtocol#4046](AztecProtocol#4046))
([52a9327](AztecProtocol@52a9327))


### Miscellaneous

* **bb:** More concise namespaces, plookup =&gt; bb::plookup
([AztecProtocol#4146](AztecProtocol#4146))
([14d39ed](AztecProtocol@14d39ed))
* **bb:** Namespace plonk::stdlib =&gt; stdlib
([AztecProtocol#4117](AztecProtocol#4117))
([cd2f67f](AztecProtocol@cd2f67f))
* **bb:** Namespace proof_system=&gt;bb
([AztecProtocol#4116](AztecProtocol#4116))
([7438db3](AztecProtocol@7438db3))
* Remove mutex dependency
([AztecProtocol#4160](AztecProtocol#4160))
([3b82be0](AztecProtocol@3b82be0))
* Remove unwanted submodules
([AztecProtocol#4085](AztecProtocol#4085))
([dda7c9c](AztecProtocol@dda7c9c))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
michaelelliot pushed a commit to Swoir/noir_rs that referenced this pull request Feb 28, 2024
This PR makes the cli compatible with the changes in AztecProtocol#3989
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

Make Aztec.js consume native noir ABIs
4 participants