Skip to content

feat: replace field divisions by constants with multiplication by inverse#8053

Merged
TomAFrench merged 6 commits intomasterfrom
tf/optimize-brillig-division
Apr 16, 2025
Merged

feat: replace field divisions by constants with multiplication by inverse#8053
TomAFrench merged 6 commits intomasterfrom
tf/optimize-brillig-division

Conversation

@TomAFrench
Copy link
Member

@TomAFrench TomAFrench commented Apr 14, 2025

…erse

Description

Problem*

Resolves

Summary*

This absolutely wrecks readability of SSA but could have a significant speedup in brillig.

Additional Context

Documentation*

Check one:

  • No documentation needed.
  • Documentation included in this PR.
  • [For Experimental Features] Documentation to be submitted in a separate PR.

PR Checklist*

  • I have tested the changes locally.
  • I have formatted the changes with Prettier and/or cargo fmt on default settings.

@TomAFrench TomAFrench added the bench-show Display benchmark results on PR label Apr 14, 2025
Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

ACVM Benchmarks

Details
Benchmark suite Current: 5630d99 Previous: b591847 Ratio
purely_sequential_opcodes 264961 ns/iter (± 1090) 265498 ns/iter (± 734) 1.00
perfectly_parallel_opcodes 233238 ns/iter (± 3156) 233674 ns/iter (± 7659) 1.00

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions
Copy link
Contributor

github-actions bot commented Apr 14, 2025

Changes to Brillig bytecode sizes

Generated at commit: 6df174229340f667557b4e5e40968ddc4f3d25d7, compared to commit: b5918474ccf88fba83d29aa909a8d3048e2d0e71

🧾 Summary (10% most significant diffs)

Program Brillig opcodes (+/-) %
import_inliner_max +1 ❌ +2.56%
import_inliner_zero +1 ❌ +2.56%
pedersen_commitment_inliner_max +1 ❌ +0.61%
pedersen_commitment_inliner_zero +1 ❌ +0.61%

Full diff report 👇
Program Brillig opcodes (+/-) %
import_inliner_max 40 (+1) +2.56%
import_inliner_zero 40 (+1) +2.56%
pedersen_commitment_inliner_max 166 (+1) +0.61%
pedersen_commitment_inliner_zero 166 (+1) +0.61%
pedersen_hash_inliner_max 268 (+1) +0.37%
pedersen_hash_inliner_zero 268 (+1) +0.37%
merkle_insert_inliner_zero 387 (+1) +0.26%
brillig_pedersen_inliner_max 417 (+1) +0.24%
pedersen_check_inliner_max 417 (+1) +0.24%
brillig_pedersen_inliner_zero 429 (+1) +0.23%
pedersen_check_inliner_zero 429 (+1) +0.23%
merkle_insert_inliner_max 552 (+1) +0.18%
simple_shield_inliner_zero 627 (+1) +0.16%
simple_shield_inliner_max 689 (+1) +0.15%
brillig_cow_regression_inliner_max 1,214 (+1) +0.08%
brillig_cow_regression_inliner_zero 1,214 (+1) +0.08%
uhashmap_inliner_zero 6,537 (+1) +0.02%
hashmap_inliner_zero 6,843 (+1) +0.01%
uhashmap_inliner_min 7,211 (+1) +0.01%
hashmap_inliner_min 8,584 (+1) +0.01%
uhashmap_inliner_max 10,367 (+1) +0.01%
hashmap_inliner_max 16,023 (+1) +0.01%
inline_decompose_hint_brillig_call_inliner_min 177 (-1) -0.56%

@github-actions
Copy link
Contributor

github-actions bot commented Apr 14, 2025

Changes to number of Brillig opcodes executed

Generated at commit: 6df174229340f667557b4e5e40968ddc4f3d25d7, compared to commit: b5918474ccf88fba83d29aa909a8d3048e2d0e71

🧾 Summary (10% most significant diffs)

Program Brillig opcodes (+/-) %
import_inliner_max +1 ❌ +3.03%
import_inliner_zero +1 ❌ +3.03%
brillig_pedersen_inliner_zero +6 ❌ +0.94%
pedersen_check_inliner_zero +6 ❌ +0.94%

