Skip to content
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

feat!: require trait primitive functions/calls to have their trait in scope #6901

Merged
merged 31 commits into from
Jan 9, 2025

Conversation

asterite
Copy link
Collaborator

@asterite asterite commented Dec 20, 2024

Description

Based on top of #6895

Problem

Part of #6864

Summary

Similar to the previous PRs but this time for primitive types (Field::foo() and field.foo()). In reality Field::foo() already worked before this PR (as a result of some previous PR) but I added tests to make sure that's the case.

This PR also introduces a refactor: previously methods were kept in two places, one for structs and one for everything else (keyed under TypeMethodKey). Now they are all in a single place, and there's a new TypeMethodKey variant for structs. This greatly simplifies/unifies the code.

Additional Context

Documentation

Check one:

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

PR Checklist

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

Copy link
Contributor

Peak Memory Sample

Program Peak Memory
keccak256 78.51M
workspace 123.47M
regression_4709 422.94M
ram_blowup_regression 1.58G
private-kernel-tail 168.30M
private-kernel-reset 168.33M
private-kernel-inner 168.30M
parity-root 151.61M

Copy link
Contributor

github-actions bot commented Dec 20, 2024

Compilation Report

Program Compilation Time %
sha256_regression 1.270s -1%
regression_4709 0.786s 0%
ram_blowup_regression 18.120s -1%
rollup-root 3.600s -4%
rollup-block-merge 3.670s -3%
rollup-base-public 34.900s -8%
rollup-base-private 14.500s 16%
private-kernel-tail 1.076s 11%
private-kernel-reset 8.262s -4%
private-kernel-inner 2.164s 4%

Copy link
Contributor

github-actions bot commented Jan 7, 2025

Execution Report

Program Execution Time %
sha256_regression 0.054s 0%
regression_4709 0.001s 0%
ram_blowup_regression 0.576s 1%
rollup-root 0.104s -1%
rollup-block-merge 0.106s -1%
rollup-base-public 1.210s -1%
rollup-base-private 0.465s 0%
private-kernel-tail 0.022s 4%
private-kernel-reset 0.346s -1%
private-kernel-inner 0.076s -2%

Copy link
Contributor

github-actions bot commented Jan 7, 2025

Compilation Memory Report

Program Peak Memory
keccak256 78.11M
workspace 123.43M
regression_4709 422.97M
ram_blowup_regression 1.58G
rollup-base-public 4.11G
rollup-base-private 1.20G
private-kernel-tail 207.19M
private-kernel-reset 730.61M
private-kernel-inner 294.42M

Copy link
Contributor

github-actions bot commented Jan 7, 2025

Execution Memory Report

Program Peak Memory
keccak256 74.66M
workspace 123.78M
regression_4709 315.99M
ram_blowup_regression 512.41M
rollup-base-public 480.66M
rollup-base-private 326.53M
private-kernel-tail 181.04M
private-kernel-reset 249.71M
private-kernel-inner 209.88M

@TomAFrench TomAFrench marked this pull request as ready for review January 7, 2025 21:17
@TomAFrench TomAFrench marked this pull request as draft January 7, 2025 21:18
@TomAFrench TomAFrench force-pushed the ab/trait-functions-in-scope-for-primitives branch from e6b2286 to 7a33518 Compare January 7, 2025 21:19
Base automatically changed from ab/require-trait-to-be-in-scope-for-methods to master January 8, 2025 10:49
@asterite asterite marked this pull request as ready for review January 8, 2025 11:22
@asterite asterite requested a review from a team January 8, 2025 11:22
Copy link
Contributor

@michaeljklein michaeljklein left a comment

Choose a reason for hiding this comment

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

LGTM

