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: Perform more checks for compile-time arithmetic #2380

Merged
merged 9 commits into from
Aug 21, 2023

Conversation

TomAFrench
Copy link
Member

@TomAFrench TomAFrench commented Aug 20, 2023

Description

Problem*

Resolves

Summary*

Draft until #2376 is merged.

This PR improves our handling of values which can be computed at compile-time. Instead of checking that lhs and rhs are constant and then adding them together to produce a constant result, we add lhs and rhs together and check that the result is constant. This allows us to pick up any cases where non-constant terms in the inputs cancel out.

I've also implemented AcirVarData::from<Expression>() which will produce the simplest variant of AcirVarData so it's easier to perform optimisations later.

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.

Additional Context

PR Checklist*

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

@TomAFrench TomAFrench force-pushed the better-const-calculations branch from 5d6dc1c to 49a976f Compare August 20, 2023 22:21
Base automatically changed from update-artifacts to master August 21, 2023 09:31
@TomAFrench TomAFrench force-pushed the better-const-calculations branch from b1db565 to ddf4d87 Compare August 21, 2023 09:34
@TomAFrench TomAFrench marked this pull request as ready for review August 21, 2023 09:34
@TomAFrench TomAFrench self-assigned this Aug 21, 2023
@TomAFrench TomAFrench enabled auto-merge August 21, 2023 11:09
@TomAFrench TomAFrench changed the title feat: Improve checks for arithmetic which can be performed at compile-time feat: Perform more checks for compile-time arithmetic Aug 21, 2023
@TomAFrench TomAFrench requested a review from phated August 21, 2023 15:12
@TomAFrench TomAFrench added this pull request to the merge queue Aug 21, 2023
Merged via the queue into master with commit 1be2b1e Aug 21, 2023
@TomAFrench TomAFrench deleted the better-const-calculations branch August 21, 2023 18:26
TomAFrench added a commit that referenced this pull request Aug 21, 2023
* master:
  feat: Perform more checks for compile-time arithmetic (#2380)
  chore: Remove `noirc_abi::FunctionSignature` and define in terms of HIR (#2372)
  feat: Update to `acvm` 0.22.0 (#2363)
TomAFrench added a commit that referenced this pull request Aug 22, 2023
* master: (46 commits)
  chore: Remove `serde` from `noirc_frontend` (#2390)
  chore: allow parenthesizing in two type locations  (#2388)
  chore(ci): automatically delete cache entries associated with closed PRs (#2342)
  feat: Perform more checks for compile-time arithmetic (#2380)
  chore: Remove `noirc_abi::FunctionSignature` and define in terms of HIR (#2372)
  feat: Update to `acvm` 0.22.0 (#2363)
  chore: Update committed ACIR artifacts (#2376)
  feat(ssa): Merge slices in if statements with witness conditions (#2347)
  chore: Separate frontend `Visibility` and `Distinctness` from the ABI (#2369)
  feat: add syntax for specifying function type environments (#2357)
  chore: Remove unused `Directive::Log` (#2366)
  chore: clippy fixes (#2365)
  chore: Extract bytecode from artifact files for backend integration test inputs (#2356)
  feat: Add trait definition representation in DefCollector and HIR (#2338)
  chore: Remove unused `Intrinsic::Println` (#2358)
  fix: Remove duplicte `T` in `expected T, found T` error on tuple assignment (#2360)
  chore(brillig): Fix brillig radix instruction return vector size (#2350)
  fix: Show types in error message in same order as in source code (#2353)
  chore: update noir-source-resolver from `1.1.2` to `^1.1.3` (#2349)
  chore(ci): Avoid writing to cache in workflows triggered by the merge queue (#2341)
  ...
TomAFrench added a commit that referenced this pull request Aug 23, 2023
* master: (34 commits)
  chore: Decouple `noirc_abi` from frontend by introducing `PrintableType` (#2373)
  feat(brillig): Added locations for brillig artifacts (#2415)
  feat: Report compilation warnings before errors (#2398)
  chore: Rework `CrateGraph` to only have one root crate (#2391)
  chore: clippy fix (#2408)
  chore(deps): bump rustls-webpki from 0.101.1 to 0.101.4 (#2404)
  fix(acir): Attach locations to MemoryOps in ACIR (#2389)
  feat: Use equivalence information from equality assertions to simplify circuit (#2378)
  chore: fix body expr span (#2402)
  feat(attributes): enable custom attributes (#2395)
  chore: Remove `serde` from `noirc_frontend` (#2390)
  chore: allow parenthesizing in two type locations  (#2388)
  chore(ci): automatically delete cache entries associated with closed PRs (#2342)
  feat: Perform more checks for compile-time arithmetic (#2380)
  chore: Remove `noirc_abi::FunctionSignature` and define in terms of HIR (#2372)
  feat: Update to `acvm` 0.22.0 (#2363)
  chore: Update committed ACIR artifacts (#2376)
  feat(ssa): Merge slices in if statements with witness conditions (#2347)
  chore: Separate frontend `Visibility` and `Distinctness` from the ABI (#2369)
  feat: add syntax for specifying function type environments (#2357)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

2 participants