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.
trailing_ones[_vartime]()
, trailing_zeros_vartime()
, leading_zeros_vartime()
(#282)ArrayEncoding
for U832
(#288)Uint::random_mod()
work identically on 32- and 64-bit targets (#285)BoxedUint
: heap-allocated fixed-precision integers (#221)extra-sizes
feature (#229)U4224
and U4352
(#233)DynResidue
(#235)cmp_vartime
, ct_cmp
(#238)Residue
/DynResidue
(#239)Uint::pow
work with different sized exponents (#251)wrapping_neg
(#252)concat
, split
, and multiply work with different sized operands (#253)U16384
and U32768
(#255)Uint::{inv_mod, inv_mod2k_vartime}
(#263)const fn
constructors for NonZero<Uint>
and NonZero<Limb>
(#266)Uint::shr()
and Uint::shl()
(#267)DynResidue
and DynResidueParams
(#269)serdect
usage (#222)DynResidueParams
(#240)Residue
and associated macros (#243)Uint::{from_be_hex, from_le_hex}
constant-time (#254)Uint::saturating_add()
and saturating_mul()
(#256)Uint::random_mod()
test (#256)sqrt
for renaming, to explicitly describe it as vartime (#256)DynResidue
(#197)DefaultIsZeroes
for Residue
(#210)div_by_2()
method for integers in Montgomery form (#211, #212)Debug
impls on Limb
and Uint
(#195)const_residue
macro accessibility bug (#193)Residue
: modular arithmetic with static compile-time moduli (#130)DynResidue
: modular arithmetic with dynamic runtime moduli (#134)Limb
(#141)(Dyn)Residue
(#147)SubResidue
trait and impls for Residue
and DynResidue
(#149)Pow
, Invert
and Square
(#155)CtChoice
type (#159)BITS
, BYTES
, and LIMBS
to Integer
trait (#161)Random
for Wrapping
(#168)U320
and U640
(#173)U224
and U544
on 32-bit platforms (#179, #180)UInt
-> Uint
(#143)Uint
methods (#144)limbs
-> as_limbs
limbs_mut
-> as_limbs_mut
into_limbs
-> to_limbs
random_mod
(#146)leading_zeros()
, trailing_zeros()
, bits()
, and bit()
for Uint
(#153)BIT_SIZE
-> BITS
, BYTE_SIZE
-> BYTES
(#157)CryptoRngCore
(#164)serdect
to 0.2 (#185)der
dependency to v0.7; MSRV 1.65 (#187)UInt::from_word
and ::from_wide_word
(#105)UInt
modulo operations for special moduli (#108)UInt
decoding from an array (#110)const fn
impls of concat
and split
(#111)Limb
left/right bitshifts (#112)UInt::LIMBS
constant (#114)UInt::neg_mod
by simply calling ::sub_mod
(#106)UInt::add_mod
and ::sub_mod
(#104)Limb::bitand
(#109)UInt::neg_mod
(#127)UInt::resize
(#129)UInt::bit
accessor methods (#122)ct_reduce
/ct_div_rem
(#117)Word
as a replacement for LimbUInt
(#88)WideWord
as a replacement for WideLimbUInt
(#88)UInt::*_words
as a replacement for UInt::*_uint_array
(#88)*LimbUInt
and UInt::*_uint_array
(#88)Encoding
tests (#93)*Mod
traits (#98)ArrayEncoding
for U576
(#96)UInt::as_uint_array
(#91)AsRef
/AsMut<[LimbUInt]>
for UInt
(#89)UInt::inv_mod2k
(#86)from_le_slice
(#82)NOTE: this release was yanked due to #82.
Output = Self
to all bitwise ops on Integer
trait (#53)Integer
trait (#51)Xor
/Not
operations (#27)Zero
trait (#35)Checked*
traits (#41)prelude
module (#45)saturating_*
ops (#47)UInt::mul_wide
return tuple (#34)Div
and Rem
impls always take NonZero
args (#39)limb::Inner
to LimbUInt
(#40)limb
module private (#40)Zero
/Integer
traits for is_zero
, is_odd
, and is_even
(#46)LIMB_BYTES
constant (#43)UInt::sqrt
(#9)UInt
division similar to other interfaces (#8)UInt::shl_vartime
add_mod
overflow handlingInteger
traitShrAssign
impl for UInt
UInt
ConditionallySelectable
impl for UInt
limb
module[limb::Inner; LIMBS]
conversions for UInt
UInt
([#586], [#590])UInt::wrapping_mul
Hash
trait for UInt
and Limb
Limb::is_odd
and UInt::is_odd
UInt::new
rand
featureLIMB_BYTES
constantLimb
's Inner
value publicLimb
newtypeConstantTimeGreater
/ConstantTimeLess
impls for UIntFrom
conversions between UInt
and limb arrayszeroize
featureArrayEncoding::ByteSize
boundsUInt::into_limbs
Encoding
traitNumBits
/NumBytes
traits; use Encoding
instead