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!: introduce WithHash<T> + use it in PublicImmutable #8022

Merged
merged 19 commits into from
Feb 5, 2025

Conversation

benesjan
Copy link
Contributor

@benesjan benesjan commented Aug 15, 2024

Fixes #8399

Introducing WithHash<T> which Nico originally implemented in #11684 and using that in PublicImmutable.

+ Fixes a bug with generating TS artifacts of contracts containing storage slots larger than 9 (see comments below for explanation).

Optimizes PublicImmutable by storing packed values along with their hash in storage, then fetching the packed values in unconstrained, fetching hash in constrained and checking the hash.

Note: It's not worthwhile to optimize the case where we store only 1 field in storage by not going with the loading-in-unconstrained flow because hashing 2 fields costs 80 gates and here we would hash just 1 extra field (to get the value hash). The gain is not worth the complexity here.

1 field gate diff:

TokenBridge::get_portal_address
Before: 9787
After: 9869

diff: +82 gates

As expected for 1 field we get a gate count rise as we do 1 more pedersen hash.

2 fields gate diff:

FPC::fee_entrypoint_private(...) gates
Before: 14219
After: 10464

diff: -3755 gates

3 fields gate diff:

AMM:add_liquidity
Before: 19113
After: 12039

diff: -7074 gates

Copy link
Contributor Author

benesjan commented Aug 15, 2024

@AztecBot
Copy link
Collaborator

AztecBot commented Aug 15, 2024

Benchmark results

Metrics with a significant change:

  • proof_construction_time_sha256_100_ms (16): 5,545 (-17%)
  • protocol_circuit_simulation_time_in_ms (private-kernel-tail-to-public): 825 (-19%)
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.

Proof generation

Each column represents the number of threads used in proof generation.

Metric 1 threads 4 threads 16 threads 32 threads 64 threads
proof_construction_time_sha256_ms 5,843 (+1%) 1,594 (+2%) 736 (+4%) 782 (+3%) 801 (+5%)
proof_construction_time_sha256_30_ms 11,877 3,193 1,428 (+1%) 1,459 (+1%) 1,479
proof_construction_time_sha256_100_ms 47,854 (+5%) 12,069 (+1%) ⚠️ 5,545 (-17%) 5,423 5,382
proof_construction_time_poseidon_hash_ms 79.0 35.0 (+3%) 34.0 59.0 88.0 (+1%)
proof_construction_time_poseidon_hash_30_ms 1,538 423 202 226 274 (-1%)
proof_construction_time_poseidon_hash_100_ms 5,697 (+1%) 1,535 (+1%) 696 (+3%) 746 (+1%) 756 (+1%)

L2 block published to L1

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

Metric 4 txs 8 txs 16 txs
l1_rollup_calldata_size_in_bytes 4,324 7,844 14,852
l1_rollup_calldata_gas 49,708 92,414 177,764
l1_rollup_execution_gas 1,383,157 2,130,831 3,958,220
l2_block_processing_time_in_ms 240 (-5%) 446 (+1%) 803 (-1%)
l2_block_building_time_in_ms 9,247 18,049 35,990
l2_block_rollup_simulation_time_in_ms 9,247 18,049 35,990
l2_block_public_tx_process_time_in_ms 7,798 16,502 34,421

L2 chain processing

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

Metric 3 blocks 5 blocks
node_history_sync_time_in_ms 2,915 (+1%) 3,861 (-1%)
node_database_size_in_bytes 12,619,856 16,703,568
pxe_database_size_in_bytes 16,254 26,813

Circuits stats

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

Circuit simulation_time_in_ms witness_generation_time_in_ms input_size_in_bytes output_size_in_bytes proving_time_in_ms
private-kernel-init 98.1 (+7%) 384 (-4%) 21,673 44,858 N/A
private-kernel-inner 164 687 (-4%) 72,309 45,005 N/A
private-kernel-reset-tiny 505 (+1%) 884 (-7%) 65,974 44,844 N/A
private-kernel-tail 208 (+1%) 163 (-2%) 50,728 52,256 N/A
base-parity 5.62 (+1%) N/A 160 96.0 N/A
root-parity 33.3 N/A 69,084 96.0 N/A
base-rollup 2,855 (+1%) N/A 187,817 664 N/A
root-rollup 38.6 (-1%) N/A 54,525 716 N/A
public-kernel-setup 101 (+3%) N/A 103,760 71,222 N/A
public-kernel-app-logic 104 (+1%) N/A 103,599 71,222 N/A
public-kernel-tail 583 (+1%) N/A 409,190 16,414 N/A
private-kernel-reset-small 491 N/A 66,085 45,629 N/A
private-kernel-tail-to-public ⚠️ 825 (-19%) 660 492,960 1,697 N/A
public-kernel-teardown 95.0 (+2%) N/A 104,005 71,222 N/A
merge-rollup 19.1 N/A 35,742 664 N/A
undefined N/A N/A N/A N/A 69,409 (+7%)

