From bf02a3e87dd9cfbceaaa429c1c7f4200787ba90a Mon Sep 17 00:00:00 2001 From: Robin Salen Date: Wed, 12 Apr 2023 12:34:47 -0400 Subject: [PATCH] Make generators public --- plonky2/src/gadgets/arithmetic.rs | 2 +- plonky2/src/gadgets/arithmetic_extension.rs | 2 +- plonky2/src/gadgets/mod.rs | 2 +- plonky2/src/gadgets/range_check.rs | 2 +- plonky2/src/gadgets/split_base.rs | 2 +- plonky2/src/gadgets/split_join.rs | 4 ++-- plonky2/src/gates/arithmetic_base.rs | 2 +- plonky2/src/gates/arithmetic_extension.rs | 2 +- plonky2/src/gates/coset_interpolation.rs | 2 +- plonky2/src/gates/exponentiation.rs | 2 +- plonky2/src/gates/multiplication_extension.rs | 2 +- plonky2/src/gates/poseidon.rs | 2 +- plonky2/src/gates/poseidon_mds.rs | 2 +- plonky2/src/gates/random_access.rs | 2 +- plonky2/src/gates/reducing.rs | 2 +- plonky2/src/gates/reducing_extension.rs | 2 +- plonky2/src/iop/generator.rs | 10 +++++----- plonky2/src/recursion/dummy_circuit.rs | 2 +- .../src/util/serialization/generator_serialization.rs | 8 ++++++++ 19 files changed, 31 insertions(+), 23 deletions(-) diff --git a/plonky2/src/gadgets/arithmetic.rs b/plonky2/src/gadgets/arithmetic.rs index 9a89e5a3..ed9e7c4a 100644 --- a/plonky2/src/gadgets/arithmetic.rs +++ b/plonky2/src/gadgets/arithmetic.rs @@ -372,7 +372,7 @@ impl, const D: usize> CircuitBuilder { } #[derive(Debug, Default)] -pub(crate) struct EqualityGenerator { +pub struct EqualityGenerator { x: Target, y: Target, equal: BoolTarget, diff --git a/plonky2/src/gadgets/arithmetic_extension.rs b/plonky2/src/gadgets/arithmetic_extension.rs index 69a5668c..ccb84a40 100644 --- a/plonky2/src/gadgets/arithmetic_extension.rs +++ b/plonky2/src/gadgets/arithmetic_extension.rs @@ -495,7 +495,7 @@ impl, const D: usize> CircuitBuilder { } #[derive(Debug, Default)] -pub(crate) struct QuotientGeneratorExtension { +pub struct QuotientGeneratorExtension { numerator: ExtensionTarget, denominator: ExtensionTarget, quotient: ExtensionTarget, diff --git a/plonky2/src/gadgets/mod.rs b/plonky2/src/gadgets/mod.rs index 6309eb3d..bac94475 100644 --- a/plonky2/src/gadgets/mod.rs +++ b/plonky2/src/gadgets/mod.rs @@ -7,4 +7,4 @@ pub mod random_access; pub mod range_check; pub mod select; pub mod split_base; -pub(crate) mod split_join; +pub mod split_join; diff --git a/plonky2/src/gadgets/range_check.rs b/plonky2/src/gadgets/range_check.rs index 144ae5dc..bdd1942c 100644 --- a/plonky2/src/gadgets/range_check.rs +++ b/plonky2/src/gadgets/range_check.rs @@ -53,7 +53,7 @@ impl, const D: usize> CircuitBuilder { } #[derive(Debug, Default)] -pub(crate) struct LowHighGenerator { +pub struct LowHighGenerator { integer: Target, n_log: usize, low: Target, diff --git a/plonky2/src/gadgets/split_base.rs b/plonky2/src/gadgets/split_base.rs index ace3284d..c2919315 100644 --- a/plonky2/src/gadgets/split_base.rs +++ b/plonky2/src/gadgets/split_base.rs @@ -81,7 +81,7 @@ impl, const D: usize> CircuitBuilder { } #[derive(Debug, Default)] -pub(crate) struct BaseSumGenerator { +pub struct BaseSumGenerator { row: usize, limbs: Vec, } diff --git a/plonky2/src/gadgets/split_join.rs b/plonky2/src/gadgets/split_join.rs index 4e39a2be..e3eda241 100644 --- a/plonky2/src/gadgets/split_join.rs +++ b/plonky2/src/gadgets/split_join.rs @@ -57,7 +57,7 @@ impl, const D: usize> CircuitBuilder { } #[derive(Debug, Default)] -pub(crate) struct SplitGenerator { +pub struct SplitGenerator { integer: Target, bits: Vec, } @@ -99,7 +99,7 @@ impl SimpleGenerator for SplitGenerator { } #[derive(Debug, Default)] -pub(crate) struct WireSplitGenerator { +pub struct WireSplitGenerator { integer: Target, gates: Vec, num_limbs: usize, diff --git a/plonky2/src/gates/arithmetic_base.rs b/plonky2/src/gates/arithmetic_base.rs index aa9f2d86..7ed25328 100644 --- a/plonky2/src/gates/arithmetic_base.rs +++ b/plonky2/src/gates/arithmetic_base.rs @@ -181,7 +181,7 @@ impl, const D: usize> PackedEvaluableBase for } #[derive(Clone, Debug, Default)] -pub(crate) struct ArithmeticBaseGenerator, const D: usize> { +pub struct ArithmeticBaseGenerator, const D: usize> { row: usize, const_0: F, const_1: F, diff --git a/plonky2/src/gates/arithmetic_extension.rs b/plonky2/src/gates/arithmetic_extension.rs index 36274dfd..ebe7a650 100644 --- a/plonky2/src/gates/arithmetic_extension.rs +++ b/plonky2/src/gates/arithmetic_extension.rs @@ -165,7 +165,7 @@ impl, const D: usize> Gate for ArithmeticExte } #[derive(Clone, Debug, Default)] -pub(crate) struct ArithmeticExtensionGenerator, const D: usize> { +pub struct ArithmeticExtensionGenerator, const D: usize> { row: usize, const_0: F, const_1: F, diff --git a/plonky2/src/gates/coset_interpolation.rs b/plonky2/src/gates/coset_interpolation.rs index 6ec0eae5..ff6d9918 100644 --- a/plonky2/src/gates/coset_interpolation.rs +++ b/plonky2/src/gates/coset_interpolation.rs @@ -387,7 +387,7 @@ impl, const D: usize> Gate for CosetInterpola } #[derive(Debug, Default)] -pub(crate) struct InterpolationGenerator, const D: usize> { +pub struct InterpolationGenerator, const D: usize> { row: usize, gate: CosetInterpolationGate, interpolation_domain: Vec, diff --git a/plonky2/src/gates/exponentiation.rs b/plonky2/src/gates/exponentiation.rs index 64c685dc..eefc7ba7 100644 --- a/plonky2/src/gates/exponentiation.rs +++ b/plonky2/src/gates/exponentiation.rs @@ -238,7 +238,7 @@ impl, const D: usize> PackedEvaluableBase } #[derive(Debug, Default)] -pub(crate) struct ExponentiationGenerator, const D: usize> { +pub struct ExponentiationGenerator, const D: usize> { row: usize, gate: ExponentiationGate, } diff --git a/plonky2/src/gates/multiplication_extension.rs b/plonky2/src/gates/multiplication_extension.rs index c82c30a1..7e1c1924 100644 --- a/plonky2/src/gates/multiplication_extension.rs +++ b/plonky2/src/gates/multiplication_extension.rs @@ -152,7 +152,7 @@ impl, const D: usize> Gate for MulExtensionGa } #[derive(Clone, Debug, Default)] -pub(crate) struct MulExtensionGenerator, const D: usize> { +pub struct MulExtensionGenerator, const D: usize> { row: usize, const_0: F, i: usize, diff --git a/plonky2/src/gates/poseidon.rs b/plonky2/src/gates/poseidon.rs index af82a608..caab7faf 100644 --- a/plonky2/src/gates/poseidon.rs +++ b/plonky2/src/gates/poseidon.rs @@ -410,7 +410,7 @@ impl, const D: usize> Gate for PoseidonGate + Poseidon, const D: usize> { +pub struct PoseidonGenerator + Poseidon, const D: usize> { row: usize, _phantom: PhantomData, } diff --git a/plonky2/src/gates/poseidon_mds.rs b/plonky2/src/gates/poseidon_mds.rs index 409d0325..a3b4c927 100644 --- a/plonky2/src/gates/poseidon_mds.rs +++ b/plonky2/src/gates/poseidon_mds.rs @@ -210,7 +210,7 @@ impl + Poseidon, const D: usize> Gate for Pos } #[derive(Clone, Debug, Default)] -pub(crate) struct PoseidonMdsGenerator { +pub struct PoseidonMdsGenerator { row: usize, } diff --git a/plonky2/src/gates/random_access.rs b/plonky2/src/gates/random_access.rs index 6d520786..7f651bab 100644 --- a/plonky2/src/gates/random_access.rs +++ b/plonky2/src/gates/random_access.rs @@ -339,7 +339,7 @@ impl, const D: usize> PackedEvaluableBase } #[derive(Debug, Default)] -pub(crate) struct RandomAccessGenerator, const D: usize> { +pub struct RandomAccessGenerator, const D: usize> { row: usize, gate: RandomAccessGate, copy: usize, diff --git a/plonky2/src/gates/reducing.rs b/plonky2/src/gates/reducing.rs index 43549210..b9bd025a 100644 --- a/plonky2/src/gates/reducing.rs +++ b/plonky2/src/gates/reducing.rs @@ -178,7 +178,7 @@ impl, const D: usize> Gate for ReducingGate { +pub struct ReducingGenerator { row: usize, gate: ReducingGate, } diff --git a/plonky2/src/gates/reducing_extension.rs b/plonky2/src/gates/reducing_extension.rs index ce6a9725..11541ec2 100644 --- a/plonky2/src/gates/reducing_extension.rs +++ b/plonky2/src/gates/reducing_extension.rs @@ -178,7 +178,7 @@ impl, const D: usize> Gate for ReducingExtens } #[derive(Debug, Default)] -pub(crate) struct ReducingGenerator { +pub struct ReducingGenerator { row: usize, gate: ReducingExtensionGate, } diff --git a/plonky2/src/iop/generator.rs b/plonky2/src/iop/generator.rs index dbe7f475..165b5ada 100644 --- a/plonky2/src/iop/generator.rs +++ b/plonky2/src/iop/generator.rs @@ -129,7 +129,7 @@ impl, F: Field> AnyWitnessGenerator for T { } /// A wrapper around an `Box`. -pub struct WitnessGeneratorRef(pub(crate) Box>); +pub struct WitnessGeneratorRef(pub Box>); impl WitnessGeneratorRef { pub fn new>(generator: G) -> WitnessGeneratorRef { @@ -269,7 +269,7 @@ impl> WitnessGenerator for SimpleGeneratorAd /// A generator which copies one wire to another. #[derive(Debug, Default)] -pub(crate) struct CopyGenerator { +pub struct CopyGenerator { pub(crate) src: Target, pub(crate) dst: Target, } @@ -302,7 +302,7 @@ impl SimpleGenerator for CopyGenerator { /// A generator for including a random value #[derive(Debug, Default)] -pub(crate) struct RandomValueGenerator { +pub struct RandomValueGenerator { pub(crate) target: Target, } @@ -332,7 +332,7 @@ impl SimpleGenerator for RandomValueGenerator { /// A generator for testing if a value equals zero #[derive(Debug, Default)] -pub(crate) struct NonzeroTestGenerator { +pub struct NonzeroTestGenerator { pub(crate) to_test: Target, pub(crate) dummy: Target, } @@ -372,7 +372,7 @@ impl SimpleGenerator for NonzeroTestGenerator { /// Generator used to fill an extra constant. #[derive(Debug, Clone, Default)] -pub(crate) struct ConstantGenerator { +pub struct ConstantGenerator { pub row: usize, pub constant_index: usize, pub wire_index: usize, diff --git a/plonky2/src/recursion/dummy_circuit.rs b/plonky2/src/recursion/dummy_circuit.rs index b052cdd5..79bfff15 100644 --- a/plonky2/src/recursion/dummy_circuit.rs +++ b/plonky2/src/recursion/dummy_circuit.rs @@ -154,7 +154,7 @@ impl, const D: usize> CircuitBuilder { } #[derive(Debug)] -pub(crate) struct DummyProofGenerator +pub struct DummyProofGenerator where F: RichField + Extendable, C: GenericConfig, diff --git a/plonky2/src/util/serialization/generator_serialization.rs b/plonky2/src/util/serialization/generator_serialization.rs index 6566a897..5fab57e1 100644 --- a/plonky2/src/util/serialization/generator_serialization.rs +++ b/plonky2/src/util/serialization/generator_serialization.rs @@ -63,6 +63,14 @@ macro_rules! get_generator_tag_impl { } #[macro_export] +/// Macro implementing the `WitnessGeneratorSerializer` trait. +/// To serialize a list of generators used for a circuit, +/// this macro should be called with a struct on which to implement +/// this as first argument, followed by all the targeted generators. +/// +/// ***NOTE:*** If you need to include `DummyProofGenerator`, you **MUST** +/// place it at the *beginning* of the generators list, right after +/// the serializer struct. macro_rules! impl_generator_serializer { ($target:ty, $($generator_types:ty),+) => { fn read_generator(