Skip to content

Latest commit

 

History

History
870 lines (560 loc) · 49.7 KB

CHANGELOG.md

File metadata and controls

870 lines (560 loc) · 49.7 KB

Changelog

All notable changes are documented in this file. Lines marked “(!)” indicate a breaking change.

0.43.0 – 2024-10-29

✨ Features

  • Generalize polynomial multiplication (4235a802)
  • Generalize polynomial scalar multiplication (e71b2662)
  • Easily construct polynomials x^n (2c1c08d8)
  • Allow evaluating polynomials in “value form” (b1baee8a)
  • Fast modular interpolate and extrapolate on coset (2c491342)
  • Batch and parallel versions of coset extrapolate (9e7585d3)
  • Convert BFieldElement from {u, i}size (30c24c3b)
  • Implement BFieldCodec for u8 and u16 (8ec5f680)
  • Add conversions from and to BFieldElement (8e403080)
  • Implement Const{Zero, One} for xfe (50a9fb3a)
  • (!) Use num_traits::Const{Zero, One} (60ed2b2b)
  • Introduce struct to help prove MMR succession (0f521bb5)
  • Implement {Lower, Upper}Hex for Digest (65dc94d3)

🐛 Bug Fixes

  • Digest::try_from() returns NotCanonical error (a4daa23f)
  • Fix edge-case failure in fast_interpolate (04ff58a2)
  • (!) Add field-length indicator to encoding of polynomial (585b4a31)
  • (mmr) Don't panic on out-of-bounds MMR membership proof (45dcedcb)
  • (!) Fix platform-dependent digest encoding bug (6e2c0127)
  • Fix structured_multiple_of_degree (4d867366)
  • Fix MMR membership proof crash if peak list is too short (52034e2e)
  • Various edge case bugs exposed (5c30ef45)

⚡️ Performance

  • Fast reduce with preprocessing (10e763ec)
  • Integrate fast reduction into batch evaluate dispatcher (7818ebe3)
  • Use separate dispatcher threshold for par_interpolate (3589b5e2)
  • In par_interpolate, recurse to parallel version (95a1f5a0)
  • (!) (polynomial) Optionally borrow coefficients (8ed2445f)

📚 Documentation

  • Add docstrings to some MMR methods (b7244744)
  • Improve some MMR-related documentation (382fa32d)
  • Conform to clippy v1.80.0 indentation rules in doc strings (eaa0a991)
  • Drop instructions for installing leveldb (938141e6)
  • (MmrSuccessorProof) Add panics disclaimer (9560c99a)

⚙️ Miscellaneous

  • Add ZerofierTree (5be2c43a)
  • Work around nextest bug (0a71c3e7)
  • Conform to new rust version (v1.80.0) linting rules
  • Update perflog (4e0d872c)
  • (Makefile) Use nextest for better timing results (638b0ae3)
  • Canonicalize use statements (920c5db5)
  • Move blake3 crate to dev-dependencies (d3d76616)