Stats on running time collected for app circuits

Function input_size_in_bytes output_size_in_bytes witness_generation_time_in_ms
ContractClassRegisterer:register 1,344 11,731 343
ContractInstanceDeployer:deploy 1,408 11,731 18.1 (-2%)
MultiCallEntrypoint:entrypoint 1,920 11,731 424
FeeJuice:deploy 1,376 11,731 386 (-1%)
SchnorrAccount:constructor 1,312 11,731 106 (+2%)
SchnorrAccount:entrypoint 2,304 11,731 434
Token:privately_mint_private_note 1,280 11,731 140 (-1%)
FPC:fee_entrypoint_public 1,344 11,731 28.6 (-2%)
Token:transfer 1,312 11,731 281 (-2%)
Benchmarking:create_note 1,344 11,731 105 (+1%)
SchnorrAccount:verify_private_authwit 1,280 11,731 27.8
Token:unshield 1,376 11,731 570 (+2%)
FPC:fee_entrypoint_private 1,376 11,731 760 (+1%)

AVM Simulation

Time to simulate various public functions in the AVM.

Function time_ms bytecode_size_in_bytes
FeeJuice:_increase_public_balance 53.9 (-1%) 8,139
FeeJuice:set_portal 12.8 (+9%) 2,362
Token:constructor 87.8 (+9%) 31,107
FPC:constructor 55.6 (+4%) 22,380
FeeJuice:mint_public 43.5 (+13%) 6,150
Token:mint_public 77.9 (-6%) 11,720
Token:assert_minter_and_mint 40.1 (+3%) 8,028
AuthRegistry:set_authorized 48.3 (+6%) 4,537
FPC:prepare_fee 245 (+2%) 8,812
Token:transfer_public 20.2 (-1%) 47,374
FPC:pay_refund 66.9 (+16%) 12,114
Benchmarking:increment_balance 966 7,450
Token:_increase_public_balance 39.6 (-2%) 8,960
FPC:pay_refund_with_shielded_rebate 67.5 (+2%) 12,663

Public DB Access

Time to access various public DBs.

Function time_ms
get-nullifier-index 0.165 (+4%)

Tree insertion stats

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

Metric 1 leaves 16 leaves 64 leaves 128 leaves 256 leaves 512 leaves 1024 leaves
batch_insert_into_append_only_tree_16_depth_ms 2.17 3.91 (+2%) N/A N/A N/A N/A N/A
batch_insert_into_append_only_tree_16_depth_hash_count 16.8 31.7 N/A N/A N/A N/A N/A
batch_insert_into_append_only_tree_16_depth_hash_ms 0.112 (-1%) 0.111 (+2%) N/A N/A N/A N/A N/A
batch_insert_into_append_only_tree_32_depth_ms N/A N/A 11.5 17.8 (+1%) 30.9 (-3%) 60.6 (+3%) 112 (+1%)
batch_insert_into_append_only_tree_32_depth_hash_count N/A N/A 95.9 159 287 543 1,055
batch_insert_into_append_only_tree_32_depth_hash_ms N/A N/A 0.110 0.103 (+1%) 0.101 (-2%) 0.104 (+3%) 0.100 (+1%)
batch_insert_into_indexed_tree_20_depth_ms N/A N/A 14.4 26.2 (+3%) 43.4 84.7 (+3%) 159 (-2%)
batch_insert_into_indexed_tree_20_depth_hash_count N/A N/A 109 207 355 691 1,363
batch_insert_into_indexed_tree_20_depth_hash_ms N/A N/A 0.109 0.106 (+3%) 0.105 (+1%) 0.105 (+4%) 0.100 (-2%)
batch_insert_into_indexed_tree_40_depth_ms N/A N/A 16.5 (+1%) N/A N/A N/A N/A
batch_insert_into_indexed_tree_40_depth_hash_count N/A N/A 132 N/A N/A N/A N/A
batch_insert_into_indexed_tree_40_depth_hash_ms N/A N/A 0.105 (+1%) N/A N/A N/A N/A