Full diff report 👇
Program Brillig opcodes (+/-) %
import_inliner_max 34 (+1) +3.03%
import_inliner_zero 34 (+1) +3.03%
brillig_pedersen_inliner_zero 644 (+6) +0.94%
pedersen_check_inliner_zero 644 (+6) +0.94%
simple_shield_inliner_zero 2,170 (+13) +0.60%
pedersen_commitment_inliner_max 196 (+1) +0.51%
pedersen_commitment_inliner_zero 196 (+1) +0.51%
pedersen_hash_inliner_max 402 (+1) +0.25%
pedersen_hash_inliner_zero 402 (+1) +0.25%
brillig_pedersen_inliner_max 599 (+1) +0.17%
pedersen_check_inliner_max 599 (+1) +0.17%
merkle_insert_inliner_zero 3,111 (+2) +0.06%
simple_shield_inliner_max 2,138 (+1) +0.05%
merkle_insert_inliner_max 2,975 (+1) +0.03%
hashmap_inliner_max 42,060 (+1) +0.00%
hashmap_inliner_zero 67,666 (+1) +0.00%
hashmap_inliner_min 82,308 (+1) +0.00%
uhashmap_inliner_max 123,666 (+1) +0.00%
uhashmap_inliner_zero 161,331 (+1) +0.00%
uhashmap_inliner_min 181,152 (+1) +0.00%
brillig_cow_regression_inliner_max 194,435 (+1) +0.00%
brillig_cow_regression_inliner_zero 194,435 (+1) +0.00%
inline_decompose_hint_brillig_call_inliner_min 187 (-1) -0.53%

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Compilation Time

Details
Benchmark suite Current: 5630d99 Previous: b591847 Ratio
regression_4709 0.668 s 0.648 s 1.03
ram_blowup_regression 13.2 s 12.8 s 1.03
global_var_regression_entry_points 0.466 s 0.448 s 1.04
private-kernel-inner 2.364 s 2.36 s 1.00
private-kernel-reset 6.63 s 6.912 s 0.96
private-kernel-tail 1.082 s 1.066 s 1.02
rollup-base-private 18.62 s 19.04 s 0.98
rollup-base-public 13.7 s 14.42 s 0.95
rollup-block-root-empty 0.933 s 0.916 s 1.02
rollup-block-root-single-tx 120 s 122 s 0.98
rollup-block-root 119 s 124 s 0.96
rollup-merge 0.898 s 0.858 s 1.05
rollup-root 1.356 s 1.39 s 0.98

This comment was automatically generated by workflow using github-action-benchmark.

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Execution Time

Details
Benchmark suite Current: 5630d99 Previous: b591847 Ratio
private-kernel-inner 0.029 s 0.028 s 1.04
private-kernel-reset 0.163 s 0.164 s 0.99
private-kernel-tail 0.017 s 0.017 s 1
rollup-base-private 0.334 s 0.335 s 1.00
rollup-base-public 0.212 s 0.217 s 0.98
rollup-block-root 11.2 s 16.5 s 0.68
rollup-merge 0.004 s 0.003 s 1.33
rollup-root 0.013 s 0.013 s 1

This comment was automatically generated by workflow using github-action-benchmark.

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Test Suite Duration

Details
Benchmark suite Current: 5630d99 Previous: b591847 Ratio
test_report_AztecProtocol_aztec-packages_noir-projects_aztec-nr 51 s 51 s 1
test_report_AztecProtocol_aztec-packages_noir-projects_noir-contracts 96 s 87 s 1.10
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_blob 48 s 41 s 1.17
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_private-kernel-lib 173 s 168 s 1.03
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_rollup-lib 159 s 163 s 0.98
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_types 51 s 50 s 1.02
test_report_noir-lang_noir-bignum_ 412 s 422 s 0.98
test_report_noir-lang_noir_bigcurve_ 242 s 252 s 0.96
test_report_noir-lang_sha512_ 27 s 28 s 0.96

This comment was automatically generated by workflow using github-action-benchmark.

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Execution Memory

