Add Brillig support#4
Merged
benjaminwilson merged 2 commits intonoir-r1cs-compilerfrom Mar 23, 2025
Merged
Conversation
recmo
approved these changes
Mar 21, 2025
Bisht13
added a commit
that referenced
this pull request
Feb 20, 2026
…cross-evals, PrefixCovector tests - Remove R1CSSolver trait, convert test_witness_satisfaction to free fn (#3) - Make w2_layers compression conditional on has_challenges (#4) - Parallelize cross-evaluation dot products with rayon::join (~12% prove speedup) (#6) - Add debug_assert in PrefixCovector::accumulate (#11) - Add PrefixCovector unit tests: size, mle_evaluate, accumulate, prefix=logical (#2) - Fix clippy: &mut Vec -> &mut [] in solve_witness_vec
This file contains hidden or 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
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.
Brillig is used by the ACVM for solving for the ACIR witness values (the values that are available in
witness_stack), and this is its only purpose. Thus adding support for Noir programs that generate Brillig instructions required only mapping all the ACIR witness values to the R1CS witness values (previously we were mapping over only the ACIR inputs, which excluded the intermediate ACIR witnesses introduced by Brillig).I tested this out with the following program (dissected here):
main.rs:Nargo.toml: