-
Notifications
You must be signed in to change notification settings - Fork 236
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: inline simple functions #7160
Conversation
This reverts commit f8ab025.
Changes to number of Brillig opcodes executed
🧾 Summary (10% most significant diffs)
Full diff report 👇
|
Changes to Brillig bytecode sizes
🧾 Summary (10% most significant diffs)
Full diff report 👇
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
⚠️ Performance Alert ⚠️
Possible performance regression was detected for benchmark 'Compilation Time'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20
.
Benchmark suite | Current: 36ff6ad | Previous: c8d5ce5 | Ratio |
---|---|---|---|
rollup-root |
4.438 s |
3.556 s |
1.25 |
rollup-merge |
2.738 s |
2.004 s |
1.37 |
rollup-block-merge |
4.384 s |
3.626 s |
1.21 |
rollup-base-private |
12.78 s |
10.32 s |
1.24 |
This comment was automatically generated by workflow using github-action-benchmark.
CC: @TomAFrench
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
⚠️ Performance Alert ⚠️
Possible performance regression was detected for benchmark 'Compilation Memory'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20
.
Benchmark suite | Current: 8c96690 | Previous: c8d5ce5 | Ratio |
---|---|---|---|
ram_blowup_regression |
2200 MB |
1480 MB |
1.49 |
rollup-block-root-single-tx |
16210 MB |
6250 MB |
2.59 |
This comment was automatically generated by workflow using github-action-benchmark.
CC: @TomAFrench
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
⚠️ Performance Alert ⚠️
Possible performance regression was detected for benchmark 'Execution Time'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20
.
Benchmark suite | Current: 01ceaa3 | Previous: c8d5ce5 | Ratio |
---|---|---|---|
regression_4709 |
0.002 s |
0.001 s |
2 |
This comment was automatically generated by workflow using github-action-benchmark.
CC: @TomAFrench
Very nice! There's some regressions on keccak256 when using a zero aggressiveness, can you take a look (non blocker but it would need an issue) |
Sure! I'll take a look at it before merging this. |
@TomAFrench I was wondering if the (so far the only difference I found was that a |
I think I'll merge this PR and then look at that issue because it seems to need an extra fix. |
Regarding keccak256, what I found was that noir/noir_stdlib/src/hash/mod.nr Lines 118 to 122 in 2da0a4f
And that function is |
Looks like we have a really big regression here as well reversing the gains made by #7072. |
Interesting. I think this would likely be fixed by running some of the additional passes done as part of the preprocessing pass on the functions which we've just inlined into. Once we've inlined these simple functions then we will be able to remove a lot of allocations whereas I'm guessing that this PR is resulting in these optimizations being deferred again. |
@asterite Chucking a mem2reg pass afterwards should help |
Done. Regarding |
Looks like the regression is fixed now but there's a test failure 🤔 |
Yeah, inlining with weight scores is a little bit of a pain for that reason. Let's just record it and once we've done all of these optimizations which definitely should reduce bytecode sizes then we can see if there's ways to improve these cases. |
I ran into the same thing in #7165 and fixed it there. I'll extract it. |
Merging in #7169 should fix those panics in https://github.com/noir-lang/noir/actions/runs/12935521653/job/36079229284?pr=7160 |
I guess linking the comment we want to resolve will close the PR 😅 |
Where can this be seen? |
https://github.com/noir-lang/noir/actions/runs/12936395030/job/36082771664?pr=7160 under the merge reports job we print out the report to the shell. Looks like there was even an improvement. |
fix: ensure canonical bits decomposition (noir-lang/noir#7168) fix: Keep `inc_rc` for array inputs during preprocessing (noir-lang/noir#7163) fix(docs): Update broken links to EC lib (noir-lang/noir#7141) feat: inline simple functions (noir-lang/noir#7160) feat(ssa): Expand feature set of the Brillig constraint check (noir-lang/noir#7060) fix(ssa): Resolve value before fetching from DFG in a couple cases (noir-lang/noir#7169) fix: `Function::is_no_predicates` always returned false for brillig f… (noir-lang/noir#7167) chore(refactor): Remove globals field on Ssa object and use only the shared globals graph (noir-lang/noir#7156) chore: let `Function::inlined` take a `should_inline_call` function (noir-lang/noir#7149) chore: add compile-time assertions on generic arguments of stdlib functions (noir-lang/noir#6981) fix: LSP hover over function with `&mut self` (noir-lang/noir#7155) feat(brillig): Set global memory size at program compile time (noir-lang/noir#7151) feat: LSP autocomplete module declaration (noir-lang/noir#7154) feat(ssa): Reuse constants from the globals graph when making constants in a function DFG (noir-lang/noir#7153) feat: LSP chain inlay hints (noir-lang/noir#7152) chore: turn on overflow checks in CI rust tests (noir-lang/noir#7145) fix(ssa): Use post order when mapping instructions in loop invariant pass (noir-lang/noir#7140) fix: preserve types when reading from calldata arrays (noir-lang/noir#7144) feat: Resolve enums & prepare type system (noir-lang/noir#7115) feat: `loop` must have at least one `break` (noir-lang/noir#7126) feat: parse globals in SSA parser (noir-lang/noir#7112) fix: allow calling trait impl method from struct if multiple impls exist (noir-lang/noir#7124) fix: avoid creating unnecessary memory blocks (noir-lang/noir#7114) chore: relax threshold for reporting regressions (noir-lang/noir#7130) fix: proper cleanup when breaking from comptime loop on error (noir-lang/noir#7125) fix: Prevent overlapping associated types impls (noir-lang/noir#7047) feat: unconstrained optimizations for BoundedVec (noir-lang/noir#7119) chore: mark libs good (noir-lang/noir#7123) chore: remove comments for time/memory benchmarks (noir-lang/noir#7121) fix: don't always use an exclusive lock in `nargo check` (noir-lang/noir#7120) feat(ssa): Pass to preprocess functions (noir-lang/noir#7072) chore: Formatting issues / minor errors in the docs (noir-lang/noir#7105) fix: defunctionalize pass on the caller runtime to apply (noir-lang/noir#7100) feat: Parser and formatter support for `enum`s (noir-lang/noir#7110) feat(brillig): SSA globals code gen (noir-lang/noir#7021) feat: `loop` keyword in runtime and comptime code (noir-lang/noir#7096) chore: Add benchmarking dashboard (noir-lang/noir#7068) feat(experimental): try to infer lambda argument types inside calls (noir-lang/noir#7088) feat(ssa): Add flag to DIE pass to be able to keep `store` instructions (noir-lang/noir#7106) chore: Cookbook Onboard integration (noir-lang/noir#7044) chore: lock to ubuntu 22.04 (noir-lang/noir#7098) fix: Remove unused brillig functions (noir-lang/noir#7102) chore(ssa): Use correct prefix when printing array values in global space (noir-lang/noir#7095)
fix: ensure canonical bits decomposition (noir-lang/noir#7168) fix: Keep `inc_rc` for array inputs during preprocessing (noir-lang/noir#7163) fix(docs): Update broken links to EC lib (noir-lang/noir#7141) feat: inline simple functions (noir-lang/noir#7160) feat(ssa): Expand feature set of the Brillig constraint check (noir-lang/noir#7060) fix(ssa): Resolve value before fetching from DFG in a couple cases (noir-lang/noir#7169) fix: `Function::is_no_predicates` always returned false for brillig f… (noir-lang/noir#7167) chore(refactor): Remove globals field on Ssa object and use only the shared globals graph (noir-lang/noir#7156) chore: let `Function::inlined` take a `should_inline_call` function (noir-lang/noir#7149) chore: add compile-time assertions on generic arguments of stdlib functions (noir-lang/noir#6981) fix: LSP hover over function with `&mut self` (noir-lang/noir#7155) feat(brillig): Set global memory size at program compile time (noir-lang/noir#7151) feat: LSP autocomplete module declaration (noir-lang/noir#7154) feat(ssa): Reuse constants from the globals graph when making constants in a function DFG (noir-lang/noir#7153) feat: LSP chain inlay hints (noir-lang/noir#7152) chore: turn on overflow checks in CI rust tests (noir-lang/noir#7145) fix(ssa): Use post order when mapping instructions in loop invariant pass (noir-lang/noir#7140) fix: preserve types when reading from calldata arrays (noir-lang/noir#7144) feat: Resolve enums & prepare type system (noir-lang/noir#7115) feat: `loop` must have at least one `break` (noir-lang/noir#7126) feat: parse globals in SSA parser (noir-lang/noir#7112) fix: allow calling trait impl method from struct if multiple impls exist (noir-lang/noir#7124) fix: avoid creating unnecessary memory blocks (noir-lang/noir#7114) chore: relax threshold for reporting regressions (noir-lang/noir#7130) fix: proper cleanup when breaking from comptime loop on error (noir-lang/noir#7125) fix: Prevent overlapping associated types impls (noir-lang/noir#7047) feat: unconstrained optimizations for BoundedVec (noir-lang/noir#7119) chore: mark libs good (noir-lang/noir#7123) chore: remove comments for time/memory benchmarks (noir-lang/noir#7121) fix: don't always use an exclusive lock in `nargo check` (noir-lang/noir#7120) feat(ssa): Pass to preprocess functions (noir-lang/noir#7072) chore: Formatting issues / minor errors in the docs (noir-lang/noir#7105) fix: defunctionalize pass on the caller runtime to apply (noir-lang/noir#7100) feat: Parser and formatter support for `enum`s (noir-lang/noir#7110) feat(brillig): SSA globals code gen (noir-lang/noir#7021) feat: `loop` keyword in runtime and comptime code (noir-lang/noir#7096) chore: Add benchmarking dashboard (noir-lang/noir#7068) feat(experimental): try to infer lambda argument types inside calls (noir-lang/noir#7088) feat(ssa): Add flag to DIE pass to be able to keep `store` instructions (noir-lang/noir#7106) chore: Cookbook Onboard integration (noir-lang/noir#7044) chore: lock to ubuntu 22.04 (noir-lang/noir#7098) fix: Remove unused brillig functions (noir-lang/noir#7102) chore(ssa): Use correct prefix when printing array values in global space (noir-lang/noir#7095)
…r-lang/noir#7185) fix(LSP): correct signature for assert and assert_eq (noir-lang/noir#7184) chore(experimental): Prevent enum panics by returning Options where possible instead of panicking (noir-lang/noir#7180) feat(experimental): Construct enum variants in expressions (noir-lang/noir#7174) feat: add `noir-inspector` (noir-lang/noir#7136) fix: ensure canonical bits decomposition (noir-lang/noir#7168) fix: Keep `inc_rc` for array inputs during preprocessing (noir-lang/noir#7163) fix(docs): Update broken links to EC lib (noir-lang/noir#7141) feat: inline simple functions (noir-lang/noir#7160) feat(ssa): Expand feature set of the Brillig constraint check (noir-lang/noir#7060) fix(ssa): Resolve value before fetching from DFG in a couple cases (noir-lang/noir#7169) fix: `Function::is_no_predicates` always returned false for brillig f… (noir-lang/noir#7167) chore(refactor): Remove globals field on Ssa object and use only the shared globals graph (noir-lang/noir#7156) chore: let `Function::inlined` take a `should_inline_call` function (noir-lang/noir#7149) chore: add compile-time assertions on generic arguments of stdlib functions (noir-lang/noir#6981) fix: LSP hover over function with `&mut self` (noir-lang/noir#7155) feat(brillig): Set global memory size at program compile time (noir-lang/noir#7151) feat: LSP autocomplete module declaration (noir-lang/noir#7154) feat(ssa): Reuse constants from the globals graph when making constants in a function DFG (noir-lang/noir#7153) feat: LSP chain inlay hints (noir-lang/noir#7152) chore: turn on overflow checks in CI rust tests (noir-lang/noir#7145) fix(ssa): Use post order when mapping instructions in loop invariant pass (noir-lang/noir#7140) fix: preserve types when reading from calldata arrays (noir-lang/noir#7144) feat: Resolve enums & prepare type system (noir-lang/noir#7115) feat: `loop` must have at least one `break` (noir-lang/noir#7126) feat: parse globals in SSA parser (noir-lang/noir#7112) fix: allow calling trait impl method from struct if multiple impls exist (noir-lang/noir#7124) fix: avoid creating unnecessary memory blocks (noir-lang/noir#7114) chore: relax threshold for reporting regressions (noir-lang/noir#7130) fix: proper cleanup when breaking from comptime loop on error (noir-lang/noir#7125) fix: Prevent overlapping associated types impls (noir-lang/noir#7047) feat: unconstrained optimizations for BoundedVec (noir-lang/noir#7119) chore: mark libs good (noir-lang/noir#7123) chore: remove comments for time/memory benchmarks (noir-lang/noir#7121) fix: don't always use an exclusive lock in `nargo check` (noir-lang/noir#7120) feat(ssa): Pass to preprocess functions (noir-lang/noir#7072) chore: Formatting issues / minor errors in the docs (noir-lang/noir#7105) fix: defunctionalize pass on the caller runtime to apply (noir-lang/noir#7100) feat: Parser and formatter support for `enum`s (noir-lang/noir#7110) feat(brillig): SSA globals code gen (noir-lang/noir#7021) feat: `loop` keyword in runtime and comptime code (noir-lang/noir#7096) chore: Add benchmarking dashboard (noir-lang/noir#7068) feat(experimental): try to infer lambda argument types inside calls (noir-lang/noir#7088) feat(ssa): Add flag to DIE pass to be able to keep `store` instructions (noir-lang/noir#7106) chore: Cookbook Onboard integration (noir-lang/noir#7044) chore: lock to ubuntu 22.04 (noir-lang/noir#7098) fix: Remove unused brillig functions (noir-lang/noir#7102) chore(ssa): Use correct prefix when printing array values in global space (noir-lang/noir#7095)
…7185) fix(LSP): correct signature for assert and assert_eq (noir-lang/noir#7184) chore(experimental): Prevent enum panics by returning Options where possible instead of panicking (noir-lang/noir#7180) feat(experimental): Construct enum variants in expressions (noir-lang/noir#7174) feat: add `noir-inspector` (noir-lang/noir#7136) fix: ensure canonical bits decomposition (noir-lang/noir#7168) fix: Keep `inc_rc` for array inputs during preprocessing (noir-lang/noir#7163) fix(docs): Update broken links to EC lib (noir-lang/noir#7141) feat: inline simple functions (noir-lang/noir#7160) feat(ssa): Expand feature set of the Brillig constraint check (noir-lang/noir#7060) fix(ssa): Resolve value before fetching from DFG in a couple cases (noir-lang/noir#7169) fix: `Function::is_no_predicates` always returned false for brillig f… (noir-lang/noir#7167) chore(refactor): Remove globals field on Ssa object and use only the shared globals graph (noir-lang/noir#7156) chore: let `Function::inlined` take a `should_inline_call` function (noir-lang/noir#7149) chore: add compile-time assertions on generic arguments of stdlib functions (noir-lang/noir#6981) fix: LSP hover over function with `&mut self` (noir-lang/noir#7155) feat(brillig): Set global memory size at program compile time (noir-lang/noir#7151) feat: LSP autocomplete module declaration (noir-lang/noir#7154) feat(ssa): Reuse constants from the globals graph when making constants in a function DFG (noir-lang/noir#7153) feat: LSP chain inlay hints (noir-lang/noir#7152) chore: turn on overflow checks in CI rust tests (noir-lang/noir#7145) fix(ssa): Use post order when mapping instructions in loop invariant pass (noir-lang/noir#7140) fix: preserve types when reading from calldata arrays (noir-lang/noir#7144) feat: Resolve enums & prepare type system (noir-lang/noir#7115) feat: `loop` must have at least one `break` (noir-lang/noir#7126) feat: parse globals in SSA parser (noir-lang/noir#7112) fix: allow calling trait impl method from struct if multiple impls exist (noir-lang/noir#7124) fix: avoid creating unnecessary memory blocks (noir-lang/noir#7114) chore: relax threshold for reporting regressions (noir-lang/noir#7130) fix: proper cleanup when breaking from comptime loop on error (noir-lang/noir#7125) fix: Prevent overlapping associated types impls (noir-lang/noir#7047) feat: unconstrained optimizations for BoundedVec (noir-lang/noir#7119) chore: mark libs good (noir-lang/noir#7123) chore: remove comments for time/memory benchmarks (noir-lang/noir#7121) fix: don't always use an exclusive lock in `nargo check` (noir-lang/noir#7120) feat(ssa): Pass to preprocess functions (noir-lang/noir#7072) chore: Formatting issues / minor errors in the docs (noir-lang/noir#7105) fix: defunctionalize pass on the caller runtime to apply (noir-lang/noir#7100) feat: Parser and formatter support for `enum`s (noir-lang/noir#7110) feat(brillig): SSA globals code gen (noir-lang/noir#7021) feat: `loop` keyword in runtime and comptime code (noir-lang/noir#7096) chore: Add benchmarking dashboard (noir-lang/noir#7068) feat(experimental): try to infer lambda argument types inside calls (noir-lang/noir#7088) feat(ssa): Add flag to DIE pass to be able to keep `store` instructions (noir-lang/noir#7106) chore: Cookbook Onboard integration (noir-lang/noir#7044) chore: lock to ubuntu 22.04 (noir-lang/noir#7098) fix: Remove unused brillig functions (noir-lang/noir#7102) chore(ssa): Use correct prefix when printing array values in global space (noir-lang/noir#7095)
…r-lang/noir#7185) fix(LSP): correct signature for assert and assert_eq (noir-lang/noir#7184) chore(experimental): Prevent enum panics by returning Options where possible instead of panicking (noir-lang/noir#7180) feat(experimental): Construct enum variants in expressions (noir-lang/noir#7174) feat: add `noir-inspector` (noir-lang/noir#7136) fix: ensure canonical bits decomposition (noir-lang/noir#7168) fix: Keep `inc_rc` for array inputs during preprocessing (noir-lang/noir#7163) fix(docs): Update broken links to EC lib (noir-lang/noir#7141) feat: inline simple functions (noir-lang/noir#7160) feat(ssa): Expand feature set of the Brillig constraint check (noir-lang/noir#7060) fix(ssa): Resolve value before fetching from DFG in a couple cases (noir-lang/noir#7169) fix: `Function::is_no_predicates` always returned false for brillig f… (noir-lang/noir#7167) chore(refactor): Remove globals field on Ssa object and use only the shared globals graph (noir-lang/noir#7156) chore: let `Function::inlined` take a `should_inline_call` function (noir-lang/noir#7149) chore: add compile-time assertions on generic arguments of stdlib functions (noir-lang/noir#6981) fix: LSP hover over function with `&mut self` (noir-lang/noir#7155) feat(brillig): Set global memory size at program compile time (noir-lang/noir#7151) feat: LSP autocomplete module declaration (noir-lang/noir#7154) feat(ssa): Reuse constants from the globals graph when making constants in a function DFG (noir-lang/noir#7153) feat: LSP chain inlay hints (noir-lang/noir#7152) chore: turn on overflow checks in CI rust tests (noir-lang/noir#7145) fix(ssa): Use post order when mapping instructions in loop invariant pass (noir-lang/noir#7140) fix: preserve types when reading from calldata arrays (noir-lang/noir#7144) feat: Resolve enums & prepare type system (noir-lang/noir#7115) feat: `loop` must have at least one `break` (noir-lang/noir#7126) feat: parse globals in SSA parser (noir-lang/noir#7112) fix: allow calling trait impl method from struct if multiple impls exist (noir-lang/noir#7124) fix: avoid creating unnecessary memory blocks (noir-lang/noir#7114) chore: relax threshold for reporting regressions (noir-lang/noir#7130) fix: proper cleanup when breaking from comptime loop on error (noir-lang/noir#7125) fix: Prevent overlapping associated types impls (noir-lang/noir#7047) feat: unconstrained optimizations for BoundedVec (noir-lang/noir#7119) chore: mark libs good (noir-lang/noir#7123) chore: remove comments for time/memory benchmarks (noir-lang/noir#7121) fix: don't always use an exclusive lock in `nargo check` (noir-lang/noir#7120) feat(ssa): Pass to preprocess functions (noir-lang/noir#7072) chore: Formatting issues / minor errors in the docs (noir-lang/noir#7105) fix: defunctionalize pass on the caller runtime to apply (noir-lang/noir#7100) feat: Parser and formatter support for `enum`s (noir-lang/noir#7110) feat(brillig): SSA globals code gen (noir-lang/noir#7021) feat: `loop` keyword in runtime and comptime code (noir-lang/noir#7096) chore: Add benchmarking dashboard (noir-lang/noir#7068) feat(experimental): try to infer lambda argument types inside calls (noir-lang/noir#7088) feat(ssa): Add flag to DIE pass to be able to keep `store` instructions (noir-lang/noir#7106) chore: Cookbook Onboard integration (noir-lang/noir#7044) chore: lock to ubuntu 22.04 (noir-lang/noir#7098) fix: Remove unused brillig functions (noir-lang/noir#7102) chore(ssa): Use correct prefix when printing array values in global space (noir-lang/noir#7095)
…7185) fix(LSP): correct signature for assert and assert_eq (noir-lang/noir#7184) chore(experimental): Prevent enum panics by returning Options where possible instead of panicking (noir-lang/noir#7180) feat(experimental): Construct enum variants in expressions (noir-lang/noir#7174) feat: add `noir-inspector` (noir-lang/noir#7136) fix: ensure canonical bits decomposition (noir-lang/noir#7168) fix: Keep `inc_rc` for array inputs during preprocessing (noir-lang/noir#7163) fix(docs): Update broken links to EC lib (noir-lang/noir#7141) feat: inline simple functions (noir-lang/noir#7160) feat(ssa): Expand feature set of the Brillig constraint check (noir-lang/noir#7060) fix(ssa): Resolve value before fetching from DFG in a couple cases (noir-lang/noir#7169) fix: `Function::is_no_predicates` always returned false for brillig f… (noir-lang/noir#7167) chore(refactor): Remove globals field on Ssa object and use only the shared globals graph (noir-lang/noir#7156) chore: let `Function::inlined` take a `should_inline_call` function (noir-lang/noir#7149) chore: add compile-time assertions on generic arguments of stdlib functions (noir-lang/noir#6981) fix: LSP hover over function with `&mut self` (noir-lang/noir#7155) feat(brillig): Set global memory size at program compile time (noir-lang/noir#7151) feat: LSP autocomplete module declaration (noir-lang/noir#7154) feat(ssa): Reuse constants from the globals graph when making constants in a function DFG (noir-lang/noir#7153) feat: LSP chain inlay hints (noir-lang/noir#7152) chore: turn on overflow checks in CI rust tests (noir-lang/noir#7145) fix(ssa): Use post order when mapping instructions in loop invariant pass (noir-lang/noir#7140) fix: preserve types when reading from calldata arrays (noir-lang/noir#7144) feat: Resolve enums & prepare type system (noir-lang/noir#7115) feat: `loop` must have at least one `break` (noir-lang/noir#7126) feat: parse globals in SSA parser (noir-lang/noir#7112) fix: allow calling trait impl method from struct if multiple impls exist (noir-lang/noir#7124) fix: avoid creating unnecessary memory blocks (noir-lang/noir#7114) chore: relax threshold for reporting regressions (noir-lang/noir#7130) fix: proper cleanup when breaking from comptime loop on error (noir-lang/noir#7125) fix: Prevent overlapping associated types impls (noir-lang/noir#7047) feat: unconstrained optimizations for BoundedVec (noir-lang/noir#7119) chore: mark libs good (noir-lang/noir#7123) chore: remove comments for time/memory benchmarks (noir-lang/noir#7121) fix: don't always use an exclusive lock in `nargo check` (noir-lang/noir#7120) feat(ssa): Pass to preprocess functions (noir-lang/noir#7072) chore: Formatting issues / minor errors in the docs (noir-lang/noir#7105) fix: defunctionalize pass on the caller runtime to apply (noir-lang/noir#7100) feat: Parser and formatter support for `enum`s (noir-lang/noir#7110) feat(brillig): SSA globals code gen (noir-lang/noir#7021) feat: `loop` keyword in runtime and comptime code (noir-lang/noir#7096) chore: Add benchmarking dashboard (noir-lang/noir#7068) feat(experimental): try to infer lambda argument types inside calls (noir-lang/noir#7088) feat(ssa): Add flag to DIE pass to be able to keep `store` instructions (noir-lang/noir#7106) chore: Cookbook Onboard integration (noir-lang/noir#7044) chore: lock to ubuntu 22.04 (noir-lang/noir#7098) fix: Remove unused brillig functions (noir-lang/noir#7102) chore(ssa): Use correct prefix when printing array values in global space (noir-lang/noir#7095)
…r-lang/noir#7185) fix(LSP): correct signature for assert and assert_eq (noir-lang/noir#7184) chore(experimental): Prevent enum panics by returning Options where possible instead of panicking (noir-lang/noir#7180) feat(experimental): Construct enum variants in expressions (noir-lang/noir#7174) feat: add `noir-inspector` (noir-lang/noir#7136) fix: ensure canonical bits decomposition (noir-lang/noir#7168) fix: Keep `inc_rc` for array inputs during preprocessing (noir-lang/noir#7163) fix(docs): Update broken links to EC lib (noir-lang/noir#7141) feat: inline simple functions (noir-lang/noir#7160) feat(ssa): Expand feature set of the Brillig constraint check (noir-lang/noir#7060) fix(ssa): Resolve value before fetching from DFG in a couple cases (noir-lang/noir#7169) fix: `Function::is_no_predicates` always returned false for brillig f… (noir-lang/noir#7167) chore(refactor): Remove globals field on Ssa object and use only the shared globals graph (noir-lang/noir#7156) chore: let `Function::inlined` take a `should_inline_call` function (noir-lang/noir#7149) chore: add compile-time assertions on generic arguments of stdlib functions (noir-lang/noir#6981) fix: LSP hover over function with `&mut self` (noir-lang/noir#7155) feat(brillig): Set global memory size at program compile time (noir-lang/noir#7151) feat: LSP autocomplete module declaration (noir-lang/noir#7154) feat(ssa): Reuse constants from the globals graph when making constants in a function DFG (noir-lang/noir#7153) feat: LSP chain inlay hints (noir-lang/noir#7152) chore: turn on overflow checks in CI rust tests (noir-lang/noir#7145) fix(ssa): Use post order when mapping instructions in loop invariant pass (noir-lang/noir#7140) fix: preserve types when reading from calldata arrays (noir-lang/noir#7144) feat: Resolve enums & prepare type system (noir-lang/noir#7115) feat: `loop` must have at least one `break` (noir-lang/noir#7126) feat: parse globals in SSA parser (noir-lang/noir#7112) fix: allow calling trait impl method from struct if multiple impls exist (noir-lang/noir#7124) fix: avoid creating unnecessary memory blocks (noir-lang/noir#7114) chore: relax threshold for reporting regressions (noir-lang/noir#7130) fix: proper cleanup when breaking from comptime loop on error (noir-lang/noir#7125) fix: Prevent overlapping associated types impls (noir-lang/noir#7047) feat: unconstrained optimizations for BoundedVec (noir-lang/noir#7119) chore: mark libs good (noir-lang/noir#7123) chore: remove comments for time/memory benchmarks (noir-lang/noir#7121) fix: don't always use an exclusive lock in `nargo check` (noir-lang/noir#7120) feat(ssa): Pass to preprocess functions (noir-lang/noir#7072) chore: Formatting issues / minor errors in the docs (noir-lang/noir#7105) fix: defunctionalize pass on the caller runtime to apply (noir-lang/noir#7100) feat: Parser and formatter support for `enum`s (noir-lang/noir#7110) feat(brillig): SSA globals code gen (noir-lang/noir#7021) feat: `loop` keyword in runtime and comptime code (noir-lang/noir#7096) chore: Add benchmarking dashboard (noir-lang/noir#7068) feat(experimental): try to infer lambda argument types inside calls (noir-lang/noir#7088) feat(ssa): Add flag to DIE pass to be able to keep `store` instructions (noir-lang/noir#7106) chore: Cookbook Onboard integration (noir-lang/noir#7044) chore: lock to ubuntu 22.04 (noir-lang/noir#7098) fix: Remove unused brillig functions (noir-lang/noir#7102) chore(ssa): Use correct prefix when printing array values in global space (noir-lang/noir#7095)
…7185) fix(LSP): correct signature for assert and assert_eq (noir-lang/noir#7184) chore(experimental): Prevent enum panics by returning Options where possible instead of panicking (noir-lang/noir#7180) feat(experimental): Construct enum variants in expressions (noir-lang/noir#7174) feat: add `noir-inspector` (noir-lang/noir#7136) fix: ensure canonical bits decomposition (noir-lang/noir#7168) fix: Keep `inc_rc` for array inputs during preprocessing (noir-lang/noir#7163) fix(docs): Update broken links to EC lib (noir-lang/noir#7141) feat: inline simple functions (noir-lang/noir#7160) feat(ssa): Expand feature set of the Brillig constraint check (noir-lang/noir#7060) fix(ssa): Resolve value before fetching from DFG in a couple cases (noir-lang/noir#7169) fix: `Function::is_no_predicates` always returned false for brillig f… (noir-lang/noir#7167) chore(refactor): Remove globals field on Ssa object and use only the shared globals graph (noir-lang/noir#7156) chore: let `Function::inlined` take a `should_inline_call` function (noir-lang/noir#7149) chore: add compile-time assertions on generic arguments of stdlib functions (noir-lang/noir#6981) fix: LSP hover over function with `&mut self` (noir-lang/noir#7155) feat(brillig): Set global memory size at program compile time (noir-lang/noir#7151) feat: LSP autocomplete module declaration (noir-lang/noir#7154) feat(ssa): Reuse constants from the globals graph when making constants in a function DFG (noir-lang/noir#7153) feat: LSP chain inlay hints (noir-lang/noir#7152) chore: turn on overflow checks in CI rust tests (noir-lang/noir#7145) fix(ssa): Use post order when mapping instructions in loop invariant pass (noir-lang/noir#7140) fix: preserve types when reading from calldata arrays (noir-lang/noir#7144) feat: Resolve enums & prepare type system (noir-lang/noir#7115) feat: `loop` must have at least one `break` (noir-lang/noir#7126) feat: parse globals in SSA parser (noir-lang/noir#7112) fix: allow calling trait impl method from struct if multiple impls exist (noir-lang/noir#7124) fix: avoid creating unnecessary memory blocks (noir-lang/noir#7114) chore: relax threshold for reporting regressions (noir-lang/noir#7130) fix: proper cleanup when breaking from comptime loop on error (noir-lang/noir#7125) fix: Prevent overlapping associated types impls (noir-lang/noir#7047) feat: unconstrained optimizations for BoundedVec (noir-lang/noir#7119) chore: mark libs good (noir-lang/noir#7123) chore: remove comments for time/memory benchmarks (noir-lang/noir#7121) fix: don't always use an exclusive lock in `nargo check` (noir-lang/noir#7120) feat(ssa): Pass to preprocess functions (noir-lang/noir#7072) chore: Formatting issues / minor errors in the docs (noir-lang/noir#7105) fix: defunctionalize pass on the caller runtime to apply (noir-lang/noir#7100) feat: Parser and formatter support for `enum`s (noir-lang/noir#7110) feat(brillig): SSA globals code gen (noir-lang/noir#7021) feat: `loop` keyword in runtime and comptime code (noir-lang/noir#7096) chore: Add benchmarking dashboard (noir-lang/noir#7068) feat(experimental): try to infer lambda argument types inside calls (noir-lang/noir#7088) feat(ssa): Add flag to DIE pass to be able to keep `store` instructions (noir-lang/noir#7106) chore: Cookbook Onboard integration (noir-lang/noir#7044) chore: lock to ubuntu 22.04 (noir-lang/noir#7098) fix: Remove unused brillig functions (noir-lang/noir#7102) chore(ssa): Use correct prefix when printing array values in global space (noir-lang/noir#7095)
Automated pull of development from the [noir](https://github.com/noir-lang/noir) programming language, a dependency of Aztec. BEGIN_COMMIT_OVERRIDE chore: let `add_definition_location` take a Location (noir-lang/noir#7185) fix(LSP): correct signature for assert and assert_eq (noir-lang/noir#7184) chore(experimental): Prevent enum panics by returning Options where possible instead of panicking (noir-lang/noir#7180) feat(experimental): Construct enum variants in expressions (noir-lang/noir#7174) feat: add `noir-inspector` (noir-lang/noir#7136) fix: ensure canonical bits decomposition (noir-lang/noir#7168) fix: Keep `inc_rc` for array inputs during preprocessing (noir-lang/noir#7163) fix(docs): Update broken links to EC lib (noir-lang/noir#7141) feat: inline simple functions (noir-lang/noir#7160) feat(ssa): Expand feature set of the Brillig constraint check (noir-lang/noir#7060) fix(ssa): Resolve value before fetching from DFG in a couple cases (noir-lang/noir#7169) fix: `Function::is_no_predicates` always returned false for brillig f… (noir-lang/noir#7167) chore(refactor): Remove globals field on Ssa object and use only the shared globals graph (noir-lang/noir#7156) chore: let `Function::inlined` take a `should_inline_call` function (noir-lang/noir#7149) chore: add compile-time assertions on generic arguments of stdlib functions (noir-lang/noir#6981) fix: LSP hover over function with `&mut self` (noir-lang/noir#7155) feat(brillig): Set global memory size at program compile time (noir-lang/noir#7151) feat: LSP autocomplete module declaration (noir-lang/noir#7154) feat(ssa): Reuse constants from the globals graph when making constants in a function DFG (noir-lang/noir#7153) feat: LSP chain inlay hints (noir-lang/noir#7152) chore: turn on overflow checks in CI rust tests (noir-lang/noir#7145) fix(ssa): Use post order when mapping instructions in loop invariant pass (noir-lang/noir#7140) fix: preserve types when reading from calldata arrays (noir-lang/noir#7144) feat: Resolve enums & prepare type system (noir-lang/noir#7115) feat: `loop` must have at least one `break` (noir-lang/noir#7126) feat: parse globals in SSA parser (noir-lang/noir#7112) fix: allow calling trait impl method from struct if multiple impls exist (noir-lang/noir#7124) fix: avoid creating unnecessary memory blocks (noir-lang/noir#7114) chore: relax threshold for reporting regressions (noir-lang/noir#7130) fix: proper cleanup when breaking from comptime loop on error (noir-lang/noir#7125) fix: Prevent overlapping associated types impls (noir-lang/noir#7047) feat: unconstrained optimizations for BoundedVec (noir-lang/noir#7119) chore: mark libs good (noir-lang/noir#7123) chore: remove comments for time/memory benchmarks (noir-lang/noir#7121) fix: don't always use an exclusive lock in `nargo check` (noir-lang/noir#7120) feat(ssa): Pass to preprocess functions (noir-lang/noir#7072) chore: Formatting issues / minor errors in the docs (noir-lang/noir#7105) fix: defunctionalize pass on the caller runtime to apply (noir-lang/noir#7100) feat: Parser and formatter support for `enum`s (noir-lang/noir#7110) feat(brillig): SSA globals code gen (noir-lang/noir#7021) feat: `loop` keyword in runtime and comptime code (noir-lang/noir#7096) chore: Add benchmarking dashboard (noir-lang/noir#7068) feat(experimental): try to infer lambda argument types inside calls (noir-lang/noir#7088) feat(ssa): Add flag to DIE pass to be able to keep `store` instructions (noir-lang/noir#7106) chore: Cookbook Onboard integration (noir-lang/noir#7044) chore: lock to ubuntu 22.04 (noir-lang/noir#7098) fix: Remove unused brillig functions (noir-lang/noir#7102) chore(ssa): Use correct prefix when printing array values in global space (noir-lang/noir#7095) END_COMMIT_OVERRIDE --------- Co-authored-by: Tom French <[email protected]> Co-authored-by: Tom French <[email protected]> Co-authored-by: aakoshh <[email protected]> Co-authored-by: Akosh Farkash <[email protected]> Co-authored-by: Maxim Vezenov <[email protected]>
Automated pull of development from the [noir](https://github.com/noir-lang/noir) programming language, a dependency of Aztec. BEGIN_COMMIT_OVERRIDE chore: let `add_definition_location` take a Location (noir-lang/noir#7185) fix(LSP): correct signature for assert and assert_eq (noir-lang/noir#7184) chore(experimental): Prevent enum panics by returning Options where possible instead of panicking (noir-lang/noir#7180) feat(experimental): Construct enum variants in expressions (noir-lang/noir#7174) feat: add `noir-inspector` (noir-lang/noir#7136) fix: ensure canonical bits decomposition (noir-lang/noir#7168) fix: Keep `inc_rc` for array inputs during preprocessing (noir-lang/noir#7163) fix(docs): Update broken links to EC lib (noir-lang/noir#7141) feat: inline simple functions (noir-lang/noir#7160) feat(ssa): Expand feature set of the Brillig constraint check (noir-lang/noir#7060) fix(ssa): Resolve value before fetching from DFG in a couple cases (noir-lang/noir#7169) fix: `Function::is_no_predicates` always returned false for brillig f… (noir-lang/noir#7167) chore(refactor): Remove globals field on Ssa object and use only the shared globals graph (noir-lang/noir#7156) chore: let `Function::inlined` take a `should_inline_call` function (noir-lang/noir#7149) chore: add compile-time assertions on generic arguments of stdlib functions (noir-lang/noir#6981) fix: LSP hover over function with `&mut self` (noir-lang/noir#7155) feat(brillig): Set global memory size at program compile time (noir-lang/noir#7151) feat: LSP autocomplete module declaration (noir-lang/noir#7154) feat(ssa): Reuse constants from the globals graph when making constants in a function DFG (noir-lang/noir#7153) feat: LSP chain inlay hints (noir-lang/noir#7152) chore: turn on overflow checks in CI rust tests (noir-lang/noir#7145) fix(ssa): Use post order when mapping instructions in loop invariant pass (noir-lang/noir#7140) fix: preserve types when reading from calldata arrays (noir-lang/noir#7144) feat: Resolve enums & prepare type system (noir-lang/noir#7115) feat: `loop` must have at least one `break` (noir-lang/noir#7126) feat: parse globals in SSA parser (noir-lang/noir#7112) fix: allow calling trait impl method from struct if multiple impls exist (noir-lang/noir#7124) fix: avoid creating unnecessary memory blocks (noir-lang/noir#7114) chore: relax threshold for reporting regressions (noir-lang/noir#7130) fix: proper cleanup when breaking from comptime loop on error (noir-lang/noir#7125) fix: Prevent overlapping associated types impls (noir-lang/noir#7047) feat: unconstrained optimizations for BoundedVec (noir-lang/noir#7119) chore: mark libs good (noir-lang/noir#7123) chore: remove comments for time/memory benchmarks (noir-lang/noir#7121) fix: don't always use an exclusive lock in `nargo check` (noir-lang/noir#7120) feat(ssa): Pass to preprocess functions (noir-lang/noir#7072) chore: Formatting issues / minor errors in the docs (noir-lang/noir#7105) fix: defunctionalize pass on the caller runtime to apply (noir-lang/noir#7100) feat: Parser and formatter support for `enum`s (noir-lang/noir#7110) feat(brillig): SSA globals code gen (noir-lang/noir#7021) feat: `loop` keyword in runtime and comptime code (noir-lang/noir#7096) chore: Add benchmarking dashboard (noir-lang/noir#7068) feat(experimental): try to infer lambda argument types inside calls (noir-lang/noir#7088) feat(ssa): Add flag to DIE pass to be able to keep `store` instructions (noir-lang/noir#7106) chore: Cookbook Onboard integration (noir-lang/noir#7044) chore: lock to ubuntu 22.04 (noir-lang/noir#7098) fix: Remove unused brillig functions (noir-lang/noir#7102) chore(ssa): Use correct prefix when printing array values in global space (noir-lang/noir#7095) END_COMMIT_OVERRIDE --------- Co-authored-by: Tom French <[email protected]> Co-authored-by: Tom French <[email protected]> Co-authored-by: aakoshh <[email protected]> Co-authored-by: Akosh Farkash <[email protected]> Co-authored-by: Maxim Vezenov <[email protected]>
Description
Problem
Part of #7148
Summary
Pending: add a few tests for this.
Additional Context
Documentation
Check one:
PR Checklist
cargo fmt
on default settings.