feat: Execute brillig opcodes with constant inputs at compile-time#2190
Merged
kevaundray merged 13 commits intomasterfrom Aug 11, 2023
Merged
feat: Execute brillig opcodes with constant inputs at compile-time#2190kevaundray merged 13 commits intomasterfrom
kevaundray merged 13 commits intomasterfrom
Conversation
bdcf96b to
f0656b0
Compare
d5be624 to
39ffa75
Compare
Contributor
|
Would this still be needed if we only translated the SSA -> Brillig after performing the SSA optimizations? I believe this is something we wanted to do anyway. |
Member
Author
|
I'm not sure however it's pretty self contained so we could always remove it once that's implemented. |
* master: chore: Remove symlink and dummy config file (#2200) fix: Fix an ICE when reassigning a mutable lambda variable to one with a different environment type (#2172) feat: Only create new witnesses for distinctiveness when duplicates exist (#2191) chore: Use helper functions for getting values of `AcirVar`s (#2194) feat: Add support for slices of structs and nested slices in brillig (#2084) feat: Perform sorting of constant arrays at compile time (#2195)
* master: (29 commits) feat(nargo): Add support for contracts in `nargo check` (#2267) chore(ci): Name wasm job more clearly (#2269) chore(ci): Create cache key with consideration to target (#2273) chore(ci): Run publish workflow against PRs (#2268) chore: Merge in contents of `build-nargo` repository (#2211) fix(lsp): Improve dependency resolution in context of `Nargo.toml` (#2226) chore: Remove unnecessary duplication in how we test Noir compiler (#2248) fix: properly capture lvalues in closure environments (#2120) (#2257) fix: Optimize contracts built by `nargo info` (#2259) chore: impl Display for DebugType (#2258) chore: update `noir_wasm` build process to match `acvm_js` (#2067) feat: Implement traits - parser support #2094 (#2230) chore: Refactor DefCollector duplicate errors (#2231) chore: Address clippy warnings (#2246) feat: Support `contract` package type in `nargo info` command (#2249) feat: Add slice append (#2241) chore: Bump `async-lsp` to v0.0.5 (#2186) chore: Move the remaining `nargo_cli` lib funcs into `nargo` crate (#2225) chore: Add test for eddsa (#2237) chore: Split `Nargo.toml` operations into separate package (#2224) ...
Member
Author
|
Bumping this. |
sirasistant
previously approved these changes
Aug 11, 2023
Contributor
sirasistant
left a comment
There was a problem hiding this comment.
LGTM, could you add a comment pointing to the issue of applying optimizations before brillig gen so we remove this optimization in acir_gen after that issue is done?
TomAFrench
commented
Aug 11, 2023
kevaundray
approved these changes
Aug 11, 2023
TomAFrench
added a commit
that referenced
this pull request
Aug 15, 2023
* master: chore: Reuse workspace target directory in wasm build script (#2312) feat(nargo): Add `--workspace` flag to run commands in every package (#2313) chore(frontend): Replace `ModuleOrigin` with `Location` on `ModuleData` (#2308) fix: Fix 3 parser test cases in parsing (#2284) fix: Require package names to be non-empty (#2293) fix(nargo)!: Remove `-p` short flag from the `--program-dir` flag (#2300) feat: optionally output a debug artifact on compile (#2260) chore: `nargo info` now prints information as a prettified table (#2282) fix(lsp): Pass `--program-dir` to test command from codelens (#2292) fix(nargo): Allow `--program-dir` flag anywhere in a command (#2290) feat: Execute brillig opcodes with constant inputs at compile-time (#2190) feat: Add basic benchmarking (#2213) feat: Include struct names in ABIs (#2266) feat(nargo): Add `--exact` flag to `nargo test` (#2272)
TomAFrench
added a commit
that referenced
this pull request
Aug 15, 2023
* master: (23 commits) chore: Reuse workspace target directory in wasm build script (#2312) feat(nargo): Add `--workspace` flag to run commands in every package (#2313) chore(frontend): Replace `ModuleOrigin` with `Location` on `ModuleData` (#2308) fix: Fix 3 parser test cases in parsing (#2284) fix: Require package names to be non-empty (#2293) fix(nargo)!: Remove `-p` short flag from the `--program-dir` flag (#2300) feat: optionally output a debug artifact on compile (#2260) chore: `nargo info` now prints information as a prettified table (#2282) fix(lsp): Pass `--program-dir` to test command from codelens (#2292) fix(nargo): Allow `--program-dir` flag anywhere in a command (#2290) feat: Execute brillig opcodes with constant inputs at compile-time (#2190) feat: Add basic benchmarking (#2213) feat: Include struct names in ABIs (#2266) feat(nargo): Add `--exact` flag to `nargo test` (#2272) fix: Fix assignment when both `mut` and `&mut` are used (#2264) feat: Add `assert_constant` (#2242) feat(nargo): Add support for contracts in `nargo check` (#2267) chore(ci): Name wasm job more clearly (#2269) chore(ci): Create cache key with consideration to target (#2273) chore(ci): Run publish workflow against PRs (#2268) ...
TomAFrench
added a commit
that referenced
this pull request
Aug 15, 2023
* master: (26 commits) chore(noir): Release 0.10.0 (#2039) fix(lsp): Ensure lsp does not crawl past the root specified (#2322) fix: Prevent panic when passing relative paths to `--program-dir` (#2324) fix: Overflowing assignment will result in an error (#2321) chore: clippy fixes (#2320) chore: Parameterize the build mode for noir-wasm (#2317) chore: Make `wasm` tests pull from `result` directory (#2319) chore: Fix typo (#2315) chore: Reuse workspace target directory in wasm build script (#2312) feat(nargo): Add `--workspace` flag to run commands in every package (#2313) chore(frontend): Replace `ModuleOrigin` with `Location` on `ModuleData` (#2308) fix: Fix 3 parser test cases in parsing (#2284) fix: Require package names to be non-empty (#2293) fix(nargo)!: Remove `-p` short flag from the `--program-dir` flag (#2300) feat: optionally output a debug artifact on compile (#2260) chore: `nargo info` now prints information as a prettified table (#2282) fix(lsp): Pass `--program-dir` to test command from codelens (#2292) fix(nargo): Allow `--program-dir` flag anywhere in a command (#2290) feat: Execute brillig opcodes with constant inputs at compile-time (#2190) feat: Add basic benchmarking (#2213) ...
5 tasks
jfecher
pushed a commit
that referenced
this pull request
Aug 16, 2023
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.
Description
Problem*
Resolves #2189
Summary*
This PR executes any Brillig opcodes for which all of the inputs are known at compile time so that we can just create constants for the results to inject where necessary. This allows us to completely solve some test circuits at compile time.
Documentation
This PR requires documentation updates when merged.
Additional Context
PR Checklist*
cargo fmton default settings.