-
Notifications
You must be signed in to change notification settings - Fork 223
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
fix: don't deduplicate binary math of unsigned types #6848
Conversation
Changes to Brillig bytecode sizes
🧾 Summary (10% most significant diffs)
Full diff report 👇
|
Peak Memory Sample
|
Compilation Sample
|
Without the
With it, we get this:
If we rename some SSA vars so that they are the same on both sides, here's the diff we get: |
The failure we get in both cases is this:
|
Changes to number of Brillig opcodes executed
🧾 Summary (10% most significant diffs)
Full diff report 👇
|
Changes to circuit sizes
🧾 Summary (10% most significant diffs)
Full diff report 👇
|
Execution Sample
|
I pushed a commit just to try something and see how opcodes change. |
I think marking overflowing ops as requiring acir gen predicates is the most accurate, as these ops do in fact require the predicate. This will essentially prevent hoisting |
We may be able to optimize this regression a bit in a follow-up as loop invariant code motion currently checks whether a binary operation requires a predicate inside of the check for whether an instruction can be deduplicated.
Looking at the overflow check in brillig gen:
We can see that there are a few instructions generated during brillig gen (the Mul check is the most expensive) that we should be able to move to SSA. All instructions other than the final constrain we should then be able to hoist out of the loop. |
Given that the name is |
It is the same in the case of loop invariant code motion. For ACIR this just helps compilation time as we unroll all loops, but this can change the final Brillig bytecode and execution trace. In both cases we do not want to be hoisting these instructions. This means we want this check:
to return false .
As noted above, the method to determine whether we can deduplicate instructions is muddled as it is used for both ACIR and Brillig runtimes. The intertwining of this logic has happened before and is why these methods were originally written, but we should re-assess. We may simply want better documentation surrounding these methods. We could also make a separate
This can happen in follow-up work though, and updating just |
chore: Avoid duplicate Not instructions during flattening (noir-lang/noir#6886) chore: Use smallvec for instruction results (noir-lang/noir#6877) chore(ci): Display times in compilation and execution reports only with seconds (noir-lang/noir#6880) feat: flatten nested if-else statements with equivalent conditions (noir-lang/noir#6875) chore(ci): Take averages for compilation and execution report of small programs (noir-lang/noir#6874) fix: don't deduplicate binary math of unsigned types (noir-lang/noir#6848) feat: warn on unnecessary unsafe blocks (noir-lang/noir#6867) chore: remove the `as_field` and `from_field` built-ins (noir-lang/noir#6845) chore: fix warnings (noir-lang/noir#6863) fix: detect cycles in globals (noir-lang/noir#6859) chore(ci): Execution time report (noir-lang/noir#6827) chore(ci): Add non determinism check and fixes (noir-lang/noir#6847) chore(docs): updating the solidity contract how-to guide (noir-lang/noir#6804) fix: double alias in path (noir-lang/noir#6855) feat: configurable external check failures (noir-lang/noir#6810) chore: move constant creation out of loop (noir-lang/noir#6836) fix: implement `as_field` and `from_field` in the interpreter (noir-lang/noir#6829) chore: Use Vec for callstacks (noir-lang/noir#6821) feat: replace `eval_global_as_array_length` with type/interpreter evaluation (noir-lang/noir#6469) chore: refactor `DataFlowGraph.insert_instruction_and_results` (noir-lang/noir#6823) chore(docs): updating noirjs tutorial for 1.0.0 (noir-lang/noir#6792) feat: Sync from aztec-packages (noir-lang/noir#6824) chore: Have rust-analyzer use the stable toolchain (noir-lang/noir#6825)
chore: Avoid duplicate Not instructions during flattening (noir-lang/noir#6886) chore: Use smallvec for instruction results (noir-lang/noir#6877) chore(ci): Display times in compilation and execution reports only with seconds (noir-lang/noir#6880) feat: flatten nested if-else statements with equivalent conditions (noir-lang/noir#6875) chore(ci): Take averages for compilation and execution report of small programs (noir-lang/noir#6874) fix: don't deduplicate binary math of unsigned types (noir-lang/noir#6848) feat: warn on unnecessary unsafe blocks (noir-lang/noir#6867) chore: remove the `as_field` and `from_field` built-ins (noir-lang/noir#6845) chore: fix warnings (noir-lang/noir#6863) fix: detect cycles in globals (noir-lang/noir#6859) chore(ci): Execution time report (noir-lang/noir#6827) chore(ci): Add non determinism check and fixes (noir-lang/noir#6847) chore(docs): updating the solidity contract how-to guide (noir-lang/noir#6804) fix: double alias in path (noir-lang/noir#6855) feat: configurable external check failures (noir-lang/noir#6810) chore: move constant creation out of loop (noir-lang/noir#6836) fix: implement `as_field` and `from_field` in the interpreter (noir-lang/noir#6829) chore: Use Vec for callstacks (noir-lang/noir#6821) feat: replace `eval_global_as_array_length` with type/interpreter evaluation (noir-lang/noir#6469) chore: refactor `DataFlowGraph.insert_instruction_and_results` (noir-lang/noir#6823) chore(docs): updating noirjs tutorial for 1.0.0 (noir-lang/noir#6792) feat: Sync from aztec-packages (noir-lang/noir#6824) chore: Have rust-analyzer use the stable toolchain (noir-lang/noir#6825)
…oir-lang/noir#6898) chore: clean up gates reports script (noir-lang/noir#6896) chore: move empty programs to `compile_success_empty` (noir-lang/noir#6891) feat: add a warning when using unsafe blocks without safety comments (noir-lang/noir#6860) chore: quick docs fix for #6839 (noir-lang/noir#6840) chore: Avoid duplicate Not instructions during flattening (noir-lang/noir#6886) chore: Use smallvec for instruction results (noir-lang/noir#6877) chore(ci): Display times in compilation and execution reports only with seconds (noir-lang/noir#6880) feat: flatten nested if-else statements with equivalent conditions (noir-lang/noir#6875) chore(ci): Take averages for compilation and execution report of small programs (noir-lang/noir#6874) fix: don't deduplicate binary math of unsigned types (noir-lang/noir#6848) feat: warn on unnecessary unsafe blocks (noir-lang/noir#6867) chore: remove the `as_field` and `from_field` built-ins (noir-lang/noir#6845) chore: fix warnings (noir-lang/noir#6863) fix: detect cycles in globals (noir-lang/noir#6859) chore(ci): Execution time report (noir-lang/noir#6827) chore(ci): Add non determinism check and fixes (noir-lang/noir#6847) chore(docs): updating the solidity contract how-to guide (noir-lang/noir#6804) fix: double alias in path (noir-lang/noir#6855) feat: configurable external check failures (noir-lang/noir#6810) chore: move constant creation out of loop (noir-lang/noir#6836) fix: implement `as_field` and `from_field` in the interpreter (noir-lang/noir#6829) chore: Use Vec for callstacks (noir-lang/noir#6821) feat: replace `eval_global_as_array_length` with type/interpreter evaluation (noir-lang/noir#6469) chore: refactor `DataFlowGraph.insert_instruction_and_results` (noir-lang/noir#6823) chore(docs): updating noirjs tutorial for 1.0.0 (noir-lang/noir#6792) feat: Sync from aztec-packages (noir-lang/noir#6824) chore: Have rust-analyzer use the stable toolchain (noir-lang/noir#6825)
…r#6898) chore: clean up gates reports script (noir-lang/noir#6896) chore: move empty programs to `compile_success_empty` (noir-lang/noir#6891) feat: add a warning when using unsafe blocks without safety comments (noir-lang/noir#6860) chore: quick docs fix for #6839 (noir-lang/noir#6840) chore: Avoid duplicate Not instructions during flattening (noir-lang/noir#6886) chore: Use smallvec for instruction results (noir-lang/noir#6877) chore(ci): Display times in compilation and execution reports only with seconds (noir-lang/noir#6880) feat: flatten nested if-else statements with equivalent conditions (noir-lang/noir#6875) chore(ci): Take averages for compilation and execution report of small programs (noir-lang/noir#6874) fix: don't deduplicate binary math of unsigned types (noir-lang/noir#6848) feat: warn on unnecessary unsafe blocks (noir-lang/noir#6867) chore: remove the `as_field` and `from_field` built-ins (noir-lang/noir#6845) chore: fix warnings (noir-lang/noir#6863) fix: detect cycles in globals (noir-lang/noir#6859) chore(ci): Execution time report (noir-lang/noir#6827) chore(ci): Add non determinism check and fixes (noir-lang/noir#6847) chore(docs): updating the solidity contract how-to guide (noir-lang/noir#6804) fix: double alias in path (noir-lang/noir#6855) feat: configurable external check failures (noir-lang/noir#6810) chore: move constant creation out of loop (noir-lang/noir#6836) fix: implement `as_field` and `from_field` in the interpreter (noir-lang/noir#6829) chore: Use Vec for callstacks (noir-lang/noir#6821) feat: replace `eval_global_as_array_length` with type/interpreter evaluation (noir-lang/noir#6469) chore: refactor `DataFlowGraph.insert_instruction_and_results` (noir-lang/noir#6823) chore(docs): updating noirjs tutorial for 1.0.0 (noir-lang/noir#6792) feat: Sync from aztec-packages (noir-lang/noir#6824) chore: Have rust-analyzer use the stable toolchain (noir-lang/noir#6825)
Automated pull of development from the [noir](https://github.com/noir-lang/noir) programming language, a dependency of Aztec. BEGIN_COMMIT_OVERRIDE chore: remove malformed functions from brillig reports (noir-lang/noir#6898) chore: clean up gates reports script (noir-lang/noir#6896) chore: move empty programs to `compile_success_empty` (noir-lang/noir#6891) feat: add a warning when using unsafe blocks without safety comments (noir-lang/noir#6860) chore: quick docs fix for #6839 (noir-lang/noir#6840) chore: Avoid duplicate Not instructions during flattening (noir-lang/noir#6886) chore: Use smallvec for instruction results (noir-lang/noir#6877) chore(ci): Display times in compilation and execution reports only with seconds (noir-lang/noir#6880) feat: flatten nested if-else statements with equivalent conditions (noir-lang/noir#6875) chore(ci): Take averages for compilation and execution report of small programs (noir-lang/noir#6874) fix: don't deduplicate binary math of unsigned types (noir-lang/noir#6848) feat: warn on unnecessary unsafe blocks (noir-lang/noir#6867) chore: remove the `as_field` and `from_field` built-ins (noir-lang/noir#6845) chore: fix warnings (noir-lang/noir#6863) fix: detect cycles in globals (noir-lang/noir#6859) chore(ci): Execution time report (noir-lang/noir#6827) chore(ci): Add non determinism check and fixes (noir-lang/noir#6847) chore(docs): updating the solidity contract how-to guide (noir-lang/noir#6804) fix: double alias in path (noir-lang/noir#6855) feat: configurable external check failures (noir-lang/noir#6810) chore: move constant creation out of loop (noir-lang/noir#6836) fix: implement `as_field` and `from_field` in the interpreter (noir-lang/noir#6829) chore: Use Vec for callstacks (noir-lang/noir#6821) feat: replace `eval_global_as_array_length` with type/interpreter evaluation (noir-lang/noir#6469) chore: refactor `DataFlowGraph.insert_instruction_and_results` (noir-lang/noir#6823) chore(docs): updating noirjs tutorial for 1.0.0 (noir-lang/noir#6792) feat: Sync from aztec-packages (noir-lang/noir#6824) chore: Have rust-analyzer use the stable toolchain (noir-lang/noir#6825) END_COMMIT_OVERRIDE --------- Co-authored-by: ludamad <[email protected]> Co-authored-by: Tom French <[email protected]> Co-authored-by: Tom French <[email protected]>
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.68.1</summary> ## [0.68.1](aztec-package-v0.68.0...aztec-package-v0.68.1) (2024-12-23) ### Miscellaneous * Configurable parallelism in bootstrap ([#10909](#10909)) ([5260f1e](5260f1e)) </details> <details><summary>barretenberg.js: 0.68.1</summary> ## [0.68.1](barretenberg.js-v0.68.0...barretenberg.js-v0.68.1) (2024-12-23) ### Miscellaneous * **barretenberg.js:** Synchronize aztec-packages versions </details> <details><summary>aztec-packages: 0.68.1</summary> ## [0.68.1](aztec-packages-v0.68.0...aztec-packages-v0.68.1) (2024-12-23) ### Features * Add a warning when using unsafe blocks without safety comments (noir-lang/noir#6860) ([84a4005](84a4005)) * Add limit to unique contract call ([#10640](#10640)) ([d340f0b](d340f0b)) * Configurable external check failures (noir-lang/noir#6810) ([84a4005](84a4005)) * **docs:** Add aztec-wallet proving ([#10847](#10847)) ([3efae86](3efae86)) * Flatten nested if-else statements with equivalent conditions (noir-lang/noir#6875) ([84a4005](84a4005)) * **p2p:** Timeout peers, disconnect from badly scored peers ([#10907](#10907)) ([76a23eb](76a23eb)) * Replace `eval_global_as_array_length` with type/interpreter evaluation (noir-lang/noir#6469) ([84a4005](84a4005)) * Revamped sequencer timetable and tx processing timeout ([#10870](#10870)) ([145122b](145122b)) * Sync from aztec-packages (noir-lang/noir#6824) ([84a4005](84a4005)) * Warn on unnecessary unsafe blocks (noir-lang/noir#6867) ([84a4005](84a4005)) ### Bug Fixes * Add devcoin to faucet after deployment ([#10903](#10903)) ([6aa5369](6aa5369)) * CI kind test fix ([#10932](#10932)) ([bda1ac7](bda1ac7)) * **ci:** Tester/builder start race conditions ([#10893](#10893)) ([4250782](4250782)) * Conditionally deploy deterministic deployment proxy ([#10936](#10936)) ([48624b7](48624b7)) * Degrade libp2p crypto package ([#10876](#10876)) ([9293f38](9293f38)) * Detect cycles in globals (noir-lang/noir#6859) ([84a4005](84a4005)) * Don't deduplicate binary math of unsigned types (noir-lang/noir#6848) ([84a4005](84a4005)) * Double alias in path (noir-lang/noir#6855) ([84a4005](84a4005)) * Implement `as_field` and `from_field` in the interpreter (noir-lang/noir#6829) ([84a4005](84a4005)) * Install Yarn 4.5.2 to build WASM ([#10940](#10940)) ([2a76380](2a76380)) * Removed Sepolia stuff from devnet deploy action ([#10916](#10916)) ([fbf120b](fbf120b)) ### Miscellaneous * **avm:** Check that slice read/write are not out of memory range ([#10879](#10879)) ([ab3f318](ab3f318)), closes [#7385](#7385) * Avoid duplicate Not instructions during flattening (noir-lang/noir#6886) ([84a4005](84a4005)) * **ci:** Add non determinism check and fixes (noir-lang/noir#6847) ([84a4005](84a4005)) * **ci:** Display times in compilation and execution reports only with seconds (noir-lang/noir#6880) ([84a4005](84a4005)) * **ci:** Execution time report (noir-lang/noir#6827) ([84a4005](84a4005)) * **ci:** Take averages for compilation and execution report of small programs (noir-lang/noir#6874) ([84a4005](84a4005)) * Clean up gates reports script (noir-lang/noir#6896) ([84a4005](84a4005)) * Configurable parallelism in bootstrap ([#10909](#10909)) ([5260f1e](5260f1e)) * **docs:** Updating noirjs tutorial for 1.0.0 (noir-lang/noir#6792) ([84a4005](84a4005)) * **docs:** Updating the solidity contract how-to guide (noir-lang/noir#6804) ([84a4005](84a4005)) * Fix warnings (noir-lang/noir#6863) ([84a4005](84a4005)) * Have rust-analyzer use the stable toolchain (noir-lang/noir#6825) ([84a4005](84a4005)) * Move constant creation out of loop (noir-lang/noir#6836) ([84a4005](84a4005)) * Move empty programs to `compile_success_empty` (noir-lang/noir#6891) ([84a4005](84a4005)) * New default resource values for GKE ([#10928](#10928)) ([18e38d3](18e38d3)) * Quick docs fix for [#6839](#6839) (noir-lang/noir#6840) ([84a4005](84a4005)) * Refactor `DataFlowGraph.insert_instruction_and_results` (noir-lang/noir#6823) ([84a4005](84a4005)) * Remove get registered account from pxe ([#10479](#10479)) ([ee568ff](ee568ff)) * Remove malformed functions from brillig reports (noir-lang/noir#6898) ([84a4005](84a4005)) * Remove the `as_field` and `from_field` built-ins (noir-lang/noir#6845) ([84a4005](84a4005)) * Reorganise translator proving key construction ([#10853](#10853)) ([5da4d1b](5da4d1b)) * Replace relative paths to noir-protocol-circuits ([b9f9875](b9f9875)) * Update gates diff action ([#10917](#10917)) ([57439a7](57439a7)) * Use smallvec for instruction results (noir-lang/noir#6877) ([84a4005](84a4005)) * Use Vec for callstacks (noir-lang/noir#6821) ([84a4005](84a4005)) </details> <details><summary>barretenberg: 0.68.1</summary> ## [0.68.1](barretenberg-v0.68.0...barretenberg-v0.68.1) (2024-12-23) ### Features * Add limit to unique contract call ([#10640](#10640)) ([d340f0b](d340f0b)) ### Miscellaneous * **avm:** Check that slice read/write are not out of memory range ([#10879](#10879)) ([ab3f318](ab3f318)), closes [#7385](#7385) * Reorganise translator proving key construction ([#10853](#10853)) ([5da4d1b](5da4d1b)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.68.1</summary> ## [0.68.1](AztecProtocol/aztec-packages@aztec-package-v0.68.0...aztec-package-v0.68.1) (2024-12-23) ### Miscellaneous * Configurable parallelism in bootstrap ([#10909](AztecProtocol/aztec-packages#10909)) ([5260f1e](AztecProtocol/aztec-packages@5260f1e)) </details> <details><summary>barretenberg.js: 0.68.1</summary> ## [0.68.1](AztecProtocol/aztec-packages@barretenberg.js-v0.68.0...barretenberg.js-v0.68.1) (2024-12-23) ### Miscellaneous * **barretenberg.js:** Synchronize aztec-packages versions </details> <details><summary>aztec-packages: 0.68.1</summary> ## [0.68.1](AztecProtocol/aztec-packages@aztec-packages-v0.68.0...aztec-packages-v0.68.1) (2024-12-23) ### Features * Add a warning when using unsafe blocks without safety comments (noir-lang/noir#6860) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Add limit to unique contract call ([#10640](AztecProtocol/aztec-packages#10640)) ([d340f0b](AztecProtocol/aztec-packages@d340f0b)) * Configurable external check failures (noir-lang/noir#6810) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * **docs:** Add aztec-wallet proving ([#10847](AztecProtocol/aztec-packages#10847)) ([3efae86](AztecProtocol/aztec-packages@3efae86)) * Flatten nested if-else statements with equivalent conditions (noir-lang/noir#6875) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * **p2p:** Timeout peers, disconnect from badly scored peers ([#10907](AztecProtocol/aztec-packages#10907)) ([76a23eb](AztecProtocol/aztec-packages@76a23eb)) * Replace `eval_global_as_array_length` with type/interpreter evaluation (noir-lang/noir#6469) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Revamped sequencer timetable and tx processing timeout ([#10870](AztecProtocol/aztec-packages#10870)) ([145122b](AztecProtocol/aztec-packages@145122b)) * Sync from aztec-packages (noir-lang/noir#6824) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Warn on unnecessary unsafe blocks (noir-lang/noir#6867) ([84a4005](AztecProtocol/aztec-packages@84a4005)) ### Bug Fixes * Add devcoin to faucet after deployment ([#10903](AztecProtocol/aztec-packages#10903)) ([6aa5369](AztecProtocol/aztec-packages@6aa5369)) * CI kind test fix ([#10932](AztecProtocol/aztec-packages#10932)) ([bda1ac7](AztecProtocol/aztec-packages@bda1ac7)) * **ci:** Tester/builder start race conditions ([#10893](AztecProtocol/aztec-packages#10893)) ([4250782](AztecProtocol/aztec-packages@4250782)) * Conditionally deploy deterministic deployment proxy ([#10936](AztecProtocol/aztec-packages#10936)) ([48624b7](AztecProtocol/aztec-packages@48624b7)) * Degrade libp2p crypto package ([#10876](AztecProtocol/aztec-packages#10876)) ([9293f38](AztecProtocol/aztec-packages@9293f38)) * Detect cycles in globals (noir-lang/noir#6859) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Don't deduplicate binary math of unsigned types (noir-lang/noir#6848) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Double alias in path (noir-lang/noir#6855) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Implement `as_field` and `from_field` in the interpreter (noir-lang/noir#6829) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Install Yarn 4.5.2 to build WASM ([#10940](AztecProtocol/aztec-packages#10940)) ([2a76380](AztecProtocol/aztec-packages@2a76380)) * Removed Sepolia stuff from devnet deploy action ([#10916](AztecProtocol/aztec-packages#10916)) ([fbf120b](AztecProtocol/aztec-packages@fbf120b)) ### Miscellaneous * **avm:** Check that slice read/write are not out of memory range ([#10879](AztecProtocol/aztec-packages#10879)) ([ab3f318](AztecProtocol/aztec-packages@ab3f318)), closes [#7385](AztecProtocol/aztec-packages#7385) * Avoid duplicate Not instructions during flattening (noir-lang/noir#6886) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * **ci:** Add non determinism check and fixes (noir-lang/noir#6847) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * **ci:** Display times in compilation and execution reports only with seconds (noir-lang/noir#6880) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * **ci:** Execution time report (noir-lang/noir#6827) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * **ci:** Take averages for compilation and execution report of small programs (noir-lang/noir#6874) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Clean up gates reports script (noir-lang/noir#6896) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Configurable parallelism in bootstrap ([#10909](AztecProtocol/aztec-packages#10909)) ([5260f1e](AztecProtocol/aztec-packages@5260f1e)) * **docs:** Updating noirjs tutorial for 1.0.0 (noir-lang/noir#6792) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * **docs:** Updating the solidity contract how-to guide (noir-lang/noir#6804) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Fix warnings (noir-lang/noir#6863) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Have rust-analyzer use the stable toolchain (noir-lang/noir#6825) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Move constant creation out of loop (noir-lang/noir#6836) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Move empty programs to `compile_success_empty` (noir-lang/noir#6891) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * New default resource values for GKE ([#10928](AztecProtocol/aztec-packages#10928)) ([18e38d3](AztecProtocol/aztec-packages@18e38d3)) * Quick docs fix for [#6839](AztecProtocol/aztec-packages#6839) (noir-lang/noir#6840) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Refactor `DataFlowGraph.insert_instruction_and_results` (noir-lang/noir#6823) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Remove get registered account from pxe ([#10479](AztecProtocol/aztec-packages#10479)) ([ee568ff](AztecProtocol/aztec-packages@ee568ff)) * Remove malformed functions from brillig reports (noir-lang/noir#6898) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Remove the `as_field` and `from_field` built-ins (noir-lang/noir#6845) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Reorganise translator proving key construction ([#10853](AztecProtocol/aztec-packages#10853)) ([5da4d1b](AztecProtocol/aztec-packages@5da4d1b)) * Replace relative paths to noir-protocol-circuits ([b9f9875](AztecProtocol/aztec-packages@b9f9875)) * Update gates diff action ([#10917](AztecProtocol/aztec-packages#10917)) ([57439a7](AztecProtocol/aztec-packages@57439a7)) * Use smallvec for instruction results (noir-lang/noir#6877) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Use Vec for callstacks (noir-lang/noir#6821) ([84a4005](AztecProtocol/aztec-packages@84a4005)) </details> <details><summary>barretenberg: 0.68.1</summary> ## [0.68.1](AztecProtocol/aztec-packages@barretenberg-v0.68.0...barretenberg-v0.68.1) (2024-12-23) ### Features * Add limit to unique contract call ([#10640](AztecProtocol/aztec-packages#10640)) ([d340f0b](AztecProtocol/aztec-packages@d340f0b)) ### Miscellaneous * **avm:** Check that slice read/write are not out of memory range ([#10879](AztecProtocol/aztec-packages#10879)) ([ab3f318](AztecProtocol/aztec-packages@ab3f318)), closes [#7385](AztecProtocol/aztec-packages#7385) * Reorganise translator proving key construction ([#10853](AztecProtocol/aztec-packages#10853)) ([5da4d1b](AztecProtocol/aztec-packages@5da4d1b)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
* master: chore: add if/loop tip (separate from no-predicate noir-lang#5657) (noir-lang#6806) chore: move implementation of print foreign call into `nargo` (noir-lang#6865) chore: document format strings (noir-lang#6920) chore: add `rollup_root` and `rollup_block_merge` to tracked protocol circuits (noir-lang#6903) fix: consistent file_id across installation paths (noir-lang#6912) fix: bigint builtins are foreigns (noir-lang#6892) fix: remove unnecessary cast in bit-shift (noir-lang#6890) chore: Release Noir(1.0.0-beta.1) (noir-lang#6622) chore: Add `Instruction::Noop` (noir-lang#6899) chore: remove malformed functions from brillig reports (noir-lang#6898) chore: clean up gates reports script (noir-lang#6896) chore: move empty programs to `compile_success_empty` (noir-lang#6891) feat: add a warning when using unsafe blocks without safety comments (noir-lang#6860) chore: quick docs fix for noir-lang#6839 (noir-lang#6840) chore: Avoid duplicate Not instructions during flattening (noir-lang#6886) chore: Use smallvec for instruction results (noir-lang#6877) chore(ci): Display times in compilation and execution reports only with seconds (noir-lang#6880) feat: flatten nested if-else statements with equivalent conditions (noir-lang#6875) chore(ci): Take averages for compilation and execution report of small programs (noir-lang#6874) fix: don't deduplicate binary math of unsigned types (noir-lang#6848)
Description
Problem
Resolves #6834
Summary
Additional Context
Documentation
Check one:
PR Checklist
cargo fmt
on default settings.