-
Notifications
You must be signed in to change notification settings - Fork 199
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: SSA parser #6489
Merged
Merged
feat: SSA parser #6489
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
I'll merge this now but try to improve the parsing error message in a follow-up PR. |
aakoshh
reviewed
Nov 12, 2024
I pushed a commit that will show errors in a better way. For example, here's one output where there's a typo:
|
I also renamed |
AztecBot
added a commit
to AztecProtocol/aztec-packages
that referenced
this pull request
Nov 12, 2024
…st` (noir-lang/noir#6502) feat: SSA parser (noir-lang/noir#6489) chore(test): Run test matrix on test_programs (noir-lang/noir#6429) chore(ci): fix cargo deny (noir-lang/noir#6501) feat: Deduplicate instructions across blocks (noir-lang/noir#6499) chore: move tests for arithmetic generics closer to the code (noir-lang/noir#6497) fix(docs): Fix broken links in oracles doc (noir-lang/noir#6488) fix: Treat all parameters as possible aliases of each other (noir-lang/noir#6477) chore: bump rust dependencies (noir-lang/noir#6482) feat: use a full `BlackBoxFunctionSolver` implementation when execution brillig during acirgen (noir-lang/noir#6481) chore(docs): Update How to Oracles (noir-lang/noir#5675) chore: Release Noir(0.38.0) (noir-lang/noir#6422) fix(ssa): Change array_set to not mutate slices coming from function inputs (noir-lang/noir#6463) chore: update example to show how to split public inputs in bash (noir-lang/noir#6472) fix: Discard optimisation that would change execution ordering or that is related to call outputs (noir-lang/noir#6461) chore: proptest for `canonicalize` on infix type expressions (noir-lang/noir#6269) fix: let formatter respect newlines between comments (noir-lang/noir#6458) fix: check infix expression is valid in program input (noir-lang/noir#6450) fix: don't crash on AsTraitPath with empty path (noir-lang/noir#6454) fix(tests): Prevent EOF error while running test programs (noir-lang/noir#6455) fix(sea): mem2reg to treat block input references as alias (noir-lang/noir#6452) chore: revamp attributes (noir-lang/noir#6424) feat!: Always Check Arithmetic Generics at Monomorphization (noir-lang/noir#6329) chore: split path and import lookups (noir-lang/noir#6430) fix(ssa): Resolve value IDs in terminator before comparing to array (noir-lang/noir#6448) fix: right shift is not a regular division (noir-lang/noir#6400)
AztecBot
added a commit
to AztecProtocol/aztec-packages
that referenced
this pull request
Nov 12, 2024
…ng/noir#6502) feat: SSA parser (noir-lang/noir#6489) chore(test): Run test matrix on test_programs (noir-lang/noir#6429) chore(ci): fix cargo deny (noir-lang/noir#6501) feat: Deduplicate instructions across blocks (noir-lang/noir#6499) chore: move tests for arithmetic generics closer to the code (noir-lang/noir#6497) fix(docs): Fix broken links in oracles doc (noir-lang/noir#6488) fix: Treat all parameters as possible aliases of each other (noir-lang/noir#6477) chore: bump rust dependencies (noir-lang/noir#6482) feat: use a full `BlackBoxFunctionSolver` implementation when execution brillig during acirgen (noir-lang/noir#6481) chore(docs): Update How to Oracles (noir-lang/noir#5675) chore: Release Noir(0.38.0) (noir-lang/noir#6422) fix(ssa): Change array_set to not mutate slices coming from function inputs (noir-lang/noir#6463) chore: update example to show how to split public inputs in bash (noir-lang/noir#6472) fix: Discard optimisation that would change execution ordering or that is related to call outputs (noir-lang/noir#6461) chore: proptest for `canonicalize` on infix type expressions (noir-lang/noir#6269) fix: let formatter respect newlines between comments (noir-lang/noir#6458) fix: check infix expression is valid in program input (noir-lang/noir#6450) fix: don't crash on AsTraitPath with empty path (noir-lang/noir#6454) fix(tests): Prevent EOF error while running test programs (noir-lang/noir#6455) fix(sea): mem2reg to treat block input references as alias (noir-lang/noir#6452) chore: revamp attributes (noir-lang/noir#6424) feat!: Always Check Arithmetic Generics at Monomorphization (noir-lang/noir#6329) chore: split path and import lookups (noir-lang/noir#6430) fix(ssa): Resolve value IDs in terminator before comparing to array (noir-lang/noir#6448) fix: right shift is not a regular division (noir-lang/noir#6400)
AztecBot
added a commit
to AztecProtocol/aztec-packages
that referenced
this pull request
Nov 13, 2024
…-lang/noir#6506) fix: parse Slice type in SSa (noir-lang/noir#6507) fix: perform arithmetic simplification through `CheckedCast` (noir-lang/noir#6502) feat: SSA parser (noir-lang/noir#6489) chore(test): Run test matrix on test_programs (noir-lang/noir#6429) chore(ci): fix cargo deny (noir-lang/noir#6501) feat: Deduplicate instructions across blocks (noir-lang/noir#6499) chore: move tests for arithmetic generics closer to the code (noir-lang/noir#6497) fix(docs): Fix broken links in oracles doc (noir-lang/noir#6488) fix: Treat all parameters as possible aliases of each other (noir-lang/noir#6477) chore: bump rust dependencies (noir-lang/noir#6482) feat: use a full `BlackBoxFunctionSolver` implementation when execution brillig during acirgen (noir-lang/noir#6481) chore(docs): Update How to Oracles (noir-lang/noir#5675) chore: Release Noir(0.38.0) (noir-lang/noir#6422) fix(ssa): Change array_set to not mutate slices coming from function inputs (noir-lang/noir#6463) chore: update example to show how to split public inputs in bash (noir-lang/noir#6472) fix: Discard optimisation that would change execution ordering or that is related to call outputs (noir-lang/noir#6461) chore: proptest for `canonicalize` on infix type expressions (noir-lang/noir#6269) fix: let formatter respect newlines between comments (noir-lang/noir#6458) fix: check infix expression is valid in program input (noir-lang/noir#6450) fix: don't crash on AsTraitPath with empty path (noir-lang/noir#6454) fix(tests): Prevent EOF error while running test programs (noir-lang/noir#6455) fix(sea): mem2reg to treat block input references as alias (noir-lang/noir#6452) chore: revamp attributes (noir-lang/noir#6424) feat!: Always Check Arithmetic Generics at Monomorphization (noir-lang/noir#6329) chore: split path and import lookups (noir-lang/noir#6430) fix(ssa): Resolve value IDs in terminator before comparing to array (noir-lang/noir#6448) fix: right shift is not a regular division (noir-lang/noir#6400)
AztecBot
added a commit
to AztecProtocol/aztec-packages
that referenced
this pull request
Nov 13, 2024
) fix: parse Slice type in SSa (noir-lang/noir#6507) fix: perform arithmetic simplification through `CheckedCast` (noir-lang/noir#6502) feat: SSA parser (noir-lang/noir#6489) chore(test): Run test matrix on test_programs (noir-lang/noir#6429) chore(ci): fix cargo deny (noir-lang/noir#6501) feat: Deduplicate instructions across blocks (noir-lang/noir#6499) chore: move tests for arithmetic generics closer to the code (noir-lang/noir#6497) fix(docs): Fix broken links in oracles doc (noir-lang/noir#6488) fix: Treat all parameters as possible aliases of each other (noir-lang/noir#6477) chore: bump rust dependencies (noir-lang/noir#6482) feat: use a full `BlackBoxFunctionSolver` implementation when execution brillig during acirgen (noir-lang/noir#6481) chore(docs): Update How to Oracles (noir-lang/noir#5675) chore: Release Noir(0.38.0) (noir-lang/noir#6422) fix(ssa): Change array_set to not mutate slices coming from function inputs (noir-lang/noir#6463) chore: update example to show how to split public inputs in bash (noir-lang/noir#6472) fix: Discard optimisation that would change execution ordering or that is related to call outputs (noir-lang/noir#6461) chore: proptest for `canonicalize` on infix type expressions (noir-lang/noir#6269) fix: let formatter respect newlines between comments (noir-lang/noir#6458) fix: check infix expression is valid in program input (noir-lang/noir#6450) fix: don't crash on AsTraitPath with empty path (noir-lang/noir#6454) fix(tests): Prevent EOF error while running test programs (noir-lang/noir#6455) fix(sea): mem2reg to treat block input references as alias (noir-lang/noir#6452) chore: revamp attributes (noir-lang/noir#6424) feat!: Always Check Arithmetic Generics at Monomorphization (noir-lang/noir#6329) chore: split path and import lookups (noir-lang/noir#6430) fix(ssa): Resolve value IDs in terminator before comparing to array (noir-lang/noir#6448) fix: right shift is not a regular division (noir-lang/noir#6400)
5 tasks
AztecBot
added a commit
to AztecProtocol/aztec-packages
that referenced
this pull request
Nov 14, 2024
feat: avoid unnecessary ssa passes while loop unrolling (noir-lang/noir#6509) fix(tests): Use a file lock as well as a mutex to isolate tests cases (noir-lang/noir#6508) fix: set local_module before elaborating each trait (noir-lang/noir#6506) fix: parse Slice type in SSa (noir-lang/noir#6507) fix: perform arithmetic simplification through `CheckedCast` (noir-lang/noir#6502) feat: SSA parser (noir-lang/noir#6489) chore(test): Run test matrix on test_programs (noir-lang/noir#6429) chore(ci): fix cargo deny (noir-lang/noir#6501) feat: Deduplicate instructions across blocks (noir-lang/noir#6499) chore: move tests for arithmetic generics closer to the code (noir-lang/noir#6497) fix(docs): Fix broken links in oracles doc (noir-lang/noir#6488) fix: Treat all parameters as possible aliases of each other (noir-lang/noir#6477) chore: bump rust dependencies (noir-lang/noir#6482) feat: use a full `BlackBoxFunctionSolver` implementation when execution brillig during acirgen (noir-lang/noir#6481) chore(docs): Update How to Oracles (noir-lang/noir#5675) chore: Release Noir(0.38.0) (noir-lang/noir#6422) fix(ssa): Change array_set to not mutate slices coming from function inputs (noir-lang/noir#6463) chore: update example to show how to split public inputs in bash (noir-lang/noir#6472) fix: Discard optimisation that would change execution ordering or that is related to call outputs (noir-lang/noir#6461) chore: proptest for `canonicalize` on infix type expressions (noir-lang/noir#6269) fix: let formatter respect newlines between comments (noir-lang/noir#6458) fix: check infix expression is valid in program input (noir-lang/noir#6450) fix: don't crash on AsTraitPath with empty path (noir-lang/noir#6454) fix(tests): Prevent EOF error while running test programs (noir-lang/noir#6455) fix(sea): mem2reg to treat block input references as alias (noir-lang/noir#6452) chore: revamp attributes (noir-lang/noir#6424) feat!: Always Check Arithmetic Generics at Monomorphization (noir-lang/noir#6329) chore: split path and import lookups (noir-lang/noir#6430) fix(ssa): Resolve value IDs in terminator before comparing to array (noir-lang/noir#6448) fix: right shift is not a regular division (noir-lang/noir#6400)
AztecBot
added a commit
to AztecProtocol/aztec-packages
that referenced
this pull request
Nov 14, 2024
feat: avoid unnecessary ssa passes while loop unrolling (noir-lang/noir#6509) fix(tests): Use a file lock as well as a mutex to isolate tests cases (noir-lang/noir#6508) fix: set local_module before elaborating each trait (noir-lang/noir#6506) fix: parse Slice type in SSa (noir-lang/noir#6507) fix: perform arithmetic simplification through `CheckedCast` (noir-lang/noir#6502) feat: SSA parser (noir-lang/noir#6489) chore(test): Run test matrix on test_programs (noir-lang/noir#6429) chore(ci): fix cargo deny (noir-lang/noir#6501) feat: Deduplicate instructions across blocks (noir-lang/noir#6499) chore: move tests for arithmetic generics closer to the code (noir-lang/noir#6497) fix(docs): Fix broken links in oracles doc (noir-lang/noir#6488) fix: Treat all parameters as possible aliases of each other (noir-lang/noir#6477) chore: bump rust dependencies (noir-lang/noir#6482) feat: use a full `BlackBoxFunctionSolver` implementation when execution brillig during acirgen (noir-lang/noir#6481) chore(docs): Update How to Oracles (noir-lang/noir#5675) chore: Release Noir(0.38.0) (noir-lang/noir#6422) fix(ssa): Change array_set to not mutate slices coming from function inputs (noir-lang/noir#6463) chore: update example to show how to split public inputs in bash (noir-lang/noir#6472) fix: Discard optimisation that would change execution ordering or that is related to call outputs (noir-lang/noir#6461) chore: proptest for `canonicalize` on infix type expressions (noir-lang/noir#6269) fix: let formatter respect newlines between comments (noir-lang/noir#6458) fix: check infix expression is valid in program input (noir-lang/noir#6450) fix: don't crash on AsTraitPath with empty path (noir-lang/noir#6454) fix(tests): Prevent EOF error while running test programs (noir-lang/noir#6455) fix(sea): mem2reg to treat block input references as alias (noir-lang/noir#6452) chore: revamp attributes (noir-lang/noir#6424) feat!: Always Check Arithmetic Generics at Monomorphization (noir-lang/noir#6329) chore: split path and import lookups (noir-lang/noir#6430) fix(ssa): Resolve value IDs in terminator before comparing to array (noir-lang/noir#6448) fix: right shift is not a regular division (noir-lang/noir#6400)
AztecBot
added a commit
to AztecProtocol/aztec-packages
that referenced
this pull request
Nov 14, 2024
…g/noir#6449) chore(ssa): Skip array_set pass for Brillig functions (noir-lang/noir#6513) chore: Reverse ssa parser diff order (noir-lang/noir#6511) chore: Parse negatives in SSA parser (noir-lang/noir#6510) feat: avoid unnecessary ssa passes while loop unrolling (noir-lang/noir#6509) fix(tests): Use a file lock as well as a mutex to isolate tests cases (noir-lang/noir#6508) fix: set local_module before elaborating each trait (noir-lang/noir#6506) fix: parse Slice type in SSa (noir-lang/noir#6507) fix: perform arithmetic simplification through `CheckedCast` (noir-lang/noir#6502) feat: SSA parser (noir-lang/noir#6489) chore(test): Run test matrix on test_programs (noir-lang/noir#6429) chore(ci): fix cargo deny (noir-lang/noir#6501) feat: Deduplicate instructions across blocks (noir-lang/noir#6499) chore: move tests for arithmetic generics closer to the code (noir-lang/noir#6497) fix(docs): Fix broken links in oracles doc (noir-lang/noir#6488) fix: Treat all parameters as possible aliases of each other (noir-lang/noir#6477) chore: bump rust dependencies (noir-lang/noir#6482) feat: use a full `BlackBoxFunctionSolver` implementation when execution brillig during acirgen (noir-lang/noir#6481) chore(docs): Update How to Oracles (noir-lang/noir#5675) chore: Release Noir(0.38.0) (noir-lang/noir#6422) fix(ssa): Change array_set to not mutate slices coming from function inputs (noir-lang/noir#6463) chore: update example to show how to split public inputs in bash (noir-lang/noir#6472) fix: Discard optimisation that would change execution ordering or that is related to call outputs (noir-lang/noir#6461) chore: proptest for `canonicalize` on infix type expressions (noir-lang/noir#6269) fix: let formatter respect newlines between comments (noir-lang/noir#6458) fix: check infix expression is valid in program input (noir-lang/noir#6450) fix: don't crash on AsTraitPath with empty path (noir-lang/noir#6454) fix(tests): Prevent EOF error while running test programs (noir-lang/noir#6455) fix(sea): mem2reg to treat block input references as alias (noir-lang/noir#6452) chore: revamp attributes (noir-lang/noir#6424) feat!: Always Check Arithmetic Generics at Monomorphization (noir-lang/noir#6329) chore: split path and import lookups (noir-lang/noir#6430) fix(ssa): Resolve value IDs in terminator before comparing to array (noir-lang/noir#6448) fix: right shift is not a regular division (noir-lang/noir#6400)
AztecBot
added a commit
to AztecProtocol/aztec-packages
that referenced
this pull request
Nov 14, 2024
chore(ssa): Skip array_set pass for Brillig functions (noir-lang/noir#6513) chore: Reverse ssa parser diff order (noir-lang/noir#6511) chore: Parse negatives in SSA parser (noir-lang/noir#6510) feat: avoid unnecessary ssa passes while loop unrolling (noir-lang/noir#6509) fix(tests): Use a file lock as well as a mutex to isolate tests cases (noir-lang/noir#6508) fix: set local_module before elaborating each trait (noir-lang/noir#6506) fix: parse Slice type in SSa (noir-lang/noir#6507) fix: perform arithmetic simplification through `CheckedCast` (noir-lang/noir#6502) feat: SSA parser (noir-lang/noir#6489) chore(test): Run test matrix on test_programs (noir-lang/noir#6429) chore(ci): fix cargo deny (noir-lang/noir#6501) feat: Deduplicate instructions across blocks (noir-lang/noir#6499) chore: move tests for arithmetic generics closer to the code (noir-lang/noir#6497) fix(docs): Fix broken links in oracles doc (noir-lang/noir#6488) fix: Treat all parameters as possible aliases of each other (noir-lang/noir#6477) chore: bump rust dependencies (noir-lang/noir#6482) feat: use a full `BlackBoxFunctionSolver` implementation when execution brillig during acirgen (noir-lang/noir#6481) chore(docs): Update How to Oracles (noir-lang/noir#5675) chore: Release Noir(0.38.0) (noir-lang/noir#6422) fix(ssa): Change array_set to not mutate slices coming from function inputs (noir-lang/noir#6463) chore: update example to show how to split public inputs in bash (noir-lang/noir#6472) fix: Discard optimisation that would change execution ordering or that is related to call outputs (noir-lang/noir#6461) chore: proptest for `canonicalize` on infix type expressions (noir-lang/noir#6269) fix: let formatter respect newlines between comments (noir-lang/noir#6458) fix: check infix expression is valid in program input (noir-lang/noir#6450) fix: don't crash on AsTraitPath with empty path (noir-lang/noir#6454) fix(tests): Prevent EOF error while running test programs (noir-lang/noir#6455) fix(sea): mem2reg to treat block input references as alias (noir-lang/noir#6452) chore: revamp attributes (noir-lang/noir#6424) feat!: Always Check Arithmetic Generics at Monomorphization (noir-lang/noir#6329) chore: split path and import lookups (noir-lang/noir#6430) fix(ssa): Resolve value IDs in terminator before comparing to array (noir-lang/noir#6448) fix: right shift is not a regular division (noir-lang/noir#6400)
AztecBot
added a commit
to AztecProtocol/aztec-packages
that referenced
this pull request
Nov 14, 2024
…me intepreter (noir-lang/noir#6514) fix: disallow `#[test]` on associated functions (noir-lang/noir#6449) chore(ssa): Skip array_set pass for Brillig functions (noir-lang/noir#6513) chore: Reverse ssa parser diff order (noir-lang/noir#6511) chore: Parse negatives in SSA parser (noir-lang/noir#6510) feat: avoid unnecessary ssa passes while loop unrolling (noir-lang/noir#6509) fix(tests): Use a file lock as well as a mutex to isolate tests cases (noir-lang/noir#6508) fix: set local_module before elaborating each trait (noir-lang/noir#6506) fix: parse Slice type in SSa (noir-lang/noir#6507) fix: perform arithmetic simplification through `CheckedCast` (noir-lang/noir#6502) feat: SSA parser (noir-lang/noir#6489) chore(test): Run test matrix on test_programs (noir-lang/noir#6429) chore(ci): fix cargo deny (noir-lang/noir#6501) feat: Deduplicate instructions across blocks (noir-lang/noir#6499) chore: move tests for arithmetic generics closer to the code (noir-lang/noir#6497) fix(docs): Fix broken links in oracles doc (noir-lang/noir#6488) fix: Treat all parameters as possible aliases of each other (noir-lang/noir#6477) chore: bump rust dependencies (noir-lang/noir#6482) feat: use a full `BlackBoxFunctionSolver` implementation when execution brillig during acirgen (noir-lang/noir#6481) chore(docs): Update How to Oracles (noir-lang/noir#5675) chore: Release Noir(0.38.0) (noir-lang/noir#6422) fix(ssa): Change array_set to not mutate slices coming from function inputs (noir-lang/noir#6463) chore: update example to show how to split public inputs in bash (noir-lang/noir#6472) fix: Discard optimisation that would change execution ordering or that is related to call outputs (noir-lang/noir#6461) chore: proptest for `canonicalize` on infix type expressions (noir-lang/noir#6269) fix: let formatter respect newlines between comments (noir-lang/noir#6458) fix: check infix expression is valid in program input (noir-lang/noir#6450) fix: don't crash on AsTraitPath with empty path (noir-lang/noir#6454) fix(tests): Prevent EOF error while running test programs (noir-lang/noir#6455) fix(sea): mem2reg to treat block input references as alias (noir-lang/noir#6452) chore: revamp attributes (noir-lang/noir#6424) feat!: Always Check Arithmetic Generics at Monomorphization (noir-lang/noir#6329) chore: split path and import lookups (noir-lang/noir#6430) fix(ssa): Resolve value IDs in terminator before comparing to array (noir-lang/noir#6448) fix: right shift is not a regular division (noir-lang/noir#6400)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Problem
Resolves #6475
Summary
This PR introduces the
Ssa::from_src
method to parse SSA from text intoSsa
. The code is first parsed into an intermediate (new) AST, then from it an SSA is created by using the existingFunctionBuilder
.Then, some existing tests are updated to use this form of creating the SSA instead of manually doing it with
FunctionBuilder
.Some notes:
[Field 1, Field 1]
it could actually be an array of(Field, Field)
but we can't know that. So, now arrays include their type, like this:[Field 1, Field 1] of Field
(or whatever type they are). Other instructions likecall
,allocate
andload
specify what type they return with-> types...
at the end. I chose that syntax so that the types come at the end and one can still focus on the important bits on the left side.IfElse
instruction is still not parsed in this PR. I couldn't find an example of it. But we can include it in a follow-up PR.constrain
andrange_check
isn't parsed (yet). This could be done in a follow-up PR, but my thinking here was that it's not important for tests, and it seems no tests actually use these strings (but it could be good to have for completeness)Additional Context
Documentation
Check one:
PR Checklist
cargo fmt
on default settings.