Details
Benchmark suite Current: 5630d99 Previous: b591847 Ratio
private-kernel-inner 209.31 MB 209.31 MB 1
private-kernel-reset 246.05 MB 246.05 MB 1
private-kernel-tail 183.15 MB 183.15 MB 1
rollup-base-private 486.82 MB 486.82 MB 1
rollup-base-public 462.8 MB 462.8 MB 1
rollup-block-root 1710 MB 1710 MB 1
rollup-merge 254.16 MB 254.16 MB 1
rollup-root 260.72 MB 260.72 MB 1

This comment was automatically generated by workflow using github-action-benchmark.

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Compilation Memory

Details
Benchmark suite Current: 5630d99 Previous: b591847 Ratio
private-kernel-inner 270.19 MB 270.26 MB 1.00
private-kernel-reset 550.44 MB 550.44 MB 1
private-kernel-tail 199.53 MB 199.52 MB 1.00
rollup-base-private 1370 MB 1370 MB 1
rollup-base-public 1350 MB 1350 MB 1
rollup-block-root-empty 270.2 MB 270.21 MB 1.00
rollup-block-root-single-tx 7770 MB 7770 MB 1
rollup-block-root 7780 MB 7780 MB 1
rollup-merge 271.41 MB 271.42 MB 1.00
rollup-root 321.9 MB 321.92 MB 1.00

This comment was automatically generated by workflow using github-action-benchmark.

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark 'Execution Time'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20.

Benchmark suite Current: 5630d99 Previous: b591847 Ratio
rollup-merge 0.004 s 0.003 s 1.33

This comment was automatically generated by workflow using github-action-benchmark.

CC: @TomAFrench

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark 'Compilation Time'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20.

Benchmark suite Current: 9aba66e Previous: b591847 Ratio
ram_blowup_regression 15.9 s 12.8 s 1.24

This comment was automatically generated by workflow using github-action-benchmark.

CC: @TomAFrench

@TomAFrench TomAFrench force-pushed the tf/optimize-brillig-division branch from 2e0967c to 3d0f54c Compare April 16, 2025 10:49
@TomAFrench TomAFrench marked this pull request as ready for review April 16, 2025 15:01
@TomAFrench TomAFrench requested review from a team and jfecher April 16, 2025 15:01
@TomAFrench
Copy link
Member Author

This optimization mucks with readability of divisions by constants but I think the speedup of bignum operations is worth it (we can always rework how we perform this optimization in future).

@TomAFrench TomAFrench added this pull request to the merge queue Apr 16, 2025
@TomAFrench TomAFrench changed the title feat: replace field divisions by constants with multiplication by inv… feat: replace field divisions by constants with multiplication by inverse Apr 16, 2025
@michaeljklein
Copy link
Contributor

This optimization mucks with readability of divisions by constants

@TomAFrench what do you think about supporting comments in the SSA AST so that we can add e.g. // v0 / 2 when making such replacements?

@asterite
Copy link
Collaborator

@TomAFrench Could you add a test for this? There are similar ones in simplify.rs relying on Ssa::from_str_simplifying.

Merged via the queue into master with commit 28250ea Apr 16, 2025
115 checks passed
@TomAFrench TomAFrench deleted the tf/optimize-brillig-division branch April 16, 2025 16:33
@TomAFrench
Copy link
Member Author

Hey, sorry I just saw these comments. I can make a followup PR to address.

