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

chore!: Restrict packages to contain at most a single contract #2668

Merged
merged 2 commits into from
Sep 12, 2023

Conversation

TomAFrench
Copy link
Member

Description

Problem*

Resolves #2329

Summary*

We currently allow an unlimited number of contracts in a single package despite it being generally agreed that packages should contain a single contract.

We should start enforcing this before people start relying on this behaviour. It's also much more convenient for us to encode this expectation into the type system so we don't need to pass around Vec<(CompiledContract, DebugArtifact)> everywhere and instead have it match binary packages.

I've then added an error which is returned if we find more than one contract within a package. Attempting to compile a contract package with multiple contracts will now print an error as below:

$ nargo compile
error: Packages are limited to a single contract

Error: Aborting due to 1 previous error

Location:
    tooling/nargo_cli/src/cli/mod.rs:90:5

Documentation

  • This PR requires documentation updates when merged.

    • I will submit a noir-lang/docs PR.
    • I will request for and support Dev Rel's help in documenting this PR.

Contracts packages must only contain a single contract.

Additional Context

PR Checklist*

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

@kevaundray
Copy link
Contributor

Does this break anything in aztec-packages?

@TomAFrench
Copy link
Member Author

Nope, they've been following this by convention already.

kevaundray
kevaundray previously approved these changes Sep 12, 2023
Copy link
Contributor

@kevaundray kevaundray left a comment

Choose a reason for hiding this comment

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

LGTM - I can see us needing a type alias for (CompiledContract, DebugArtifact) in the future

* master:
  chore: Embed a file map into `CompiledProgram`/`CompiledContract` (#2666)
@TomAFrench
Copy link
Member Author

I can see us needing a type alias for (CompiledContract, DebugArtifact) in the future

Not anymore.

@kevaundray kevaundray added this pull request to the merge queue Sep 12, 2023
Merged via the queue into master with commit dc3358b Sep 12, 2023
15 checks passed
@kevaundray kevaundray deleted the tf/single-contract-per-package branch September 12, 2023 21:30
TomAFrench added a commit that referenced this pull request Sep 12, 2023
* master:
  chore!: Restrict packages to contain at most a single contract (#2668)
TomAFrench added a commit that referenced this pull request Sep 13, 2023
* master:
  chore: fix npm token for abi_wasm publishing (#2633)
  chore(ci): switch to using `Swatinem/rust-cache` action (#2671)
  feat: compile circuits and query circuit sizes in parallel for `nargo info` (#2665)
  chore(ci): use mock backend for all tests (#2670)
  chore!: Restrict packages to contain at most a single contract (#2668)
  chore: Embed a file map into `CompiledProgram`/`CompiledContract` (#2666)
  feat: Compile workspace packages in parallel (#2612)
  fix(wasm): Avoid requesting stdlib paths from the source-resolver (#2650)
  chore: add abi_wasm to release-please (#2664)
  chore: refactor `execute_cmd` (#2656)
  chore: defer reporting of errors until after compilation and optimization is finished (#2659)
  fix: fix compilation using `aztec` feature flag (#2663)
  fix: remove duplicate file extension in stack trace (#2655)
  chore: use `DebugArtifact`s instead of `FileManager` to report errors (#2641)
  chore: Fix clippy warnings for rust version 1.67.0 (#2661)
  fix(wasm): Apply transformation map to circuit debug information in `noir_wasm` (#2635)
  fix: Fix `update_acir` deleting all debug information (#2643)
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.

Enforce a single Noir contract per package
2 participants