feat: add as_slice builtin function, add execution test#4523
feat: add as_slice builtin function, add execution test#4523
Conversation
vezenovm
left a comment
There was a problem hiding this comment.
Looks good! We just need to update the ACIR gen code.
Changes to circuit sizes
🧾 Summary (10% most significant diffs)
Full diff report 👇
|
# Description ## Problem\* Resolves <!-- Link to GitHub Issue --> ## Summary\* The `array_typ.contains_slice_element()` check in `can_omit_element_sizes_array` is incorrect. This should have been `is_nested_slice()` but we already banned nested slices so I just removed it. This leads to improvements for slices in general so I have made it a separate PR. This was also a blocker for #4523. When working with `AsSlice` we would omit the element sizes array. When it came time to access a slice created with `as_slice()` we would attempt to use the element sizes array which was never initialized correctly and we would go out of bounds. ## Additional Context ## Documentation\* Check one: - [X] No documentation needed. - [ ] Documentation included in this PR. - [ ] **[Exceptional Case]** Documentation to be submitted in a separate PR. # PR Checklist\* - [X] I have tested the changes locally. - [X] I have formatted the changes with [Prettier](https://prettier.io/) and/or `cargo fmt` on default settings.
… wip implementing convert_ssa_as_slice
… to match similar ones, recreated debugger error in execution test
…of brillig length variable
…anup as_slice test
… out brillig and regular as_slice tests, cargo fmt/clippy
…ference counting changes on master, cargo clippy / fmt
compiler/noirc_evaluator/src/brillig/brillig_gen/brillig_block.rs
Outdated
Show resolved
Hide resolved
compiler/noirc_evaluator/src/brillig/brillig_gen/brillig_block.rs
Outdated
Show resolved
Hide resolved
@jfecher So it looks like in the case of converting inputs from |
compiler/noirc_evaluator/src/brillig/brillig_gen/brillig_block.rs
Outdated
Show resolved
Hide resolved
|
@vezenovm since the difference in constraint counts isn't too extreme, perhaps it is still worth it if the runtime is faster? |
|
@vezenovm doesn't seem this PR is worth it from @michaeljklein's performance tests. They've been about the same with or without this change so I'm leaning towards it being unneeded complexity. |
@michaeljklein said he had ~3x improvement for 1k size arrays which is pretty good, but yeah only for larger arrays. |
|
@vezenovm sorry, that message was before I spoke with @michaeljklein and saw some new performance tests that aren't present in master. It seems the existing tests we had in test_programs just weren't affected too much. I've tested it locally as well and as_slice is noticeably faster with larger arrays with this change. So I think we can merge this after a review. |
|
on master: [array_to_slice_literal]
cargo run execute 1.52s user 0.27s system 127% cpu 1.407 total
[array_to_slice_dynamic]
cargo run execute 1.51s user 0.26s system 131% cpu 1.344 total
[array_to_slice_literal_long]
cargo run execute 4.99s user 0.29s system 107% cpu 4.896 total
[array_to_slice_dynamic_long]
cargo run execute 5.41s user 0.29s system 107% cpu 5.301 totalthis branch: [array_to_slice_literal]
cargo run execute 1.51s user 0.26s system 126% cpu 1.396 total
[array_to_slice_dynamic]
cargo run execute 1.51s user 0.24s system 130% cpu 1.342 total
[array_to_slice_literal_long]
cargo run execute 1.53s user 0.26s system 129% cpu 1.376 total
[array_to_slice_dynamic_long]
cargo run execute 1.58s user 0.24s system 130% cpu 1.405 totalthe test programs took the following format, where the fn main(x: Field, y: pub Field) {
// for _dynamic
let mut xs: [Field; 2] = [0, 2];
xs[x] = y;
// for _literal
let xs: [Field; 2] = [1, 2];
// all cases
let ys = xs.as_slice();
assert(ys[0] == 1);
} |
Co-authored-by: Maxim Vezenov <mvezenov@gmail.com>
…oir-lang/noir#4523) chore: making docs build before cutting versions (noir-lang/noir#4568) chore: fix docker test workflows (noir-lang/noir#4566) feat: allow usage of noir `#[test]` syntax in stdlib (noir-lang/noir#4553) feat: Add more impls on Option (noir-lang/noir#4549) chore: fixing some broken links (noir-lang/noir#4556) chore: separate tests for execution failures from compilation failures (noir-lang/noir#4559) feat: remove curly braces with fmt (noir-lang/noir#4529) fix: Make `nargo` the default binary for cargo run (noir-lang/noir#4554) fix: Evaluate operators in globals in types (noir-lang/noir#4537) chore: Add more `Hash` impls to stdlib (noir-lang/noir#4470)
Automated pull of development from the [noir](https://github.com/noir-lang/noir) programming language, a dependency of Aztec. BEGIN_COMMIT_OVERRIDE feat: add as_slice builtin function, add execution test (noir-lang/noir#4523) chore: making docs build before cutting versions (noir-lang/noir#4568) chore: fix docker test workflows (noir-lang/noir#4566) feat: allow usage of noir `#[test]` syntax in stdlib (noir-lang/noir#4553) feat: Add more impls on Option (noir-lang/noir#4549) chore: fixing some broken links (noir-lang/noir#4556) chore: separate tests for execution failures from compilation failures (noir-lang/noir#4559) feat: remove curly braces with fmt (noir-lang/noir#4529) fix: Make `nargo` the default binary for cargo run (noir-lang/noir#4554) fix: Evaluate operators in globals in types (noir-lang/noir#4537) chore: Add more `Hash` impls to stdlib (noir-lang/noir#4470) END_COMMIT_OVERRIDE --------- Co-authored-by: sirasistant <sirasistant@gmail.com>
Automated pull of development from the [noir](https://github.com/noir-lang/noir) programming language, a dependency of Aztec. BEGIN_COMMIT_OVERRIDE feat: add as_slice builtin function, add execution test (#4523) chore: making docs build before cutting versions (#4568) chore: fix docker test workflows (#4566) feat: allow usage of noir `#[test]` syntax in stdlib (#4553) feat: Add more impls on Option (#4549) chore: fixing some broken links (#4556) chore: separate tests for execution failures from compilation failures (#4559) feat: remove curly braces with fmt (#4529) fix: Make `nargo` the default binary for cargo run (#4554) fix: Evaluate operators in globals in types (#4537) chore: Add more `Hash` impls to stdlib (#4470) END_COMMIT_OVERRIDE --------- Co-authored-by: sirasistant <sirasistant@gmail.com>
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.29.0</summary> ## [0.29.0](aztec-package-v0.28.1...aztec-package-v0.29.0) (2024-03-18) ### Features * Initial Earthly CI ([#5069](#5069)) ([8e75fe5](8e75fe5)) </details> <details><summary>barretenberg.js: 0.29.0</summary> ## [0.29.0](barretenberg.js-v0.28.1...barretenberg.js-v0.29.0) (2024-03-18) ### Features * Initial Earthly CI ([#5069](#5069)) ([8e75fe5](8e75fe5)) </details> <details><summary>aztec-cli: 0.29.0</summary> ## [0.29.0](aztec-cli-v0.28.1...aztec-cli-v0.29.0) (2024-03-18) ### Features * Use deployer in address computation ([#5201](#5201)) ([258ff4a](258ff4a)) ### Miscellaneous * Delete ContractData ([#5258](#5258)) ([e516f9b](e516f9b)) * Delete ExtendedContractData struct ([#5248](#5248)) ([8ae0c13](8ae0c13)) * Removing redundant receipts check ([#5271](#5271)) ([5ab07fb](5ab07fb)) </details> <details><summary>aztec-packages: 0.29.0</summary> ## [0.29.0](aztec-packages-v0.28.1...aztec-packages-v0.29.0) (2024-03-18) ### ⚠ BREAKING CHANGES * Acir call opcode ([#4773](#4773)) ### Features * Acir call opcode ([#4773](#4773)) ([0b15db2](0b15db2)) * Add as_slice builtin function, add execution test (noir-lang/noir#4523) ([86e1a86](86e1a86)) * Add more impls on Option (noir-lang/noir#4549) ([86e1a86](86e1a86)) * Add RelWithAssert build ([#4997](#4997)) ([4f337c7](4f337c7)) * Allow usage of noir `#[test]` syntax in stdlib (noir-lang/noir#4553) ([86e1a86](86e1a86)) * **AuthWit:** Simplify create authwit syntax ([#5132](#5132)) ([d0a5b19](d0a5b19)) * **avm:** Brillig CONST of size > u128 ([#5217](#5217)) ([2e63479](2e63479)) * **avm:** Mov opcode with direct memory ([#5204](#5204)) ([08f9038](08f9038)), closes [#5159](#5159) * Brillig IR refactor ([#5233](#5233)) ([9a73348](9a73348)) * Check initializer msg.sender matches deployer from address preimage ([#5222](#5222)) ([438d16f](438d16f)) * Extended IPA tests and fuzzing ([#5140](#5140)) ([0ae5ace](0ae5ace)) * Initial Earthly CI ([#5069](#5069)) ([8e75fe5](8e75fe5)) * New Outbox Contract [#4768](#4768) ([#5090](#5090)) ([6421a3d](6421a3d)) * Remove curly braces with fmt (noir-lang/noir#4529) ([86e1a86](86e1a86)) * Remove curly braces with fmt (noir-lang/noir#4529) ([d8b8456](d8b8456)) * Remove unnecessary `mulmod`s from verifier contract ([#5269](#5269)) ([20d9c0c](20d9c0c)) * Signed integer division and modulus in brillig gen ([#5279](#5279)) ([82f8cf5](82f8cf5)) * Use deployer in address computation ([#5201](#5201)) ([258ff4a](258ff4a)) ### Bug Fixes * **avm-transpiler:** RETURN is direct ([#5277](#5277)) ([f90b2cf](f90b2cf)) * **bb:** Mac build ([#5253](#5253)) ([ae021c0](ae021c0)) * CVC5 api update ([#5203](#5203)) ([9cc32cb](9cc32cb)) * Evaluate operators in globals in types (noir-lang/noir#4537) ([86e1a86](86e1a86)) * Evaluate operators in globals in types (noir-lang/noir#4537) ([d8b8456](d8b8456)) * Make `nargo` the default binary for cargo run (noir-lang/noir#4554) ([86e1a86](86e1a86)) * Make `nargo` the default binary for cargo run (noir-lang/noir#4554) ([d8b8456](d8b8456)) * Revert "fix: noir mirror merge strat" ([#5250](#5250)) ([7e8e8e5](7e8e8e5)) * Validation requests ([#5236](#5236)) ([25ce33b](25ce33b)) ### Miscellaneous * Add avm team to codeowners for public context ([#5288](#5288)) ([e146076](e146076)) * Add more `Hash` impls to stdlib (noir-lang/noir#4470) ([86e1a86](86e1a86)) * Add more `Hash` impls to stdlib (noir-lang/noir#4470) ([d8b8456](d8b8456)) * Add quick explanatory comment to outbox suggested by [@benesjan](https://github.com/benesjan) ([#5247](#5247)) ([56e8451](56e8451)) * **avm-simulator:** Update e2e test ([#5283](#5283)) ([e9beeca](e9beeca)) * **avm-transpiler:** Return u8 in comparison ops ([#5280](#5280)) ([1a5eb69](1a5eb69)) * **avm-transpiler:** Transpiler cleanup ([#5218](#5218)) ([199e918](199e918)) * Delete ContractDao ([#5256](#5256)) ([544e278](544e278)) * Delete ContractData ([#5258](#5258)) ([e516f9b](e516f9b)) * Delete ExtendedContractData struct ([#5248](#5248)) ([8ae0c13](8ae0c13)) * Delete isInternal and isConstructor fields from FunctionData ([#5232](#5232)) ([dea3f87](dea3f87)) * Delete unused contract tree ts code ([#5229](#5229)) ([b48dd23](b48dd23)) * Delete unused hash functions ([#5231](#5231)) ([fed70a1](fed70a1)) * Fix docker test workflows (noir-lang/noir#4566) ([86e1a86](86e1a86)) * Fixing some broken links (noir-lang/noir#4556) ([86e1a86](86e1a86)) * Making docs build before cutting versions (noir-lang/noir#4568) ([86e1a86](86e1a86)) * Old inbox purge ([#5206](#5206)) ([a26d968](a26d968)) * Removing redundant receipts check ([#5271](#5271)) ([5ab07fb](5ab07fb)) * Separate tests for execution failures from compilation failures (noir-lang/noir#4559) ([86e1a86](86e1a86)) * Separate tests for execution failures from compilation failures (noir-lang/noir#4559) ([d8b8456](d8b8456)) * Template Zeromorph by PCS ([#5215](#5215)) ([03feab2](03feab2)) * Use inotifywait to run generate in yarn-project ([#5168](#5168)) ([137c13e](137c13e)) ### Documentation * **yp:** Remove contract tree and deploy data from circuits and state ([#5260](#5260)) ([acffa7b](acffa7b)) </details> <details><summary>barretenberg: 0.29.0</summary> ## [0.29.0](barretenberg-v0.28.1...barretenberg-v0.29.0) (2024-03-18) ### ⚠ BREAKING CHANGES * Acir call opcode ([#4773](#4773)) ### Features * Acir call opcode ([#4773](#4773)) ([0b15db2](0b15db2)) * Add RelWithAssert build ([#4997](#4997)) ([4f337c7](4f337c7)) * **avm:** Mov opcode with direct memory ([#5204](#5204)) ([08f9038](08f9038)), closes [#5159](#5159) * Extended IPA tests and fuzzing ([#5140](#5140)) ([0ae5ace](0ae5ace)) * Initial Earthly CI ([#5069](#5069)) ([8e75fe5](8e75fe5)) * Remove unnecessary `mulmod`s from verifier contract ([#5269](#5269)) ([20d9c0c](20d9c0c)) * Signed integer division and modulus in brillig gen ([#5279](#5279)) ([82f8cf5](82f8cf5)) ### Bug Fixes * **bb:** Mac build ([#5253](#5253)) ([ae021c0](ae021c0)) * CVC5 api update ([#5203](#5203)) ([9cc32cb](9cc32cb)) ### Miscellaneous * Template Zeromorph by PCS ([#5215](#5215)) ([03feab2](03feab2)) </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.29.0</summary> ## [0.29.0](AztecProtocol/aztec-packages@aztec-package-v0.28.1...aztec-package-v0.29.0) (2024-03-18) ### Features * Initial Earthly CI ([#5069](AztecProtocol/aztec-packages#5069)) ([8e75fe5](AztecProtocol/aztec-packages@8e75fe5)) </details> <details><summary>barretenberg.js: 0.29.0</summary> ## [0.29.0](AztecProtocol/aztec-packages@barretenberg.js-v0.28.1...barretenberg.js-v0.29.0) (2024-03-18) ### Features * Initial Earthly CI ([#5069](AztecProtocol/aztec-packages#5069)) ([8e75fe5](AztecProtocol/aztec-packages@8e75fe5)) </details> <details><summary>aztec-cli: 0.29.0</summary> ## [0.29.0](AztecProtocol/aztec-packages@aztec-cli-v0.28.1...aztec-cli-v0.29.0) (2024-03-18) ### Features * Use deployer in address computation ([#5201](AztecProtocol/aztec-packages#5201)) ([258ff4a](AztecProtocol/aztec-packages@258ff4a)) ### Miscellaneous * Delete ContractData ([#5258](AztecProtocol/aztec-packages#5258)) ([e516f9b](AztecProtocol/aztec-packages@e516f9b)) * Delete ExtendedContractData struct ([#5248](AztecProtocol/aztec-packages#5248)) ([8ae0c13](AztecProtocol/aztec-packages@8ae0c13)) * Removing redundant receipts check ([#5271](AztecProtocol/aztec-packages#5271)) ([5ab07fb](AztecProtocol/aztec-packages@5ab07fb)) </details> <details><summary>aztec-packages: 0.29.0</summary> ## [0.29.0](AztecProtocol/aztec-packages@aztec-packages-v0.28.1...aztec-packages-v0.29.0) (2024-03-18) ### ⚠ BREAKING CHANGES * Acir call opcode ([#4773](AztecProtocol/aztec-packages#4773)) ### Features * Acir call opcode ([#4773](AztecProtocol/aztec-packages#4773)) ([0b15db2](AztecProtocol/aztec-packages@0b15db2)) * Add as_slice builtin function, add execution test (noir-lang/noir#4523) ([86e1a86](AztecProtocol/aztec-packages@86e1a86)) * Add more impls on Option (noir-lang/noir#4549) ([86e1a86](AztecProtocol/aztec-packages@86e1a86)) * Add RelWithAssert build ([#4997](AztecProtocol/aztec-packages#4997)) ([4f337c7](AztecProtocol/aztec-packages@4f337c7)) * Allow usage of noir `#[test]` syntax in stdlib (noir-lang/noir#4553) ([86e1a86](AztecProtocol/aztec-packages@86e1a86)) * **AuthWit:** Simplify create authwit syntax ([#5132](AztecProtocol/aztec-packages#5132)) ([d0a5b19](AztecProtocol/aztec-packages@d0a5b19)) * **avm:** Brillig CONST of size > u128 ([#5217](AztecProtocol/aztec-packages#5217)) ([2e63479](AztecProtocol/aztec-packages@2e63479)) * **avm:** Mov opcode with direct memory ([#5204](AztecProtocol/aztec-packages#5204)) ([08f9038](AztecProtocol/aztec-packages@08f9038)), closes [#5159](AztecProtocol/aztec-packages#5159) * Brillig IR refactor ([#5233](AztecProtocol/aztec-packages#5233)) ([9a73348](AztecProtocol/aztec-packages@9a73348)) * Check initializer msg.sender matches deployer from address preimage ([#5222](AztecProtocol/aztec-packages#5222)) ([438d16f](AztecProtocol/aztec-packages@438d16f)) * Extended IPA tests and fuzzing ([#5140](AztecProtocol/aztec-packages#5140)) ([0ae5ace](AztecProtocol/aztec-packages@0ae5ace)) * Initial Earthly CI ([#5069](AztecProtocol/aztec-packages#5069)) ([8e75fe5](AztecProtocol/aztec-packages@8e75fe5)) * New Outbox Contract [#4768](AztecProtocol/aztec-packages#4768) ([#5090](AztecProtocol/aztec-packages#5090)) ([6421a3d](AztecProtocol/aztec-packages@6421a3d)) * Remove curly braces with fmt (noir-lang/noir#4529) ([86e1a86](AztecProtocol/aztec-packages@86e1a86)) * Remove curly braces with fmt (noir-lang/noir#4529) ([d8b8456](AztecProtocol/aztec-packages@d8b8456)) * Remove unnecessary `mulmod`s from verifier contract ([#5269](AztecProtocol/aztec-packages#5269)) ([20d9c0c](AztecProtocol/aztec-packages@20d9c0c)) * Signed integer division and modulus in brillig gen ([#5279](AztecProtocol/aztec-packages#5279)) ([82f8cf5](AztecProtocol/aztec-packages@82f8cf5)) * Use deployer in address computation ([#5201](AztecProtocol/aztec-packages#5201)) ([258ff4a](AztecProtocol/aztec-packages@258ff4a)) ### Bug Fixes * **avm-transpiler:** RETURN is direct ([#5277](AztecProtocol/aztec-packages#5277)) ([f90b2cf](AztecProtocol/aztec-packages@f90b2cf)) * **bb:** Mac build ([#5253](AztecProtocol/aztec-packages#5253)) ([ae021c0](AztecProtocol/aztec-packages@ae021c0)) * CVC5 api update ([#5203](AztecProtocol/aztec-packages#5203)) ([9cc32cb](AztecProtocol/aztec-packages@9cc32cb)) * Evaluate operators in globals in types (noir-lang/noir#4537) ([86e1a86](AztecProtocol/aztec-packages@86e1a86)) * Evaluate operators in globals in types (noir-lang/noir#4537) ([d8b8456](AztecProtocol/aztec-packages@d8b8456)) * Make `nargo` the default binary for cargo run (noir-lang/noir#4554) ([86e1a86](AztecProtocol/aztec-packages@86e1a86)) * Make `nargo` the default binary for cargo run (noir-lang/noir#4554) ([d8b8456](AztecProtocol/aztec-packages@d8b8456)) * Revert "fix: noir mirror merge strat" ([#5250](AztecProtocol/aztec-packages#5250)) ([7e8e8e5](AztecProtocol/aztec-packages@7e8e8e5)) * Validation requests ([#5236](AztecProtocol/aztec-packages#5236)) ([25ce33b](AztecProtocol/aztec-packages@25ce33b)) ### Miscellaneous * Add avm team to codeowners for public context ([#5288](AztecProtocol/aztec-packages#5288)) ([e146076](AztecProtocol/aztec-packages@e146076)) * Add more `Hash` impls to stdlib (noir-lang/noir#4470) ([86e1a86](AztecProtocol/aztec-packages@86e1a86)) * Add more `Hash` impls to stdlib (noir-lang/noir#4470) ([d8b8456](AztecProtocol/aztec-packages@d8b8456)) * Add quick explanatory comment to outbox suggested by [@benesjan](https://github.com/benesjan) ([#5247](AztecProtocol/aztec-packages#5247)) ([56e8451](AztecProtocol/aztec-packages@56e8451)) * **avm-simulator:** Update e2e test ([#5283](AztecProtocol/aztec-packages#5283)) ([e9beeca](AztecProtocol/aztec-packages@e9beeca)) * **avm-transpiler:** Return u8 in comparison ops ([#5280](AztecProtocol/aztec-packages#5280)) ([1a5eb69](AztecProtocol/aztec-packages@1a5eb69)) * **avm-transpiler:** Transpiler cleanup ([#5218](AztecProtocol/aztec-packages#5218)) ([199e918](AztecProtocol/aztec-packages@199e918)) * Delete ContractDao ([#5256](AztecProtocol/aztec-packages#5256)) ([544e278](AztecProtocol/aztec-packages@544e278)) * Delete ContractData ([#5258](AztecProtocol/aztec-packages#5258)) ([e516f9b](AztecProtocol/aztec-packages@e516f9b)) * Delete ExtendedContractData struct ([#5248](AztecProtocol/aztec-packages#5248)) ([8ae0c13](AztecProtocol/aztec-packages@8ae0c13)) * Delete isInternal and isConstructor fields from FunctionData ([#5232](AztecProtocol/aztec-packages#5232)) ([dea3f87](AztecProtocol/aztec-packages@dea3f87)) * Delete unused contract tree ts code ([#5229](AztecProtocol/aztec-packages#5229)) ([b48dd23](AztecProtocol/aztec-packages@b48dd23)) * Delete unused hash functions ([#5231](AztecProtocol/aztec-packages#5231)) ([fed70a1](AztecProtocol/aztec-packages@fed70a1)) * Fix docker test workflows (noir-lang/noir#4566) ([86e1a86](AztecProtocol/aztec-packages@86e1a86)) * Fixing some broken links (noir-lang/noir#4556) ([86e1a86](AztecProtocol/aztec-packages@86e1a86)) * Making docs build before cutting versions (noir-lang/noir#4568) ([86e1a86](AztecProtocol/aztec-packages@86e1a86)) * Old inbox purge ([#5206](AztecProtocol/aztec-packages#5206)) ([a26d968](AztecProtocol/aztec-packages@a26d968)) * Removing redundant receipts check ([#5271](AztecProtocol/aztec-packages#5271)) ([5ab07fb](AztecProtocol/aztec-packages@5ab07fb)) * Separate tests for execution failures from compilation failures (noir-lang/noir#4559) ([86e1a86](AztecProtocol/aztec-packages@86e1a86)) * Separate tests for execution failures from compilation failures (noir-lang/noir#4559) ([d8b8456](AztecProtocol/aztec-packages@d8b8456)) * Template Zeromorph by PCS ([#5215](AztecProtocol/aztec-packages#5215)) ([03feab2](AztecProtocol/aztec-packages@03feab2)) * Use inotifywait to run generate in yarn-project ([#5168](AztecProtocol/aztec-packages#5168)) ([137c13e](AztecProtocol/aztec-packages@137c13e)) ### Documentation * **yp:** Remove contract tree and deploy data from circuits and state ([#5260](AztecProtocol/aztec-packages#5260)) ([acffa7b](AztecProtocol/aztec-packages@acffa7b)) </details> <details><summary>barretenberg: 0.29.0</summary> ## [0.29.0](AztecProtocol/aztec-packages@barretenberg-v0.28.1...barretenberg-v0.29.0) (2024-03-18) ### ⚠ BREAKING CHANGES * Acir call opcode ([#4773](AztecProtocol/aztec-packages#4773)) ### Features * Acir call opcode ([#4773](AztecProtocol/aztec-packages#4773)) ([0b15db2](AztecProtocol/aztec-packages@0b15db2)) * Add RelWithAssert build ([#4997](AztecProtocol/aztec-packages#4997)) ([4f337c7](AztecProtocol/aztec-packages@4f337c7)) * **avm:** Mov opcode with direct memory ([#5204](AztecProtocol/aztec-packages#5204)) ([08f9038](AztecProtocol/aztec-packages@08f9038)), closes [#5159](AztecProtocol/aztec-packages#5159) * Extended IPA tests and fuzzing ([#5140](AztecProtocol/aztec-packages#5140)) ([0ae5ace](AztecProtocol/aztec-packages@0ae5ace)) * Initial Earthly CI ([#5069](AztecProtocol/aztec-packages#5069)) ([8e75fe5](AztecProtocol/aztec-packages@8e75fe5)) * Remove unnecessary `mulmod`s from verifier contract ([#5269](AztecProtocol/aztec-packages#5269)) ([20d9c0c](AztecProtocol/aztec-packages@20d9c0c)) * Signed integer division and modulus in brillig gen ([#5279](AztecProtocol/aztec-packages#5279)) ([82f8cf5](AztecProtocol/aztec-packages@82f8cf5)) ### Bug Fixes * **bb:** Mac build ([#5253](AztecProtocol/aztec-packages#5253)) ([ae021c0](AztecProtocol/aztec-packages@ae021c0)) * CVC5 api update ([#5203](AztecProtocol/aztec-packages#5203)) ([9cc32cb](AztecProtocol/aztec-packages@9cc32cb)) ### Miscellaneous * Template Zeromorph by PCS ([#5215](AztecProtocol/aztec-packages#5215)) ([03feab2](AztecProtocol/aztec-packages@03feab2)) </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: (28 commits) chore: fix assignees for opening issues based on CI (#4596) feat!: separating out array and slice types in the AST (#4504) chore: fix docs builds (#4593) chore: Standardise workspace JS dependencies (#4583) feat: Add `break` and `continue` in unconstrained code (#4569) chore: update deps (#4582) fix: Signed integer comparisons in brillig (#4579) chore: Add clarfiication on the difference in recursive aggregation circuits (#4567) feat: Sync from aztec-packages (#4573) fix: added error messages for passing oracles and references from unconstrained to constrained functions (#4570) feat: RC optimization pass (#4560) feat: add as_slice builtin function, add execution test (#4523) chore: making docs build before cutting versions (#4568) chore: fix docker test workflows (#4566) feat: allow usage of noir `#[test]` syntax in stdlib (#4553) feat: Add more impls on Option (#4549) chore: fixing some broken links (#4556) chore: separate tests for execution failures from compilation failures (#4559) feat: remove curly braces with fmt (#4529) fix: Make `nargo` the default binary for cargo run (#4554) ...
🤖 I have created a release *beep* *boop* --- <details><summary>0.26.0</summary> ## [0.26.0](v0.25.0...v0.26.0) (2024-03-25) ### ⚠ BREAKING CHANGES * **acir:** Program and witness stack structure (AztecProtocol/aztec-packages#5149) * automatic NoteInterface and NoteGetterOptions auto select (AztecProtocol/aztec-packages#4508) * separating out array and slice types in the AST ([#4504](#4504)) * Acir call opcode (AztecProtocol/aztec-packages#4773) * Support contracts with no constructor (AztecProtocol/aztec-packages#5175) * Remove open keyword from Noir (AztecProtocol/aztec-packages#4967) ### Features * Acir call opcode (AztecProtocol/aztec-packages#4773) ([c3c9e19](c3c9e19)) * **acir:** Program and witness stack structure (AztecProtocol/aztec-packages#5149) ([13eb71b](13eb71b)) * Add `break` and `continue` in unconstrained code ([#4569](#4569)) ([f2f827d](f2f827d)) * Add `nargo compile --watch` command ([#4464](#4464)) ([44e60b6](44e60b6)) * Add as_slice builtin function, add execution test ([#4523](#4523)) ([6a9ea35](6a9ea35)) * Add checks for bit size consistency on brillig gen ([#4542](#4542)) ([f3243b7](f3243b7)) * Add CMOV instruction to brillig and brillig gen (AztecProtocol/aztec-packages#5308) ([13eb71b](13eb71b)) * Add experimental `quote` expression to parser ([#4595](#4595)) ([4c3a30b](4c3a30b)) * Add more impls on Option ([#4549](#4549)) ([4cf700b](4cf700b)) * Add specific error for attempting `string[x] = ".."` ([#4611](#4611)) ([ff95fd9](ff95fd9)) * Allow usage of noir `#[test]` syntax in stdlib ([#4553](#4553)) ([a8b7cdb](a8b7cdb)) * Automatic NoteInterface and NoteGetterOptions auto select (AztecProtocol/aztec-packages#4508) ([13eb71b](13eb71b)) * **avm:** Brillig CONST of size > u128 (AztecProtocol/aztec-packages#5217) ([c3c9e19](c3c9e19)) * Brillig IR refactor (AztecProtocol/aztec-packages#5233) ([c3c9e19](c3c9e19)) * Check initialization arguments in constructors (AztecProtocol/aztec-packages#5144) ([d4213a0](d4213a0)) * Check initializer msg.sender matches deployer from address preimage (AztecProtocol/aztec-packages#5222) ([c3c9e19](c3c9e19)) * Initial Earthly CI (AztecProtocol/aztec-packages#5069) ([c3c9e19](c3c9e19)) * Integrated native ACVM (AztecProtocol/aztec-packages#4903) ([a6016b4](a6016b4)) * Make brillig-gen more AVM-friendly (AztecProtocol/aztec-packages#5091) ([a6016b4](a6016b4)) * New brillig field operations and refactor of binary operations (AztecProtocol/aztec-packages#5208) ([c3c9e19](c3c9e19)) * Optimize sha2 implementation ([#4441](#4441)) ([80373d6](80373d6)) * RC optimization pass ([#4560](#4560)) ([dfa5126](dfa5126)) * Remove curly braces with fmt ([#4529](#4529)) ([fe9a437](fe9a437)) * Separating out array and slice types in the AST ([#4504](#4504)) ([9a241f9](9a241f9)) * Signed integer division and modulus in brillig gen (AztecProtocol/aztec-packages#5279) ([c3c9e19](c3c9e19)) * Support contracts with no constructor (AztecProtocol/aztec-packages#5175) ([c3c9e19](c3c9e19)) * Sync from noir (AztecProtocol/aztec-packages#5234) ([c3c9e19](c3c9e19)) * Sync from noir (AztecProtocol/aztec-packages#5286) ([c3c9e19](c3c9e19)) * Visible aliases for nargo commands ([#4453](#4453)) ([773cf19](773cf19)) ### Bug Fixes * **acir_gen:** More granular element sizes array check ([#4528](#4528)) ([f93d16e](f93d16e)) * Added error messages for passing oracles and references from unconstrained to constrained functions ([#4570](#4570)) ([265bd8b](265bd8b)) * Allow non-integer globals to reference struct methods ([#4490](#4490)) ([00d6494](00d6494)) * Dynamic assert messages in brillig ([#4531](#4531)) ([e24d3fc](e24d3fc)) * Evaluate operators in globals in types ([#4537](#4537)) ([c8aa16b](c8aa16b)) * Make `nargo` the default binary for cargo run ([#4554](#4554)) ([de4986e](de4986e)) * Signed integer comparisons in brillig ([#4579](#4579)) ([938d5e8](938d5e8)) * **ssa:** Use accurate type during SSA AsSlice simplficiation ([#4610](#4610)) ([0473497](0473497)) * Substitute generics when checking the field count of a type ([#4547](#4547)) ([eeeebac](eeeebac)) ### Miscellaneous Chores * Remove open keyword from Noir (AztecProtocol/aztec-packages#4967) ([a6016b4](a6016b4)) </details> <details><summary>0.42.0</summary> ## [0.42.0](v0.41.0...v0.42.0) (2024-03-25) ### ⚠ BREAKING CHANGES * **acir:** Program and witness stack structure (AztecProtocol/aztec-packages#5149) * automatic NoteInterface and NoteGetterOptions auto select (AztecProtocol/aztec-packages#4508) * Acir call opcode (AztecProtocol/aztec-packages#4773) * Support contracts with no constructor (AztecProtocol/aztec-packages#5175) * Internal as a macro (AztecProtocol/aztec-packages#4898) * move noir out of yarn-project (AztecProtocol/aztec-packages#4479) * note type ids (AztecProtocol/aztec-packages#4500) * rename bigint_neg into bigint_sub (AztecProtocol/aztec-packages#4420) * Add expression width into acir (AztecProtocol/aztec-packages#4014) * init storage macro (AztecProtocol/aztec-packages#4200) * **acir:** Move `is_recursive` flag to be part of the circuit definition (AztecProtocol/aztec-packages#4221) * Sync commits from `aztec-packages` ([#4144](#4144)) * Breaking changes from aztec-packages ([#3955](#3955)) * Rename Arithmetic opcode to AssertZero ([#3840](#3840)) * Remove unused methods on ACIR opcodes ([#3841](#3841)) * Remove partial backend feature ([#3805](#3805)) ### Features * Acir call opcode (AztecProtocol/aztec-packages#4773) ([c3c9e19](c3c9e19)) * **acir:** Program and witness stack structure (AztecProtocol/aztec-packages#5149) ([13eb71b](13eb71b)) * Add bit size to const opcode (AztecProtocol/aztec-packages#4385) ([158c8ce](158c8ce)) * Add CMOV instruction to brillig and brillig gen (AztecProtocol/aztec-packages#5308) ([13eb71b](13eb71b)) * Add expression width into acir (AztecProtocol/aztec-packages#4014) ([158c8ce](158c8ce)) * Add instrumentation for tracking variables in debugging ([#4122](#4122)) ([c58d691](c58d691)) * Add poseidon2 opcode implementation for acvm/brillig, and Noir ([#4398](#4398)) ([10e8292](10e8292)) * Add support for overriding expression width ([#4117](#4117)) ([c8026d5](c8026d5)) * Added cast opcode and cast calldata (AztecProtocol/aztec-packages#4423) ([78ef013](78ef013)) * Allow brillig to read arrays directly from memory (AztecProtocol/aztec-packages#4460) ([158c8ce](158c8ce)) * Allow nested arrays and vectors in Brillig foreign calls (AztecProtocol/aztec-packages#4478) ([158c8ce](158c8ce)) * Allow variables and stack trace inspection in the debugger ([#4184](#4184)) ([bf263fc](bf263fc)) * Automatic NoteInterface and NoteGetterOptions auto select (AztecProtocol/aztec-packages#4508) ([13eb71b](13eb71b)) * **avm:** Back in avm context with macro - refactor context (AztecProtocol/aztec-packages#4438) ([158c8ce](158c8ce)) * **avm:** Brillig CONST of size > u128 (AztecProtocol/aztec-packages#5217) ([c3c9e19](c3c9e19)) * **aztec-nr:** Initial work for aztec public vm macro (AztecProtocol/aztec-packages#4400) ([158c8ce](158c8ce)) * Aztec-packages ([#3754](#3754)) ([c043265](c043265)) * Backpropagate constants in ACIR during optimization ([#3926](#3926)) ([aad0da0](aad0da0)) * Breaking changes from aztec-packages ([#3955](#3955)) ([5be049e](5be049e)) * Brillig IR refactor (AztecProtocol/aztec-packages#5233) ([c3c9e19](c3c9e19)) * Check initializer msg.sender matches deployer from address preimage (AztecProtocol/aztec-packages#5222) ([c3c9e19](c3c9e19)) * Evaluation of dynamic assert messages ([#4101](#4101)) ([c284e01](c284e01)) * Init storage macro (AztecProtocol/aztec-packages#4200) ([158c8ce](158c8ce)) * Initial Earthly CI (AztecProtocol/aztec-packages#5069) ([c3c9e19](c3c9e19)) * Internal as a macro (AztecProtocol/aztec-packages#4898) ([5f57ebb](5f57ebb)) * New brillig field operations and refactor of binary operations (AztecProtocol/aztec-packages#5208) ([c3c9e19](c3c9e19)) * Note type ids (AztecProtocol/aztec-packages#4500) ([78ef013](78ef013)) * Remove range constraints from witnesses which are constrained to be constants ([#3928](#3928)) ([afe9c7a](afe9c7a)) * Remove replacement of boolean range opcodes with `AssertZero` opcodes ([#4107](#4107)) ([dac0e87](dac0e87)) * Signed integer division and modulus in brillig gen (AztecProtocol/aztec-packages#5279) ([c3c9e19](c3c9e19)) * Speed up transformation of debug messages ([#3815](#3815)) ([2a8af1e](2a8af1e)) * Support contracts with no constructor (AztecProtocol/aztec-packages#5175) ([c3c9e19](c3c9e19)) * Sync `aztec-packages` ([#4011](#4011)) ([fee2452](fee2452)) * Sync commits from `aztec-packages` ([#4068](#4068)) ([7a8f3a3](7a8f3a3)) * Sync commits from `aztec-packages` ([#4144](#4144)) ([0205d3b](0205d3b)) * Sync from aztec-packages ([#4483](#4483)) ([fe8f277](fe8f277)) * Sync from noir (AztecProtocol/aztec-packages#5234) ([c3c9e19](c3c9e19)) * Sync from noir (AztecProtocol/aztec-packages#5286) ([c3c9e19](c3c9e19)) ### Bug Fixes * Deserialize odd length hex literals ([#3747](#3747)) ([4000fb2](4000fb2)) * Noir test incorrect reporting (AztecProtocol/aztec-packages#4925) ([5f57ebb](5f57ebb)) * Remove panic from `init_log_level` in `acvm_js` ([#4195](#4195)) ([2e26530](2e26530)) * Return error rather instead of panicking on invalid circuit ([#3976](#3976)) ([67201bf](67201bf)) ### Miscellaneous Chores * **acir:** Move `is_recursive` flag to be part of the circuit definition (AztecProtocol/aztec-packages#4221) ([158c8ce](158c8ce)) * Move noir out of yarn-project (AztecProtocol/aztec-packages#4479) ([78ef013](78ef013)) * Remove partial backend feature ([#3805](#3805)) ([0383100](0383100)) * Remove unused methods on ACIR opcodes ([#3841](#3841)) ([9e5d0e8](9e5d0e8)) * Rename Arithmetic opcode to AssertZero ([#3840](#3840)) ([836f171](836f171)) * Rename bigint_neg into bigint_sub (AztecProtocol/aztec-packages#4420) ([158c8ce](158c8ce)) </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>0.26.0</summary> ## [0.26.0](v0.25.0...v0.26.0) (2024-03-25) ### ⚠ BREAKING CHANGES * **acir:** Program and witness stack structure (AztecProtocol/aztec-packages#5149) * automatic NoteInterface and NoteGetterOptions auto select (AztecProtocol/aztec-packages#4508) * separating out array and slice types in the AST ([#4504](#4504)) * Acir call opcode (AztecProtocol/aztec-packages#4773) * Support contracts with no constructor (AztecProtocol/aztec-packages#5175) * Remove open keyword from Noir (AztecProtocol/aztec-packages#4967) ### Features * Acir call opcode (AztecProtocol/aztec-packages#4773) ([c3c9e19](c3c9e19)) * **acir:** Program and witness stack structure (AztecProtocol/aztec-packages#5149) ([13eb71b](13eb71b)) * Add `break` and `continue` in unconstrained code ([#4569](#4569)) ([f2f827d](f2f827d)) * Add `nargo compile --watch` command ([#4464](#4464)) ([44e60b6](44e60b6)) * Add as_slice builtin function, add execution test ([#4523](#4523)) ([6a9ea35](6a9ea35)) * Add checks for bit size consistency on brillig gen ([#4542](#4542)) ([f3243b7](f3243b7)) * Add CMOV instruction to brillig and brillig gen (AztecProtocol/aztec-packages#5308) ([13eb71b](13eb71b)) * Add experimental `quote` expression to parser ([#4595](#4595)) ([4c3a30b](4c3a30b)) * Add more impls on Option ([#4549](#4549)) ([4cf700b](4cf700b)) * Add specific error for attempting `string[x] = ".."` ([#4611](#4611)) ([ff95fd9](ff95fd9)) * Allow usage of noir `#[test]` syntax in stdlib ([#4553](#4553)) ([a8b7cdb](a8b7cdb)) * Automatic NoteInterface and NoteGetterOptions auto select (AztecProtocol/aztec-packages#4508) ([13eb71b](13eb71b)) * **avm:** Brillig CONST of size > u128 (AztecProtocol/aztec-packages#5217) ([c3c9e19](c3c9e19)) * Brillig IR refactor (AztecProtocol/aztec-packages#5233) ([c3c9e19](c3c9e19)) * Check initialization arguments in constructors (AztecProtocol/aztec-packages#5144) ([d4213a0](d4213a0)) * Check initializer msg.sender matches deployer from address preimage (AztecProtocol/aztec-packages#5222) ([c3c9e19](c3c9e19)) * Initial Earthly CI (AztecProtocol/aztec-packages#5069) ([c3c9e19](c3c9e19)) * Integrated native ACVM (AztecProtocol/aztec-packages#4903) ([a6016b4](a6016b4)) * Make brillig-gen more AVM-friendly (AztecProtocol/aztec-packages#5091) ([a6016b4](a6016b4)) * New brillig field operations and refactor of binary operations (AztecProtocol/aztec-packages#5208) ([c3c9e19](c3c9e19)) * Optimize sha2 implementation ([#4441](#4441)) ([80373d6](80373d6)) * RC optimization pass ([#4560](#4560)) ([dfa5126](dfa5126)) * Remove curly braces with fmt ([#4529](#4529)) ([fe9a437](fe9a437)) * Separating out array and slice types in the AST ([#4504](#4504)) ([9a241f9](9a241f9)) * Signed integer division and modulus in brillig gen (AztecProtocol/aztec-packages#5279) ([c3c9e19](c3c9e19)) * Support contracts with no constructor (AztecProtocol/aztec-packages#5175) ([c3c9e19](c3c9e19)) * Sync from noir (AztecProtocol/aztec-packages#5234) ([c3c9e19](c3c9e19)) * Sync from noir (AztecProtocol/aztec-packages#5286) ([c3c9e19](c3c9e19)) * Visible aliases for nargo commands ([#4453](#4453)) ([773cf19](773cf19)) ### Bug Fixes * **acir_gen:** More granular element sizes array check ([#4528](#4528)) ([f93d16e](f93d16e)) * Added error messages for passing oracles and references from unconstrained to constrained functions ([#4570](#4570)) ([265bd8b](265bd8b)) * Allow non-integer globals to reference struct methods ([#4490](#4490)) ([00d6494](00d6494)) * Dynamic assert messages in brillig ([#4531](#4531)) ([e24d3fc](e24d3fc)) * Evaluate operators in globals in types ([#4537](#4537)) ([c8aa16b](c8aa16b)) * Make `nargo` the default binary for cargo run ([#4554](#4554)) ([de4986e](de4986e)) * Signed integer comparisons in brillig ([#4579](#4579)) ([938d5e8](938d5e8)) * **ssa:** Use accurate type during SSA AsSlice simplficiation ([#4610](#4610)) ([0473497](0473497)) * Substitute generics when checking the field count of a type ([#4547](#4547)) ([eeeebac](eeeebac)) ### Miscellaneous Chores * Remove open keyword from Noir (AztecProtocol/aztec-packages#4967) ([a6016b4](a6016b4)) </details> <details><summary>0.42.0</summary> ## [0.42.0](v0.41.0...v0.42.0) (2024-03-25) ### ⚠ BREAKING CHANGES * **acir:** Program and witness stack structure (AztecProtocol/aztec-packages#5149) * automatic NoteInterface and NoteGetterOptions auto select (AztecProtocol/aztec-packages#4508) * Acir call opcode (AztecProtocol/aztec-packages#4773) * Support contracts with no constructor (AztecProtocol/aztec-packages#5175) * Internal as a macro (AztecProtocol/aztec-packages#4898) * move noir out of yarn-project (AztecProtocol/aztec-packages#4479) * note type ids (AztecProtocol/aztec-packages#4500) * rename bigint_neg into bigint_sub (AztecProtocol/aztec-packages#4420) * Add expression width into acir (AztecProtocol/aztec-packages#4014) * init storage macro (AztecProtocol/aztec-packages#4200) * **acir:** Move `is_recursive` flag to be part of the circuit definition (AztecProtocol/aztec-packages#4221) * Sync commits from `aztec-packages` ([#4144](#4144)) * Breaking changes from aztec-packages ([#3955](#3955)) * Rename Arithmetic opcode to AssertZero ([#3840](#3840)) * Remove unused methods on ACIR opcodes ([#3841](#3841)) * Remove partial backend feature ([#3805](#3805)) ### Features * Acir call opcode (AztecProtocol/aztec-packages#4773) ([c3c9e19](c3c9e19)) * **acir:** Program and witness stack structure (AztecProtocol/aztec-packages#5149) ([13eb71b](13eb71b)) * Add bit size to const opcode (AztecProtocol/aztec-packages#4385) ([158c8ce](158c8ce)) * Add CMOV instruction to brillig and brillig gen (AztecProtocol/aztec-packages#5308) ([13eb71b](13eb71b)) * Add expression width into acir (AztecProtocol/aztec-packages#4014) ([158c8ce](158c8ce)) * Add instrumentation for tracking variables in debugging ([#4122](#4122)) ([c58d691](c58d691)) * Add poseidon2 opcode implementation for acvm/brillig, and Noir ([#4398](#4398)) ([10e8292](10e8292)) * Add support for overriding expression width ([#4117](#4117)) ([c8026d5](c8026d5)) * Added cast opcode and cast calldata (AztecProtocol/aztec-packages#4423) ([78ef013](78ef013)) * Allow brillig to read arrays directly from memory (AztecProtocol/aztec-packages#4460) ([158c8ce](158c8ce)) * Allow nested arrays and vectors in Brillig foreign calls (AztecProtocol/aztec-packages#4478) ([158c8ce](158c8ce)) * Allow variables and stack trace inspection in the debugger ([#4184](#4184)) ([bf263fc](bf263fc)) * Automatic NoteInterface and NoteGetterOptions auto select (AztecProtocol/aztec-packages#4508) ([13eb71b](13eb71b)) * **avm:** Back in avm context with macro - refactor context (AztecProtocol/aztec-packages#4438) ([158c8ce](158c8ce)) * **avm:** Brillig CONST of size > u128 (AztecProtocol/aztec-packages#5217) ([c3c9e19](c3c9e19)) * **aztec-nr:** Initial work for aztec public vm macro (AztecProtocol/aztec-packages#4400) ([158c8ce](158c8ce)) * Aztec-packages ([#3754](#3754)) ([c043265](c043265)) * Backpropagate constants in ACIR during optimization ([#3926](#3926)) ([aad0da0](aad0da0)) * Breaking changes from aztec-packages ([#3955](#3955)) ([5be049e](5be049e)) * Brillig IR refactor (AztecProtocol/aztec-packages#5233) ([c3c9e19](c3c9e19)) * Check initializer msg.sender matches deployer from address preimage (AztecProtocol/aztec-packages#5222) ([c3c9e19](c3c9e19)) * Evaluation of dynamic assert messages ([#4101](#4101)) ([c284e01](c284e01)) * Init storage macro (AztecProtocol/aztec-packages#4200) ([158c8ce](158c8ce)) * Initial Earthly CI (AztecProtocol/aztec-packages#5069) ([c3c9e19](c3c9e19)) * Internal as a macro (AztecProtocol/aztec-packages#4898) ([5f57ebb](5f57ebb)) * New brillig field operations and refactor of binary operations (AztecProtocol/aztec-packages#5208) ([c3c9e19](c3c9e19)) * Note type ids (AztecProtocol/aztec-packages#4500) ([78ef013](78ef013)) * Remove range constraints from witnesses which are constrained to be constants ([#3928](#3928)) ([afe9c7a](afe9c7a)) * Remove replacement of boolean range opcodes with `AssertZero` opcodes ([#4107](#4107)) ([dac0e87](dac0e87)) * Signed integer division and modulus in brillig gen (AztecProtocol/aztec-packages#5279) ([c3c9e19](c3c9e19)) * Speed up transformation of debug messages ([#3815](#3815)) ([2a8af1e](2a8af1e)) * Support contracts with no constructor (AztecProtocol/aztec-packages#5175) ([c3c9e19](c3c9e19)) * Sync `aztec-packages` ([#4011](#4011)) ([fee2452](fee2452)) * Sync commits from `aztec-packages` ([#4068](#4068)) ([7a8f3a3](7a8f3a3)) * Sync commits from `aztec-packages` ([#4144](#4144)) ([0205d3b](0205d3b)) * Sync from aztec-packages ([#4483](#4483)) ([fe8f277](fe8f277)) * Sync from noir (AztecProtocol/aztec-packages#5234) ([c3c9e19](c3c9e19)) * Sync from noir (AztecProtocol/aztec-packages#5286) ([c3c9e19](c3c9e19)) ### Bug Fixes * Deserialize odd length hex literals ([#3747](#3747)) ([4000fb2](4000fb2)) * Noir test incorrect reporting (AztecProtocol/aztec-packages#4925) ([5f57ebb](5f57ebb)) * Remove panic from `init_log_level` in `acvm_js` ([#4195](#4195)) ([2e26530](2e26530)) * Return error rather instead of panicking on invalid circuit ([#3976](#3976)) ([67201bf](67201bf)) ### Miscellaneous Chores * **acir:** Move `is_recursive` flag to be part of the circuit definition (AztecProtocol/aztec-packages#4221) ([158c8ce](158c8ce)) * Move noir out of yarn-project (AztecProtocol/aztec-packages#4479) ([78ef013](78ef013)) * Remove partial backend feature ([#3805](#3805)) ([0383100](0383100)) * Remove unused methods on ACIR opcodes ([#3841](#3841)) ([9e5d0e8](9e5d0e8)) * Rename Arithmetic opcode to AssertZero ([#3840](#3840)) ([836f171](836f171)) * Rename bigint_neg into bigint_sub (AztecProtocol/aztec-packages#4420) ([158c8ce](158c8ce)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
Description
Problem*
Expected to resolve slowdown in #4504
Summary*
Adds builtin function for
as_slice, allowing it to be much more efficient (O(1)instead ofO(n))Additional Context
Documentation*
Check one:
PR Checklist*
cargo fmton default settings.