-
Notifications
You must be signed in to change notification settings - Fork 213
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: Fix brillig slowdown when assigning arrays in loops #4472
Conversation
I think the regression should be tested by https://github.com/noir-lang/noir/blob/master/test_programs/execution_success/brillig_cow_regression/src/main.nr . Let me see if I can run this PR on aztec-packages to check wether this would be problematic in a different way but it should be fine |
Seems like it did break something AztecProtocol/aztec-packages#5105 I thing the breakage has to do with maximum bytecode size for contracts, maybe due to extra array copies due to increasing RCs more often |
Yeah size went up for the token contract from 7k fields to a bit more than 9k fields. But seems to run fine |
The inc_rc in SSA seems to be pretty conservative though and slows down quite a bit some simulated protocol circuits, maybe we should consider in the future introducing ownership semantics so user's can know when they are adding extra overhead to their programs via cloning... But I don't know how complex of a task it'd be @jfecher |
@sirasistant I'm not sure. I think in the meantime we should focus on optimizing Rc more, removing unnecessary ref counts, etc. For example, if an array is read-only in a function it doesn't need its Rc increased. |
I think this'd be a good thing to track in issues if there are cases in these circuits that are slowed down. We can introduce optimizations for them like an RC-removing pass for example. |
…oir-lang/noir#4472) chore: Move `check_method_signatures` to type checking phase (noir-lang/noir#4516) chore(ci): fix JS publishing workflow checking out inconsistent commits (noir-lang/noir#4493) fix(ssa): Handle mergers of slices returned from calls (noir-lang/noir#4496) chore: Add HashMap docs (noir-lang/noir#4457) chore: custom hash for eddsa (noir-lang/noir#4440) chore: update various dependencies (noir-lang/noir#4513) fix: Allow type aliases in main (noir-lang/noir#4505) chore: add `ModuleDeclaration` struct (noir-lang/noir#4512) fix: Force src impl for == on slices (noir-lang/noir#4507) chore: pass `import_directive` by reference (noir-lang/noir#4511) feat: Track stack frames and their variables in the debugger (noir-lang/noir#4188) chore: add regression test for issue 4449 (noir-lang/noir#4503) chore: pass macro processors by reference (noir-lang/noir#4501) chore: bump bb to 0.26.3 (noir-lang/noir#4488) fix: handling of gh deps in noir_wasm (noir-lang/noir#4499) fix: iterative flattening pass (noir-lang/noir#4492) chore: Move templated code for assert_message into the stdlib (noir-lang/noir#4475) chore: pull out separate function for compiling and running a test chore: update cargo deny config (noir-lang/noir#4486) feat: run tests in parallel in `nargo test` (noir-lang/noir#4484)
🤖 I have created a release *beep* *boop* --- <details><summary>0.25.0</summary> ## [0.25.0](v0.24.0...v0.25.0) (2024-03-11) ### ⚠ BREAKING CHANGES * Internal as a macro (AztecProtocol/aztec-packages#4898) * reserve `unchecked` keyword ([#4432](#4432)) * Remove empty value from bounded vec ([#4431](#4431)) * Ban Fields in for loop indices and bitwise ops ([#4376](#4376)) * bump msrv to 1.73.0 ([#4406](#4406)) * **ci:** Bump MSRV to 1.72.1 and enforce that ACVM can be published using updated lockfile ([#4385](#4385)) * Restrict bit sizes ([#4235](#4235)) * move noir out of yarn-project (AztecProtocol/aztec-packages#4479) * note type ids (AztecProtocol/aztec-packages#4500) ### Features * Add eddsa_poseidon_to_pub function to stdlib with test + docs ([#4473](#4473)) ([00d2c32](00d2c32)) * Add HashMap to the stdlib ([#4242](#4242)) ([650ffc5](650ffc5)) * Add option to set max memory for bb.js ([#4227](#4227)) ([8a6b131](8a6b131)) * Add overflow and underflow checks for unsigned integers in brillig ([#4445](#4445)) ([21fc4b8](21fc4b8)) * Add poseidon2 opcode implementation for acvm/brillig, and Noir ([#4398](#4398)) ([10e8292](10e8292)) * Added cast opcode and cast calldata (AztecProtocol/aztec-packages#4423) ([78ef013](78ef013)) * Allow type aliases to reference other aliases ([#4353](#4353)) ([c44ef14](c44ef14)) * Backpropagate constants in ACIR during optimization ([#3926](#3926)) ([aad0da0](aad0da0)) * **ci:** Use wasm-opt when compiling wasm packages ([#4334](#4334)) ([e382921](e382921)) * DAP Preflight and debugger compilation options ([#4185](#4185)) ([e0ad0b2](e0ad0b2)) * Expose separate functions to compile programs vs contracts in `noir_wasm` ([#4413](#4413)) ([7cd5fdb](7cd5fdb)) * Internal as a macro (AztecProtocol/aztec-packages#4898) ([5f57ebb](5f57ebb)) * Note type ids (AztecProtocol/aztec-packages#4500) ([78ef013](78ef013)) * Restrict bit sizes ([#4235](#4235)) ([1048f81](1048f81)) * Run tests in parallel in `nargo test` ([#4484](#4484)) ([761734e](761734e)) * Skip redundant range checks in brillig ([#4460](#4460)) ([cb4c1c5](cb4c1c5)) * Sync from aztec-packages ([#4483](#4483)) ([fe8f277](fe8f277)) * Track stack frames and their variables in the debugger ([#4188](#4188)) ([ae1a9d9](ae1a9d9)) * TypeVariableKind for just Integers ([#4118](#4118)) ([c956be8](c956be8)) * Update error message when trying to load workspace as dependency ([#4393](#4393)) ([d2585e7](d2585e7)) ### Bug Fixes * **acir:** Array dynamic flatten ([#4351](#4351)) ([b2aaeab](b2aaeab)) * **acir:** Use types on dynamic arrays ([#4364](#4364)) ([ba2c541](ba2c541)) * Add `follow_bindings` to follow `Type::Alias` links ([#4521](#4521)) ([b94adb9](b94adb9)) * Add handling to `noir_wasm` for projects without dependencies ([#4344](#4344)) ([4982251](4982251)) * Allow type aliases in main ([#4505](#4505)) ([8a5359c](8a5359c)) * Ban Fields in for loop indices and bitwise ops ([#4376](#4376)) ([601fd9a](601fd9a)) * Brillig range check with consistent bit size ([#4357](#4357)) ([ea47d4a](ea47d4a)) * Build noir_codegen when publishing ([#4448](#4448)) ([cb1ceee](cb1ceee)) * Consistent bit size for truncate ([#4370](#4370)) ([dcd7a1e](dcd7a1e)) * Correct formatting for databus visibility types ([#4423](#4423)) ([cd796de](cd796de)) * Correct invalid brillig codegen for `EmbeddedCurvePoint.add` ([#4382](#4382)) ([5051ec4](5051ec4)) * **docs:** Update install versions ([#4396](#4396)) ([b283637](b283637)) * **docs:** Update noirjs_app for 0.23 ([#4378](#4378)) ([f77f702](f77f702)) * Enforce matching types of binary ops in SSA ([#4391](#4391)) ([70866ae](70866ae)) * Fix brillig slowdown when assigning arrays in loops ([#4472](#4472)) ([2a53545](2a53545)) * **flake:** Stop flake.nix removing ignored-tests.txt ([#4455](#4455)) ([ebaf05a](ebaf05a)) * Force src impl for == on slices ([#4507](#4507)) ([1691274](1691274)) * Handling of gh deps in noir_wasm ([#4499](#4499)) ([1d65370](1d65370)) * Iterative flattening pass ([#4492](#4492)) ([33c1ef7](33c1ef7)) * Noir test incorrect reporting (AztecProtocol/aztec-packages#4925) ([5f57ebb](5f57ebb)) * Only add `.nr` files to file manager ([#4380](#4380)) ([8536c7c](8536c7c)) * Remove panic when generic array length is not resolvable ([#4408](#4408)) ([00ab3db](00ab3db)) * Remove print from monomorphization pass ([#4417](#4417)) ([27c66b3](27c66b3)) * **ssa:** Handle mergers of slices returned from calls ([#4496](#4496)) ([f988d02](f988d02)) * Use correct type for numeric generics ([#4386](#4386)) ([0a1d109](0a1d109)) * Variables from trait constraints being permanently bound over when used within a trait impl ([#4450](#4450)) ([ac60ef5](ac60ef5)) ### Miscellaneous Chores * Bump msrv to 1.73.0 ([#4406](#4406)) ([b5e5c30](b5e5c30)) * **ci:** Bump MSRV to 1.72.1 and enforce that ACVM can be published using updated lockfile ([#4385](#4385)) ([2fc95d2](2fc95d2)) * Move noir out of yarn-project (AztecProtocol/aztec-packages#4479) ([78ef013](78ef013)) * Remove empty value from bounded vec ([#4431](#4431)) ([b9384fb](b9384fb)) * Reserve `unchecked` keyword ([#4432](#4432)) ([9544813](9544813)) </details> <details><summary>0.41.0</summary> ## [0.41.0](v0.40.0...v0.41.0) (2024-03-11) ### ⚠ BREAKING CHANGES * 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 * Add bit size to const opcode (AztecProtocol/aztec-packages#4385) ([158c8ce](158c8ce)) * 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)) * **avm:** Back in avm context with macro - refactor context (AztecProtocol/aztec-packages#4438) ([158c8ce](158c8ce)) * **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)) * Evaluation of dynamic assert messages ([#4101](#4101)) ([c284e01](c284e01)) * Init storage macro (AztecProtocol/aztec-packages#4200) ([158c8ce](158c8ce)) * Internal as a macro (AztecProtocol/aztec-packages#4898) ([5f57ebb](5f57ebb)) * 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)) * Speed up transformation of debug messages ([#3815](#3815)) ([2a8af1e](2a8af1e)) * 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)) ### 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). --------- Co-authored-by: Savio <[email protected]>
* master: chore: generalise `FunctionVisibility` to `ItemVisibility` (#4495) fix: Dynamic assert messages in brillig (#4531) chore: organize the `blackbox_solver` crate (#4519) fix(acir_gen): More granular element sizes array check (#4528) chore: Release Noir(0.25.0) (#4352) chore: document big integers (#4487) fix: Add `follow_bindings` to follow `Type::Alias` links (#4521) fix: Fix brillig slowdown when assigning arrays in loops (#4472) chore: Move `check_method_signatures` to type checking phase (#4516) chore(ci): fix JS publishing workflow checking out inconsistent commits (#4493) fix(ssa): Handle mergers of slices returned from calls (#4496) chore: Add HashMap docs (#4457) chore: custom hash for eddsa (#4440) chore: update various dependencies (#4513)
noir-lang/noir#4495) fix: Dynamic assert messages in brillig (noir-lang/noir#4531) chore: organize the `blackbox_solver` crate (noir-lang/noir#4519) fix(acir_gen): More granular element sizes array check (noir-lang/noir#4528) chore: Release Noir(0.25.0) (noir-lang/noir#4352) chore: document big integers (noir-lang/noir#4487) fix: Add `follow_bindings` to follow `Type::Alias` links (noir-lang/noir#4521) fix: Fix brillig slowdown when assigning arrays in loops (noir-lang/noir#4472) chore: Move `check_method_signatures` to type checking phase (noir-lang/noir#4516) chore(ci): fix JS publishing workflow checking out inconsistent commits (noir-lang/noir#4493) fix(ssa): Handle mergers of slices returned from calls (noir-lang/noir#4496) chore: Add HashMap docs (noir-lang/noir#4457) chore: custom hash for eddsa (noir-lang/noir#4440) chore: update various dependencies (noir-lang/noir#4513) fix: Allow type aliases in main (noir-lang/noir#4505) chore: add `ModuleDeclaration` struct (noir-lang/noir#4512) fix: Force src impl for == on slices (noir-lang/noir#4507) chore: pass `import_directive` by reference (noir-lang/noir#4511) feat: Track stack frames and their variables in the debugger (noir-lang/noir#4188) chore: add regression test for issue 4449 (noir-lang/noir#4503) chore: pass macro processors by reference (noir-lang/noir#4501) chore: bump bb to 0.26.3 (noir-lang/noir#4488) fix: handling of gh deps in noir_wasm (noir-lang/noir#4499) fix: iterative flattening pass (noir-lang/noir#4492) chore: Move templated code for assert_message into the stdlib (noir-lang/noir#4475) chore: pull out separate function for compiling and running a test chore: update cargo deny config (noir-lang/noir#4486) feat: run tests in parallel in `nargo test` (noir-lang/noir#4484)
…/noir#4495) fix: Dynamic assert messages in brillig (noir-lang/noir#4531) chore: organize the `blackbox_solver` crate (noir-lang/noir#4519) fix(acir_gen): More granular element sizes array check (noir-lang/noir#4528) chore: Release Noir(0.25.0) (noir-lang/noir#4352) chore: document big integers (noir-lang/noir#4487) fix: Add `follow_bindings` to follow `Type::Alias` links (noir-lang/noir#4521) fix: Fix brillig slowdown when assigning arrays in loops (noir-lang/noir#4472) chore: Move `check_method_signatures` to type checking phase (noir-lang/noir#4516) chore(ci): fix JS publishing workflow checking out inconsistent commits (noir-lang/noir#4493) fix(ssa): Handle mergers of slices returned from calls (noir-lang/noir#4496) chore: Add HashMap docs (noir-lang/noir#4457) chore: custom hash for eddsa (noir-lang/noir#4440) chore: update various dependencies (noir-lang/noir#4513) fix: Allow type aliases in main (noir-lang/noir#4505) chore: add `ModuleDeclaration` struct (noir-lang/noir#4512) fix: Force src impl for == on slices (noir-lang/noir#4507) chore: pass `import_directive` by reference (noir-lang/noir#4511) feat: Track stack frames and their variables in the debugger (noir-lang/noir#4188) chore: add regression test for issue 4449 (noir-lang/noir#4503) chore: pass macro processors by reference (noir-lang/noir#4501) chore: bump bb to 0.26.3 (noir-lang/noir#4488) fix: handling of gh deps in noir_wasm (noir-lang/noir#4499) fix: iterative flattening pass (noir-lang/noir#4492) chore: Move templated code for assert_message into the stdlib (noir-lang/noir#4475) chore: pull out separate function for compiling and running a test chore: update cargo deny config (noir-lang/noir#4486) feat: run tests in parallel in `nargo test` (noir-lang/noir#4484)
Automated pull of development from the [noir](https://github.com/noir-lang/noir) programming language, a dependency of Aztec. BEGIN_COMMIT_OVERRIDE chore: generalise `FunctionVisibility` to `ItemVisibility` (noir-lang/noir#4495) fix: Dynamic assert messages in brillig (noir-lang/noir#4531) chore: organize the `blackbox_solver` crate (noir-lang/noir#4519) fix(acir_gen): More granular element sizes array check (noir-lang/noir#4528) chore: Release Noir(0.25.0) (noir-lang/noir#4352) chore: document big integers (noir-lang/noir#4487) fix: Add `follow_bindings` to follow `Type::Alias` links (noir-lang/noir#4521) fix: Fix brillig slowdown when assigning arrays in loops (noir-lang/noir#4472) chore: Move `check_method_signatures` to type checking phase (noir-lang/noir#4516) chore(ci): fix JS publishing workflow checking out inconsistent commits (noir-lang/noir#4493) fix(ssa): Handle mergers of slices returned from calls (noir-lang/noir#4496) chore: Add HashMap docs (noir-lang/noir#4457) chore: custom hash for eddsa (noir-lang/noir#4440) chore: update various dependencies (noir-lang/noir#4513) fix: Allow type aliases in main (noir-lang/noir#4505) chore: add `ModuleDeclaration` struct (noir-lang/noir#4512) fix: Force src impl for == on slices (noir-lang/noir#4507) chore: pass `import_directive` by reference (noir-lang/noir#4511) feat: Track stack frames and their variables in the debugger (noir-lang/noir#4188) chore: add regression test for issue 4449 (noir-lang/noir#4503) chore: pass macro processors by reference (noir-lang/noir#4501) chore: bump bb to 0.26.3 (noir-lang/noir#4488) fix: handling of gh deps in noir_wasm (noir-lang/noir#4499) fix: iterative flattening pass (noir-lang/noir#4492) chore: Move templated code for assert_message into the stdlib (noir-lang/noir#4475) chore: pull out separate function for compiling and running a test chore: update cargo deny config (noir-lang/noir#4486) feat: run tests in parallel in `nargo test` (noir-lang/noir#4484) END_COMMIT_OVERRIDE --------- Co-authored-by: TomAFrench <[email protected]> Co-authored-by: Tom French <[email protected]>
Automated pull of development from the [noir](https://github.com/noir-lang/noir) programming language, a dependency of Aztec. BEGIN_COMMIT_OVERRIDE chore: generalise `FunctionVisibility` to `ItemVisibility` (#4495) fix: Dynamic assert messages in brillig (#4531) chore: organize the `blackbox_solver` crate (#4519) fix(acir_gen): More granular element sizes array check (#4528) chore: Release Noir(0.25.0) (#4352) chore: document big integers (#4487) fix: Add `follow_bindings` to follow `Type::Alias` links (#4521) fix: Fix brillig slowdown when assigning arrays in loops (#4472) chore: Move `check_method_signatures` to type checking phase (#4516) chore(ci): fix JS publishing workflow checking out inconsistent commits (#4493) fix(ssa): Handle mergers of slices returned from calls (#4496) chore: Add HashMap docs (#4457) chore: custom hash for eddsa (#4440) chore: update various dependencies (#4513) fix: Allow type aliases in main (#4505) chore: add `ModuleDeclaration` struct (#4512) fix: Force src impl for == on slices (#4507) chore: pass `import_directive` by reference (#4511) feat: Track stack frames and their variables in the debugger (#4188) chore: add regression test for issue 4449 (#4503) chore: pass macro processors by reference (#4501) chore: bump bb to 0.26.3 (#4488) fix: handling of gh deps in noir_wasm (#4499) fix: iterative flattening pass (#4492) chore: Move templated code for assert_message into the stdlib (#4475) chore: pull out separate function for compiling and running a test chore: update cargo deny config (#4486) feat: run tests in parallel in `nargo test` (#4484) END_COMMIT_OVERRIDE --------- Co-authored-by: TomAFrench <[email protected]> Co-authored-by: Tom French <[email protected]>
Automated pull of development from the [noir](https://github.com/noir-lang/noir) programming language, a dependency of Aztec. BEGIN_COMMIT_OVERRIDE chore: generalise `FunctionVisibility` to `ItemVisibility` (#4495) fix: Dynamic assert messages in brillig (#4531) chore: organize the `blackbox_solver` crate (#4519) fix(acir_gen): More granular element sizes array check (#4528) chore: Release Noir(0.25.0) (#4352) chore: document big integers (#4487) fix: Add `follow_bindings` to follow `Type::Alias` links (#4521) fix: Fix brillig slowdown when assigning arrays in loops (#4472) chore: Move `check_method_signatures` to type checking phase (#4516) chore(ci): fix JS publishing workflow checking out inconsistent commits (#4493) fix(ssa): Handle mergers of slices returned from calls (#4496) chore: Add HashMap docs (#4457) chore: custom hash for eddsa (#4440) chore: update various dependencies (#4513) fix: Allow type aliases in main (#4505) chore: add `ModuleDeclaration` struct (#4512) fix: Force src impl for == on slices (#4507) chore: pass `import_directive` by reference (#4511) feat: Track stack frames and their variables in the debugger (#4188) chore: add regression test for issue 4449 (#4503) chore: pass macro processors by reference (#4501) chore: bump bb to 0.26.3 (#4488) fix: handling of gh deps in noir_wasm (#4499) fix: iterative flattening pass (#4492) chore: Move templated code for assert_message into the stdlib (#4475) chore: pull out separate function for compiling and running a test chore: update cargo deny config (#4486) feat: run tests in parallel in `nargo test` (#4484) END_COMMIT_OVERRIDE --------- Co-authored-by: TomAFrench <[email protected]> Co-authored-by: Tom French <[email protected]>
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.27.2</summary> ## [0.27.2](aztec-package-v0.27.1...aztec-package-v0.27.2) (2024-03-13) ### Miscellaneous * **aztec-package:** Synchronize aztec-packages versions </details> <details><summary>barretenberg.js: 0.27.2</summary> ## [0.27.2](barretenberg.js-v0.27.1...barretenberg.js-v0.27.2) (2024-03-13) ### Miscellaneous * **barretenberg.js:** Synchronize aztec-packages versions </details> <details><summary>aztec-cli: 0.27.2</summary> ## [0.27.2](aztec-cli-v0.27.1...aztec-cli-v0.27.2) (2024-03-13) ### Miscellaneous * **aztec-cli:** Synchronize aztec-packages versions </details> <details><summary>aztec-packages: 0.27.2</summary> ## [0.27.2](aztec-packages-v0.27.1...aztec-packages-v0.27.2) (2024-03-13) ### Features * Check initialization arguments in constructors ([#5144](#5144)) ([d003bd6](d003bd6)) * Multithreaded prover folding ([#5147](#5147)) ([94922fc](94922fc)) * Run tests in parallel in `nargo test` (noir-lang/noir#4484) ([58e15ed](58e15ed)) * Track stack frames and their variables in the debugger (noir-lang/noir#4188) ([58e15ed](58e15ed)) ### Bug Fixes * **acir_gen:** More granular element sizes array check (noir-lang/noir#4528) ([58e15ed](58e15ed)) * Add `follow_bindings` to follow `Type::Alias` links (noir-lang/noir#4521) ([58e15ed](58e15ed)) * Allow type aliases in main (noir-lang/noir#4505) ([58e15ed](58e15ed)) * Constant gen ([#5172](#5172)) ([394a0e0](394a0e0)) * **docs:** Update quickstart.md ([#5021](#5021)) ([be9f8a1](be9f8a1)) * Dynamic assert messages in brillig (noir-lang/noir#4531) ([58e15ed](58e15ed)) * Fix brillig slowdown when assigning arrays in loops (noir-lang/noir#4472) ([58e15ed](58e15ed)) * Fix deployments ([#5183](#5183)) ([596253b](596253b)) * Force src impl for == on slices (noir-lang/noir#4507) ([58e15ed](58e15ed)) * Handling of gh deps in noir_wasm (noir-lang/noir#4499) ([58e15ed](58e15ed)) * Intermittent invert 0 in Goblin ([#5174](#5174)) ([3e68b49](3e68b49)) * Iterative flattening pass (noir-lang/noir#4492) ([58e15ed](58e15ed)) * Noir mirror merge strat ([#5166](#5166)) ([74fa8d6](74fa8d6)) * **ssa:** Handle mergers of slices returned from calls (noir-lang/noir#4496) ([58e15ed](58e15ed)) ### Miscellaneous * Add `ModuleDeclaration` struct (noir-lang/noir#4512) ([58e15ed](58e15ed)) * Add HashMap docs (noir-lang/noir#4457) ([58e15ed](58e15ed)) * Add regression test for issue 4449 (noir-lang/noir#4503) ([58e15ed](58e15ed)) * Better output in ci_deploy_contracts.sh ([#5171](#5171)) ([8d73f8a](8d73f8a)) * Bump bb to 0.26.3 (noir-lang/noir#4488) ([58e15ed](58e15ed)) * **ci:** Fix JS publishing workflow checking out inconsistent commits (noir-lang/noir#4493) ([58e15ed](58e15ed)) * Custom hash for eddsa (noir-lang/noir#4440) ([58e15ed](58e15ed)) * Deterministic mode ([#5155](#5155)) ([e68b56a](e68b56a)) * Document big integers (noir-lang/noir#4487) ([58e15ed](58e15ed)) * Generalise `FunctionVisibility` to `ItemVisibility` (noir-lang/noir#4495) ([58e15ed](58e15ed)) * Interaction for a mock first circuit handled inside the `EccOpQueue` ([#4854](#4854)) ([d9cbdc8](d9cbdc8)) * Move `check_method_signatures` to type checking phase (noir-lang/noir#4516) ([58e15ed](58e15ed)) * Move templated code for assert_message into the stdlib (noir-lang/noir#4475) ([58e15ed](58e15ed)) * Organize the `blackbox_solver` crate (noir-lang/noir#4519) ([58e15ed](58e15ed)) * Pass `import_directive` by reference (noir-lang/noir#4511) ([58e15ed](58e15ed)) * Pass macro processors by reference (noir-lang/noir#4501) ([58e15ed](58e15ed)) * Pull out separate function for compiling and running a test ([58e15ed](58e15ed)) * Release Noir(0.25.0) (noir-lang/noir#4352) ([58e15ed](58e15ed)) * Update cargo deny config (noir-lang/noir#4486) ([58e15ed](58e15ed)) * Update various dependencies (noir-lang/noir#4513) ([58e15ed](58e15ed)) </details> <details><summary>barretenberg: 0.27.2</summary> ## [0.27.2](barretenberg-v0.27.1...barretenberg-v0.27.2) (2024-03-13) ### Features * Multithreaded prover folding ([#5147](#5147)) ([94922fc](94922fc)) ### Bug Fixes * Intermittent invert 0 in Goblin ([#5174](#5174)) ([3e68b49](3e68b49)) ### Miscellaneous * Interaction for a mock first circuit handled inside the `EccOpQueue` ([#4854](#4854)) ([d9cbdc8](d9cbdc8)) </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: (48 commits) feat: Visible aliases for nargo commands (#4453) feat: Sync from aztec-packages (#4494) feat: Add checks for bit size consistency on brillig gen (#4542) fix: Allow non-integer globals to reference struct methods (#4490) chore: generalise `FunctionVisibility` to `ItemVisibility` (#4495) fix: Dynamic assert messages in brillig (#4531) chore: organize the `blackbox_solver` crate (#4519) fix(acir_gen): More granular element sizes array check (#4528) chore: Release Noir(0.25.0) (#4352) chore: document big integers (#4487) fix: Add `follow_bindings` to follow `Type::Alias` links (#4521) fix: Fix brillig slowdown when assigning arrays in loops (#4472) chore: Move `check_method_signatures` to type checking phase (#4516) chore(ci): fix JS publishing workflow checking out inconsistent commits (#4493) fix(ssa): Handle mergers of slices returned from calls (#4496) chore: Add HashMap docs (#4457) chore: custom hash for eddsa (#4440) chore: update various dependencies (#4513) fix: Allow type aliases in main (#4505) chore: add `ModuleDeclaration` struct (#4512) ...
* master: (36 commits) fix: Substitute generics when checking the field count of a type (#4547) feat: optimize sha2 implementation (#4441) chore: allow setting namespace visibility on functions (#4510) feat: Visible aliases for nargo commands (#4453) feat: Sync from aztec-packages (#4494) feat: Add checks for bit size consistency on brillig gen (#4542) fix: Allow non-integer globals to reference struct methods (#4490) chore: generalise `FunctionVisibility` to `ItemVisibility` (#4495) fix: Dynamic assert messages in brillig (#4531) chore: organize the `blackbox_solver` crate (#4519) fix(acir_gen): More granular element sizes array check (#4528) chore: Release Noir(0.25.0) (#4352) chore: document big integers (#4487) fix: Add `follow_bindings` to follow `Type::Alias` links (#4521) fix: Fix brillig slowdown when assigning arrays in loops (#4472) chore: Move `check_method_signatures` to type checking phase (#4516) chore(ci): fix JS publishing workflow checking out inconsistent commits (#4493) fix(ssa): Handle mergers of slices returned from calls (#4496) chore: Add HashMap docs (#4457) chore: custom hash for eddsa (#4440) ...
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.27.2</summary> ## [0.27.2](AztecProtocol/aztec-packages@aztec-package-v0.27.1...aztec-package-v0.27.2) (2024-03-13) ### Miscellaneous * **aztec-package:** Synchronize aztec-packages versions </details> <details><summary>barretenberg.js: 0.27.2</summary> ## [0.27.2](AztecProtocol/aztec-packages@barretenberg.js-v0.27.1...barretenberg.js-v0.27.2) (2024-03-13) ### Miscellaneous * **barretenberg.js:** Synchronize aztec-packages versions </details> <details><summary>aztec-cli: 0.27.2</summary> ## [0.27.2](AztecProtocol/aztec-packages@aztec-cli-v0.27.1...aztec-cli-v0.27.2) (2024-03-13) ### Miscellaneous * **aztec-cli:** Synchronize aztec-packages versions </details> <details><summary>aztec-packages: 0.27.2</summary> ## [0.27.2](AztecProtocol/aztec-packages@aztec-packages-v0.27.1...aztec-packages-v0.27.2) (2024-03-13) ### Features * Check initialization arguments in constructors ([#5144](AztecProtocol/aztec-packages#5144)) ([d003bd6](AztecProtocol/aztec-packages@d003bd6)) * Multithreaded prover folding ([#5147](AztecProtocol/aztec-packages#5147)) ([94922fc](AztecProtocol/aztec-packages@94922fc)) * Run tests in parallel in `nargo test` (noir-lang/noir#4484) ([58e15ed](AztecProtocol/aztec-packages@58e15ed)) * Track stack frames and their variables in the debugger (noir-lang/noir#4188) ([58e15ed](AztecProtocol/aztec-packages@58e15ed)) ### Bug Fixes * **acir_gen:** More granular element sizes array check (noir-lang/noir#4528) ([58e15ed](AztecProtocol/aztec-packages@58e15ed)) * Add `follow_bindings` to follow `Type::Alias` links (noir-lang/noir#4521) ([58e15ed](AztecProtocol/aztec-packages@58e15ed)) * Allow type aliases in main (noir-lang/noir#4505) ([58e15ed](AztecProtocol/aztec-packages@58e15ed)) * Constant gen ([#5172](AztecProtocol/aztec-packages#5172)) ([394a0e0](AztecProtocol/aztec-packages@394a0e0)) * **docs:** Update quickstart.md ([#5021](AztecProtocol/aztec-packages#5021)) ([be9f8a1](AztecProtocol/aztec-packages@be9f8a1)) * Dynamic assert messages in brillig (noir-lang/noir#4531) ([58e15ed](AztecProtocol/aztec-packages@58e15ed)) * Fix brillig slowdown when assigning arrays in loops (noir-lang/noir#4472) ([58e15ed](AztecProtocol/aztec-packages@58e15ed)) * Fix deployments ([#5183](AztecProtocol/aztec-packages#5183)) ([596253b](AztecProtocol/aztec-packages@596253b)) * Force src impl for == on slices (noir-lang/noir#4507) ([58e15ed](AztecProtocol/aztec-packages@58e15ed)) * Handling of gh deps in noir_wasm (noir-lang/noir#4499) ([58e15ed](AztecProtocol/aztec-packages@58e15ed)) * Intermittent invert 0 in Goblin ([#5174](AztecProtocol/aztec-packages#5174)) ([3e68b49](AztecProtocol/aztec-packages@3e68b49)) * Iterative flattening pass (noir-lang/noir#4492) ([58e15ed](AztecProtocol/aztec-packages@58e15ed)) * Noir mirror merge strat ([#5166](AztecProtocol/aztec-packages#5166)) ([74fa8d6](AztecProtocol/aztec-packages@74fa8d6)) * **ssa:** Handle mergers of slices returned from calls (noir-lang/noir#4496) ([58e15ed](AztecProtocol/aztec-packages@58e15ed)) ### Miscellaneous * Add `ModuleDeclaration` struct (noir-lang/noir#4512) ([58e15ed](AztecProtocol/aztec-packages@58e15ed)) * Add HashMap docs (noir-lang/noir#4457) ([58e15ed](AztecProtocol/aztec-packages@58e15ed)) * Add regression test for issue 4449 (noir-lang/noir#4503) ([58e15ed](AztecProtocol/aztec-packages@58e15ed)) * Better output in ci_deploy_contracts.sh ([#5171](AztecProtocol/aztec-packages#5171)) ([8d73f8a](AztecProtocol/aztec-packages@8d73f8a)) * Bump bb to 0.26.3 (noir-lang/noir#4488) ([58e15ed](AztecProtocol/aztec-packages@58e15ed)) * **ci:** Fix JS publishing workflow checking out inconsistent commits (noir-lang/noir#4493) ([58e15ed](AztecProtocol/aztec-packages@58e15ed)) * Custom hash for eddsa (noir-lang/noir#4440) ([58e15ed](AztecProtocol/aztec-packages@58e15ed)) * Deterministic mode ([#5155](AztecProtocol/aztec-packages#5155)) ([e68b56a](AztecProtocol/aztec-packages@e68b56a)) * Document big integers (noir-lang/noir#4487) ([58e15ed](AztecProtocol/aztec-packages@58e15ed)) * Generalise `FunctionVisibility` to `ItemVisibility` (noir-lang/noir#4495) ([58e15ed](AztecProtocol/aztec-packages@58e15ed)) * Interaction for a mock first circuit handled inside the `EccOpQueue` ([#4854](AztecProtocol/aztec-packages#4854)) ([d9cbdc8](AztecProtocol/aztec-packages@d9cbdc8)) * Move `check_method_signatures` to type checking phase (noir-lang/noir#4516) ([58e15ed](AztecProtocol/aztec-packages@58e15ed)) * Move templated code for assert_message into the stdlib (noir-lang/noir#4475) ([58e15ed](AztecProtocol/aztec-packages@58e15ed)) * Organize the `blackbox_solver` crate (noir-lang/noir#4519) ([58e15ed](AztecProtocol/aztec-packages@58e15ed)) * Pass `import_directive` by reference (noir-lang/noir#4511) ([58e15ed](AztecProtocol/aztec-packages@58e15ed)) * Pass macro processors by reference (noir-lang/noir#4501) ([58e15ed](AztecProtocol/aztec-packages@58e15ed)) * Pull out separate function for compiling and running a test ([58e15ed](AztecProtocol/aztec-packages@58e15ed)) * Release Noir(0.25.0) (noir-lang/noir#4352) ([58e15ed](AztecProtocol/aztec-packages@58e15ed)) * Update cargo deny config (noir-lang/noir#4486) ([58e15ed](AztecProtocol/aztec-packages@58e15ed)) * Update various dependencies (noir-lang/noir#4513) ([58e15ed](AztecProtocol/aztec-packages@58e15ed)) </details> <details><summary>barretenberg: 0.27.2</summary> ## [0.27.2](AztecProtocol/aztec-packages@barretenberg-v0.27.1...barretenberg-v0.27.2) (2024-03-13) ### Features * Multithreaded prover folding ([#5147](AztecProtocol/aztec-packages#5147)) ([94922fc](AztecProtocol/aztec-packages@94922fc)) ### Bug Fixes * Intermittent invert 0 in Goblin ([#5174](AztecProtocol/aztec-packages#5174)) ([3e68b49](AztecProtocol/aztec-packages@3e68b49)) ### Miscellaneous * Interaction for a mock first circuit handled inside the `EccOpQueue` ([#4854](AztecProtocol/aztec-packages#4854)) ([d9cbdc8](AztecProtocol/aztec-packages@d9cbdc8)) </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*
Resolves #3795
Summary*
This is an older version of #4210 which undoes the change in d331ee2 due to a regression #4332.
This PR is not yet confirmed to work since I do not have a test case for it! @sirasistant, do you mind seeing if this fixes the regression issue?
Additional Context
Documentation*
Check one:
PR Checklist*
cargo fmt
on default settings.