-
Notifications
You must be signed in to change notification settings - Fork 220
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
crates.io
release checklist
#50
Comments
…dels Contributes to arkworks-rs#50.
…ine}Curve traits with One/Zero traits from num_traits. - contributes to arkworks-rs#50, - depends on arkworks-rs#53 and builds on it, - due to coherence & requirements of `num_traits::{Zero, One}` to implement `std::ops::Add<Self, ..>` and (resp.) `std::ops::Mul<Self, ..>`, I've had to replace the afferent `impl<'a, P: ..> (Add|Mul)<&'a Self> for Group(Affine|Projective)<P>` by direct implementations on `Self`, - I did not have to fight the borrow checker for this conversion => I think this hints arithmetic operations are called in contexts where the operand is owned, - hence should this end up on a merge track, we may want to open an issue to convert the `impl<'a, P:..> (Neg|Sub|..)<&'a Self> for ..<P>` trait usage to direct `impl<P:..> (Neg|Sub|..)<Self> for ..<P>` - the `impl AddAssign for GroupAffine<P>` in curves/models/short_weierstrass_jacobian.rs is provided to fit trait bounds, and without any guarantee of suitability for any particular purpose - and that, even though I don't think it's used.
…ine}Curve traits with One/Zero traits from num_traits. - contributes to arkworks-rs#50, - depends on arkworks-rs#53 and builds on it, - due to coherence & requirements of `num_traits::{Zero, One}` to implement `std::ops::Add<Self, ..>` and (resp.) `std::ops::Mul<Self, ..>`, I've had to replace the afferent `impl<'a, P: ..> (Add|Mul)<&'a Self> for Group(Affine|Projective)<P>` by direct implementations on `Self`, - I did not have to fight the borrow checker for this conversion => I think this hints arithmetic operations are called in contexts where the operand is owned, - hence should this end up on a merge track, we may want to open an issue to convert the `impl<'a, P:..> (Neg|Sub|..)<&'a Self> for ..<P>` trait usage to direct `impl<P:..> (Neg|Sub|..)<Self> for ..<P>` - the `impl AddAssign for GroupAffine<P>` in curves/models/short_weierstrass_jacobian.rs is provided to fit trait bounds, and without any guarantee of suitability for any particular purpose - and that, even though I don't think it's used.
…ine}Curve traits with One/Zero traits from num_traits. - contributes to arkworks-rs#50, - depends on arkworks-rs#53 and builds on it, - due to coherence & requirements of `num_traits::{Zero, One}` to implement `std::ops::Add<Self, ..>` and (resp.) `std::ops::Mul<Self, ..>`, I've had to replace the afferent `impl<'a, P: ..> (Add|Mul)<&'a Self> for Group(Affine|Projective)<P>` by direct implementations on `Self`, - I did not have to fight the borrow checker for this conversion => I think this hints arithmetic operations are called in contexts where the operand is owned, - hence should this end up on a merge track, we may want to open an issue to convert the `impl<'a, P:..> (Neg|Sub|..)<&'a Self> for ..<P>` trait usage to direct `impl<P:..> (Neg|Sub|..)<Self> for ..<P>` - the `impl AddAssign for GroupAffine<P>` in curves/models/short_weierstrass_jacobian.rs is provided to fit trait bounds, and without any guarantee of suitability for any particular purpose - and that, even though I don't think it's used.
…dels Contributes to arkworks-rs#50.
…ine}Curve traits with One/Zero traits from num_traits. - contributes to arkworks-rs#50, - depends on arkworks-rs#53 and builds on it, - due to coherence & requirements of `num_traits::{Zero, One}` to implement `std::ops::Add<Self, ..>` and (resp.) `std::ops::Mul<Self, ..>`, I've had to replace the afferent `impl<'a, P: ..> (Add|Mul)<&'a Self> for Group(Affine|Projective)<P>` by direct implementations on `Self`, - I did not have to fight the borrow checker for this conversion => I think this hints arithmetic operations are called in contexts where the operand is owned, - hence should this end up on a merge track, we may want to open an issue to convert the `impl<'a, P:..> (Neg|Sub|..)<&'a Self> for ..<P>` trait usage to direct `impl<P:..> (Neg|Sub|..)<Self> for ..<P>` - the `impl AddAssign for GroupAffine<P>` in curves/models/short_weierstrass_jacobian.rs is provided to fit trait bounds, and without any guarantee of suitability for any particular purpose - and that, even though I don't think it's used.
…ine}Curve traits with One/Zero traits from num_traits. - contributes to arkworks-rs#50, - depends on arkworks-rs#53 and builds on it, - due to coherence & requirements of `num_traits::{Zero, One}` to implement `std::ops::Add<Self, ..>` and (resp.) `std::ops::Mul<Self, ..>`, I've had to replace the afferent `impl<'a, P: ..> (Add|Mul)<&'a Self> for Group(Affine|Projective)<P>` by direct implementations on `Self`, - I did not have to fight the borrow checker for this conversion => I think this hints arithmetic operations are called in contexts where the operand is owned, - hence should this end up on a merge track, we may want to open an issue to convert the `impl<'a, P:..> (Neg|Sub|..)<&'a Self> for ..<P>` trait usage to direct `impl<P:..> (Neg|Sub|..)<Self> for ..<P>` - the `impl AddAssign for GroupAffine<P>` in curves/models/short_weierstrass_jacobian.rs is provided to fit trait bounds, and without any guarantee of suitability for any particular purpose - and that, even though I don't think it's used.
…ine}Curve traits with One/Zero traits from num_traits. - contributes to arkworks-rs#50, - depends on arkworks-rs#53 and builds on it, - due to coherence & requirements of `num_traits::{Zero, One}` to implement `std::ops::Add<Self, ..>` and (resp.) `std::ops::Mul<Self, ..>`, I've had to replace the afferent `impl<'a, P: ..> (Add|Mul)<&'a Self> for Group(Affine|Projective)<P>` by direct implementations on `Self`, - I did not have to fight the borrow checker for this conversion => I think this hints arithmetic operations are called in contexts where the operand is owned, - hence should this end up on a merge track, we may want to open an issue to convert the `impl<'a, P:..> (Neg|Sub|..)<&'a Self> for ..<P>` trait usage to direct `impl<P:..> (Neg|Sub|..)<Self> for ..<P>` - the `impl AddAssign for GroupAffine<P>` in curves/models/short_weierstrass_jacobian.rs is provided to fit trait bounds, and without any guarantee of suitability for any particular purpose - and that, even though I don't think it's used.
…ine}Curve traits with One/Zero traits from num_traits. - contributes to arkworks-rs#50, - depends on arkworks-rs#53 and builds on it, - due to coherence & requirements of `num_traits::{Zero, One}` to implement `std::ops::Add<Self, ..>` and (resp.) `std::ops::Mul<Self, ..>`, I've had to replace the afferent `impl<'a, P: ..> (Add|Mul)<&'a Self> for Group(Affine|Projective)<P>` by direct implementations on `Self`, - I did not have to fight the borrow checker for this conversion => I think this hints arithmetic operations are called in contexts where the operand is owned, - hence should this end up on a merge track, we may want to open an issue to convert the `impl<'a, P:..> (Neg|Sub|..)<&'a Self> for ..<P>` trait usage to direct `impl<P:..> (Neg|Sub|..)<Self> for ..<P>` - the `impl AddAssign for GroupAffine<P>` in curves/models/short_weierstrass_jacobian.rs is provided to fit trait bounds, and without any guarantee of suitability for any particular purpose - and that, even though I don't think it's used.
…ine}Curve traits with One/Zero traits from num_traits. - contributes to arkworks-rs#50, - depends on arkworks-rs#53 and builds on it, - due to coherence & requirements of `num_traits::{Zero, One}` to implement `std::ops::Add<Self, ..>` and (resp.) `std::ops::Mul<Self, ..>`, I've had to replace the afferent `impl<'a, P: ..> (Add|Mul)<&'a Self> for Group(Affine|Projective)<P>` by direct implementations on `Self`, - I did not have to fight the borrow checker for this conversion => I think this hints arithmetic operations are called in contexts where the operand is owned, - hence should this end up on a merge track, we may want to open an issue to convert the `impl<'a, P:..> (Neg|Sub|..)<&'a Self> for ..<P>` trait usage to direct `impl<P:..> (Neg|Sub|..)<Self> for ..<P>` - the `impl AddAssign for GroupAffine<P>` in curves/models/short_weierstrass_jacobian.rs is provided to fit trait bounds, and without any guarantee of suitability for any particular purpose - and that, even though I don't think it's used.
…ine}Curve traits with One/Zero traits from num_traits. - contributes to #50, - depends on #53 and builds on it, - due to coherence & requirements of `num_traits::{Zero, One}` to implement `std::ops::Add<Self, ..>` and (resp.) `std::ops::Mul<Self, ..>`, I've had to replace the afferent `impl<'a, P: ..> (Add|Mul)<&'a Self> for Group(Affine|Projective)<P>` by direct implementations on `Self`, - I did not have to fight the borrow checker for this conversion => I think this hints arithmetic operations are called in contexts where the operand is owned, - hence should this end up on a merge track, we may want to open an issue to convert the `impl<'a, P:..> (Neg|Sub|..)<&'a Self> for ..<P>` trait usage to direct `impl<P:..> (Neg|Sub|..)<Self> for ..<P>` - the `impl AddAssign for GroupAffine<P>` in curves/models/short_weierstrass_jacobian.rs is provided to fit trait bounds, and without any guarantee of suitability for any particular purpose - and that, even though I don't think it's used.
We should probably add serialization for proving/verification keys and proofs :) |
Yes, though that's gated on serialization for field and group elements =) |
About There is discussion on making all the I think const generics have progressed far enough for this to work on nightly, but when they land nobody knows.
Also serde works without std or even alloc it appears: https://serde.rs/no-std.html |
I think a simpler method might be to just add our own If in the future |
Cool. I'd suspect some crate supplying no_std |
Most of the things on this list are done; I'll try to put things online on |
algebra
:ToBytes
andFromBytes
no_std
compatible (WIP in no_std for algebra and r1cs-core #76).Field
,Group
, and{Projective,Affine}Curve
traits withOne
/Zero
traits fromnum_traits
. (Done in Convert identity functions in Field, Group, and {Projective,Affine}Curve traits with One/Zero traits from num_traits. #54)impl Add<Self> for Self
(besides justimpl Add<&Self> for Self>
). (Done in Addimpl Add<Self> for Self
,impl Mul<Self> for Self
for field mo… #53)AffineCurve
elements (See Add point compression + canonical serialization forAffineCurve
elements #51; done in Adds serialization #73).bench-utils
:tracing
.algebra
behind atrace
feature?r1cs-core
:ConstraintSystem
,ConstraintVar
,LinearCombination
, andVariable
APIs as per RefactorConstraintSystem
API #34 and Improve Gadget naming and infrastructure. #43ConstraintSystem
toR1CS
.ConstraintSystem::enter_ns
andConstraintSystem::leave_ns
toConstraintSystem::ns
. Additionally, refactorNamespace
struct to be just a guard struct which automatically decrements the scope when dropped.r1cs-std
:FieldVar
,GroupVar
, and other variable structs generic overCS: ConstraintSystem<F>
as well. This enables getting rid ofcs: CS
arguments to various functions likeadd
,mul
, etc. In turn, this allowsimpl Add<Self> for FieldVar<...>
impls.impl {Add, Mul}<Self::Constant> for FieldVar<...>
, impls with the constants. (This might not be possible due to coherence rules, might have to useenum
-based approach)UInt{8, 16, 32, 64}
.EqGadget
,ToBytesGadget
are less of a pain to implement.FpGadget
s.groth16
+gm17
:marlin
AffineCurve
elements #51).crypto-primitives
:The text was updated successfully, but these errors were encountered: