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.
- Support for borsh @ 1.5 (#416)
copy_le_to_slice
family to allow easier writing to pre-allocated buffers (#424)
1.12.4 - 2024-12-16
- 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
andder
(#399)
- Support for sqlx @ 0.7. This is a breaking change, outside of regular semver policy, as 0.7 contains a security vulnerability (#400)
Uint::mul_redc
is now alloc free (#402)
1.12.3 - 2024-06-03
- Use borrowing/carrying ops in add/sub, remove bound checks in shifts (#366)
- Make
mul_mod
non-allocating (#373)
- Add
alloc
requirement tonum-traits
feature #363
1.12.1 - 2024-03-12
1.12.0 - 2024-02-27
- Wrap the
uint!
macro to allow usage without needinguint
import (#350)
- Overflow check in
overflowing_shr
implementation (#347)
1.11.1 - 2023-11-18
- Typo in
Shr
implementation (#343)
- Enable
SSZ
(#344)
1.11.0 - 2023-10-31
bytemuck
feature (#292)Uint::is_zero() -> bool
(#296)num-traits
features (#298)U768
alias (#310)- Improved
add
andsub
performance (#316) - Made
add
andsub
functionsconst
(#324) - Made
{from,to}_{b,l}e_bytes
const
(#329)
- 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 some support features (#289)
1.10.0 - 2023-07-30
1.9.0 - 2023-07-25
- Introduce
ark-ff-04
feature flag for conversion to[email protected]
types - Support for
alloy-rlp
- MSRV (Minimum Supported Rust Version) is now set at 1.65.0, from previously undefined
- Implement
TryFrom<bool>
forUint
- New method:
byte
- 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 overflowingUint
- Updated
fastrlp
to0.3
,pyo3
to0.19
, andsqlx-core
to0.7
- Improved
fastrlp
perfomance - Improved
proptest
performance - Made
support
module and its modules public - Made more
algorithm
functions public - Constified
as_le_slice
andas_le_bytes
- Automatic detection of nightly features. Enable them instead with the
nightly
cargo feature - Dependency on
derive_more
from_base_le
implementation by reversing the input iterator
1.8.0 — 2023-04-19
- Support
bn-rs
,serde
anduint!
forBits
- Serde human readable now encodes the empty bitstring as
0x0
and rejects zero prefixes.
1.7.0 — 2022-10-31
- Support
rlp
forBits
- Edge case in which an overflow occurs when parsing a
Uint
withuint!
(#199).
1.6.0 — 2022-10-28
TryFrom<Uint> for usize
- Bit type aliases (
B128
,B160
,B256
,B512
, ...) From
andInto
trait implementations forprimitive-types
bit types- Support for
bn-rs
- Derive
Default
forBits
- (Breaking) Changed the arguments of
pow
andlog
toUint
. - More efficient
wrapping_pow
implementation.
1.5.1 — 2022-10-24
- Performance improvements in
wrapping_mul
andfrom_bytes_be
.
1.5.0 — 2022-10-24
- Add
parity-scale-codec
support. - Added unstable
algorithms::div
module and improved div algorithm.
1.4.1 — 2022-10-15
- Made
primitive-types
version flexible.
1.4.0 — 2022-10-02
- Add
Pyo3
support. from
now supportsUint
arguments.saturating_from
,wrapping_from
,to
,wrapping_to
,saturating_to
.wrapping_from_limbs_slice
,overflowing_from_limbs_slice
,saturating_from_limbs_slice
.- Add
zeroize
andvaluable
support.
ToUintError
andFromUintError
now contain wrapped value and other context.from_uint
andchecked_from_uint
are now deprecated.
1.3.0 — 2022-06-08
- Added
inv_mod
,mul_redc
,gcd
,gcd_extended
,lcm
. - Added
sqlx
support.
- Renamed
ring_inverse
toinv_ring
.
1.2.0 — 2022-06-03
- Added
reduce_mod
,add_mod
,mul_mod
,pow_mod
. - Added
num-bigint
andark-ff
support. - Made
algorithms
public, but with unstable API for now.
- Marked
Uint::as_limbs_mut
as unsafe. - Unified
mul
implementations and move toalgorithms
.
uint!
macro incorrectly accepting hex digits in decimal.
1.1.0 — 2022-05-31
- Added
saturating_shl
. - Added
approx_log
,approx_log2
,approx_log10
forf64
log approximations. - Added
approx_pow2
to construct fromf64
log2 approximation. - Added
root
computing integer roots.
- Made logarithms
usize
to matchBITS
inpow
,log
functions. - Applied
track_caller
to div/rem ops to track div-by-zero easier.
1.0.0 — 2022-05-28
- 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
andnext_multiple_of
functions. - Added
checked_from_limb_slice
andfrom_uint
.
from_limb_slice
now handles arbitrary length slices.
0.3.0 — 2022-05-23
- All the binary operations (not, and, or, xor, shifts, rotate, etc)
Bits
, a newtype wrappedUint
restricted to non-numeric operations.- Postgres
FromSql
support and JSON column support. from_base_le
andfrom_base_be
base conversion.from_str_radix
string base conversion up to base64.FromStr
trait with decimal, hex, octal and binary support.
reverse_bits
is now by value instead of&mut self
.
0.2.1 — 2022-05-18
- Extensive Postgres ToSql support supporting many column types.
TryFrom<Uint>
for primitive integer types.- Added
From
conversions tof32
andf64
. - Implement all rust formatting:
Debug
,Display
, decimal, hex, etc. >>=
operator.to_base_le
andto_base_le
base conversion spigotsreverse_bits
,most_sigificant_bits
bit methods.- Optimized
as_le_{slice,bytes)_*
accessors.
- 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
- Changelog
- CI test on stable Rust.
- Common bit-size aliases and nightly-only
Uint<BITS>
alias. - Added
to_{be/le}_bytes_vec
and madetry_from_le_byte_iter
public. - Added
rlp
andfastrlp
support. - Added
into_limbs
,leading_zeros
,bit_len
,byte_len
,checked_log2
. - Added
primitive-types
support.
- Changed to
Uint<BITS, LIMBS>
to get stable compatibility! - Added generic
BYTES
parameter toto_{be/le}_bytes
. - Renamed
try_from_{be/le}_slice
.
0.1.0 — 2022-05-15
- Const-generic
Uint
structure. - Basic
overflowing_add
implementation. - Algorithms for division and gcd (currently unused).
uint!
andconst_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.