- (
ark-starkcurve) Add 252 bit Stark curve. - #971 (
ark-ff) Make serial_batch_inversion_and_mul public. - Consolidated logic into
bitreverse_permutation_in_placeand made it public. - Remove redundant type constraints from
Pairing::G1Prepared. - (
ark-serialize) Add serde-compatible wrapper typesCompressedChecked<T>,CompressedUnchecked<T>,UncompressedChecked<T>,UncompressedUnchecked<T>. - #989 (
ark-poly) Replace boundF: FftFieldwithF: FieldonGeneralEvaluationDomain.
- (
ark-serialize) Implementation ofCanonicalSerializeandCanonicalDeserializefor signed integer types
- #772 (
ark-ff) Implementation ofmulmethod forBigInteger. - #794 (
ark-ff) Fixwasmcompilation. - #837 (
ark-serialize) Fix array deserialization panic. - #845 (
Algebra) Implementation ofmulmethod forDenseMultilinearExtension<F> * F.
- #577 (
ark-ff,ark-ec) AddAdditiveGroup, a trait for additive groups (equipped with scalar field). - #593 (
ark-ec) ChangeAffineRepr::xy()to return owned values. - #633 (
ark-ec) Generic pairing implementation for the curves from the BW6 family. - #659 (
ark-ec) Move auxiliaryparityfunction fromark_ec::hashing::curve_maps::swutoark_ec::hashing::curve_maps. - #746 (
ark-ec) Refactor fixed-based batch multiplication:- Move functionality to
ScalarMul::batch_mulandScalarMul::batch_mul_with_preprocessing. - Create new struct
BatchMulPreprocessingfor to hold preprocessed powers ofbase.- Provide high-level constructor
newthat calculates window size and scalar size. - Provide low-level constructor
with_window_and_scalar_sizethat allows setting these parameters. - Make
windowed_mula private method ofBatchMulPreprocessing. - Rename
get_mul_window_sizetocompute_window_sizeand make it private.
- Provide high-level constructor
- Move functionality to
- #748 (
ark-ff) AddFromStrforBigInteger. - #756 (
ark-ec) RequireNeg,Sub,SubAssignops onAffineRepr. - #767 (
ark-curve25519) Change (negate) generator of curve25519 for inter-operability with curve25519-dalek. - #811 (
ark-serialize) RemoveSendtrait bound fromValid.
- #758 Implement Elligator2 hash-to-curve parameters for Bandersnatch.
- #659 (
ark-ec) Add Elligator2 hash-to-curve map. - #689 (
ark-serialize) AddCanonicalSerializeandCanonicalDeserializeimpls forVecDequeandLinkedList. - #691 (
ark-poly) ImplementPolynomialforSparseMultilinearExtensionandDenseMultilinearExtension. - #693 (
ark-serialize) Addserialize_to_vec!convenience macro. - #713 (
ark-ff) Add support for bitwise operations AND, OR, and XOR betweenBigInteger. - #763 (
ark-poly) Addconcatto concatenate evaluation tables ofDenseMultilinearPolynomials. - #811 (
ark-serialize) ImplementValid&CanonicalDeserializeforRc.
- #736 (
ark-ff) Deprecatedivn(), and usecore::ops::{Shr, ShrAssign}instead. - #739 (
ark-ff) Deprecatemuln(), and usecore::ops::{Shl, ShlAssign}instead. - #771 (
ark-ec) Omit expensive scalar multiplication inis_in_correct_subgroup_assuming_on_curve()for short Weierstrass curves of cofactor one. - #817 (
ark-ec) Relax the visibility for G2 ell coeffs and related algorithms.
- #747 (
ark-ff-macros) Fix fetching attributes inMontConfigmacro. - #803 (
ark-ec,ark-test-template) Fix incorrect decomposition in GLV. - #806 (
ark-ff) Fix the impl forDisplaying zero element in Fp. - #822 (
ark-ec,ark-test-template) Fix the incorrectAffine - Projectiveimplementation
- #610 (
ark-ec) Fix panic infinal_exponentiationstep for MNT4/6 curves if inverse does not exist.
- #603 (
ark-poly) Reduce the number of field multiplications performed bySparseMultilinearExtension::evaluateandDenseMultilinearExtension::evaluate
- #300 (
ark-ec) Change the implementation ofHashtrait ofGroupProjectiveto use the affine coordinates. - #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 coordinate and take the sign bit of the X coordinate, 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}CurveConfigtoCurveConfig. - Add
mul_bits()toAffineCurveand provide a default implementation ofmul()using this. - Remove duplicate function
scale_by_cofactor()fromshort_weierstrass::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 forBigIntandFpfrom hex to decimal. - #412 (
ark-poly) Rename UV/MVPolynomial to DenseUV/MVPolynomial. - #417 (
ark-ff) RemoveToBytesandFromBytes. - #418 (
ark-ff) Addsums_of_productstoFieldandFp - #422 (
ark-ff) RemoveSquareRootField, and move functionality toField - #425 (
ark-ec) RefactorVariableBasestruct toVariableBaseMSMtrait and implement it forGroupProjective. - #438 (
ark-ec) Rename modules, structs, and traits related toec.short_weierstrass_jacobian→short_weierstrasstwisted_edwards_extend→twisted_edwardsGroupAffine→AffineGroupProjective→ProjectiveModelParameters→CurveConfigSWModelParameters→SWCurveConfigTEModelParameters→TECurveConfigMontgomeryModelParameters→MontCurveConfig
- #440 (
ark-ff) Add a method to construct a field element from an element of the underlying base prime field. - #443, #449 (
ark-ec) Improve ergonomics of scalar multiplication.- Rename
ProjectiveCurve::mul(AsRef[u64])toProjectiveCurve::mul_bigint(AsRef[u64]). - Bound
ProjectiveCurvebyMul<ScalarField>,for<'a> Mul<&'a ScalarField>MulAssign<ScalarField>,for<'a> MulAssign<&'a ScalarField>
- Bound
AffineCurvebyMul<ScalarField, Output = ProjectiveCurve>for<'a> Mul<&'a ScalarField, Output = ProjectiveCurve>
- Rename
- #445 (
ark-ec) Change theATE_LOOP_COUNTin MNT4/6 curves to use 2-NAF. - #446 (
ark-ff) AddCyclotomicMultSubgrouptrait and implement it for extension fields - #447 (
ark-ec,ark-algebra-test-templates) Rename and refactor group infrastructure, and test infrastructure for fields, groups, and pairings:- Create new
Grouptrait and move some functionality fromProjectiveCurveto it. - Refactor
add_assign_mixed→add_assignthat's polymorphic over its RHS. - Rename
ProjectiveCurvetoCurveGroup: Group.- Rename some associated types:
AffineCurve→Affine
- Rename some methods:
batch_normalization_into_affine→normalize_batchprime_subgroup_generator→generator
- Rename some associated types:
- Rename
AffineCurvetoAffineRepr.- Rename associated types:
Projective→Group
- Add methods:
- Add method
fn x(&self) -> Self::BaseFieldthat returns the x coordinate of the point. - Add method
fn y(&self) -> Self::BaseFieldthat returns the y coordinate of the point.
- Add method
- Rename methods:
zero()→identity()is_zero()→is_identity()into_projective()→into_group()prime_subgroup_generator()→generator()
- Rename associated types:
- Add new
ScalarMultrait that encapsulates scalar multiplication routines for arbitraryGroups.ScalarMultrait has aMulBaseassociated type to encapsulate bases for variable base and fixed-base scalar multiplication algorithms.ScalarMulrequiresAdd<Self::MulBase, Output = Self>,AddAssign<Self::MulBase>, andFrom<Self::MulBase>.
- Rename
PairingEnginetoPairing:- Rename associated types:
Fr→ScalarFieldG1Projective→G1G2Projective→G2Fqk→TargetField: CyclotomicMultSubgroup
- Remove associated type
Fqe. - Rename methods:
miller_loop→multi_miller_looppairing→multi_pairing
- Change method signatures:
product_of_pairings→multi_pairing- take two references to element iterators instead of an iterator of tuples.
miller_loopandmulti_miller_loopnow- take two iterators over
impl Into<G1Prepared>andimpl Into<G2Prepared>as input, and - output
MillerLoopOutput, which is a newtype wrapper aroundTargetField.
- take two iterators over
final_exponentiationnow- takes as input a
MillerLoopOutput, - outputs
PairingOutput, which is a newtype aroundTargetField, and which implementsGroupandScalarMul, allowing it to be used with the existing MSM infrastructure.
- takes as input a
- Pairings, which are the composition of Miller loops and final exponentiation, are changed accordingly.
- Rename associated types:
ark-algebra-test-templatesmacro syntax is now simplified; see the test files intest-curvesfor examples.
- Create new
- #463 (
ark-serialize,ark-ff,ark-ec) Refactor serialization infrastructure to enable more flexibility and less repetition of code:- New
enum Compressthat indicates whether point compression should be enabled or not. - New
enum Validatethat indicates whether type-specific validation checks should be carried out or not. - New
trait Validthat provides methods for checking whether a deserialized value of a given type passes appropriate validation checks. The trait has the following methodscheckwhich checks a single value, andbatch_checkwhich checks a batch of values.
CanonicalSerialize:- New signature for
serializethat takes in an argumentcompress: Compress - Old
serialize→serialize_compressed serialize_uncompressed→serialize_uncompressed- Every method has a default implementation that calls
serializewith the appropriatecompressvalue.
- New signature for
CanonicalDeserialize:- All types implementing
- New signature for
deserializethat takes in argumentscompress: Compressandvalidate: Validate. deserialize→deserialize_compresseddeserialize_uncompressed→deserialize_uncompresseddeserialize_unchecked→deserialize_uncompressed_unchecked- New method
deserialize_compressed_uncheckedthat performs decompression but skips validation checks. - Every method has a default implementation that calls
deserializewith the appropriatecompressandvalidatevalues.
- The
SWFlagsenum has been moved toark_ec::models::short_weierstrass, and has had its variants renamed to be somewhat more descriptive. - The
EdwardsFlagsenum has been moved toark_ec::models::twisted_edwards, has been renamed toTEFlags, and has had its variants renamed to be somewhat more descriptive. - New serialization format for Short Weierstrass curves:
- Points with a "positive" y-coordinate are serialized with the sign bit set to zero (as opposed to the sign bit set to one in the old behavior).
- Points with a "negative" y-coordinate are serialized with the sign bit set to one (as opposed to the sign bit set to zero in the old behavior).
- The point at infinity is serialized with the infinity flag set to one.
- New serialization format for Twisted Edwards curves:
- Points with a "positive" x-coordinate are serialized with the sign bit set to zero.
- Points with a "negative" x-coordinate are serialized with the sign bit set to one.
- New
- #487 (
ark-poly) RefactorEvaluationDomaintrait for cosets:- Remove method
generator_inv. - Remove method
divide_by_vanishing_poly_on_coset_in_place. - Remove coset fft methods:
coset_fft,coset_fft_in_place,coset_ifft,coset_ifft_in_place.
- Remove method
- #492 (
ark-ff) Refactorark-ffAPIs:- Splits the contents of
ff/src/fields/mod.rsinto smaller files for easier management. - Moves
BitIteratorout ofark_ff::fieldsand intoark_ffdirectly. - Adds
impl<'a, 'b> Add/Sub/Mul/Div<&'a F> for &'b F
- Splits the contents of
- #517 (
ark-ec) Move the definition of the isogeny map of WB hash-to-curve to a separate struct - #519 (
ark-ec) Refactor variable-base MSM to be checked by default, returning aResultif the lengths of the bases and scalars do not match. - #545 (
ark-ec,ark-ff) Rename all*Parametersor*Paramsto*Config, including:SWUParams→SWUConfigWBParams→WBConfigBls12Parameters→Bls12ConfigG1Parameters→G1ConfigG2Parameters→G2ConfigBnParameters→BnConfigBW6Parameters→BW6ConfigMNT4Parameters→MNT4ConfigMNT6Parameters→MNT6ConfigGLVParameters→GLVConfig
- #557 (
ark-ff) Changefrobenius_mapto return the result, instead of mutating the input. Addfrobenius_map_in_placefor the old behavior.
- #301 (
ark-ec) AddGLVParameterstrait definition. - #312 (
ark-ec) Addis_in_correct_subgroup_assuming_on_curvefor allParameters. - #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}CurveConfigtrait definition. - #397 (
ark-ec) AddHashMapPippengerto variable-base MSM. - #418 (
ark-ff) Addsums_of_productstoFieldandFp - #420 (
ark-ec) Add aclear_cofactormethod toAffineCurve. - #430 (
ark-ec) Add functionality for mapping a field element to a curve element for hash-to-curve. - #440 (
ark-ff) Add a method to construct a field element from an element of the underlying base prime field. - #446 (
ark-ff) AddCyclotomicMultSubgrouptrait and impl for extension fields - #467 (
ark-ec)- Move implementation of
serialize_with_mode(),deserialize_with_mode(), andserialized_size()into{SW,TE}CurveConfigto allow customization.
- Move implementation of
- #487 (
ark-poly) RefactorEvaluationDomaintrait for cosets:- Add constructor
new_coset. - Add convenience method
get_coset. - Add methods
coset_offset,coset_offset_invandcoset_offset_pow_size.
- Add constructor
- #539 (
ark-ec) Implement wNAF-based MSM, resulting in 5-10% speedups. - #528 (
ark-ec) Allow to overwrite the default implementation of themsmfunction provided by theVariableBaseMSMtrait by a specialized version inSWCurveConfig.
- #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. - #445 (
ark-ec) Use 2-NAF for ate pairing in MNT4/6 curves. - #509 (
ark-ff,ark-ff-macros) Support prime fields with (64 * k)-bit modulus. - #567 (
ark-ec) Allow to overwrite the default implementation of themsmfunction for TwistedEdwards form provided by theVariableBaseMSMtrait by a specialized version inTECurveConfig.
- #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. - #394 (
ark-ff,ark-serialize) RemoveEmptyFlagsconstruction checks. - #442 (
ark-ff) Fix deserialization for modulo with 64 shaving bits. - #460 (
ark-ec) Fix a corner case for ate pairing in BLS12 and BW6 models. - #521 (
ark-poly) ChangeDensePolynomial::evaluate_over_domainto not truncate terms higher than the size of the domain. - #526 (
ark-ff) Fix squaring forFp128.
- #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 (
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.