github-merge-queue bot pushed a commit to AztecProtocol/aztec-packages that referenced this pull request Apr 22, 2025
Automated pull of nightly from the
[noir](https://github.com/noir-lang/noir) programming language, a
dependency of Aztec.
BEGIN_COMMIT_OVERRIDE
fix(brillig): SliceRefCount reads from the appropriate pointer
(noir-lang/noir#8148)
chore: remove try_merge_only_changed_indices
(noir-lang/noir#8142)
chore(ssa): Test terminator value constant folding and resolve cache for
data bus (noir-lang/noir#8132)
chore: parse nop in SSA parser
(noir-lang/noir#8141)
fix(ssa): Do not inline simple recursive functions
(noir-lang/noir#8127)
fix: wrapping mul support for u128
(noir-lang/noir#7941)
chore: update ACVM doc (noir-lang/noir#8004)
fix(ssa): Loop range with u1
(noir-lang/noir#8131)
fix(acir): Check whether opcodes were laid down for non-equality check
before fetching payload locations
(noir-lang/noir#8133)
chore: add a benchmark for opcodes which need a batchable inversion
(noir-lang/noir#8110)
chore: create module for array handling in acirgen
(noir-lang/noir#8119)
feat: avoid unnecessary zero check in brillig overflow check
(noir-lang/noir#8109)
chore(optimization): Enable experimental ownership clone scheme by
default (noir-lang/noir#8097)
chore(experimental): Function::simple_optimization for SSA optimizations
(noir-lang/noir#8102)
feat: replace field divisions by constants with multiplication by inv…
(noir-lang/noir#8053)
fix(ssa): fix possibility to `Field % Field` operaions in Brillig from
SSA (noir-lang/noir#8105)
fix(parser): error on missing let semicolon in trait (and others)
(noir-lang/noir#8101)
chore: simpler `make_mutable` in `array_set` optimization
(noir-lang/noir#8106)
chore(docs): update bb commands to match 0.84.0
(noir-lang/noir#8050)
chore: don't use `set_value_from_id` in `constant_folding`
(noir-lang/noir#8091)
fix: add proper handling for `u128` in comptime interpreter
(noir-lang/noir#8079)
feat: Port callstack resolution from aztec to noirjs
(noir-lang/noir#7642)
fix(ssa): Do not unroll loop with break
(noir-lang/noir#8090)
feat: `#[allow(dead_code)]`
(noir-lang/noir#8066)
chore: don't use `set_value_from_id` in `loop_invariant`
(noir-lang/noir#8085)
feat(experimental): Implement separate `-Zownership` analysis for
ownership pass (noir-lang/noir#7861)
chore(docs): Add architecture docs
(noir-lang/noir#7992)
chore: don't use `set_value_from_id` in `simplify_cfg`
(noir-lang/noir#8072)
chore: don't use `set_from_value_id` in `remove_if_else`
(noir-lang/noir#8070)
chore: don't use `set_value_from_id` in `remove_bit_shifts`
(noir-lang/noir#8071)
fix: replace values in data_bus too
(noir-lang/noir#8086)
chore: bump bignum timeout (noir-lang/noir#8080)
chore: Accept optional test path for emitting integration tests
(noir-lang/noir#8062)
feat: ssa fuzzer (noir-lang/noir#7641)
fix: Allow more slack in AST calibration for CI
(noir-lang/noir#8076)
chore: Print `unsafe { ... }` around calls to Brillig from ACIR in AST
(noir-lang/noir#8077)
fix: SSA pass print filter to include the count
(noir-lang/noir#8074)
END_COMMIT_OVERRIDE

---------

Co-authored-by: AztecBot <tech@aztecprotocol.com>
Co-authored-by: Tom French <15848336+TomAFrench@users.noreply.github.com>
github-merge-queue bot pushed a commit to AztecProtocol/aztec-packages that referenced this pull request Apr 24, 2025
🤖 I have created a new Aztec Packages release
---


##
[0.86.0](v0.85.0...v0.86.0)
(2025-04-24)


### ⚠ BREAKING CHANGES

* Use combined p2p and http prover coordination
([#13760](#13760))
* use single extended viem client
([#13715](#13715))
* remove slice read from CALL
([#13729](#13729))

### Features

* `#[allow(dead_code)]` (noir-lang/noir#8066)
([366d980](366d980))
* add aztec-up amm test w/ proving & sponsoredfpc
([#13209](#13209))
([f54c8a1](f54c8a1))
* Add Rollup to registry and produce blocks
([#13556](#13556))
([9ed10d3](9ed10d3))
* adding devnet tests
([#12808](#12808))
([7687a1f](7687a1f))
* audit tracking tooling
([#13639](#13639))
([e50d8e0](e50d8e0))
* **avm:** fast entity indexing without macros
([#13737](#13737))
([5c8a993](5c8a993))
* **avm:** quick n dirty memory trace
([#13659](#13659))
([062c6a9](062c6a9))
* **avm:** support col arrays and add keccak cols
([#13711](#13711))
([9c4345a](9c4345a))
* **avm:** tagged value type in C++
([#13540](#13540))
([b30b5b3](b30b5b3))
* avoid unnecessary zero check in brillig overflow check
(noir-lang/noir#8109)
([366d980](366d980))
* **contracts:** static + snapshotted validator set
([#13046](#13046))
([90033f2](90033f2))
* enable mempool limiter on devnet
([#13722](#13722))
([36fb0a1](36fb0a1))
* exec opcode spec table
([#13594](#13594))
([d4d503a](d4d503a))
* **experimental:** Implement separate `-Zownership` analysis for
ownership pass (noir-lang/noir#7861)
([366d980](366d980))
* expose mempool limit through helm chart
([#13616](#13616))
([822e8d9](822e8d9))
* Garaga UltraStarknet[Zk]Honk flavours
([#11489](#11489))
([6bc34a1](6bc34a1))
* IPA claim as public component
([#13429](#13429))
([1ce3c43](1ce3c43))
* no longer recompute vk's in CIVC proofs
([#13590](#13590))
([66a61ba](66a61ba))
* **p2p:** add private peers
([#12585](#12585))
([4264c8c](4264c8c))
* **p2p:** optional P2P_BROADCAST_PORT
([#13525](#13525))
([f709fab](f709fab))
* Port callstack resolution from aztec to noirjs
(noir-lang/noir#7642)
([366d980](366d980))
* Refactor IPA claim handling in acir format to support them for AVM
([#13547](#13547))
([df73c05](df73c05))
* remove slice read from CALL
([#13729](#13729))
([7e7eb85](7e7eb85))
* replace field divisions by constants with multiplication by inv…
(noir-lang/noir#8053)
([366d980](366d980))
* report world state size on disk
([#13706](#13706))
([0dd8a7e](0dd8a7e))
* skip inverting field elements with values +-1 in ACVM
(noir-lang/noir#8049)
([44c1347](44c1347))
* SMT Verificaiton Module: Data Structures
([#13658](#13658))
([2de3bc5](2de3bc5))
* SMT verification module updates
([#13551](#13551))
([f02123d](f02123d))
* ssa fuzzer (noir-lang/noir#7641)
([366d980](366d980))
* Tighter timing on ACVM
([#13743](#13743))
([45cd39b](45cd39b))
* track rewards and slots
([#13546](#13546))
([489c6cf](489c6cf))
* Use combined p2p and http prover coordination
([#13760](#13760))
([4d04e62](4d04e62))
* VK generation test for HonkRecursionConstraint
([#13637](#13637))
([71e81ce](71e81ce))


### Bug Fixes

* **acir:** Check whether opcodes were laid down for non-equality check
before fetching payload locations
(noir-lang/noir#8133)
([366d980](366d980))
* add proper handling for `u128` in comptime interpreter
(noir-lang/noir#8079)
([366d980](366d980))
* Add version to gossipsub protocol
([#13567](#13567))
([8ce4829](8ce4829))
* allow keywords in function names in SSA parser
(noir-lang/noir#8063)
([44c1347](44c1347))
* Allow more slack in AST calibration for CI
(noir-lang/noir#8076)
([366d980](366d980))
* amm bot
([#13553](#13553))
([6b93832](6b93832)),
closes
[#13544](#13544)
* **avm:** cpp addressing
([#13652](#13652))
([9d941b6](9d941b6))
* blob sink waits for reg address when needed
([#13628](#13628))
([486a42a](486a42a))
* **brillig:** SliceRefCount reads from the appropriate pointer
(noir-lang/noir#8148)
([366d980](366d980))
* Check against multiple aws profiles in build instance credentails
([#13421](#13421))
([71a408a](71a408a))
* dependency cycles in public simulator - part 0 (sim -&gt; context)
([#13678](#13678))
([e00089f](e00089f))
* dependency cycles in public simulator - part 1 (errors/revertReason)
([#13679](#13679))
([c75e365](c75e365))
* dependency cycles in public simulator part 2 (serializable bytecode)
([#13680](#13680))
([5d3e24c](5d3e24c))
* discv5 test failure
([#13653](#13653))
([58c143b](58c143b))
* **docs:** Make viewing (outdated) protocol specs work locally
([#13534](#13534))
([694537d](694537d))
* Increase timeout for p2p integration test
([#13720](#13720))
([c244b2e](c244b2e))
* mac bb --version
([#13690](#13690))
([9f8b64f](9f8b64f))
* make translator use ultra rather than eccvm ops
([#13489](#13489))
([53c070d](53c070d))
* more worker fixes
([#13759](#13759))
([080485a](080485a))
* move helm lint to build
([#13532](#13532))
([7768ff8](7768ff8))
* native ivc benches not publishing
([#13665](#13665))
([7ab712d](7ab712d))
* no exports of simulator should depend on jest-mock-extended
([#13694](#13694))
([65a9f33](65a9f33))
* only clear trailing zeros on logs
([#13727](#13727))
([e392d7c](e392d7c))
* **p2p:** better batch connection sampling
([#13674](#13674))
([9c1d9f1](9c1d9f1))
* **p2p:** reqresp types + batch request tx pool filtering
([#13666](#13666))
([8e2a3c9](8e2a3c9))
* **parser:** error on missing let semicolon in trait (and others)
(noir-lang/noir#8101)
([366d980](366d980))
* pass along coinbase
([#13560](#13560))
([593f810](593f810)),
closes
[#13643](#13643)
* prover-node start
([#13627](#13627))
([5d87f7a](5d87f7a))
* quote numbers
([#13654](#13654))
([f0d1ec1](f0d1ec1))
* remove all txs from a failed epoch
([#13771](#13771))
([abc4623](abc4623))
* remove insecure dummy round derivation from sumcheck and shplemini
([#13488](#13488))
([9a3bb46](9a3bb46))
* replace values in data_bus too
(noir-lang/noir#8086)
([366d980](366d980))
* retry deploy npm
([#13691](#13691))
([76cab3f](76cab3f))
* run yarn
([#13713](#13713))
([0e51259](0e51259))
* squash nightly foundry warning
([#13640](#13640))
([e21f9fd](e21f9fd))
* SSA pass print filter to include the count
(noir-lang/noir#8074)
([366d980](366d980))
* **ssa:** Do not inline simple recursive functions
(noir-lang/noir#8127)
([366d980](366d980))
* **ssa:** Do not unroll loop with break
(noir-lang/noir#8090)
([366d980](366d980))
* **ssa:** Do not use inner else condition when collapsing IfElse based
upon the then condition (noir-lang/noir#8040)
([44c1347](44c1347))
* **ssa:** fix possibility to `Field % Field` operaions in Brillig from
SSA (noir-lang/noir#8105)
([366d980](366d980))
* **ssa:** Loop range with u1
(noir-lang/noir#8131)
([366d980](366d980))
* update metric name to avoid conflicts
([#13629](#13629))
([70c58ab](70c58ab)),
closes
[#13626](#13626)
* wasm memory benchmark
([#13573](#13573))
([9a73c4a](9a73c4a))
* wrapping mul support for u128
(noir-lang/noir#7941)
([366d980](366d980))


### Miscellaneous

* Accept optional test path for emitting integration tests
(noir-lang/noir#8062)
([366d980](366d980))
* Add `GITHUB_TOKEN` to more workflow steps
(noir-lang/noir#8046)
([44c1347](44c1347))
* add a benchmark for opcodes which need a batchable inversion
(noir-lang/noir#8110)
([366d980](366d980))
* add hacky faster bootstrap for bb-centric e2e flow
([#13587](#13587))
([498d433](498d433))
* address some visibility warnings
([#13728](#13728))
([35dec90](35dec90))
* **avm:** less codegen for lookups
([#13741](#13741))
([ec468d9](ec468d9))
* **avm:** move interaction jobs to trace builders
([#13621](#13621))
([caac1c9](caac1c9))
* bb.js non-inlined web workers
([#13736](#13736))
([0e604a1](0e604a1))
* **bb:** debugging helpers
([#13584](#13584))
([0ebb29e](0ebb29e))
* **bb:** Make goblin a proper source module
([#13580](#13580))
([3048a14](3048a14))
* bespoke export for client native prover / PXE server store lazy load
([#13783](#13783))
([640dd08](640dd08))
* Blob and archiver syncing improvements
([#13542](#13542))
([629aa2a](629aa2a)),
closes
[#13530](#13530)
* blob archive client factory code
([#13648](#13648))
([7b16791](7b16791))
* bug list
([#13773](#13773))
([c6d4fb8](c6d4fb8))
* bump axois
([#13453](#13453))
([1c20920](1c20920))
* bump bb to 0.84.0 (noir-lang/noir#8047)
([44c1347](44c1347))
* bump bignum timeout (noir-lang/noir#8080)
([366d980](366d980))
* bump external pinned commits
(noir-lang/noir#8045)
([44c1347](44c1347))
* **ci:** run non dependent bootstrap build steps in parallel
([#13454](#13454))
([b17e18d](b17e18d))
* cleanup aztec up amm test
([#13754](#13754))
([3d92afe](3d92afe))
* Cleanup scripts in package jsons in yarn-project
([#13527](#13527))
([a296945](a296945))
* **contracts:** core/staking -&gt; core/slashing
([#13748](#13748))
([5d93a0e](5d93a0e))
* create module for array handling in acirgen
(noir-lang/noir#8119)
([366d980](366d980))
* dashboards use ${data_source} variable
([#13613](#13613))
([45533d9](45533d9))
* delete honk_recursion for building ACIR
([#13664](#13664))
([ac95729](ac95729))
* delete Ultra Vanilla CIVC
([#13669](#13669))
([ae578a2](ae578a2))
* delete zeromorph
([#13667](#13667))
([c8acae0](c8acae0))
* Disable blobscan by default
([#13742](#13742))
([c55088e](c55088e))
* **docs:** `aztec` and `aztec-wallet` cli reference updates
([#13692](#13692))
([d11d154](d11d154))
* **docs:** add 0.85.0 docs
([#13578](#13578))
([cf07358](cf07358))
* **docs:** add AND/XOR bug to bug list
([#13784](#13784))
([797ae6d](797ae6d))
* **docs:** Add architecture docs
(noir-lang/noir#7992)
([366d980](366d980))
* **docs:** adding redirects for node guide
([#13768](#13768))
([e96e5bf](e96e5bf))
* **docs:** bugfix + deploy on master
([#13717](#13717))
([010975a](010975a))
* **docs:** Fix some stuff on fees, rm confusing storage example
([#13501](#13501))
([c00b20b](c00b20b))
* **docs:** Sequencer and Prover Guide
([#13433](#13433))
([55b9a2b](55b9a2b))
* **docs:** update bb commands to match 0.84.0
(noir-lang/noir#8050)
([366d980](366d980))
* **docs:** Update docs bootrap to to include release
([#13615](#13615))
([2154d5e](2154d5e))
* don't use `set_from_value_id` in `remove_if_else`
(noir-lang/noir#8070)
([366d980](366d980))
* don't use `set_value_from_id` in `as_slice_length`
(noir-lang/noir#8039)
([44c1347](44c1347))
* don't use `set_value_from_id` in `constant_folding`
(noir-lang/noir#8091)
([366d980](366d980))
* don't use `set_value_from_id` in `loop_invariant`
(noir-lang/noir#8085)
([366d980](366d980))
* don't use `set_value_from_id` in `remove_bit_shifts`
(noir-lang/noir#8071)
([366d980](366d980))
* don't use `set_value_from_id` in `simplify_cfg`
(noir-lang/noir#8072)
([366d980](366d980))
* **experimental:** Function::simple_optimization for SSA optimizations
(noir-lang/noir#8102)
([366d980](366d980))
* Fetch rollup address using version as index
([#13620](#13620))
([60e73f9](60e73f9))
* Fix license files
([#13695](#13695))
([9931fb8](9931fb8))
* mempool limit
([#13735](#13735))
([def1287](def1287))
* mint block rewards for 200K blocks at deployment
([#13537](#13537))
([1a3a326](1a3a326))
* move check_circuit functionality from `TranslatorCircuitBuilder` into
a `TranslatorCircuitChecker`
([#13761](#13761))
([e4e7fca](e4e7fca))
* noir test flake addition
([#13663](#13663))
([c302fdd](c302fdd))
* **noir-contracts:** update readme
([#13563](#13563))
([42dfbbf](42dfbbf))
* **optimization:** Enable experimental ownership clone scheme by
default (noir-lang/noir#8097)
([366d980](366d980))
* parse nop in SSA parser (noir-lang/noir#8141)
([366d980](366d980))
* ping luke instead of cody on bb benchmark regressions
([#13718](#13718))
([2802f5a](2802f5a))
* playground improvements
([#13588](#13588))
([4c3453b](4c3453b))
* **playground:** bump vite
([#13750](#13750))
([7e72420](7e72420))
* Print `unsafe { ... }` around calls to Brillig from ACIR in AST
(noir-lang/noir#8077)
([366d980](366d980))
* **public/avm:** from hints to the end of the world
([#13459](#13459))
([a89de5d](a89de5d))
* redo typo PR by dizer-ti
([#13757](#13757))
([075d3a8](075d3a8))
* release playground on s3.
([#13582](#13582))
([2f9458a](2f9458a))
* **release:** give aztec release image sensible default entrypoint
([#13517](#13517))
([a864c06](a864c06))
* remove circuit simulator
([#13689](#13689))
([a00566c](a00566c))
* Remove code of the fake AVM recursive verifier
([#13614](#13614))
([048dfed](048dfed))
* remove msm sorter
([#13668](#13668))
([ff29d86](ff29d86))
* remove old terraform configs
([#13716](#13716))
([49ac1db](49ac1db)),
closes
[#13651](#13651)
* remove omit param from serialize derivation
([#13703](#13703))
([6af5943](6af5943))
* remove pcs vk from vk
([#13638](#13638))
([0e941ef](0e941ef))
* remove try_merge_only_changed_indices
(noir-lang/noir#8142)
([366d980](366d980))
* replace relative paths to noir-protocol-circuits
([78c87b5](78c87b5))
* replace relative paths to noir-protocol-circuits
([4e53cd1](4e53cd1))
* replace relative paths to noir-protocol-circuits
([3a33c47](3a33c47))
* replace relative paths to noir-protocol-circuits
([eaaa85b](eaaa85b))
* replace relative paths to noir-protocol-circuits
([648a4fe](648a4fe))
* replace relative paths to noir-protocol-circuits
([b3f4745](b3f4745))
* replace relative paths to noir-protocol-circuits
([269b316](269b316))
* replace relative paths to noir-protocol-circuits
([1330efe](1330efe))
* replace relative paths to noir-protocol-circuits
([a739284](a739284))
* Sanity check block number from archiver before returning it
([#13631](#13631))
([e459b2a](e459b2a))
* simpler `make_mutable` in `array_set` optimization
(noir-lang/noir#8106)
([366d980](366d980))
* **spartan:** bump default kind resources
([#13747](#13747))
([8ca828f](8ca828f))
* **ssa:** Additional unrolling and mem2reg passes
(noir-lang/noir#8017)
([44c1347](44c1347))
* **ssa:** Remove IfElse pass basic SSA tests
(noir-lang/noir#8058)
([44c1347](44c1347))
* **ssa:** Test terminator value constant folding and resolve cache for
data bus (noir-lang/noir#8132)
([366d980](366d980))
* starknet feature flag
([#13681](#13681))
([2b6c627](2b6c627))
* stop prover node swallowing start prover job errors
([#13676](#13676))
([90c2b7b](90c2b7b))
* **test:** AST generation calibration test
(noir-lang/noir#8054)
([44c1347](44c1347))
* update ACVM doc (noir-lang/noir#8004)
([366d980](366d980))
* Update docs snippet
([#13739](#13739))
([7fb333a](7fb333a))
* update staking asset handler address
([#13566](#13566))
([daa09f2](daa09f2))
* Updated contract addresses for alpha-testnet
([#13585](#13585))
([9f0ff4a](9f0ff4a))
* Use chain monitor to sync system time in p2p tests
([#13632](#13632))
([abbad4c](abbad4c))
* use public component key for pairing inputs
([#13705](#13705))
([467166f](467166f))
* use PublicComponentKeys
([#13686](#13686))
([68e4b6f](68e4b6f))
* use single extended viem client
([#13715](#13715))
([cf637dc](cf637dc))
* validate block header hash in circuits
([#13094](#13094))
([f19c182](f19c182))
* wasm proof verifying with native bb
([#13499](#13499))
([1ad9249](1ad9249))


### Documentation

* fees tutorial
([#13357](#13357))
([c580657](c580657))
* move snippets all versions
([#13650](#13650))
([a2f5553](a2f5553))
* Update glossary & snippets
([#13661](#13661))
([d55816d](d55816d))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: AztecBot <tech@aztecprotocol.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bench-show Display benchmark results on PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants