Skip to content

Latest commit

 

History

History
545 lines (360 loc) · 15.9 KB

File metadata and controls

545 lines (360 loc) · 15.9 KB

Changelog

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 Semantic Versioning.

  • Fix to_be_bytes on big-endian platforms ([#576])

1.18.0 - 2026-04-22

Changed

  • Optimize from_str_radix (#557)
  • Specialize Ord::cmp, const_eq, const_is_zero for small sizes (#561)
  • Use bit shifts for power-of-two formatting (binary, octal, hex) instead of division (#565)
  • Optimize to_be_bytes for full-limb sizes via per-limb swap_bytes (#569)
  • Extract last iteration on mul loop to reduce register pressure (#566)

Fixed

  • Use rkyv::primitive::ArchivedU64 (#556)

1.17.2 - 2025-12-28

Fixed

  • fix(docsrs): remove doc_auto_cfg (#554)

1.17.1 - 2025-12-26

Changed

  • Added unsafe to many unstable API functions in algorithms module, and documented their conditions of use (COU). (#552)

1.17.0 - 2025-09-24

Added

  • Support for bincode 2 (#516)
  • Introduce ark-ff-05 feature flag for conversion to ark-ff@0.5 types (#526)

Changed

  • MSRV bumped to 1.85 (#503)
  • Made *next_power_of_two and *next_multiple_of const (#533)
  • Reimplemented TryFrom<f64> for Uint to speed it up, fixing edge cases and removing std requirements (#524)
  • Reimplemented From<Uint> for f64 and f32 to speed it up, fixing edge cases and removing std requirements ([#535])

1.16.0 - 2025-08-04

Added

  • Support rkyv (#483)
  • Added bigdecimal support (#486)
  • PartialEq and PartialOrd implementations for primitive integers; minor breaking change for type inference (#491)

Changed

  • to_base_be and core::fmt trait implementations are available without the "alloc" feature (#488)
  • Greatly improved performance across the board, mainly in: conversions, fmt, div/rem, mul, add_mod, leading_zeros

Fixed

  • Check limb overflow in shift ops (#476)

1.15.0 - 2025-05-22

Added

  • Add const fn const_is_zero, const_eq, bit* (#441)

Changed

  • Updated Pyo3. This is a non-semver breaking change to address a vulnerability reported on Pyo3. (#460)
  • Make rotate*, *sh[lr] functions const (#441)

1.14.0 - 2025-03-25

Added

  • Add const not function (#442)
  • Make leading_zeros, leading_ones, count_ones, count_zeros, bit_len, byte_len, is_power_of_two functions const (#442)
  • random, random_with, randomize, randomize_with methods (#444)
  • rand 0.9 support (#445)
  • Add const ONE (#448)

Changed

  • Update try_from_{b,l}e_slice documentation (#439)

Fixed

  • Fix checked_byte bounds check and make it const (#438)

1.13.1 - 2025-02-18

Fixed

  • Remove unused hex dependencies which broke no_std (#433)

1.13.0 - 2025-02-18

Added

  • Support for borsh @ 1.5 (#416)
  • copy_le_to_slice family to allow easier writing to pre-allocated buffers (#424)
  • add Uint::checked_byte(idx: usize) -> Option<u8> (#429)

Changed

  • Unpin proptest (#426)

Fixed

  • Update documentation related to Uint::byte and knuth divison (#429)
  • fix: swap bytes for as_le_bytes in big endian world (#431)

1.12.4 - 2024-12-16

Added

  • Added Uint::square_redc. (#402)
  • Support for diesel @ 2.2 (#404)
  • Support for sqlx @ 0.8 (#400)
  • Support for fastrlp @ 0.4 (#401)
  • Added support for subtle and der (#399)

Removed

  • Support for sqlx @ 0.7. This is a breaking change, outside of regular semver policy, as 0.7 contains a security vulnerability (#400)

Fixed

  • Uint::mul_redc is now alloc free (#402)

1.12.3 - 2024-06-03

Changed

  • Use borrowing/carrying ops in add/sub, remove bound checks in shifts (#366)
  • Make mul_mod non-allocating (#373)

Fixed

  • Add alloc requirement to num-traits feature #363

1.12.1 - 2024-03-12

Fixed

  • docs.rs build (#356)
  • uint! in item position (#360)

1.12.0 - 2024-02-27

Added

  • Wrap the uint! macro to allow usage without needing uint import (#350)

Fixed

  • Overflow check in overflowing_shr implementation (#347)

1.11.1 - 2023-11-18

Fixed

  • Typo in Shr implementation (#343)

Added

1.11.0 - 2023-10-31

Added

  • bytemuck feature (#292)
  • Uint::is_zero() -> bool (#296)
  • num-traits features (#298)
  • U768 alias (#310)
  • Improved add and sub performance (#316)
  • Made add and sub functions const (#324)
  • Made {from,to}_{b,l}e_bytes const (#329)

Fixed

  • Restricted RLP decoding to match the RLP spec and disallow leading zeros (#335)
  • leading_ones failed for non-aligned sizes.

1.10.1 - 2023-07-30

Fixed

  • Fixed some support features (#289)

1.10.0 - 2023-07-30

Added

  • Support for no_std environments (#274)
  • alloc feature (#277)

1.9.0 - 2023-07-25

Added

  • Introduce ark-ff-04 feature flag for conversion to ark-ff@0.4 types
  • Support for alloy-rlp
  • MSRV (Minimum Supported Rust Version) is now set at 1.65.0, from previously undefined
  • Implement TryFrom<bool> for Uint
  • New method: byte

Changed

  • Make serde::Deserialize impl more permissive
  • Use Ethereum Quantity encoding for serde serialization when human-readable
  • Fix error in from_base_be that allowed instantiation of overflowing Uint
  • Updated fastrlp to 0.3, pyo3 to 0.19, and sqlx-core to 0.7
  • Improved fastrlp perfomance
  • Improved proptest performance
  • Made support module and its modules public
  • Made more algorithm functions public
  • Constified as_le_slice and as_le_bytes

Removed

  • Automatic detection of nightly features. Enable them instead with the nightly cargo feature
  • Dependency on derive_more

Fixed

  • from_base_le implementation by reversing the input iterator

1.8.0 — 2023-04-19

Added

  • Support bn-rs, serde and uint! for Bits

Fixed

  • Serde human readable now encodes the empty bitstring as 0x0 and rejects zero prefixes.

1.7.0 — 2022-10-31

Added

  • Support rlp for Bits

Fixed

  • Edge case in which an overflow occurs when parsing a Uint with uint! (#199).

1.6.0 — 2022-10-28

Added

  • TryFrom<Uint> for usize
  • Bit type aliases (B128, B160, B256, B512, ...)
  • From and Into trait implementations for primitive-types bit types
  • Support for bn-rs
  • Derive Default for Bits

Changed

  • (Breaking) Changed the arguments of pow and log to Uint.
  • More efficient wrapping_pow implementation.

1.5.1 — 2022-10-24

Changed

  • Performance improvements in wrapping_mul and from_bytes_be.

1.5.0 — 2022-10-24

Added

  • Add parity-scale-codec support.
  • Added unstable algorithms::div module and improved div algorithm.

1.4.1 — 2022-10-15

Changed

  • Made primitive-types version flexible.

1.4.0 — 2022-10-02

Added

  • Add Pyo3 support.
  • from now supports Uint arguments.
  • saturating_from, wrapping_from, to, wrapping_to, saturating_to.
  • wrapping_from_limbs_slice, overflowing_from_limbs_slice, saturating_from_limbs_slice.
  • Add zeroize and valuable support.

Changed

  • ToUintError and FromUintError now contain wrapped value and other context.
  • from_uint and checked_from_uint are now deprecated.

1.3.0 — 2022-06-08

Added

  • Added inv_mod, mul_redc, gcd, gcd_extended, lcm.
  • Added sqlx support.

Changed

  • Renamed ring_inverse to inv_ring.

1.2.0 — 2022-06-03

Added

  • Added reduce_mod, add_mod, mul_mod, pow_mod.
  • Added num-bigint and ark-ff support.
  • Made algorithms public, but with unstable API for now.

Changed

  • Marked Uint::as_limbs_mut as unsafe.
  • Unified mul implementations and move to algorithms.

Fixed

  • uint! macro incorrectly accepting hex digits in decimal.

1.1.0 — 2022-05-31

Added

  • Added saturating_shl.
  • Added approx_log, approx_log2, approx_log10 for f64 log approximations.
  • Added approx_pow2 to construct from f64 log2 approximation.
  • Added root computing integer roots.

Changed

  • Made logarithms usize to match BITS in pow, log functions.
  • Applied track_caller to div/rem ops to track div-by-zero easier.

1.0.0 — 2022-05-28

Added

  • Added comparison.
  • Added add, sub, neg and sum functions.
  • Added mul functions.
  • Added division and remainder functions.
  • Added pow and log functions.
  • Added next_power_of_two and next_multiple_of functions.
  • Added checked_from_limb_slice and from_uint.

Changed

  • from_limb_slice now handles arbitrary length slices.

0.3.0 — 2022-05-23

Added

  • All the binary operations (not, and, or, xor, shifts, rotate, etc)
  • Bits, a newtype wrapped Uint restricted to non-numeric operations.
  • Postgres FromSql support and JSON column support.
  • from_base_le and from_base_be base conversion.
  • from_str_radix string base conversion up to base64.
  • FromStr trait with decimal, hex, octal and binary support.

Changed

  • reverse_bits is now by value instead of &mut self.

0.2.1 — 2022-05-18

Added

  • Extensive Postgres ToSql support supporting many column types.
  • TryFrom<Uint> for primitive integer types.
  • Added From conversions to f32 and f64.
  • Implement all rust formatting: Debug, Display, decimal, hex, etc.
  • >>= operator.
  • to_base_le and to_base_le base conversion spigots
  • reverse_bits, most_sigificant_bits bit methods.
  • Optimized as_le_{slice,bytes)_* accessors.

Changed

  • Rewrote to_{be,le}_bytes_* to use optimized methods. This has trickle-down effects for a lot of conversions and formatting.

0.2.0 — 2022-05-16

Added

  • Changelog
  • CI test on stable Rust.
  • Common bit-size aliases and nightly-only Uint<BITS> alias.
  • Added to_{be/le}_bytes_vec and made try_from_le_byte_iter public.
  • Added rlp and fastrlp support.
  • Added into_limbs, leading_zeros, bit_len, byte_len, checked_log2.
  • Added primitive-types support.

Changed

  • Changed to Uint<BITS, LIMBS> to get stable compatibility!
  • Added generic BYTES parameter to to_{be/le}_bytes.
  • Renamed try_from_{be/le}_slice.

0.1.0 — 2022-05-15

Added

  • Const-generic Uint structure.
  • Basic overflowing_add implementation.
  • Algorithms for division and gcd (currently unused).
  • uint! and const_for! macros.
  • Documentation with examples.
  • Support for rand, arbitrary, quickcheck, proptest, serde
  • Github actions for linting, testing, code coverage, cargo-audit.
  • Pushed to crates.io.