All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Rust's notion of Semantic Versioning.
- MSRV is now 1.60.0.
- Fix a bug on 32-bit platforms that could cause the square root implementation to return an incorrect result.
- The
sqrt-table
feature now works withoutstd
and only requiresalloc
.
serde
feature flag, which enables Serde compatibility to the crate types. Field elements and points are serialized to their canonical byte encoding (encoded as hexadecimal if the data format is human readable).
- Migrated to
ff 0.13
,group 0.13
,ec-gpu 0.2
. pasta_curves::arithmetic
:FieldExt
bounds on associated types ofCurveExt
andCurveAffine
have been replaced by bounds onff::WithSmallOrderMulGroup<3>
(andOrd
in the case ofCurveExt
).
pasta_curves::hashtocurve
:FieldExt
bounds on the module functions have been replaced by equivalentff
trait bounds.
pasta_curves::arithmetic
:FieldExt
(useff::PrimeField
orff::WithSmallOrderMulGroup
instead).Group
SqrtRatio
(useff::Field::{sqrt_ratio, sqrt_alt}
instead).SqrtTables
(from public API, as it isn't suitable for generic usage).
uninline-portable
feature flag, which disables inlining of some functions. This is useful for tiny microchips (such as ARM Cortex-M0), where inlining can hurt performance and blow up binary size.
- MSRV is now 1.56.0.
- Migrated to
ff 0.12
,group 0.12
.
gpu
feature flag, which exposes implementations of theGpuField
trait from theec-gpu
crate forpasta_curves::{Fp, Fq}
. This flag will eventually control all GPU functionality.repr-c
feature flag, which helps to facilitate usage of this crate's types across FFI by conditionally addingrepr(C)
attribute to point structures.pasta_curves::arithmetic::Coordinates::from_xy
pasta_curves::{Fp, Fq}
are now declared asrepr(transparent)
, to enable their use across FFI. They remain opaque structs in Rust code.
- Support for
no-std
builds, via two new (default-enabled) feature flags:alloc
enables thepasta_curves::arithmetic::{CurveAffine, CurveExt}
traits, as well as implementations of traits likegroup::WnafGroup
.sqrt-table
depends onalloc
, and enables the large precomputed tables (stored on the heap) that speed up square root computation.
pasta_curves::arithmetic::SqrtRatio
trait, extendingff::PrimeField
with square roots of ratios. This trait is likely to be moved into theff
crate in a future release (once we're satisfied with it).
pasta_curves::arithmetic
:Field
re-export (pasta_curves::group::ff::Field
is equivalent).FieldExt::ROOT_OF_UNITY
(useff::PrimeField::root_of_unity
instead).FieldExt::{T_MINUS1_OVER2, pow_by_t_minus1_over2, get_lower_32, sqrt_alt,
sqrt_ratio}
(moved toSqrtRatio
trait).FieldExt::{RESCUE_ALPHA, RESCUE_INVALPHA}
FieldExt::from_u64
(useFrom<u64> for ff::PrimeField
instead).FieldExt::{from_bytes, read, to_bytes, write}
(useff::PrimeField::{from_repr, to_repr}
instead).FieldExt::rand
(useff::Field::random
instead).CurveAffine::{read, write}
(usegroup::GroupEncoding::{from_bytes, to_bytes}
instead).
- The crate is now licensed as
MIT OR Apache-2.0
.
- Migrated to
ff 0.11
,group 0.11
.
- Implementation of
group::WnafGroup
for Pallas and Vesta, enabling them to be used withgroup::Wnaf
for targeted performance improvements.
- Implementations of
group::cofactor::{CofactorCurve, CofactorCurveAffine}
for Pallas and Vesta, enabling them to be used in cofactor-aware protocols that also want to leverage the affine point representation.
Initial release!