- #300 (ark-ec) Change the implementation of
Hashtrait ofGroupProjectiveto use the affine coordinates. - #310 (ark-ec, ark-ff) Remove unnecessary internal
PhantomData. - #333 (ark-poly) Expose more properties of
EvaluationDomains. - #338 (ark-ec) Add missing
UniformRandtrait bound toGroupAffine. - #338 (workspace) Change to Rust 2021 edition.
- #345 (arc-ec, ark-serialize) Change the serialization format for Twisted Edwards Curves. We now encode the Y coordinate and take the sign bit of the X co-ordinate, the default flag is also now the Positive X value. The old methods for backwards compatibility are located here
- #348 (arc-ec) Rename
msm:{Fixed,Variable}BaseMSM:multi_scalar_multomsm:{Fixed,Variable}:msmto avoid redundancy.
- #321 (ark-ff) Change bigint conversions to impl
Frominstead ofInto. - #301 (ark-ec) Add
GLVParameterstrait definition. - #312 (ark-ec) Add
is_in_correct_subgroup_assuming_on_curvefor allSWModelParameters. - #348 (ark-ec) Add
msm:{Fixed,Variable}Base:msm_checked_len.
- #339 (ark-ff) Remove duplicated code from
test_fieldmodule and replace its usage withark-test-curvescrate. - #352 (ark-ff) Update
QuadExtField::sqrtfor better performance.
- #350 (ark-serialize) Fix issues with santiation whenever a non-standard
Resulttype is in scope.
- #285 (ark-ec) Remove
ATE_LOOP_COUNT_IS_NEGATIVEfrom BN curve parameter trait. - #292 (ark-ec) Remove
CycleEngine. - #293 (ark-ff) Remove
ark_ff::test_rng.
- #230 (ark-ec) Add
wnaf_mulimplementation forProjectiveCurve. - #245 (ark-poly) Speedup the sequential and parallel radix-2 FFT and IFFT significantly by making the method in which it accesses roots more cache-friendly.
- #258 (ark-poly) Add
Mul<F>implementation forDensePolynomial. - #259 (ark-poly) Add
Mul<F>implementation forSparsePolynomialandAdd<SparsePolynomial<F>>/Sub<SparsePolynomial<F>>forDensePolynomial. - #261 (ark-ff) Add support for 448-bit integers and fields.
- #263 (ark-ff) Add
From<iXXX>implementations to fields. - #265 (ark-serialize) Add hashing as an extension trait of
CanonicalSerialize. - #280 (ark-ff) Add
Into<BigUint>andFrom<BigUint>implementations toBigIntegerandPrimeField. - #289 (ark-ec) Add
Sumimplementation for allAffineCurve.
- #279 (ark-ec) Parallelize miller loop operations for BLS12.
- #252 (ark-ff) Fix prime field sampling when
REPR_SHIFT_BITSis 64. - #284 (ark-poly-benches) Fix the panic
subgroup_fft_in_placebenchmark for MNT6-753's Fr.
The main features of this release are:
- Adding the ability to define fields with integer parameters
- Multi-variate polynomial support
- Multilinear polynomial support
- Many speedups to operations involving polynomials
- Some speedups to
sqrt - Small speedups to MSMs
- Big speedups to radix-2 FFTs
- Fix in the assembly arithmetic backend
- Adding new traits for basic curve cycles and pairing based curve cycles
- #20 (ark-poly) Move univariate DensePolynomial and SparsePolynomial into a
univariate sub-crate. Make this change by:
find w/ regular expression
ark_poly::(Dense|Sparse)Polynomial, and replace withark_poly::univariate::$1Polynomial. - #36 (ark-ec) In Short-Weierstrass curves, include an infinity bit in
ToConstraintField. - #37 (ark-poly) In the
Polynomialtrait, addHashtrait bound toPoint. - #38 (ark-poly) Add
AddandNegtrait bounds toPolynomial. - #51 (ark-ff) Removed
unitary_inversefromQuadExtField. Make this change by replacingx.unitary_inverse()withlet mut tmp = x.clone(); tmp.conjugate(). - #53 (ark-poly) Add
Zerotrait bound toPolynomial. - #96 (ark-ff) Make the
field_newmacro accept values in integer form, without requiring decomposition into limbs, and without requiring encoding in Montgomery form. - #106 (ark-ff, ark-ec) Add
Zeroizetrait bound toField, ProjectiveGroup, AffineGrouptraits. - #108 (ark-ff) Add
extension_degree()method toField. - #110 (ark-ec) Change the trait bound on the scalar for
mul, from (essentially)Into<BigInt>toAsRef<[u64]>. - #117 (ark-poly) Make the univariate
SparsePolynomialimplementPolynomial. Make this change by replacingsparse_poly.evaluate(pt)tosparse_poly.evaluate(&pt). - #129 (ark-ff) Move
ark_ff::{UniformRand, test_rng}toark_std::{UniformRand, test_rng}. Importing these fromark-ffis still possible, but is deprecated and will be removed in the following release. - #144 (ark-poly) Add
CanonicalSerializeandCanonicalDeserializetrait bounds forPolynomial. - #160 (ark-serialize, ark-ff, ark-ec)
- Remove
ConstantSerializedSize; users should useserialized_size*(see next). - Add
serialized_size_with_flagsmethod toCanonicalSerializeWithFlags. - Change
from_random_bytes_with_flagsto outputark_serialize::Flags. - Change signatures of
Flags::from_u8*to outputOption. - Change
Flags::from_u8*to be more strict about the inputs they accept: if the top bits of theu8value do not correspond to one of the possible outputs ofFlags::u8_bitmask, then these methods outputNone, whereas before they output a default value. Downstream users other thanark-curvesshould not see breakage unless they rely on these methods/traits explicitly.
- Remove
- #165 (ark-ff) Add
from_base_field_elementsas a method to theFieldtrait. - #166 (ark-ff) Change
BigInt::{from_bytes, to_bits}tofrom_bytes_le, from_bytes_be, to_bits_le, to_bits_be.
- #20 (ark-poly) Add structs/traits for multivariate polynomials.
- #96 (ark-ff) Make the
field_newmacro accept values in integer form, without requiring decomposition into limbs, and without requiring encoding in Montgomery form. - #106 (ark-ff, ark-ec) Add
Zeroizetrait bound toField, ProjectiveGroup, AffineGrouptraits. - #117 (ark-poly) Add operations to
SparsePolynomial, so it implementsPolynomial. - #140 (ark-poly) Add support for multilinear extensions in dense and sparse evaluation form.
- #164 (ark-ff) Add methods
from_{be, le}_bytes_mod_orderto thePrimeFieldtrait. - #197 (ark-test-curves) Add a BN384 curve with low two-arity for mixed-radix testing.
- #22 (ark-ec) Speedup fixed-base MSMs.
- #28 (ark-poly) Add
domain()method on theevaluationsstruct. - #31 (ark-ec) Speedup point doubling on twisted edwards curves.
- #35 (ark-ff) Implement
ToConstraintFieldforbool. - #48 (ark-ff) Speedup
sqrtonQuadExtField. - #94 (ark-ff) Implement
ToBytesandFromBytesforu128. - #99 (ark-poly) Speedup
evaluate_all_lagrange_coefficients. - #100 (ark-ff) Implement
batch_inverse_and_mul. - #101 (ark-ff) Add
element(i: usize)on theDomaintrait. - #107 (ark-serialize) Add an impl of
CanonicalSerialize/DeserializeforBTreeSet. - #114 (ark-poly) Significantly speedup and reduce memory usage of
DensePolynomial.evaluate. - #114, #119 (ark-poly) Add infrastructure for benchmarking
DensePolynomialoperations. - #115 (ark-poly) Add parallel implementation to operations on
Evaluations. - #115 (ark-ff) Add parallel implementation of
batch_inversion. - #122 (ark-poly) Add infrastructure for benchmarking
FFTs. - #125 (ark-poly) Add parallelization to applying coset shifts within
coset_fft. - #126 (ark-ec) Use
ark_ff::batch_inversionfor point normalization. - #131, #137 (ark-ff) Speedup
sqrton fields when a square root exists. (And slows it down when doesn't exist.) - #141 (ark-ff) Add
Fp64. - #144 (ark-poly) Add serialization for polynomials and evaluations.
- #149 (ark-serialize) Add an impl of
CanonicalSerialize/DeserializeforString. - #153 (ark-serialize) Add an impl of
CanonicalSerialize/DeserializeforRc<T>. - #157 (ark-ec) Speed up
variable_base_msmby not relying on unnecessary normalization. - #158 (ark-serialize) Add an impl of
CanonicalSerialize/Deserializefor(). - #166 (ark-ff) Add a
to_bytes_be()andto_bytes_lemethods toBigInt. - #169 (ark-poly) Improve radix-2 FFTs by moving to a faster algorithm by Riad S. Wahby.
- #171, #173, #176 (ark-poly) Apply significant further speedups to the new radix-2 FFT.
- #188 (ark-ec) Make Short Weierstrass random sampling result in an element with unknown discrete log.
- #190 (ark-ec) Add curve cycle trait and extended pairing cycle trait for all types of ec cycles.
- #201 (ark-ec, ark-ff, ark-test-curves, ark-test-templates) Remove the dependency on
rand_xorshift. - #205 (ark-ec, ark-ff) Unroll loops and conditionally use intrinsics in
bigintegerarithmetic, and reduce copies inffandecarithmetic. - #207 (ark-ff) Improve performance of extension fields when the non-residue is negative. (Improves fq2, fq12, and g2 speed on bls12 and bn curves.)
- #211 (ark-ec) Improve performance of BLS12 final exponentiation.
- #214 (ark-poly) Utilise a more efficient way of evaluating a polynomial at a single point.
- #242, [#244][arkworks-rs#244] (ark-poly) Speedup the sequential radix-2 FFT significantly by making the method in which it accesses roots more cache-friendly.
- #36 (ark-ec) In Short-Weierstrass curves, include an infinity bit in
ToConstraintField. - #107 (ark-serialize) Fix handling of
(de)serialize_uncompressed/uncheckedin various impls ofCanonicalSerialize/Deserialize. - #112 (ark-serialize) Make
bools checked serialization methods non-malleable. - #119 (ark-poly) Fix bugs in degree calculation if adding/subtracting same degree polynomials whose leading coefficients cancel.
- #160 (ark-serialize, ark-ff, ark-ec) Support serializing when
MODULUS_BITS + FLAG_BITSis greater than the multiple of 8 just greater thanMODULUS_BITS, which is the case for the Pasta curves (fixes #47). - #165 (ark-ff) Enforce in the type system that an extension fields
BaseFieldextends from the correctBasePrimeField. - #184 Compile with
panic='abort'in release mode, for safety of the library across FFI boundaries. - #192 Fix a bug in the assembly backend for finite field arithmetic.
- #217 (ark-ec) Fix the definition of
PairingFriendlyCycleintroduced in #190.