♻️ Refactor

  • (!) Remove tree_m_ary.rs (b9264abb)
  • Separate parallel from sequential interpolate functions (a0a4cc0e)
  • Separate parallel from sequential zerofier methods (881d4411)
  • Drop fast_divide (3e978b61)
  • (!) Make Digest::LEN an associated const (cb53ad64)
  • (!) Use Const… over BFIELD_{ONE, ZERO} (6210f44c)
  • (!) Use Const{Zero, One} in FiniteField (a84927d4)
  • (!) Drop generic type argument from MMR fn's and structs (06f2c06d)
  • (!) Copy (don't point to) auth path in LeafMutation (07e423bc)
  • (!) Rename MmrAccumulator's new to new_from_leafs (750c057c)
  • (!) Drop unused get_height_from_leaf_index (38d78358)
  • (!) Remove generic type from MerkleTree (aa340ff6)
  • (polynomial) Disallow negative exponents (5f81f862)
  • (!) (polynomial) Generalize evaluate() (8482f939)
  • (!) Move canon check to BFieldElement (7dafa32e)
  • (!) Simplify interfaces of ntt and intt (051fbfd0)
  • (!) Simplify interfaces of {i}ntt_noswap (4af2ffa3)
  • (!) (polynomial) Make coefficients private (65914d5a)

✅ Testing

  • Ensure public types implement auto traits (516ff9a7)
  • Add tests for mismatching lengths in leaf index lists
  • (MmrAccumulator) Make Arbitrary impl consistent (18a2ff86)
  • Add tests for edge cases (5c30ef45)
  • Add positive and negative tests for MmrSuccessorProof
  • (mmra_with_mps) Replace slow sanity checks with a test (eac5e7ac)
  • Reduce test runtimes for slow tests (cbdaede2)

⏱️ Benchmark

  • Add benchmark for polynomial modular reduction (290a2f8a)
  • Benchmark par_interpolate
  • Formal power series inverse (83a35ff6)
  • Benchmark coset extrapolate (3b909945)
  • Reintroduce perflog-bench for evaluation (80a5bec4)

🎨 Styling

0.41.0 – 2024-04-24

✨ Features

  • Add hex encoding and decoding for Digest (0f649786)
  • Implement BFieldCodec for Polynomial<FF> (3d994271)

📚 Documentation

  • Provide example for Polynomial::zerofier (0278f560)
  • Document coefficient order of Polynomial (c237e859)
  • Motivate Merkle tree's constants (53522191)

♻️ Refactor

  • (!) Don't return root hash on MMR's verify (2a331dd3)
  • Avoid environment variable collisions (0340bf54)
  • (!) Make Merkle tree's ROOT_INDEX private (d0dddeb5)

🎨 Styling

  • (test) Refactor fast_evaluate unit test (182abc05)
  • Avoid matching on bool or Option (729adc91)

0.40.0 – 2024-04-16

✨ Features

  • Make fast polynomial division complete (0edb2902)
  • Add fast polynomial modulo for x^n (21411be3)
  • Add fast method for clean divisions (f4a43450)

🐛 Bug Fixes

  • (test) Avoid test failure in edge case (c7f753f0)

⚡️ Performance

  • Parallelize fast_evaluate (601ba840)
  • Parallelize fast_zerofier_inner (f0fdf92f)
  • Use zerofier without fast (a9823c97)
  • (!) Remove special cases (20242688)
  • Use fastest interpolation technique (90c9cc89)
  • Use fastest evaluation technique (7a91f776)
  • Speed up fast_evaluate by smarter division (d7edc17c)
  • Use fastest field mul for polynomial “scale” (d89da0da)
  • Reduce polynomial long divisions in xgcd (ca4995fe)
  • Make Polynomial::scale faster (408838e7)
  • Benchmark coset evaluate and interpolate (070e6133)
  • Collapse loops in Lagrange interpolation (71c892f2)
  • Parallelize Polynomial::fast_interpolate (504633c4)
  • Add makefile bench target for publishing (43c4d645)
  • Avoid allocation for scalar·polynomial (87a21ee7)
  • Speed up polynomial operations (69a55edb)
  • (bench) Reduce sample size of some benchmarks (bafe3620)

📚 Documentation

  • Document polynomial's leading_coefficient() (0124d0bd)
  • Explain extension field's “Shah polynomial” (e9813ea4)
  • Describe performance critical arguments (9be21d6f)
  • Add publishing instructions to README (d8cd0465)

⚙️ Miscellaneous

  • (bench) Remove oranges from comparison (4f2fbd49)

♻️ Refactor

  • (!) Remove deprecated functions (0ec7453a)
  • (bench) Simplify zerofier cutoff search (aaefc79f)
  • (!) (bench) Add “smart” zerofier (c56eb5e8)
  • (!) Improve polynomial multiplication names (48370ec6)
  • (test) Use property test framework more (bde30c79)
  • Remove superfluous threshold constants (00be8309)
  • (!) Don't “ref” Copy arg in evaluate (5700e50b)

✅ Testing

  • Add “evaluation” benchmark (478d4c5b)
  • Benchmark polynomial multiplication (37902ebc)
  • Other evaluate parallelization to bench (e6454ed4)
  • Add property test for polynomial division (524d11b7)
  • Benchmark polynomial “scale” (4a7f89c0)
  • Poly scale is equivalent in extension field (d738d9b5)
  • Un-ignore ignored tests (ac9e5b96)
  • Use proptest framework more (ec5b4943)

🎨 Styling

  • Improve code style of polynomial division (9110c732)
  • Improve code to convert to XFieldElement (9af85baf)

0.39.0 – 2024-04-08

✨ Features

  • Add method new for MerkleTree (50c634ef)
  • Make get_direct_path_indices() pub (4f5f46b3)
  • Simplify construction of polynomials (065dd753)
  • Add bfe_vec! and bfe_array! macros (d6bb353d)
  • Add xfe_vec! and xfe_array! macros (578b6472)
  • Generalize Polynomial::scale's offset (ce4047b8)
  • Make {bfe, xfe}_{vec, array} more powerful (33a2003c)

⚡️ Performance

  • Remove .clone() in extended gcd (b9a9e4af)

📚 Documentation

  • Add example to extended Euclidean algorithm (5936c57b)

⚙️ Miscellaneous

  • Remove unused rusty_leveldb_vec* files (890c451e)
  • Remove storage and sync modules (3775c51b)
  • Removed benches and unused dependencies (57ce4535)
  • Clean up polynomial.rs (8ca79022)
  • Simplify case handling for root of unity (cca92f74)
  • Collect code coverage (e0f32e0e)
  • Use nextest to test more things (62088fda)
  • Add code coverage badge (6b33124e)
  • Clean up XFieldElement (84a4176f)
  • (!) Remove constraint circuits (0c757258)
  • Remove unused dependencies (0e3b8c98)

♻️ Refactor

  • Mmr tests no longer depend on storage layer (#189) (c4c0502f)
  • Move mmra_with_mps into mmr_accumulator::util (81573735)
  • (!) Simplify interface for evaluation (a4641d35)
  • (!) Simplify interface for interpolation (a321587e)
  • (!) Simplify interface of fast division (6113875a)
  • (!) Simplify interface for fast poly mul (5fde6ccd)
  • (!) Use prelude in BFieldCodec derive (a3109fda)
  • (!) Remove multivariate polynomial support (89c7cf54)
  • (!) Remove timing reporter (84b6e29c)
  • Remove utils module (e701395e)
  • (!) Remove Blake3 (e51c4afd)
  • (!) Remove emojihash implementations (94162f5f)
  • (!) Move de-facto MMR functionality there (46531c4a)
  • (!) Remove unused helper methods (4c22abee)
  • Deprecated methods mimicking built-ins (e8c5b528)
  • (!) Remove unused or shallow rng-methods (547b7e51)
  • (!) Remove dyadic rationals (c3584153)
  • (!) Remove trait FromVecu8 (d041424f)
  • (!) Rename shared_math into math (ec87ee5e)
  • (!) Remove trait New (e8d0c7e4)
  • (!) Remove Sha3 implementation (7175f7dd)
  • Deprecate log_2_ceil (42b2ca10)
  • De-duplicate BFieldCodec test setup (0dba559e)

✅ Testing

  • Add tests for BFieldCodec derive macro (56cc6ce3)
  • Corrupting digest always corrupts digest (db86606f)
  • Tip5's trace is equivalent to permutation (b548159d)

🎨 Styling

  • Remove superfluous parentheses (13feb388)

0.38.0 – 2024-02-28

✨ Features

  • (!) Use custom errors for fallible conversions (8be60133)
  • Simplify field element construction (b974d1e3)

0.37.0 – 2024-02-15

✨ Features

  • Allow (read-only) access to nodes of Merkle tree (61e697c7)
  • Derive Eq for MerkleTree (1010d29e)
  • Optionally set parallelization cutoff through environment variable (350cd8f5)
  • Atomic lock event notification (df8e99e8)
  • Make use of lock events in storage (7e64e05b)
  • Implement BFieldCodec for Box<_> (8bee834e)
  • Remove dependency anyhow, use custom errors instead (01ddae66)

🐛 Bug Fixes

  • Add StorageSetter::index() method (#170) (5797095d)
  • Make clippy v1.75 happy (0374ce54)
  • Implement, don't derive Arbitrary for Merkle tree (6c3f7be7)
  • Don't panic, return error if specified tree height is too large (2bcdaf7a)
  • Don't panic constructing Merkle tree with wrong number of leaves (f584a611)
  • Remove DB file on Drop, for windows. (#176) (d13af81e)

📚 Documentation

  • Document method inclusion_proof_for_leaf_indices (dd7af2b9)
  • Document new structs and constants (035f08a7)
  • Fix restore_or_new() placement in doctests (#178) (892015c2)
  • Document MerkleTree building errors (9f7ad17c)
  • Add changelog (b765d144)
  • Add git-cliff config file (544ffae0)

⚙️ Miscellaneous

  • (doc) Make doc-strings use and adhere to max line length (5bd3dd36)
  • Introduce struct MerkleTreeInclusionProof (c4bd2bf0)
  • Add windows, mac to github CI tasks (03cde76c)
  • Re-export bfieldcodec_derive (10afd069)
  • Bump bfieldcodec_derive version (a97464b8)
  • (!) Improve SpongeHasher trait (5eb5dd39)

♻️ Refactor

  • Remove prefix get_ from method's names (cbf8ae5b)
  • Move test-helper method to corresponding test module (51c75f94)
  • Don't panic when requesting out-of-bounds leaf (4e60a245)
  • (test) Turn ad-hoc property tests into proptest (4bfdb2e9, 46b30c67, b546dffc)
  • (test) Translate more tests into proptests (b46307d2, f403dade)
  • Avoid collecting into vector where only iterator is needed (26a2dd35)
  • Check all authentication paths for small trees (cee2a9bf)
  • (test) Remove randomness from static tests (ad75bab3)
  • De-duplicate generation of static test Merkle trees (d0e382f4)
  • (test) Root from arbitrary number of digests belongs to MMR (7d4121dc)
  • (!) Improve MerkleTree implementation (844f8723)
  • Make leveldb::DB take &mut self (2e984fe2)
  • Add prelude to simplify uses downstream (95d52acc)
  • Allow repeated sponge-absorption without mutating a list (59944288)
  • Use thiserror to derive BFieldCodecError (f0c5bf13)
  • (!) Integrate Tip5State into Tip5 (8300e6af)

🛠 Build

  • Prefix macro use statements with crate:: (#180) (7c7a61f2)

✅ Testing

  • Add proptest for verifying honestly generated inclusion proof (54e606c7)
  • Add proptest for potential panics in .height(), .num_leafs() (b61a1007)
  • Add proptest for verification failure against incorrect root (e69d74f5)
  • Add proptest verifying failure when supplying too many indices (86238f47)
  • Add proptest verifying failure when supplying too few indices (3b01c4a0)
  • Test height and number of leaves for tree with one leaf (55ef8463)

0.36.0 – 2023-12-22

✨ Features

🐛 Bug Fixes

  • Fix edge case bug in extended euclidean algorithm (321b1948)

⚡️ Performance

♻️ Refactor

  • Switch LevelDB dependency, refactor storage API (#167) (cf0a2040)
  • (!) (de)serialize BFieldElement in canonical representation (4accb46a)

✅ Testing

  • Use property testing framework proptest more extensively (78b6993d)

0.34.0 – 2023-10-05

✨ Features

  • Implement & derive Arbitrary for various structs (811b5131)

⚡️ Performance

  • Add batch getters for database wrappers (2bde8567)

⚙️ Miscellaneous

♻️ Refactor

  • (!) Require trait bound Debug for SpongeState (e8ee9036)

0.33.0 – 2023-09-25

✨ Features

🐛 Bug Fixes

⚙️ Miscellaneous

♻️ Refactor

✅ Testing

  • Use proptest framework for testing BFieldElement (5670887b)

0.32.1 – 2023-08-02

🐛 Bug Fixes

  • BFieldCodec derive: ignore types of ignored fields (40e75f3e)

0.32.0 – 2023-08-01

✨ Features

  • Derive BFieldCodec for MmrMembershipProof (c8c8992b)

0.31.0 – 2023-08-01

⚙️ Miscellaneous

  • New version of BFieldCodec and derive macro (v0.4.0)
  • Depend on new version of RustyLevelDB

0.30.0 – 2023-07-04

✨ Features

  • Use compact Merkle tree authentication structure (40b0925b)
  • Add method to construct Merkle authentication paths from auth structure (a51eac2e)

0.28.0 – 2023-06-13

✨ Features

  • Improve on the derive macro for BFieldCodec

🐛 Bug Fixes

  • Use von Neumann sampling for perfect uniformity in sample_indices()

0.27.0 – 2023-06-05

⚙️ Miscellaneous

  • Update dependency BFieldCodec

0.26.0 – 2023-06-02

✨ Features

  • Add derive macro for BFieldCodec

♻️ Refactor

  • Use use overwrite mode in Tip5 absorbing

0.25.1 – 2023-05-24

✨ Features

  • BFieldCodec stuff
  • Vector analogue of decode_field_length_prepended

0.25.0 – 2023-05-23

✨ Features

  • Implement BFieldCodec for various structs

♻️ Refactor

  • (!) Kill Rescue-Prime (Regular and Optimized)

0.24.0 – 2023-05-22

✨ Features

  • Implement codecs and other conversions

♻️ Refactor

  • (!) Kill Hashable
  • (!) Remove old stark crates

0.23.0 – 2023-05-22

✨ Features

  • Implement PartialOrd and Ord for Digest
  • Pull bfield_codec from Triton VM

⚙️ Miscellaneous

  • (!) Rename Digest::vmhash() to hash()
  • (!) Drop Poseidon

0.22.0 – 2023-05-17

✨ Features

  • Implement VM-Hashing for Digests
  • Derive convenient traits for structs

♻️ Refactor

  • (!) Rename Digest namespace

0.21.3 – 2023-05-03

✨ Features

0.21.2 – 2023-05-03

✨ Features

  • Add Debug, Serialize, and Deserialize to lattice kem types (64835126)

0.21.1 – 2023-05-02

🐛 Bug Fixes

  • Tolerate duplicate indices in Merkle authentication paths (6fc0a982)

0.21.0 – 2023-05-02

✨ Features

  • Implement zero trait for module element (00d6aa9e)

🐛 Bug Fixes

  • Fix generation of partial authentication paths

⚡️ Performance

  • (!) Speed up & simplify Merkle tree verification (6575492f)
  • Improve generation and verification of partial authentication paths.

⚙️ Miscellaneous

  • Add benchmark for verifying partial Merkle authentication paths
  • Make overflowing adds, subs, and muls explicit (33eb39bd)
  • Update dependencies

♻️ Refactor

  • (!) Remove salted Merkle trees (275f20b3)
  • (!) Drop generic type parameter maker from Merkle tree (4ee8f753)

0.20.1 – 2023-04-26

✨ Features

  • Convert between arrays of BFieldElements and ciphertexts (2e6ce1b7)

v0.20.0 – 2023-04-25

♻️ Refactor

  • (!) Provide randomness explicitly for lattice kem (667c88f2)

0.19.3 – 2023-04-13

✨ Features

  • Make RustyReader struct and its DB public

0.19.2 – 2023-04-11

✨ Features

  • Add canonical conversion between XFieldElements and Digests (3b9586d7)
  • Make Tip5 serializable (8495d36f)
  • Add simple storage reader for generic databases (c43b0278)
  • Circuit with auto-generated mds matrix multiplication procedure (#105)

0.19.1 – 2023-03-17

✨ Features

  • Add abstract Storage schema functionality for simulating containers

0.19.0 – 2023-03-10

✨ Features

  • Abstract out the data structure where the archival MMR's list of digests are stored: StorageVec
  • Implement StorageVec for rusty-leveldb

🐛 Bug Fixes

  • Panic when trying to invert 0 in extension field

⚡️ Performance

  • Optimize + restructure some MMR helper functions

♻️ Refactor

  • (!) Change MMR indices from u128 to u64

0.18.0 – 2023-03-01

✨ Features

  • New functionality for databse vector
  • Scalar and index sampling from sponges

0.17.0 – 2023-02-24

✨ Features

  • Lattice-based crypto routines

⚡️ Performance

  • New MDS matrix for Tip5

0.16.0 – 2023-02-10

✨ Features

  • Make SpongeHasher's SpongeState Clone (8c45dc2)
  • Add absorb_repeatedly() to SpongeHasher (#89)

🐛 Bug Fixes

  • (!) Fix Tip5's split_and_lookup (#88)

⚙️ Miscellaneous

  • Fix linter error: zero_prefixed_literal (ce74205)
  • Add fixme/type hint to prevent LSP from jerking out (7ffc187)

♻️ Refactor

  • (!) Move SpongeHasher's sample_indices() and sample_weights() to Triton VM (8c45dc2)
  • (!) Change SpongeHasher's absorb_init() to init() (#89)

0.15.0 – 2023-01-31

✨ Features

  • Standardize Hashable for bool, u32, u64, u128, BFE, XFE, Digest (ae1a837)

♻️ Refactor

  • (!) Make domain separation for hash10 apply to all capacity elements (#86, 7abb3f6)
  • (!) Replace old AlgebraicHasher with AlgebraicHasher: SpongeHasher (#84, #85, 174a4da)
  • (!) Remove references to self from Tip5's implementation (518bd70)

0.14.1 – 2023-01-20

🐛 Bug Fixes

  • RescuePrimeRegularState::new() does not use state (868854a)

0.14.0 – 2023-01-18

✨ Features

  • Add SpongeHasher and AlgebraicHasherNew (#83)

0.11.0 – 2023-01-12

✨ Features

  • Tip5 hash function (#72)
  • Allow for generating random U32ss (#80)
  • Add a leaf_index -> Merkle tree index function (5e5b863)
  • Add Right Lineage Length function (#76)
  • Add MMR helper function right_ancestor_count (139e462)

⚡️ Performance

  • Inline tip5-related functions for a small speedup (#79)
  • Optimize non_leaf_nodes_left (4c0739d, 77092c8)
  • Reduce time it takes to run all benchmarks (1c8a768)

♻️ Refactor

  • Rewrite some MMR functions to be mode TASM-friendly (df81f4b)
  • (!) Update MMR's leaf index -> MT index conversion function (b097ce2)
  • Change MMR functions to use Merkle tree index logic (c4a1b8b, 1651035)
  • Make non_leaf_nodes_left more friendly to a TASM compilation (a31cc70)
  • (!) Delete deprecated right_child_and_height (b55fcad)
  • Remove all use of deprecated is_right_child_and_height (65318d0)
  • Simplify node-traversal logic for MMR (5b2e93e)
  • (!) Change height of MMRs to be of type u32 (8eeb800)
  • Adapt MMR function for TASM snippet implementation (2fb0ec9)
  • (!) Move STARK tutorial-only code into 'stark-shared' crate (#82)
  • (!) Minor improvements (#77, e3a2855, 87947f8, 9304558)
  • Remove custom Hash and PartialEq implementations (5b6649e)
  • (!) Remove deprecated MMR helper function to find peak index (71ec7a6)

0.10.0 – 2022-12-22

⚡️ Performance

  • Avoid all branching when adding BFieldElements (#70)

♻️ Refactor

  • (!) Make the Rescue Prime round constants and matrices const BFieldElement

0.9.0 – 2022-12-20

✨ Features

  • Add raw and from_raw methods to BFieldElement

♻️ Refactor

  • Switch to Montgomery representation for BFieldElement

✅ Testing

  • Add tests for BFieldElement

0.8.0 – 2022-12-19

✨ Features

  • Add ::sample_weights() to AlgebraicHasher, implement with ::hash_pair() (#66)

⚡️ Performance

  • Make sample_weights() faster in tasm by changing XFieldElement::sample() (#66)

0.7.2 – 2022-11-23

✨ Features

  • Emojihash trait (#64)

0.7.1 – 2022-11-22

✨ Features

  • Add batch-version of fast_interpolate, batch_fast_interpolate

⚡️ Performance

  • Make existing fast_interpolate slightly faster

0.7.0 – 2022-11-22

✨ Features

  • Add impl AsRef<[u32; N]> for U32s<N> (#59)
  • Add Digest::emojihash(&self) (#62)
  • Add impl TryFrom<&[BFieldElement]> for Digest, XFieldElement (#61)

📚 Documentation

  • Add notes on how to get started working on repo (97cb44f9)

⚙️ Miscellaneous

  • (!) Remove impl From<Digest> for [u8; MSG_DIGEST_SIZE_IN_BYTES] (#62)
  • (!) Remove BFieldElement::from_byte_array() (#62)
  • (!) Remove impl Default for XFieldElement (#62)

0.6.0 – 2022-11-17

✨ Features

  • (!) Parameterise MerkleTree with M: MerkleTreeMaker<H> (#57)

♻️ Refactor

  • (!) Remove simple_hasher.rs (#58)
  • (!) Remove deprecated auxiliary functions

0.5.0 – 2022-11-15

✨ Features

  • Add transpose() (#55)

♻️ Refactor

  • (!) Remove unused functions (#55)

0.4.0 – 2022-11-14

✨ Features

  • XFieldElement: Add EXTENSION_DEGREE constant (#54)
  • XFieldElement, BFieldElement: Implement Add, Mul, Sub (#54)
  • TimingReporter: Make measurements easier to read (#49)

0.3.2 – 2022-11-09

✨ Features

  • Implement Hash for MPolynomial structs to be hashed

0.3.1 – 2022-10-21

✨ Features

  • Implement From<BFieldElement> for XFieldElement

♻️ Refactor

  • Rename PFElem type parameter into FF

0.3.0 – 2022-10-20

✨ Features

  • Add .inverse_or_zero() to {B, X}FieldElement (#35)
  • Add .emojihash() for {B, X}FieldElement
  • Implement xgcd() generically (#40)
  • Add Digest struct (#44)
  • Make blake3::Hasher an instance of AlgebraicHasher (#44)

🐛 Bug Fixes

  • (!) Add + MulAssign<BFieldElement> to ntt() / intt() (#41)

⚡️ Performance

  • Speed up NTT for XFieldElements (#41)

📚 Documentation

  • Add release protocol, library overview to README.md

⚙️ Miscellaneous

  • Add .mailmap for cleaner git logs
  • Remove split-debuginfo = '...'
  • Lots of cleaning up code
  • Add various trait instances (#42)

♻️ Refactor

  • Move stark-brainfuck and stark-rescue-prime to separate crates (#38)
  • (!) Remove GetRandomElements in favor of standard library (#42)
  • (!) Remove GetGeneratorDomain trait (it was already unused) (#42)
  • (!) Change some MMR batch functions to take &mut membership proofs (#43)
  • (!) Replace simple_hasher::Hasher with AlgebraicHasher (#44)
  • (!) Simplify Hashable so its parameters are more fixed (#44)

0.2.0 – 2022-09-13

✨ Features

  • (!) Fix Rescue-Prime (#25)

0.1.5 – 2022-09-13

✨ Features

  • (!) Simplify Lagrange interpolation function interface

⚡️ Performance

  • Add faster Lagrange interpolation and benchmarks