chore: early check type equality in try_unify#7263
Conversation
There was a problem hiding this comment.
⚠️ Performance Alert ⚠️
Possible performance regression was detected for benchmark 'Test Suite Duration'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20.
| Benchmark suite | Current: ccf9c99 | Previous: fc75298 | Ratio |
|---|---|---|---|
AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_blob |
62 s |
50 s |
1.24 |
This comment was automatically generated by workflow using github-action-benchmark.
CC: @TomAFrench
|
Awesome, can we create a regression test out of that branch? I'm not sure how much we can just pull out the changes made in that branch vs the full contract. |
jfecher
left a comment
There was a problem hiding this comment.
Had to double check the raw equality check on types worked as expected but it does and monomorphization relies on this as well to some degree.
|
I tried. Or, well, at least I tried with a program that had As a side note, I was curious if this generally improved compile times. In Aztec-Packages |
…_make_arrays` (noir-lang/noir#7264) chore: early check type equality in try_unify (noir-lang/noir#7263) feat(LSP): suggest enum variants without parameters (noir-lang/noir#7261) feat(experimental): Parse match expressions (noir-lang/noir#7243) feat(experimental): Implement zeroed for enums (noir-lang/noir#7252) fix(ssa): Only attempt to inline constant Brillig calls for entry points (noir-lang/noir#7260) fix: Add missing `is_empty` check for enums (noir-lang/noir#7257) feat(experimental): Implement enum tag constants (noir-lang/noir#7183) fix(unrolling): Fetch original bytecode size from the original function (noir-lang/noir#7253) fix(ssa): Use number of SSA instructions for the Brillig unrolling bytecode size limit (noir-lang/noir#7242) feat: Sync from aztec-packages (noir-lang/noir#7241) chore: bump gates diff (noir-lang/noir#7245) feat: simplify subtraction from self to return zero (noir-lang/noir#7189) feat: allow specifying multiple patterns in nargo test (noir-lang/noir#7186) fix: Avoid type error when calling something with a type alias of a function (noir-lang/noir#7239) feat: Allow resolved types in constructors (noir-lang/noir#7223) chore: clarify to_radix docs examples (noir-lang/noir#7230) chore: fix struct example (noir-lang/noir#7198) feat(optimization): Add purity analysis to SSA (noir-lang/noir#7197) chore: start tracking time to run critical library tests (noir-lang/noir#7221) chore: Rework defunctionalize pass to not rely on DFG bugs (noir-lang/noir#7222) fix(brillig): Globals entry point reachability analysis (noir-lang/noir#7188) chore: update docs to use devcontainer feature (noir-lang/noir#7206) chore(ci): Add test for global vars entry points regression (noir-lang/noir#7209) chore(ssa): Flip the SSA Brillig constraint check to off by default (noir-lang/noir#7211) chore(docs): moving references to noir-starter to awesome-noir (noir-lang/noir#7203) chore: build docs in the merge queue (noir-lang/noir#7218) fix: correct reversed callstacks (noir-lang/noir#7212) chore: exclude dependency fetching time from benchmarks (noir-lang/noir#7210) feat(experimental): Support enums in comptime code (noir-lang/noir#7194)
noir-lang/noir#7264) chore: early check type equality in try_unify (noir-lang/noir#7263) feat(LSP): suggest enum variants without parameters (noir-lang/noir#7261) feat(experimental): Parse match expressions (noir-lang/noir#7243) feat(experimental): Implement zeroed for enums (noir-lang/noir#7252) fix(ssa): Only attempt to inline constant Brillig calls for entry points (noir-lang/noir#7260) fix: Add missing `is_empty` check for enums (noir-lang/noir#7257) feat(experimental): Implement enum tag constants (noir-lang/noir#7183) fix(unrolling): Fetch original bytecode size from the original function (noir-lang/noir#7253) fix(ssa): Use number of SSA instructions for the Brillig unrolling bytecode size limit (noir-lang/noir#7242) feat: Sync from aztec-packages (noir-lang/noir#7241) chore: bump gates diff (noir-lang/noir#7245) feat: simplify subtraction from self to return zero (noir-lang/noir#7189) feat: allow specifying multiple patterns in nargo test (noir-lang/noir#7186) fix: Avoid type error when calling something with a type alias of a function (noir-lang/noir#7239) feat: Allow resolved types in constructors (noir-lang/noir#7223) chore: clarify to_radix docs examples (noir-lang/noir#7230) chore: fix struct example (noir-lang/noir#7198) feat(optimization): Add purity analysis to SSA (noir-lang/noir#7197) chore: start tracking time to run critical library tests (noir-lang/noir#7221) chore: Rework defunctionalize pass to not rely on DFG bugs (noir-lang/noir#7222) fix(brillig): Globals entry point reachability analysis (noir-lang/noir#7188) chore: update docs to use devcontainer feature (noir-lang/noir#7206) chore(ci): Add test for global vars entry points regression (noir-lang/noir#7209) chore(ssa): Flip the SSA Brillig constraint check to off by default (noir-lang/noir#7211) chore(docs): moving references to noir-starter to awesome-noir (noir-lang/noir#7203) chore: build docs in the merge queue (noir-lang/noir#7218) fix: correct reversed callstacks (noir-lang/noir#7212) chore: exclude dependency fetching time from benchmarks (noir-lang/noir#7210) feat(experimental): Support enums in comptime code (noir-lang/noir#7194)
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.75.0</summary> ## [0.75.0](aztec-package-v0.74.0...aztec-package-v0.75.0) (2025-02-06) ### Miscellaneous * Playground name change ([#11720](#11720)) ([c5cbf65](c5cbf65)) </details> <details><summary>barretenberg.js: 0.75.0</summary> ## [0.75.0](barretenberg.js-v0.74.0...barretenberg.js-v0.75.0) (2025-02-06) ### Miscellaneous * Better bundling for bb.js, remove aztec.js bundling ([#11761](#11761)) ([8cc3f0a](8cc3f0a)) * Playground name change ([#11720](#11720)) ([c5cbf65](c5cbf65)) </details> <details><summary>aztec-packages: 0.75.0</summary> ## [0.75.0](aztec-packages-v0.74.0...aztec-packages-v0.75.0) (2025-02-06) ### ⚠ BREAKING CHANGES * introduce `WithHash<T>` + use it in `PublicImmutable` ([#8022](#8022)) * leonidas library ([#11596](#11596)) ### Features * Allow resolved types in constructors (noir-lang/noir#7223) ([b60a39d](b60a39d)) * Allow specifying multiple patterns in nargo test (noir-lang/noir#7186) ([b60a39d](b60a39d)) * Contracts deployed in txe should emit deployment nullifier automatically ([#11708](#11708)) ([20f5653](20f5653)) * **docs:** Applying structure feedback + adding nodes docs ([#10976](#10976)) ([2fd08ba](2fd08ba)) * **docs:** Inspiration / ideas page ([#11755](#11755)) ([0b012f1](0b012f1)) * **experimental:** Implement enum tag constants (noir-lang/noir#7183) ([b60a39d](b60a39d)) * **experimental:** Implement zeroed for enums (noir-lang/noir#7252) ([b60a39d](b60a39d)) * **experimental:** Parse match expressions (noir-lang/noir#7243) ([b60a39d](b60a39d)) * **experimental:** Support enums in comptime code (noir-lang/noir#7194) ([b60a39d](b60a39d)) * Gen public base prover.toml ([#11757](#11757)) ([1fa89da](1fa89da)) * Introduce `WithHash<T>` + use it in `PublicImmutable` ([#8022](#8022)) ([6c15604](6c15604)) * K-shifts ([#11663](#11663)) ([511abe5](511abe5)) * Leonidas library ([#11596](#11596)) ([e8cfed7](e8cfed7)) * **LSP:** Suggest enum variants without parameters (noir-lang/noir#7261) ([b60a39d](b60a39d)) * **optimization:** Add purity analysis to SSA (noir-lang/noir#7197) ([b60a39d](b60a39d)) * Report wrong proof length in the verifier contract ([#11728](#11728)) ([1a83cd2](1a83cd2)) * Simplify subtraction from self to return zero (noir-lang/noir#7189) ([b60a39d](b60a39d)) * Sync from aztec-packages (noir-lang/noir#7241) ([b60a39d](b60a39d)) ### Bug Fixes * Add missing `is_empty` check for enums (noir-lang/noir#7257) ([b60a39d](b60a39d)) * Avoid type error when calling something with a type alias of a function (noir-lang/noir#7239) ([b60a39d](b60a39d)) * **brillig:** Globals entry point reachability analysis (noir-lang/noir#7188) ([b60a39d](b60a39d)) * Contracts with no private / public functions should not fail to generate a contract artifact ([#11744](#11744)) ([672171c](672171c)) * Correct reversed callstacks (noir-lang/noir#7212) ([b60a39d](b60a39d)) * Deflake prover node epoch proof quote test ([#11773](#11773)) ([04e1061](04e1061)) * **docs:** Fix docs previews ([#11736](#11736)) ([255b3d8](255b3d8)) * Handle sequencer building block mid-synch ([#11735](#11735)) ([435a0af](435a0af)) * Prevent panic within `remove_possibly_mutated_cached_make_arrays` (noir-lang/noir#7264) ([b60a39d](b60a39d)) * **ssa:** Only attempt to inline constant Brillig calls for entry points (noir-lang/noir#7260) ([b60a39d](b60a39d)) * **ssa:** Use number of SSA instructions for the Brillig unrolling bytecode size limit (noir-lang/noir#7242) ([b60a39d](b60a39d)) * **unrolling:** Fetch original bytecode size from the original function (noir-lang/noir#7253) ([b60a39d](b60a39d)) ### Miscellaneous * **avm:** Add names to lookup settings ([#11768](#11768)) ([fafe3ba](fafe3ba)) * **avm:** Full row cleanup ([#11767](#11767)) ([6145cd0](6145cd0)) * **avm:** Use lookup by clk for sha params ([#11762](#11762)) ([b003567](b003567)) * Better bundling for bb.js, remove aztec.js bundling ([#11761](#11761)) ([8cc3f0a](8cc3f0a)) * Build docs in the merge queue (noir-lang/noir#7218) ([b60a39d](b60a39d)) * Bump gates diff (noir-lang/noir#7245) ([b60a39d](b60a39d)) * Change log level for block proposal ([#11734](#11734)) ([29ee9aa](29ee9aa)) * **ci:** Add test for global vars entry points regression (noir-lang/noir#7209) ([b60a39d](b60a39d)) * Clarify to_radix docs examples (noir-lang/noir#7230) ([b60a39d](b60a39d)) * **docs:** Moving references to noir-starter to awesome-noir (noir-lang/noir#7203) ([b60a39d](b60a39d)) * Early check type equality in try_unify (noir-lang/noir#7263) ([b60a39d](b60a39d)) * Exclude dependency fetching time from benchmarks (noir-lang/noir#7210) ([b60a39d](b60a39d)) * Fix struct example (noir-lang/noir#7198) ([b60a39d](b60a39d)) * More scalability for our metrics ([#11732](#11732)) ([52bbf14](52bbf14)) * Playground name change ([#11720](#11720)) ([c5cbf65](c5cbf65)) * Re-enable p2p test ([#11706](#11706)) ([652c251](652c251)), closes [#10737](#10737) * Remove stale zk constants and methods ([#11715](#11715)) ([7a2870f](7a2870f)) * Replace relative paths to noir-protocol-circuits ([aabab34](aabab34)) * Replace relative paths to noir-protocol-circuits ([0720d18](0720d18)) * Request txs in prover-node after each block finishes ([#11749](#11749)) ([61e4eee](61e4eee)) * Rework defunctionalize pass to not rely on DFG bugs (noir-lang/noir#7222) ([b60a39d](b60a39d)) * Sandbox lower sequencer log level ([#11742](#11742)) ([7b30758](7b30758)), closes [#11677](#11677) * **spartan:** Making the spartan script add the coinbase address ([#11235](#11235)) ([b97ff0d](b97ff0d)) * **ssa:** Flip the SSA Brillig constraint check to off by default (noir-lang/noir#7211) ([b60a39d](b60a39d)) * Start tracking time to run critical library tests (noir-lang/noir#7221) ([b60a39d](b60a39d)) * Update docs to use devcontainer feature (noir-lang/noir#7206) ([b60a39d](b60a39d)) * Use batch p2p reqresp for requesting txs in prover node ([#11741](#11741)) ([df9e4ec](df9e4ec)) </details> <details><summary>barretenberg: 0.75.0</summary> ## [0.75.0](barretenberg-v0.74.0...barretenberg-v0.75.0) (2025-02-06) ### Features * K-shifts ([#11663](#11663)) ([511abe5](511abe5)) * Report wrong proof length in the verifier contract ([#11728](#11728)) ([1a83cd2](1a83cd2)) ### Miscellaneous * **avm:** Add names to lookup settings ([#11768](#11768)) ([fafe3ba](fafe3ba)) * **avm:** Full row cleanup ([#11767](#11767)) ([6145cd0](6145cd0)) * **avm:** Use lookup by clk for sha params ([#11762](#11762)) ([b003567](b003567)) * Better bundling for bb.js, remove aztec.js bundling ([#11761](#11761)) ([8cc3f0a](8cc3f0a)) * Remove stale zk constants and methods ([#11715](#11715)) ([7a2870f](7a2870f)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.75.0</summary> ## [0.75.0](AztecProtocol/aztec-packages@aztec-package-v0.74.0...aztec-package-v0.75.0) (2025-02-06) ### Miscellaneous * Playground name change ([#11720](AztecProtocol/aztec-packages#11720)) ([c5cbf65](AztecProtocol/aztec-packages@c5cbf65)) </details> <details><summary>barretenberg.js: 0.75.0</summary> ## [0.75.0](AztecProtocol/aztec-packages@barretenberg.js-v0.74.0...barretenberg.js-v0.75.0) (2025-02-06) ### Miscellaneous * Better bundling for bb.js, remove aztec.js bundling ([#11761](AztecProtocol/aztec-packages#11761)) ([8cc3f0a](AztecProtocol/aztec-packages@8cc3f0a)) * Playground name change ([#11720](AztecProtocol/aztec-packages#11720)) ([c5cbf65](AztecProtocol/aztec-packages@c5cbf65)) </details> <details><summary>aztec-packages: 0.75.0</summary> ## [0.75.0](AztecProtocol/aztec-packages@aztec-packages-v0.74.0...aztec-packages-v0.75.0) (2025-02-06) ### ⚠ BREAKING CHANGES * introduce `WithHash<T>` + use it in `PublicImmutable` ([#8022](AztecProtocol/aztec-packages#8022)) * leonidas library ([#11596](AztecProtocol/aztec-packages#11596)) ### Features * Allow resolved types in constructors (noir-lang/noir#7223) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) * Allow specifying multiple patterns in nargo test (noir-lang/noir#7186) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) * Contracts deployed in txe should emit deployment nullifier automatically ([#11708](AztecProtocol/aztec-packages#11708)) ([20f5653](AztecProtocol/aztec-packages@20f5653)) * **docs:** Applying structure feedback + adding nodes docs ([#10976](AztecProtocol/aztec-packages#10976)) ([2fd08ba](AztecProtocol/aztec-packages@2fd08ba)) * **docs:** Inspiration / ideas page ([#11755](AztecProtocol/aztec-packages#11755)) ([0b012f1](AztecProtocol/aztec-packages@0b012f1)) * **experimental:** Implement enum tag constants (noir-lang/noir#7183) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) * **experimental:** Implement zeroed for enums (noir-lang/noir#7252) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) * **experimental:** Parse match expressions (noir-lang/noir#7243) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) * **experimental:** Support enums in comptime code (noir-lang/noir#7194) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) * Gen public base prover.toml ([#11757](AztecProtocol/aztec-packages#11757)) ([1fa89da](AztecProtocol/aztec-packages@1fa89da)) * Introduce `WithHash<T>` + use it in `PublicImmutable` ([#8022](AztecProtocol/aztec-packages#8022)) ([6c15604](AztecProtocol/aztec-packages@6c15604)) * K-shifts ([#11663](AztecProtocol/aztec-packages#11663)) ([511abe5](AztecProtocol/aztec-packages@511abe5)) * Leonidas library ([#11596](AztecProtocol/aztec-packages#11596)) ([e8cfed7](AztecProtocol/aztec-packages@e8cfed7)) * **LSP:** Suggest enum variants without parameters (noir-lang/noir#7261) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) * **optimization:** Add purity analysis to SSA (noir-lang/noir#7197) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) * Report wrong proof length in the verifier contract ([#11728](AztecProtocol/aztec-packages#11728)) ([1a83cd2](AztecProtocol/aztec-packages@1a83cd2)) * Simplify subtraction from self to return zero (noir-lang/noir#7189) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) * Sync from aztec-packages (noir-lang/noir#7241) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) ### Bug Fixes * Add missing `is_empty` check for enums (noir-lang/noir#7257) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) * Avoid type error when calling something with a type alias of a function (noir-lang/noir#7239) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) * **brillig:** Globals entry point reachability analysis (noir-lang/noir#7188) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) * Contracts with no private / public functions should not fail to generate a contract artifact ([#11744](AztecProtocol/aztec-packages#11744)) ([672171c](AztecProtocol/aztec-packages@672171c)) * Correct reversed callstacks (noir-lang/noir#7212) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) * Deflake prover node epoch proof quote test ([#11773](AztecProtocol/aztec-packages#11773)) ([04e1061](AztecProtocol/aztec-packages@04e1061)) * **docs:** Fix docs previews ([#11736](AztecProtocol/aztec-packages#11736)) ([255b3d8](AztecProtocol/aztec-packages@255b3d8)) * Handle sequencer building block mid-synch ([#11735](AztecProtocol/aztec-packages#11735)) ([435a0af](AztecProtocol/aztec-packages@435a0af)) * Prevent panic within `remove_possibly_mutated_cached_make_arrays` (noir-lang/noir#7264) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) * **ssa:** Only attempt to inline constant Brillig calls for entry points (noir-lang/noir#7260) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) * **ssa:** Use number of SSA instructions for the Brillig unrolling bytecode size limit (noir-lang/noir#7242) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) * **unrolling:** Fetch original bytecode size from the original function (noir-lang/noir#7253) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) ### Miscellaneous * **avm:** Add names to lookup settings ([#11768](AztecProtocol/aztec-packages#11768)) ([fafe3ba](AztecProtocol/aztec-packages@fafe3ba)) * **avm:** Full row cleanup ([#11767](AztecProtocol/aztec-packages#11767)) ([6145cd0](AztecProtocol/aztec-packages@6145cd0)) * **avm:** Use lookup by clk for sha params ([#11762](AztecProtocol/aztec-packages#11762)) ([b003567](AztecProtocol/aztec-packages@b003567)) * Better bundling for bb.js, remove aztec.js bundling ([#11761](AztecProtocol/aztec-packages#11761)) ([8cc3f0a](AztecProtocol/aztec-packages@8cc3f0a)) * Build docs in the merge queue (noir-lang/noir#7218) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) * Bump gates diff (noir-lang/noir#7245) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) * Change log level for block proposal ([#11734](AztecProtocol/aztec-packages#11734)) ([29ee9aa](AztecProtocol/aztec-packages@29ee9aa)) * **ci:** Add test for global vars entry points regression (noir-lang/noir#7209) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) * Clarify to_radix docs examples (noir-lang/noir#7230) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) * **docs:** Moving references to noir-starter to awesome-noir (noir-lang/noir#7203) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) * Early check type equality in try_unify (noir-lang/noir#7263) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) * Exclude dependency fetching time from benchmarks (noir-lang/noir#7210) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) * Fix struct example (noir-lang/noir#7198) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) * More scalability for our metrics ([#11732](AztecProtocol/aztec-packages#11732)) ([52bbf14](AztecProtocol/aztec-packages@52bbf14)) * Playground name change ([#11720](AztecProtocol/aztec-packages#11720)) ([c5cbf65](AztecProtocol/aztec-packages@c5cbf65)) * Re-enable p2p test ([#11706](AztecProtocol/aztec-packages#11706)) ([652c251](AztecProtocol/aztec-packages@652c251)), closes [#10737](AztecProtocol/aztec-packages#10737) * Remove stale zk constants and methods ([#11715](AztecProtocol/aztec-packages#11715)) ([7a2870f](AztecProtocol/aztec-packages@7a2870f)) * Replace relative paths to noir-protocol-circuits ([aabab34](AztecProtocol/aztec-packages@aabab34)) * Replace relative paths to noir-protocol-circuits ([0720d18](AztecProtocol/aztec-packages@0720d18)) * Request txs in prover-node after each block finishes ([#11749](AztecProtocol/aztec-packages#11749)) ([61e4eee](AztecProtocol/aztec-packages@61e4eee)) * Rework defunctionalize pass to not rely on DFG bugs (noir-lang/noir#7222) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) * Sandbox lower sequencer log level ([#11742](AztecProtocol/aztec-packages#11742)) ([7b30758](AztecProtocol/aztec-packages@7b30758)), closes [#11677](AztecProtocol/aztec-packages#11677) * **spartan:** Making the spartan script add the coinbase address ([#11235](AztecProtocol/aztec-packages#11235)) ([b97ff0d](AztecProtocol/aztec-packages@b97ff0d)) * **ssa:** Flip the SSA Brillig constraint check to off by default (noir-lang/noir#7211) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) * Start tracking time to run critical library tests (noir-lang/noir#7221) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) * Update docs to use devcontainer feature (noir-lang/noir#7206) ([b60a39d](AztecProtocol/aztec-packages@b60a39d)) * Use batch p2p reqresp for requesting txs in prover node ([#11741](AztecProtocol/aztec-packages#11741)) ([df9e4ec](AztecProtocol/aztec-packages@df9e4ec)) </details> <details><summary>barretenberg: 0.75.0</summary> ## [0.75.0](AztecProtocol/aztec-packages@barretenberg-v0.74.0...barretenberg-v0.75.0) (2025-02-06) ### Features * K-shifts ([#11663](AztecProtocol/aztec-packages#11663)) ([511abe5](AztecProtocol/aztec-packages@511abe5)) * Report wrong proof length in the verifier contract ([#11728](AztecProtocol/aztec-packages#11728)) ([1a83cd2](AztecProtocol/aztec-packages@1a83cd2)) ### Miscellaneous * **avm:** Add names to lookup settings ([#11768](AztecProtocol/aztec-packages#11768)) ([fafe3ba](AztecProtocol/aztec-packages@fafe3ba)) * **avm:** Full row cleanup ([#11767](AztecProtocol/aztec-packages#11767)) ([6145cd0](AztecProtocol/aztec-packages@6145cd0)) * **avm:** Use lookup by clk for sha params ([#11762](AztecProtocol/aztec-packages#11762)) ([b003567](AztecProtocol/aztec-packages@b003567)) * Better bundling for bb.js, remove aztec.js bundling ([#11761](AztecProtocol/aztec-packages#11761)) ([8cc3f0a](AztecProtocol/aztec-packages@8cc3f0a)) * Remove stale zk constants and methods ([#11715](AztecProtocol/aztec-packages#11715)) ([7a2870f](AztecProtocol/aztec-packages@7a2870f)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
Description
Problem
Resolves #7256
Summary
While debugging this I realized that
try_unifywas being called withselfandotherbeing complex infix expressions that were actually the same type (same type variables, etc.). When that happened canonicalizing and trying to unify both would involve a lot of computations (it ends up trying to unify lots ofu32for a reason that I still didn't sit down to investigate). I tried doing an early equality check intry_unifyand, magically, the time to compile the relevant program went from 10 minutes to 3 seconds.(I also didn't investigate yet why the same two types end up being unified)
Additional Context
I think checking for equality here is fine because it means there's nothing to unify, but let me know if this is not okay.
The second commit is just a micro-optimization: when doing
if let (_, _) = (a, b),aandbare evaluated and then pattern-matched. Becauseevaluate_to_field_elementmight be an expensive call this just ends up doing one of those calls if it ends up returningErr.Documentation
Check one:
PR Checklist
cargo fmton default settings.