@TomAFrench TomAFrench added this pull request to the merge queue Jan 9, 2025
Merged via the queue into master with commit 56c931a Jan 9, 2025
87 checks passed
@TomAFrench TomAFrench deleted the ab/trait-functions-in-scope-for-primitives branch January 9, 2025 19:06
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Jan 9, 2025
…eir trait in scope (noir-lang/noir#6901)

feat(lsp): use trait method docs for trait impl method docs on hover (noir-lang/noir#7003)
chore: turn on averaging for protocol circuits metrics in CI (noir-lang/noir#6999)
feat(comptime): Implement to_be_bits and to_le_bits in the interpreter (noir-lang/noir#7008)
chore: Add short circuit in ssa-gen for known if conditions (noir-lang/noir#7007)
chore: Only resolved globals monomorphization (noir-lang/noir#7006)
chore: Remove resolve_is_unconstrained pass (noir-lang/noir#7004)
chore: require safety doc comment for unsafe instead of `//@safety` (noir-lang/noir#6992)
fix: Reproduce and fix bytecode blowup (noir-lang/noir#6972)
chore: mark casts as able to be deduplicated (noir-lang/noir#6996)
fix: return trait impl method as FuncId if there's only one (noir-lang/noir#6989)
chore(ci): fail properly in `external-repo-checks` (noir-lang/noir#6988)
fix: allow multiple trait impls for the same trait as long as one is in scope (noir-lang/noir#6987)
chore: Use DFG in SSA printer (noir-lang/noir#6986)
chore!: Reserve `enum` and `match` keywords (noir-lang/noir#6961)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Jan 10, 2025
…hem (noir-lang/noir#6913)

feat!: require trait primitive functions/calls to have their trait in scope (noir-lang/noir#6901)
feat(lsp): use trait method docs for trait impl method docs on hover (noir-lang/noir#7003)
chore: turn on averaging for protocol circuits metrics in CI (noir-lang/noir#6999)
feat(comptime): Implement to_be_bits and to_le_bits in the interpreter (noir-lang/noir#7008)
chore: Add short circuit in ssa-gen for known if conditions (noir-lang/noir#7007)
chore: Only resolved globals monomorphization (noir-lang/noir#7006)
chore: Remove resolve_is_unconstrained pass (noir-lang/noir#7004)
chore: require safety doc comment for unsafe instead of `//@safety` (noir-lang/noir#6992)
fix: Reproduce and fix bytecode blowup (noir-lang/noir#6972)
chore: mark casts as able to be deduplicated (noir-lang/noir#6996)
fix: return trait impl method as FuncId if there's only one (noir-lang/noir#6989)
chore(ci): fail properly in `external-repo-checks` (noir-lang/noir#6988)
fix: allow multiple trait impls for the same trait as long as one is in scope (noir-lang/noir#6987)
chore: Use DFG in SSA printer (noir-lang/noir#6986)
chore!: Reserve `enum` and `match` keywords (noir-lang/noir#6961)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Jan 10, 2025
…ng/noir#6913)

feat!: require trait primitive functions/calls to have their trait in scope (noir-lang/noir#6901)
feat(lsp): use trait method docs for trait impl method docs on hover (noir-lang/noir#7003)
chore: turn on averaging for protocol circuits metrics in CI (noir-lang/noir#6999)
feat(comptime): Implement to_be_bits and to_le_bits in the interpreter (noir-lang/noir#7008)
chore: Add short circuit in ssa-gen for known if conditions (noir-lang/noir#7007)
chore: Only resolved globals monomorphization (noir-lang/noir#7006)
chore: Remove resolve_is_unconstrained pass (noir-lang/noir#7004)
chore: require safety doc comment for unsafe instead of `//@safety` (noir-lang/noir#6992)
fix: Reproduce and fix bytecode blowup (noir-lang/noir#6972)
chore: mark casts as able to be deduplicated (noir-lang/noir#6996)
fix: return trait impl method as FuncId if there's only one (noir-lang/noir#6989)
chore(ci): fail properly in `external-repo-checks` (noir-lang/noir#6988)
fix: allow multiple trait impls for the same trait as long as one is in scope (noir-lang/noir#6987)
chore: Use DFG in SSA printer (noir-lang/noir#6986)
chore!: Reserve `enum` and `match` keywords (noir-lang/noir#6961)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Jan 10, 2025
chore: delete docs for versions which aren't used (noir-lang/noir#7020)
feat!: Disable mocks in `execute` (noir-lang/noir#6869)
chore(docs): backport 1.0.0-beta.0 doc fixes (noir-lang/noir#7014)
feat(cli): Add CLI option to filter by contract function name (noir-lang/noir#7018)
chore: Add more Field use info (noir-lang/noir#7019)
fix: let static_assert fail with the provided message (noir-lang/noir#7005)
chore: mark `aztec-nr` as expected to compile (noir-lang/noir#7015)
chore: clarity fix in docs (noir-lang/noir#7016)
fix: require generic trait impls to be in scope to call them (noir-lang/noir#6913)
feat!: require trait primitive functions/calls to have their trait in scope (noir-lang/noir#6901)
feat(lsp): use trait method docs for trait impl method docs on hover (noir-lang/noir#7003)
chore: turn on averaging for protocol circuits metrics in CI (noir-lang/noir#6999)
feat(comptime): Implement to_be_bits and to_le_bits in the interpreter (noir-lang/noir#7008)
chore: Add short circuit in ssa-gen for known if conditions (noir-lang/noir#7007)
chore: Only resolved globals monomorphization (noir-lang/noir#7006)
chore: Remove resolve_is_unconstrained pass (noir-lang/noir#7004)
chore: require safety doc comment for unsafe instead of `//@safety` (noir-lang/noir#6992)
fix: Reproduce and fix bytecode blowup (noir-lang/noir#6972)
chore: mark casts as able to be deduplicated (noir-lang/noir#6996)
fix: return trait impl method as FuncId if there's only one (noir-lang/noir#6989)
chore(ci): fail properly in `external-repo-checks` (noir-lang/noir#6988)
fix: allow multiple trait impls for the same trait as long as one is in scope (noir-lang/noir#6987)
chore: Use DFG in SSA printer (noir-lang/noir#6986)
chore!: Reserve `enum` and `match` keywords (noir-lang/noir#6961)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Jan 10, 2025
chore: delete docs for versions which aren't used (noir-lang/noir#7020)
feat!: Disable mocks in `execute` (noir-lang/noir#6869)
chore(docs): backport 1.0.0-beta.0 doc fixes (noir-lang/noir#7014)
feat(cli): Add CLI option to filter by contract function name (noir-lang/noir#7018)
chore: Add more Field use info (noir-lang/noir#7019)
fix: let static_assert fail with the provided message (noir-lang/noir#7005)
chore: mark `aztec-nr` as expected to compile (noir-lang/noir#7015)
chore: clarity fix in docs (noir-lang/noir#7016)
fix: require generic trait impls to be in scope to call them (noir-lang/noir#6913)
feat!: require trait primitive functions/calls to have their trait in scope (noir-lang/noir#6901)
feat(lsp): use trait method docs for trait impl method docs on hover (noir-lang/noir#7003)
chore: turn on averaging for protocol circuits metrics in CI (noir-lang/noir#6999)
feat(comptime): Implement to_be_bits and to_le_bits in the interpreter (noir-lang/noir#7008)
chore: Add short circuit in ssa-gen for known if conditions (noir-lang/noir#7007)
chore: Only resolved globals monomorphization (noir-lang/noir#7006)
chore: Remove resolve_is_unconstrained pass (noir-lang/noir#7004)
chore: require safety doc comment for unsafe instead of `//@safety` (noir-lang/noir#6992)
fix: Reproduce and fix bytecode blowup (noir-lang/noir#6972)
chore: mark casts as able to be deduplicated (noir-lang/noir#6996)
fix: return trait impl method as FuncId if there's only one (noir-lang/noir#6989)
chore(ci): fail properly in `external-repo-checks` (noir-lang/noir#6988)
fix: allow multiple trait impls for the same trait as long as one is in scope (noir-lang/noir#6987)
chore: Use DFG in SSA printer (noir-lang/noir#6986)
chore!: Reserve `enum` and `match` keywords (noir-lang/noir#6961)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Jan 11, 2025
…ang/noir#6985)

feat!: disallow calling unconstrained functions outside of `unsafe` blocks and passing unconstrained functions in place of constrained functions (noir-lang/noir#6938)
chore: simplify a couple of enum variants (noir-lang/noir#7025)
chore: disallow inserting ACIR-only instructions into brillig functions (noir-lang/noir#7017)
feat: unchecked math operations in SSA (noir-lang/noir#7011)
chore: delete docs for versions which aren't used (noir-lang/noir#7020)
feat!: Disable mocks in `execute` (noir-lang/noir#6869)
chore(docs): backport 1.0.0-beta.0 doc fixes (noir-lang/noir#7014)
feat(cli): Add CLI option to filter by contract function name (noir-lang/noir#7018)
chore: Add more Field use info (noir-lang/noir#7019)
fix: let static_assert fail with the provided message (noir-lang/noir#7005)
chore: mark `aztec-nr` as expected to compile (noir-lang/noir#7015)
chore: clarity fix in docs (noir-lang/noir#7016)
fix: require generic trait impls to be in scope to call them (noir-lang/noir#6913)
feat!: require trait primitive functions/calls to have their trait in scope (noir-lang/noir#6901)
feat(lsp): use trait method docs for trait impl method docs on hover (noir-lang/noir#7003)
chore: turn on averaging for protocol circuits metrics in CI (noir-lang/noir#6999)
feat(comptime): Implement to_be_bits and to_le_bits in the interpreter (noir-lang/noir#7008)
chore: Add short circuit in ssa-gen for known if conditions (noir-lang/noir#7007)
chore: Only resolved globals monomorphization (noir-lang/noir#7006)
chore: Remove resolve_is_unconstrained pass (noir-lang/noir#7004)
chore: require safety doc comment for unsafe instead of `//@safety` (noir-lang/noir#6992)
fix: Reproduce and fix bytecode blowup (noir-lang/noir#6972)
chore: mark casts as able to be deduplicated (noir-lang/noir#6996)
fix: return trait impl method as FuncId if there's only one (noir-lang/noir#6989)
chore(ci): fail properly in `external-repo-checks` (noir-lang/noir#6988)
fix: allow multiple trait impls for the same trait as long as one is in scope (noir-lang/noir#6987)
chore: Use DFG in SSA printer (noir-lang/noir#6986)
chore!: Reserve `enum` and `match` keywords (noir-lang/noir#6961)
AztecBot added a commit to AztecProtocol/aztec-packages that referenced this pull request Jan 11, 2025
feat!: disallow calling unconstrained functions outside of `unsafe` blocks and passing unconstrained functions in place of constrained functions (noir-lang/noir#6938)
chore: simplify a couple of enum variants (noir-lang/noir#7025)
chore: disallow inserting ACIR-only instructions into brillig functions (noir-lang/noir#7017)
feat: unchecked math operations in SSA (noir-lang/noir#7011)
chore: delete docs for versions which aren't used (noir-lang/noir#7020)
feat!: Disable mocks in `execute` (noir-lang/noir#6869)
chore(docs): backport 1.0.0-beta.0 doc fixes (noir-lang/noir#7014)
feat(cli): Add CLI option to filter by contract function name (noir-lang/noir#7018)
chore: Add more Field use info (noir-lang/noir#7019)
fix: let static_assert fail with the provided message (noir-lang/noir#7005)
chore: mark `aztec-nr` as expected to compile (noir-lang/noir#7015)
chore: clarity fix in docs (noir-lang/noir#7016)
fix: require generic trait impls to be in scope to call them (noir-lang/noir#6913)
feat!: require trait primitive functions/calls to have their trait in scope (noir-lang/noir#6901)
feat(lsp): use trait method docs for trait impl method docs on hover (noir-lang/noir#7003)
chore: turn on averaging for protocol circuits metrics in CI (noir-lang/noir#6999)
feat(comptime): Implement to_be_bits and to_le_bits in the interpreter (noir-lang/noir#7008)
chore: Add short circuit in ssa-gen for known if conditions (noir-lang/noir#7007)
chore: Only resolved globals monomorphization (noir-lang/noir#7006)
chore: Remove resolve_is_unconstrained pass (noir-lang/noir#7004)
chore: require safety doc comment for unsafe instead of `//@safety` (noir-lang/noir#6992)
fix: Reproduce and fix bytecode blowup (noir-lang/noir#6972)
chore: mark casts as able to be deduplicated (noir-lang/noir#6996)
fix: return trait impl method as FuncId if there's only one (noir-lang/noir#6989)
chore(ci): fail properly in `external-repo-checks` (noir-lang/noir#6988)
fix: allow multiple trait impls for the same trait as long as one is in scope (noir-lang/noir#6987)
chore: Use DFG in SSA printer (noir-lang/noir#6986)
chore!: Reserve `enum` and `match` keywords (noir-lang/noir#6961)
TomAFrench added a commit to AztecProtocol/aztec-packages that referenced this pull request Jan 11, 2025
Automated pull of development from the
[noir](https://github.com/noir-lang/noir) programming language, a
dependency of Aztec.
BEGIN_COMMIT_OVERRIDE
feat!: require trait primitive functions/calls to have their trait in
scope (noir-lang/noir#6901)
feat(lsp): use trait method docs for trait impl method docs on hover
(noir-lang/noir#7003)
chore: turn on averaging for protocol circuits metrics in CI
(noir-lang/noir#6999)
feat(comptime): Implement to_be_bits and to_le_bits in the interpreter
(noir-lang/noir#7008)
chore: Add short circuit in ssa-gen for known if conditions
(noir-lang/noir#7007)
chore: Only resolved globals monomorphization
(noir-lang/noir#7006)
chore: Remove resolve_is_unconstrained pass
(noir-lang/noir#7004)
chore: require safety doc comment for unsafe instead of `//@safety`
(noir-lang/noir#6992)
fix: Reproduce and fix bytecode blowup
(noir-lang/noir#6972)
chore: mark casts as able to be deduplicated
(noir-lang/noir#6996)
fix: return trait impl method as FuncId if there's only one
(noir-lang/noir#6989)
chore(ci): fail properly in `external-repo-checks`
(noir-lang/noir#6988)
fix: allow multiple trait impls for the same trait as long as one is in
scope (noir-lang/noir#6987)
chore: Use DFG in SSA printer
(noir-lang/noir#6986)
chore!: Reserve `enum` and `match` keywords
(noir-lang/noir#6961)
END_COMMIT_OVERRIDE

---------

Co-authored-by: Tom French <[email protected]>
AztecBot added a commit to AztecProtocol/aztec-nr that referenced this pull request Jan 12, 2025
Automated pull of development from the
[noir](https://github.com/noir-lang/noir) programming language, a
dependency of Aztec.
BEGIN_COMMIT_OVERRIDE
feat!: require trait primitive functions/calls to have their trait in
scope (noir-lang/noir#6901)
feat(lsp): use trait method docs for trait impl method docs on hover
(noir-lang/noir#7003)
chore: turn on averaging for protocol circuits metrics in CI
(noir-lang/noir#6999)
feat(comptime): Implement to_be_bits and to_le_bits in the interpreter
(noir-lang/noir#7008)
chore: Add short circuit in ssa-gen for known if conditions
(noir-lang/noir#7007)
chore: Only resolved globals monomorphization
(noir-lang/noir#7006)
chore: Remove resolve_is_unconstrained pass
(noir-lang/noir#7004)
chore: require safety doc comment for unsafe instead of `//@safety`
(noir-lang/noir#6992)
fix: Reproduce and fix bytecode blowup
(noir-lang/noir#6972)
chore: mark casts as able to be deduplicated
(noir-lang/noir#6996)
fix: return trait impl method as FuncId if there's only one
(noir-lang/noir#6989)
chore(ci): fail properly in `external-repo-checks`
(noir-lang/noir#6988)
fix: allow multiple trait impls for the same trait as long as one is in
scope (noir-lang/noir#6987)
chore: Use DFG in SSA printer
(noir-lang/noir#6986)
chore!: Reserve `enum` and `match` keywords
(noir-lang/noir#6961)
END_COMMIT_OVERRIDE

---------

Co-authored-by: Tom French <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants