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: builtin wrapping shift left #3270

Merged
merged 49 commits into from
Oct 27, 2023
Merged

chore: builtin wrapping shift left #3270

merged 49 commits into from
Oct 27, 2023

Conversation

guipublic
Copy link
Contributor

@guipublic guipublic commented Oct 24, 2023

Description

Adds a builtin for doing wrapping shift-left and use it in sha256.
Wrapping shift-left means the shift-left can overflow the type and we compute the result modulo the bit size.

Problem*

Wrapping (i.e computing the result modulo the bit size) is the default mode for noir but we want to change this and rather issue an error in case of overflow. However sha256 relies on wrapping so in order to smoothly transition from wrapping to overflow-check, we must first modify sha256 so that it does not use the default shift-left.

Resolves

Summary*

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.

@guipublic guipublic marked this pull request as ready for review October 26, 2023 13:53
jfecher and others added 21 commits October 26, 2023 14:02
Copy link
Contributor

@jfecher jfecher left a comment

Choose a reason for hiding this comment

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

Thanks!

@jfecher jfecher added this pull request to the merge queue Oct 27, 2023
Merged via the queue into master with commit 4a2fce5 Oct 27, 2023
29 checks passed
@jfecher jfecher deleted the gd/builtin-shift-left branch October 27, 2023 18:45
TomAFrench added a commit that referenced this pull request Oct 30, 2023
* master: (242 commits)
  chore(docs): Update Windows installation  (#3326)
  chore!: change stdlib function `pedersen` to `pedersen_commitment` (#3341)
  chore: add back algolia recrawler (#3332)
  chore: comment out algolia recrawler workflow as its failing master (#3331)
  chore: Modify single line if-else expression width threshold (#3329)
  feat: Expand trait impl overlap check to cover generic types (#3320)
  feat: Implement where clauses on impls (#3324)
  chore: builtin wrapping shift left (#3270)
  chore: format integration tests  (#3257)
  fix(3300): cache warnings into debug artefacts (#3313)
  fix(3275): activate brillig modulo test with negative integers (#3318)
  feat: Add check for overlapping generic traits (#3307)
  feat: Refactor debugger and separate core from UI (#3308)
  chore: recrawl docs on merge (#3306)
  chore: add bn254 attribute when needed in the stdlib (#3208)
  feat: add exports of JS black box solvers to noirJS (#3295)
  chore: upload acir artifacts as a github artifact (#3288)
  chore: bump bb version to 0.12.0 (#3304)
  chore(docs): Supplement descriptions for defaulting loop indices to be `u64` (#3237)
  chore: create publish-docs.yml (#3298)
  ...
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.