- #300 (
ark-ec) Change the implementation ofHashtrait ofGroupProjectiveto use the affine co-ordinates. - #302 (
ark-ff) Renamefind_wnaftofind_naf. - #310 (
ark-ec,ark-ff) Remove unnecessary internalPhantomData. - #333 (
ark-poly) Expose more properties ofEvaluationDomains. - #338 (
ark-ec) Add missingUniformRandtrait bound toGroupAffine. - #338 (workspace) Change to Rust 2021 edition.
- #345 (
ark-ec,ark-serialize) Change the serialization format for Twisted Edwards Curves. We now encode the Y co-ordinate 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 (
ark-ec) Renamemsm:{Fixed,Variable}BaseMSM:multi_scalar_multomsm:{Fixed,Variable}:msmto avoid redundancy. - #359 (
ark-test-templates) Simplify the field and curve test macros. - #365 (
ark-ec)- Move
COFACTOR,COFACTOR_INV, andis_in_correct_subgroup_assuming_on_curve()from{SW,TE}ModelParameterstoModelParameters. - Add
mul_bits()toAffineCurveand provide a default implementation ofmul()using this. - Remove duplicate function
scale_by_cofactor()fromshort_weierstrass_jacobian::GroupAffineandtwisted_edwards_extended::GroupAffine
- Move
- #370 (all) Set the minimum
rust-version = 1.56in the manifests of all crates. - #379 (
ark-ff) RefactorFieldimplementation andPrimeFieldtrait:- Switch from hardcoded
FpXYZtoFp<N>based onconstgenerics. - Move Montgomery arithmetic to an optional backend.
- Rename
field_newmacros toMontFp,QuadExtandCubicExtmacros. - Introduce
const fns for generating many constants. - Add default associated constants to reduce boilerplate.
- Rename
Fp*ParameterstoFp*Config. - Add
From<u32>,From<u16>, andFrom<u8>impls forBigInt<N>. - Remove
FftConfig; move its contents toFftField.
- Switch from hardcoded
- #383 (
ark-ff) RenameBigInteger::add_nocarrytoadd_with_carryandsub_noborrowtosub_with_borrow. - #386 (
ark-ff) RemovePrimeField::GENERATOR, since it already exists onFftField. - #393 (
ark-ec,ark-ff) RenameFpXParamstoFpXConfigandFpXParamsWrappertoFpXConfigWrapper. - #396 (
ark-ec) Removemul_bitsfeature, and remove default implementations ofmulandmul_by_cofactor_to_projective. - #408 (
ark-ff) Change the output ofDisplayformatting for BigInt & Fp from hex to decimal. - #412 (
ark-poly) Rename UV/MVPolynomial to DenseUV/MVPolynomial. - #425 (
ark-ec) RefactorVariableBasestruct toVariableBaseMSMtrait and implement it forGroupProjective.
- #301 (
ark-ec) AddGLVParameterstrait definition. - #312 (
ark-ec) Addis_in_correct_subgroup_assuming_on_curvefor allSWModelParameters. - #321 (
ark-ff) Change bigint conversions to implFrominstead ofInto. - #343 (
ark-ec) Add WB and SWU hash-to-curve maps. - #348 (
ark-ec) Addmsm:{Fixed,Variable}Base:msm_checked_len. - #364 (
ark-ec) AddChunkedPippengerto variable-base MSM. - #371 (
ark-serialize) Add serialization impls for arrays - #386 (
ark-ff-macros,ark-ff) Add a macro to deriveMontConfig. - #396 (
ark-ec) Add a defaultmulfunction to{TE,SW}ModelParameterstrait definition. - #397 (
ark-ec) AddHashMapPippengerto variable-base MSM. - #420 (
ark-ec) Add aclear_cofactormethod toAffineCurve.
- #302 (
ark-ff) Add the relaxed NAF computation. - #306 (
ark-ff,ark-ff-asm) Make the assembly backend available onstable. - #339 (
ark-ff) Remove duplicated code fromtest_fieldmodule and replace its usage withark-test-curvescrate. - #352 (
ark-ff) UpdateQuadExtField::sqrtfor better performance. - #357 (
ark-poly) Speedup division by vanishing polynomials for dense polynomials.
- #350 (
ark-serialize) Fix issues with hygiene whenever a non-standardResulttype is in scope. - #358 (
ark-ff) Fix the bug forQuadExtField::sqrtwhenc1 = 0 && c0.legendre.is_qnr() - #366 (
ark-ff) Fixnorm()for cubic extension field towers.
- #285 (
ark-ec) RemoveATE_LOOP_COUNT_IS_NEGATIVEfrom BN curve parameter trait. - #292 (
ark-ec) RemoveCycleEngine. - #293 (
ark-ff) Removeark_ff::test_rng.
- #230 (
ark-ec) Addwnaf_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) AddMul<F>implementation forDensePolynomial. - #259 (
ark-poly) AddMul<F>implementation forSparsePolynomialandAdd<SparsePolynomial<F>>/Sub<SparsePolynomial<F>>forDensePolynomial. - #261 (
ark-ff) Add support for 448-bit integers and fields. - #263 (
ark-ff) AddFrom<iXXX>implementations to fields. - #265 (ark-serialize) Add hashing as an extension trait of
CanonicalSerialize. - #280 (
ark-ff) AddInto<BigUint>andFrom<BigUint>implementations toBigIntegerandPrimeField. - #289 (
ark-ec) AddSumimplementation for allAffineCurve.
- #279 (
ark-ec) Parallelize miller loop operations for BLS12.
- #252 (
ark-ff) Fix prime field sampling whenREPR_SHIFT_BITSis 64. - #284 (
ark-poly-benches) Fix the panicsubgroup_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 expressionark_poly::(Dense|Sparse)Polynomial, and replace withark_poly::univariate::$1Polynomial. - #36 (
ark-ec) In Short-Weierstrass curves, include an infinity bit inToConstraintField. - #37 (
ark-poly) In thePolynomialtrait, addHashtrait bound toPoint. - #38 (
ark-poly) AddAddandNegtrait bounds toPolynomial. - #51 (
ark-ff) Removedunitary_inversefromQuadExtField. Make this change by replacingx.unitary_inverse()withlet mut tmp = x.clone(); tmp.conjugate(). - #53 (
ark-poly) AddZerotrait bound toPolynomial. - #96 (
ark-ff) Make thefield_newmacro accept values in integer form, without requiring decomposition into limbs, and without requiring encoding in Montgomery form. - #106 (
ark-ff,ark-ec) AddZeroizetrait bound toField, ProjectiveGroup, AffineGrouptraits. - #108 (
ark-ff) Addextension_degree()method toField. - #110 (
ark-ec) Change the trait bound on the scalar formul, from (essentially)Into<BigInt>toAsRef<[u64]>. - #117 (
ark-poly) Make the univariateSparsePolynomialimplementPolynomial. Make this change by replacingsparse_poly.evaluate(pt)tosparse_poly.evaluate(&pt). - #129 (
ark-ff) Moveark_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) AddCanonicalSerializeandCanonicalDeserializetrait 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 it accepts: 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) Addfrom_base_field_elementsas a method to theFieldtrait. - #166 (
ark-ff) ChangeBigInt::{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 thefield_newmacro accept values in integer form, without requiring decomposition into limbs, and without requiring encoding in Montgomery form. - #106 (
ark-ff,ark-ec) AddZeroizetrait bound toField, ProjectiveGroup, AffineGrouptraits. - #117 (
ark-poly) Add operations toSparsePolynomial, so it implementsPolynomial. - #140 (
ark-poly) Add support for multilinear extensions in dense and sparse evaluation form. - #164 (
ark-ff) Add methodsfrom_{be, le}_bytes_mod_orderto thePrimeFieldtrait. - #197 (
ark-test-curves) Add a BN384 curve with low two-adicity for mixed-radix testing.
- #22 (
ark-ec) Speedup fixed-base MSMs. - #28 (
ark-poly) Adddomain()method on theevaluationsstruct. - #31 (
ark-ec) Speedup point doubling on twisted edwards curves. - #35 (
ark-ff) ImplementToConstraintFieldforbool. - #48 (
ark-ff) SpeedupsqrtonQuadExtField. - #94 (
ark-ff) ImplementToBytesandFromBytesforu128. - #99 (
ark-poly) Speedupevaluate_all_lagrange_coefficients. - #100 (
ark-ff) Implementbatch_inverse_and_mul. - #101 (
ark-ff) Addelement(i: usize)on theDomaintrait. - #107 (
ark-serialize) Add an impl ofCanonicalSerialize/DeserializeforBTreeSet. - #114 (
ark-poly) Significantly speedup and reduce memory usage ofDensePolynomial.evaluate. - #114, #119 (
ark-poly) Add infrastructure for benchmarkingDensePolynomialoperations. - #115 (
ark-poly) Add parallel implementation to operations onEvaluations. - #115 (
ark-ff) Add parallel implementation ofbatch_inversion. - #122 (
ark-poly) Add infrastructure for benchmarkingFFTs. - #125 (
ark-poly) Add parallelization to applying coset shifts withincoset_fft. - #126 (
ark-ec) Useark_ff::batch_inversionfor point normalization. - #131, #137 (
ark-ff) Speedupsqrton fields when a square root exists. (And slows it down when doesn't exist.) - #141 (
ark-ff) AddFp64. - #144 (
ark-poly) Add serialization for polynomials and evaluations. - #149 (
ark-serialize) Add an impl ofCanonicalSerialize/DeserializeforString. - #153 (
ark-serialize) Add an impl ofCanonicalSerialize/DeserializeforRc<T>. - #157 (
ark-ec) Speed upvariable_base_msmby not relying on unnecessary normalization. - #158 (
ark-serialize) Add an impl ofCanonicalSerialize/Deserializefor(). - #166 (
ark-ff) Add ato_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 onrand_xorshift. - #205 (
ark-ec,ark-ff) Unroll loops and conditionally use intrinsics inbigintegerarithmetic, 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 inToConstraintField. - #107 (
ark-serialize) Fix handling of(de)serialize_uncompressed/uncheckedin various impls ofCanonicalSerialize/Deserialize. - #112 (
ark-serialize) Makebools 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 whenMODULUS_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 fieldsBaseFieldextends 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 ofPairingFriendlyCycleintroduced in #190.