- Fixed partition hashing and add logging to aux trace building (#338).
- [BREAKING] Refactored maybe-async macro into simpler maybe-async and maybe-await macros (#283).
- [BREAKING] Introduce
VectorCommitment
abstraction (#285). - Added
maybe-async-trait
procedural macro (#334). - [BREAKING] Add options for partitioned trace commitments (#336).
- Updated minimum supported Rust version to 1.82.
- Implemented
get_size_hint()
for default impls (#332).
- Fixed
read_slice
impl for ReadAdapter` (#309).
- Fixed
useize
serialization inByteWriter
.
- [BREAKING] Merged
TraceLayout
intoTraceInfo
(#245). - Implemented Lagrange Kernel constraints (#247, )
- [BREAKING] refactored
TraceOodFrame
struct (#266, #274). - [BREAKING] explicitly limited the number of auxiliary trace segments to 1 (#267).
- Implemented additional field conversions for the
f64
field (#268). - [BREAKING] Added support for auxiliary proofs (#271).
- Introduced async prover (enabled via
async
feature) (#280). - [BREAKING] removed
group_vector_elements()
utility function (#282). - [BREAKING] removed
FieldElement::zeroed_vector()
function (#282). - [BREAKING] removed previously deprecated re-exports of core modules.
- Updated minimum supported Rust version to 1.78.
- Added more to/from conversions for
f64
field (#268).
- Re-added unintentionally removed re-exported liballoc macros (#263).
- Implemented
Serializable
andDeserializable
onString
(#258). - Extended range of possible implementations of
ByteReader
andByteWriter
. (#262).
- Extended
write_many
to supportIntoIterator
(#251)
- Refactored utils module re-exports to comply with latest clippy updates (#250).
- Added variable-length serialization and deserialization for
usize
type (#238). - [BREAKING] Removed
Serializable
andDeserializable
implementations from slices and vectors (#239). - Moved from
log
totracing
for logging and addedtracing-forest
feature (#241). - Updated provable security estimation to explicitly use the number of openings (#242).
- [BREAKING] Removed
From<u64>
andFrom<u128>
implementations from field elements (#243). - Increased min version of
rustc
to 1.75.
- Fixed a bug in
StarkProof
deserialization (#236).
- Added
Clone
derive toDeserializationError
.
- Added default deserializer implementations (#233)
- Fixed
StarkProof::new_dummy()
constructor (#234).
- Minor proof serialization and deserialization refactoring (#231).
- Added
StarkProof::new_dummy()
constructor to simplify testing (#232).
- Changed
Debug
format for field elements (#228).
- Changed most methods for
ProofOption
to beconst fn
.
- [BREAKING] replaced the
TraceLde
struct with a trait (#207). - [BREAKING] refactored
RandomCoin
trait (#214). - Improved proven security estimation (#215).
- [BREAKING] replaced the
ConstraintEvaluator
struct with a trait (#217). - Added support for proven security estimation in
no_std
context (#218). - [BREAKING] refactored
verify()
function to takeAcceptableOptions
as a parameter (#219). - Increased min version of
rustc
to 1.73 (#221). - Allowed duplicate query positions (#224).
- Added conditional support for serde on field elements (#209)
- Simplified construction of constraint composition polynomial (#198).
- Refactored serialization of OOD frame in STARK proofs (#199).
- Re-exported
btree_map
andbtree_set
modules from core collections (#202). - Simplified construction of DEEP composition polynomial (#203).
- Sped up proof verification using batch inverse (#190).
- Updated
ConstraintCommitment
to useRowMatrix
internally (#191). - Sped up FRI prover via more efficient
get_inv_offsets
implementation (#193). - Exposed
build_segments()
method publicly (#194).
- Updated
MerkleTree
and matrix structs to make them more suitable for HW acceleration (#185). - Replaced
log2()
usage with native.ilog2()
(#186).
- Disabled proven security estimation in
no-std
context.
- Implemented more efficient remainder handling in FRI (#139)
- Removed term involving conjugate OOD challenge z from deep composition polynomial (#166).
- Added
FieldElement::EXTENSION_DEGREE
constant. - Added
FieldElement::base_element
andFieldElement::slice_from_base_elements
methods. - [BREAKING] Renamed
FieldElement::as_base_elements
intoFieldElement::slice_as_base_elements
. - Added
Matrix::num_base_cols
andMatrix::get_base_element
methods. - [BREAKING] Renamed
Matrix
intoColMatrix
. - [BREAKING] Replaced
ColMatrix
withRowMatrix
to hold LDE trace in the prover (#168). - Updated conjectured security computation and added estimation of proven security (#151).
- Changed root of unity for
f64
field (#169). - Implemented reduction of public inputs and proof context to field elements (#172).
- [BREAKING] Replaced
RandomCoin
struct with a trait (#176).
- Fix no-std build for winter-utils (#153)
- [BREAKING]: Refactored prover/verifier to take hash function as a generic parameter (#111).
- Introduced
FftInputs
trait (#124). - Optimized
as_int()
method forf64
field (#127, #146). - Improved FRI remainder commitment methodology (#128).
- Added new arithmetization-friendly hash functions: Griffin and Rescue Prime Jive (#129).
- Fixed panic in prover when debugging with concurrent feature enabled (#130, #132).
- Added variable-time exponentiation option to
f64
field (#134). - Optimized squaring for degree 2 and 3 extension fields of
f64
field (#138). - Simplified conversion to base elements for degree 2 and 3 extension field elements (#147).
- Made closure types less restrictive for
TraceTable::fill()
(#149). - [BREAKING] Refactored serialization/deserialization traits (#150).
- Removed most exponentiations from the constraint evaluation step for the Prover.
- Increased transition constraint exemption limit by 1.
- Implemented custom doubling for
f64
andf62
field. - Moved
f64
field arithmetic to Montgomery form (constant time). - Updated MDS matrix and related-multiplication routine for
Rp64_256
hash function. - Improved performance of
Matrix::interpolate_columns
function. - Added ability to "unbatch" a
BatchMerkleProof
(viaBatchMerkleProof::into_paths()
method). - Changed visibility of FRI utils (made them public).
- Added support for FRI folding factor of 2 (in addition to 4, 8, and 16).
- Added support for Randomized AIR (with example).
- Added support for custom number of transition constraint exemptions.
- Enabled transition constraints of degree n + 1 when blowup factor is n.
- Moved trace and constraint commitment construction into separate functions in the
Prover
trait. - Introduced
Matrix
struct in the prover which is used as a backing type for trace and constraint evaluations. - Added
ExtensionOf
trait and implemented it for all supported fields. - Sped up inversion in
f64
field by using inversion method based on Fermat’s little theorem. - Implemented
Randomizable
trait foru32
,u16
, andu8
types. - [BREAKING]
AirContext::new()
now requiresnum_assertions
parameter. - [BREAKING] Various interface changes in the
Air
trait to support multi-segment traces. - Increased min version of
rustc
to 1.60.
- Implemented into byte conversion for Rp64_256 digest.
- Moved capacity elements to the front of the state for Rp64_256.
- Implemented digest to array conversion for Rp64_256 digest.
- Exposed some internal functions of Rp64_256 publicly.
- Added
f64
field. - Added support for cubic field extensions.
- Added an implementation of Rescue Prime hash function in
f64
field. - Switched to Rust 2021 and increased min version of
rustc
to 1.57. - [BREAKING] Renamed
Air::BaseElement
toAir::BaseField
. - [BREAKING] Replaced
prover::prove()
function withProver
trait. - [BREAKING] Split
ExecutionTrace
struct intoTrace
trait andTraceTable
struct.
- Added
Blake3_192
as hash function option. - Implemented high-performance version of Rescue Prime hash function.
- Removed
alloc
feature in favor of turning onno_std
via--no-default-features
flag only. - Moved
rand
dependency todev-dependencies
only and removedhashbrown
dependency. - Increased min version of
rustc
to 1.54.
- Initial release