Miscellaneous

Transaction sizes based on how many contract classes are registered in the tx.

Metric 0 registered classes 1 registered classes
tx_size_in_bytes 64,779 668,997

Transaction size based on fee payment method

| Metric | |
| - | |

@benesjan benesjan force-pushed the 08-15-_do_not_merge_feat_optimizing_sharedimmutable branch from 957f63f to f5d0c27 Compare August 16, 2024 06:52
@nventuro nventuro added the team-fairies Nico's team label Oct 22, 2024
@nventuro nventuro added this to the TestNet milestone Oct 22, 2024
@nventuro nventuro added the C-aztec.nr Component: Aztec smart contract framework label Oct 22, 2024
@benesjan benesjan force-pushed the 08-15-_do_not_merge_feat_optimizing_sharedimmutable branch from f5d0c27 to 94b1141 Compare January 31, 2025 21:01
@benesjan benesjan changed the title [DO_NOT_MERGE] feat: optimizing SharedImmutable feat: optimizing PublicImmutable Jan 31, 2025
@benesjan benesjan changed the title feat: optimizing PublicImmutable feat: optimizing PublicImmutable Jan 31, 2025
@benesjan benesjan added the e2e-all CI: Enables this CI job. label Jan 31, 2025
@benesjan benesjan marked this pull request as ready for review January 31, 2025 21:31
@benesjan benesjan force-pushed the 08-15-_do_not_merge_feat_optimizing_sharedimmutable branch from 6e3ad72 to 72ef3db Compare February 2, 2025 00:34
Copy link
Contributor

github-actions bot commented Feb 2, 2025

Changes to public function bytecode sizes

Generated at commit: ba9b793d6829a4714b1168ebb57e3fdc0d1a7c9d, compared to commit: 2fd08babea610f97d63adcea5630cfd3065fd3a8

🧾 Summary (100% most significant diffs)

Program Bytecode size in bytes (+/-) %
DocsExample::initialize_public_immutable +1,431 ❌ +619.48%
FeeJuice::set_portal +1,146 ❌ +370.87%
DocsExample::public_dispatch +1,289 ❌ +35.45%
AvmInitializerTest::constructor +459 ❌ +24.34%
AppSubscription::constructor +670 ❌ +21.85%
Crowdfunding::init +488 ❌ +17.62%
AvmInitializerTest::public_dispatch +464 ❌ +17.55%
AppSubscription::public_dispatch +670 ❌ +15.91%
AMM::constructor +419 ❌ +15.56%
FPC::constructor +343 ❌ +12.95%
Crowdfunding::public_dispatch +483 ❌ +11.84%
TokenBridge::constructor +305 ❌ +11.35%
Token::constructor +483 ❌ +11.07%
FeeJuice::public_dispatch +440 ❌ +9.64%
EasyPrivateVoting::constructor +239 ❌ +9.40%
Uniswap::constructor +234 ❌ +9.34%
Auth::constructor +234 ❌ +9.19%
NFT::constructor +249 ❌ +5.81%
EasyPrivateVoting::public_dispatch +239 ❌ +5.20%
FPC::public_dispatch +361 ❌ +3.59%
Claim::constructor +97 ❌ +3.48%
Claim::public_dispatch +92 ❌ +2.59%
Auth::public_dispatch +220 ❌ +2.38%
TokenBridge::public_dispatch +440 ❌ +2.09%
AMM::public_dispatch +421 ❌ +1.62%
Token::public_dispatch +443 ❌ +1.39%
NFT::public_dispatch +228 ❌ +0.90%
Uniswap::public_dispatch +220 ❌ +0.84%
Auth::set_authorized +5 ❌ +0.10%
Auth::set_authorized_delay +5 ❌ +0.10%
TokenBridge::exit_to_l1_public +5 ❌ +0.06%
TokenBridge::claim_public +5 ❌ +0.04%

