-
Notifications
You must be signed in to change notification settings - Fork 102
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
refactor(honk): template honk composers by flavor #488
Conversation
b2a3972
to
910669c
Compare
9c084ab
to
2877918
Compare
2877918
to
c218260
Compare
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.
Nice work straightforwardly executed. There are some little follow-ons (chiefly the liberal use of the composers header), but overall it was indeed fine to go in.
@@ -1,5 +1,6 @@ | |||
#include "acir_format.hpp" | |||
#include "barretenberg/common/log.hpp" | |||
#include "barretenberg/stdlib/primitives/composers/composers.hpp" |
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.
Why is this suddenly needed?
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.
Here and elsewhere, we'd rather be more specific than include this one header because it's implicitly including a lot of other stuff: all composers and circuit constructors.
@@ -957,6 +957,10 @@ typename Curve::Element pippenger_without_endomorphism_basis_points(typename Cur | |||
|
|||
// Explicit instantiation | |||
// BN254 | |||
template void generate_pippenger_point_table<curve::BN254>(curve::BN254::AffineElement* points, |
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.
It turned out to not be necessary to explicitly instantiate this function (with or without extern
, for either curve).
|
||
namespace proof_system::honk::flavor { | ||
class StandardGrumpkin { | ||
// TODO(Mara): At the moment this class is a duplicate of the Standard flavor with a different PCS for testing |
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.
I think it's probably right to just duplicate this as you have.
@@ -412,4 +419,23 @@ template typename honk::flavor::Ultra::Polynomial compute_sorted_list_accumulato | |||
template void add_plookup_memory_records_to_wire_4<honk::flavor::Ultra>( | |||
std::shared_ptr<typename honk::flavor::Ultra::ProvingKey>& key, typename honk::flavor::Ultra::FF eta); | |||
|
|||
template honk::flavor::UltraGrumpkin::Polynomial compute_permutation_grand_product<honk::flavor::UltraGrumpkin>( |
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.
Ugh, maybe this should go in a (stateless) class so we can greatly simplify explicit instantiation? Not asking you to do that, just complaining out loud.
…etenberg#488) --------- Co-authored-by: maramihali <[email protected]> Co-authored-by: codygunton <[email protected]> Co-authored-by: Mara Mihali <[email protected]>
…etenberg#488) --------- Co-authored-by: maramihali <[email protected]> Co-authored-by: codygunton <[email protected]> Co-authored-by: Mara Mihali <[email protected]>
Description
This PR adds composer templating by flavor and bring us closer to enabling Honk on Grumpkin. Additionally, it specs the forward declaration of composers in the
stdlib
and makes sure thestdlib
classes do not import the composers directly from the proof system folders as this is very prone to linker problemsChecklist:
/markdown/specs
have been updated.@brief
describing the intended functionality.