Full diff report 👇
Program Bytecode size in bytes (+/-) %
DocsExample::initialize_public_immutable 1,662 (+1,431) +619.48%
FeeJuice::set_portal 1,455 (+1,146) +370.87%
DocsExample::public_dispatch 4,925 (+1,289) +35.45%
AvmInitializerTest::constructor 2,345 (+459) +24.34%
AppSubscription::constructor 3,736 (+670) +21.85%
Crowdfunding::init 3,257 (+488) +17.62%
AvmInitializerTest::public_dispatch 3,108 (+464) +17.55%
AppSubscription::public_dispatch 4,880 (+670) +15.91%
AMM::constructor 3,111 (+419) +15.56%
FPC::constructor 2,992 (+343) +12.95%
Crowdfunding::public_dispatch 4,564 (+483) +11.84%
TokenBridge::constructor 2,993 (+305) +11.35%
Token::constructor 4,847 (+483) +11.07%
FeeJuice::public_dispatch 5,002 (+440) +9.64%
EasyPrivateVoting::constructor 2,782 (+239) +9.40%
Uniswap::constructor 2,740 (+234) +9.34%
Auth::constructor 2,781 (+234) +9.19%
NFT::constructor 4,538 (+249) +5.81%
EasyPrivateVoting::public_dispatch 4,831 (+239) +5.20%
FPC::public_dispatch 10,409 (+361) +3.59%
Claim::constructor 2,884 (+97) +3.48%
Claim::public_dispatch 3,644 (+92) +2.59%
Auth::public_dispatch 9,480 (+220) +2.38%
TokenBridge::public_dispatch 21,534 (+440) +2.09%
AMM::public_dispatch 26,466 (+421) +1.62%
Token::public_dispatch 32,282 (+443) +1.39%
NFT::public_dispatch 25,467 (+228) +0.90%
Uniswap::public_dispatch 26,288 (+220) +0.84%
Auth::set_authorized 4,860 (+5) +0.10%
Auth::set_authorized_delay 4,958 (+5) +0.10%
TokenBridge::exit_to_l1_public 7,991 (+5) +0.06%
TokenBridge::claim_public 12,716 (+5) +0.04%

@benesjan benesjan removed the e2e-all CI: Enables this CI job. label Feb 2, 2025
@benesjan benesjan force-pushed the 08-15-_do_not_merge_feat_optimizing_sharedimmutable branch from 0bc9c0c to b006047 Compare February 2, 2025 03:43
@benesjan benesjan changed the title feat: optimizing PublicImmutable feat: introduce WithHash<T> Feb 3, 2025
@benesjan benesjan marked this pull request as draft February 3, 2025 12:44
Copy link
Contributor

@nventuro nventuro left a comment

Choose a reason for hiding this comment

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

Very lovely, thanks for linking to the commits in each message in the review!

noir-projects/aztec-nr/aztec/src/utils/with_hash.nr Outdated Show resolved Hide resolved
noir-projects/aztec-nr/aztec/src/utils/with_hash.nr Outdated Show resolved Hide resolved
noir-projects/aztec-nr/aztec/src/utils/with_hash.nr Outdated Show resolved Hide resolved
noir-projects/aztec-nr/aztec/src/utils/with_hash.nr Outdated Show resolved Hide resolved
noir-projects/aztec-nr/aztec/src/utils/with_hash.nr Outdated Show resolved Hide resolved
@benesjan benesjan marked this pull request as draft February 5, 2025 15:28
@benesjan benesjan force-pushed the 08-15-_do_not_merge_feat_optimizing_sharedimmutable branch from faac2b8 to e6b47b8 Compare February 5, 2025 15:33
@benesjan benesjan marked this pull request as ready for review February 5, 2025 15:36
@benesjan benesjan enabled auto-merge (squash) February 5, 2025 15:36
@benesjan benesjan merged commit 6c15604 into master Feb 5, 2025
73 of 74 checks passed
@benesjan benesjan deleted the 08-15-_do_not_merge_feat_optimizing_sharedimmutable branch February 5, 2025 16:10
sklppy88 pushed a commit that referenced this pull request Feb 6, 2025
🤖 I have created a release *beep* *boop*
---


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

##
[0.75.0](aztec-package-v0.74.0...aztec-package-v0.75.0)
(2025-02-06)


### Miscellaneous

* Playground name change
([#11720](#11720))
([c5cbf65](c5cbf65))
</details>

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

##
[0.75.0](barretenberg.js-v0.74.0...barretenberg.js-v0.75.0)
(2025-02-06)


### Miscellaneous

* Better bundling for bb.js, remove aztec.js bundling
([#11761](#11761))
([8cc3f0a](8cc3f0a))
* Playground name change
([#11720](#11720))
([c5cbf65](c5cbf65))
</details>

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

##
[0.75.0](aztec-packages-v0.74.0...aztec-packages-v0.75.0)
(2025-02-06)


### ⚠ BREAKING CHANGES

* introduce `WithHash<T>` + use it in `PublicImmutable`
([#8022](#8022))
* leonidas library
([#11596](#11596))

### Features

* Allow resolved types in constructors
(noir-lang/noir#7223)
([b60a39d](b60a39d))
* Allow specifying multiple patterns in nargo test
(noir-lang/noir#7186)
([b60a39d](b60a39d))
* Contracts deployed in txe should emit deployment nullifier
automatically
([#11708](#11708))
([20f5653](20f5653))
* **docs:** Applying structure feedback + adding nodes docs
([#10976](#10976))
([2fd08ba](2fd08ba))
* **docs:** Inspiration / ideas page
([#11755](#11755))
([0b012f1](0b012f1))
* **experimental:** Implement enum tag constants
(noir-lang/noir#7183)
([b60a39d](b60a39d))
* **experimental:** Implement zeroed for enums
(noir-lang/noir#7252)
([b60a39d](b60a39d))
* **experimental:** Parse match expressions
(noir-lang/noir#7243)
([b60a39d](b60a39d))
* **experimental:** Support enums in comptime code
(noir-lang/noir#7194)
([b60a39d](b60a39d))
* Gen public base prover.toml
([#11757](#11757))
([1fa89da](1fa89da))
* Introduce `WithHash&lt;T&gt;` + use it in `PublicImmutable`
([#8022](#8022))
([6c15604](6c15604))
* K-shifts
([#11663](#11663))
([511abe5](511abe5))
* Leonidas library
([#11596](#11596))
([e8cfed7](e8cfed7))
* **LSP:** Suggest enum variants without parameters
(noir-lang/noir#7261)
([b60a39d](b60a39d))
* **optimization:** Add purity analysis to SSA
(noir-lang/noir#7197)
([b60a39d](b60a39d))
* Report wrong proof length in the verifier contract
([#11728](#11728))
([1a83cd2](1a83cd2))
* Simplify subtraction from self to return zero
(noir-lang/noir#7189)
([b60a39d](b60a39d))
* Sync from aztec-packages (noir-lang/noir#7241)
([b60a39d](b60a39d))


### Bug Fixes

* Add missing `is_empty` check for enums
(noir-lang/noir#7257)
([b60a39d](b60a39d))
* Avoid type error when calling something with a type alias of a
function (noir-lang/noir#7239)
([b60a39d](b60a39d))
* **brillig:** Globals entry point reachability analysis
(noir-lang/noir#7188)
([b60a39d](b60a39d))
* Contracts with no private / public functions should not fail to
generate a contract artifact
([#11744](#11744))
([672171c](672171c))
* Correct reversed callstacks
(noir-lang/noir#7212)
([b60a39d](b60a39d))
* Deflake prover node epoch proof quote test
([#11773](#11773))
([04e1061](04e1061))
* **docs:** Fix docs previews
([#11736](#11736))
([255b3d8](255b3d8))
* Handle sequencer building block mid-synch
([#11735](#11735))
([435a0af](435a0af))
* Prevent panic within `remove_possibly_mutated_cached_make_arrays`
(noir-lang/noir#7264)
([b60a39d](b60a39d))
* **ssa:** Only attempt to inline constant Brillig calls for entry
points (noir-lang/noir#7260)
([b60a39d](b60a39d))
* **ssa:** Use number of SSA instructions for the Brillig unrolling
bytecode size limit (noir-lang/noir#7242)
([b60a39d](b60a39d))
* **unrolling:** Fetch original bytecode size from the original function
(noir-lang/noir#7253)
([b60a39d](b60a39d))


### Miscellaneous

* **avm:** Add names to lookup settings
([#11768](#11768))
([fafe3ba](fafe3ba))
* **avm:** Full row cleanup
([#11767](#11767))
([6145cd0](6145cd0))
* **avm:** Use lookup by clk for sha params
([#11762](#11762))
([b003567](b003567))
* Better bundling for bb.js, remove aztec.js bundling
([#11761](#11761))
([8cc3f0a](8cc3f0a))
* Build docs in the merge queue
(noir-lang/noir#7218)
([b60a39d](b60a39d))
* Bump gates diff (noir-lang/noir#7245)
([b60a39d](b60a39d))
* Change log level for block proposal
([#11734](#11734))
([29ee9aa](29ee9aa))
* **ci:** Add test for global vars entry points regression
(noir-lang/noir#7209)
([b60a39d](b60a39d))
* Clarify to_radix docs examples
(noir-lang/noir#7230)
([b60a39d](b60a39d))
* **docs:** Moving references to noir-starter to awesome-noir
(noir-lang/noir#7203)
([b60a39d](b60a39d))
* Early check type equality in try_unify
(noir-lang/noir#7263)
([b60a39d](b60a39d))
* Exclude dependency fetching time from benchmarks
(noir-lang/noir#7210)
([b60a39d](b60a39d))
* Fix struct example (noir-lang/noir#7198)
([b60a39d](b60a39d))
* More scalability for our metrics
([#11732](#11732))
([52bbf14](52bbf14))
* Playground name change
([#11720](#11720))
([c5cbf65](c5cbf65))
* Re-enable p2p test
([#11706](#11706))
([652c251](652c251)),
closes
[#10737](#10737)
* Remove stale zk constants and methods
([#11715](#11715))
([7a2870f](7a2870f))
* Replace relative paths to noir-protocol-circuits
([aabab34](aabab34))
* Replace relative paths to noir-protocol-circuits
([0720d18](0720d18))
* Request txs in prover-node after each block finishes
([#11749](#11749))
([61e4eee](61e4eee))
* Rework defunctionalize pass to not rely on DFG bugs
(noir-lang/noir#7222)
([b60a39d](b60a39d))
* Sandbox lower sequencer log level
([#11742](#11742))
([7b30758](7b30758)),
closes
[#11677](#11677)
* **spartan:** Making the spartan script add the coinbase address
([#11235](#11235))
([b97ff0d](b97ff0d))
* **ssa:** Flip the SSA Brillig constraint check to off by default
(noir-lang/noir#7211)
([b60a39d](b60a39d))
* Start tracking time to run critical library tests
(noir-lang/noir#7221)
([b60a39d](b60a39d))
* Update docs to use devcontainer feature
(noir-lang/noir#7206)
([b60a39d](b60a39d))
* Use batch p2p reqresp for requesting txs in prover node
([#11741](#11741))
([df9e4ec](df9e4ec))
</details>

<details><summary>barretenberg: 0.75.0</summary>

##
[0.75.0](barretenberg-v0.74.0...barretenberg-v0.75.0)
(2025-02-06)


### Features

* K-shifts
([#11663](#11663))
([511abe5](511abe5))
* Report wrong proof length in the verifier contract
([#11728](#11728))
([1a83cd2](1a83cd2))


### Miscellaneous

* **avm:** Add names to lookup settings
([#11768](#11768))
([fafe3ba](fafe3ba))
* **avm:** Full row cleanup
([#11767](#11767))
([6145cd0](6145cd0))
* **avm:** Use lookup by clk for sha params
([#11762](#11762))
([b003567](b003567))
* Better bundling for bb.js, remove aztec.js bundling
([#11761](#11761))
([8cc3f0a](8cc3f0a))
* Remove stale zk constants and methods
([#11715](#11715))
([7a2870f](7a2870f))
</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 Feb 7, 2025
🤖 I have created a release *beep* *boop*
---


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

##
[0.75.0](AztecProtocol/aztec-packages@aztec-package-v0.74.0...aztec-package-v0.75.0)
(2025-02-06)


### Miscellaneous

* Playground name change
([#11720](AztecProtocol/aztec-packages#11720))
([c5cbf65](AztecProtocol/aztec-packages@c5cbf65))
</details>

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

##
[0.75.0](AztecProtocol/aztec-packages@barretenberg.js-v0.74.0...barretenberg.js-v0.75.0)
(2025-02-06)


### Miscellaneous

* Better bundling for bb.js, remove aztec.js bundling
([#11761](AztecProtocol/aztec-packages#11761))
([8cc3f0a](AztecProtocol/aztec-packages@8cc3f0a))
* Playground name change
([#11720](AztecProtocol/aztec-packages#11720))
([c5cbf65](AztecProtocol/aztec-packages@c5cbf65))
</details>

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

##
[0.75.0](AztecProtocol/aztec-packages@aztec-packages-v0.74.0...aztec-packages-v0.75.0)
(2025-02-06)


### ⚠ BREAKING CHANGES

* introduce `WithHash<T>` + use it in `PublicImmutable`
([#8022](AztecProtocol/aztec-packages#8022))
* leonidas library
([#11596](AztecProtocol/aztec-packages#11596))

### Features

* Allow resolved types in constructors
(noir-lang/noir#7223)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))
* Allow specifying multiple patterns in nargo test
(noir-lang/noir#7186)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))
* Contracts deployed in txe should emit deployment nullifier
automatically
([#11708](AztecProtocol/aztec-packages#11708))
([20f5653](AztecProtocol/aztec-packages@20f5653))
* **docs:** Applying structure feedback + adding nodes docs
([#10976](AztecProtocol/aztec-packages#10976))
([2fd08ba](AztecProtocol/aztec-packages@2fd08ba))
* **docs:** Inspiration / ideas page
([#11755](AztecProtocol/aztec-packages#11755))
([0b012f1](AztecProtocol/aztec-packages@0b012f1))
* **experimental:** Implement enum tag constants
(noir-lang/noir#7183)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))
* **experimental:** Implement zeroed for enums
(noir-lang/noir#7252)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))
* **experimental:** Parse match expressions
(noir-lang/noir#7243)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))
* **experimental:** Support enums in comptime code
(noir-lang/noir#7194)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))
* Gen public base prover.toml
([#11757](AztecProtocol/aztec-packages#11757))
([1fa89da](AztecProtocol/aztec-packages@1fa89da))
* Introduce `WithHash&lt;T&gt;` + use it in `PublicImmutable`
([#8022](AztecProtocol/aztec-packages#8022))
([6c15604](AztecProtocol/aztec-packages@6c15604))
* K-shifts
([#11663](AztecProtocol/aztec-packages#11663))
([511abe5](AztecProtocol/aztec-packages@511abe5))
* Leonidas library
([#11596](AztecProtocol/aztec-packages#11596))
([e8cfed7](AztecProtocol/aztec-packages@e8cfed7))
* **LSP:** Suggest enum variants without parameters
(noir-lang/noir#7261)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))
* **optimization:** Add purity analysis to SSA
(noir-lang/noir#7197)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))
* Report wrong proof length in the verifier contract
([#11728](AztecProtocol/aztec-packages#11728))
([1a83cd2](AztecProtocol/aztec-packages@1a83cd2))
* Simplify subtraction from self to return zero
(noir-lang/noir#7189)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))
* Sync from aztec-packages (noir-lang/noir#7241)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))


### Bug Fixes

* Add missing `is_empty` check for enums
(noir-lang/noir#7257)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))
* Avoid type error when calling something with a type alias of a
function (noir-lang/noir#7239)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))
* **brillig:** Globals entry point reachability analysis
(noir-lang/noir#7188)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))
* Contracts with no private / public functions should not fail to
generate a contract artifact
([#11744](AztecProtocol/aztec-packages#11744))
([672171c](AztecProtocol/aztec-packages@672171c))
* Correct reversed callstacks
(noir-lang/noir#7212)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))
* Deflake prover node epoch proof quote test
([#11773](AztecProtocol/aztec-packages#11773))
([04e1061](AztecProtocol/aztec-packages@04e1061))
* **docs:** Fix docs previews
([#11736](AztecProtocol/aztec-packages#11736))
([255b3d8](AztecProtocol/aztec-packages@255b3d8))
* Handle sequencer building block mid-synch
([#11735](AztecProtocol/aztec-packages#11735))
([435a0af](AztecProtocol/aztec-packages@435a0af))
* Prevent panic within `remove_possibly_mutated_cached_make_arrays`
(noir-lang/noir#7264)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))
* **ssa:** Only attempt to inline constant Brillig calls for entry
points (noir-lang/noir#7260)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))
* **ssa:** Use number of SSA instructions for the Brillig unrolling
bytecode size limit (noir-lang/noir#7242)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))
* **unrolling:** Fetch original bytecode size from the original function
(noir-lang/noir#7253)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))


### Miscellaneous

* **avm:** Add names to lookup settings
([#11768](AztecProtocol/aztec-packages#11768))
([fafe3ba](AztecProtocol/aztec-packages@fafe3ba))
* **avm:** Full row cleanup
([#11767](AztecProtocol/aztec-packages#11767))
([6145cd0](AztecProtocol/aztec-packages@6145cd0))
* **avm:** Use lookup by clk for sha params
([#11762](AztecProtocol/aztec-packages#11762))
([b003567](AztecProtocol/aztec-packages@b003567))
* Better bundling for bb.js, remove aztec.js bundling
([#11761](AztecProtocol/aztec-packages#11761))
([8cc3f0a](AztecProtocol/aztec-packages@8cc3f0a))
* Build docs in the merge queue
(noir-lang/noir#7218)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))
* Bump gates diff (noir-lang/noir#7245)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))
* Change log level for block proposal
([#11734](AztecProtocol/aztec-packages#11734))
([29ee9aa](AztecProtocol/aztec-packages@29ee9aa))
* **ci:** Add test for global vars entry points regression
(noir-lang/noir#7209)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))
* Clarify to_radix docs examples
(noir-lang/noir#7230)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))
* **docs:** Moving references to noir-starter to awesome-noir
(noir-lang/noir#7203)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))
* Early check type equality in try_unify
(noir-lang/noir#7263)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))
* Exclude dependency fetching time from benchmarks
(noir-lang/noir#7210)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))
* Fix struct example (noir-lang/noir#7198)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))
* More scalability for our metrics
([#11732](AztecProtocol/aztec-packages#11732))
([52bbf14](AztecProtocol/aztec-packages@52bbf14))
* Playground name change
([#11720](AztecProtocol/aztec-packages#11720))
([c5cbf65](AztecProtocol/aztec-packages@c5cbf65))
* Re-enable p2p test
([#11706](AztecProtocol/aztec-packages#11706))
([652c251](AztecProtocol/aztec-packages@652c251)),
closes
[#10737](AztecProtocol/aztec-packages#10737)
* Remove stale zk constants and methods
([#11715](AztecProtocol/aztec-packages#11715))
([7a2870f](AztecProtocol/aztec-packages@7a2870f))
* Replace relative paths to noir-protocol-circuits
([aabab34](AztecProtocol/aztec-packages@aabab34))
* Replace relative paths to noir-protocol-circuits
([0720d18](AztecProtocol/aztec-packages@0720d18))
* Request txs in prover-node after each block finishes
([#11749](AztecProtocol/aztec-packages#11749))
([61e4eee](AztecProtocol/aztec-packages@61e4eee))
* Rework defunctionalize pass to not rely on DFG bugs
(noir-lang/noir#7222)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))
* Sandbox lower sequencer log level
([#11742](AztecProtocol/aztec-packages#11742))
([7b30758](AztecProtocol/aztec-packages@7b30758)),
closes
[#11677](AztecProtocol/aztec-packages#11677)
* **spartan:** Making the spartan script add the coinbase address
([#11235](AztecProtocol/aztec-packages#11235))
([b97ff0d](AztecProtocol/aztec-packages@b97ff0d))
* **ssa:** Flip the SSA Brillig constraint check to off by default
(noir-lang/noir#7211)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))
* Start tracking time to run critical library tests
(noir-lang/noir#7221)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))
* Update docs to use devcontainer feature
(noir-lang/noir#7206)
([b60a39d](AztecProtocol/aztec-packages@b60a39d))
* Use batch p2p reqresp for requesting txs in prover node
([#11741](AztecProtocol/aztec-packages#11741))
([df9e4ec](AztecProtocol/aztec-packages@df9e4ec))
</details>

<details><summary>barretenberg: 0.75.0</summary>

##
[0.75.0](AztecProtocol/aztec-packages@barretenberg-v0.74.0...barretenberg-v0.75.0)
(2025-02-06)


### Features

* K-shifts
([#11663](AztecProtocol/aztec-packages#11663))
([511abe5](AztecProtocol/aztec-packages@511abe5))
* Report wrong proof length in the verifier contract
([#11728](AztecProtocol/aztec-packages#11728))
([1a83cd2](AztecProtocol/aztec-packages@1a83cd2))


### Miscellaneous

* **avm:** Add names to lookup settings
([#11768](AztecProtocol/aztec-packages#11768))
([fafe3ba](AztecProtocol/aztec-packages@fafe3ba))
* **avm:** Full row cleanup
([#11767](AztecProtocol/aztec-packages#11767))
([6145cd0](AztecProtocol/aztec-packages@6145cd0))
* **avm:** Use lookup by clk for sha params
([#11762](AztecProtocol/aztec-packages#11762))
([b003567](AztecProtocol/aztec-packages@b003567))
* Better bundling for bb.js, remove aztec.js bundling
([#11761](AztecProtocol/aztec-packages#11761))
([8cc3f0a](AztecProtocol/aztec-packages@8cc3f0a))
* Remove stale zk constants and methods
([#11715](AztecProtocol/aztec-packages#11715))
([7a2870f](AztecProtocol/aztec-packages@7a2870f))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-aztec.nr Component: Aztec smart contract framework team-fairies Nico's team
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Allow single-read for multi-field PublicImmutable
4 participants