NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #410 most downloaded on crates.io
Pure Rust implementation of a big integer library which has been designed from the ground-up for use in cryptographic applications. Provides constant-time, no_std-friendly implementations of modern formulas using const generics.
Last release 3 months ago
22 Jun 2026
Release timing varies
gaps range from 8 days to 3 months
Nearly every release is documented
notes for 26 of 26 stable releases
16 versions withdrawn
withdrawn after publishing
5 years old
106 releases · first in 2021
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
One column per quarter.
Nothing published for this version
Nothing published for this version
const_assert_eq! and const_assert_ne! macros ([#293])
trailing_ones[_vartime](), trailing_zeros_vartime(), leading_zeros_vartime() ([#282])
BoxedUint: heap-allocated fixed-precision integers ([#221])
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)Expose residue params and modulus in DynResidue ([#197])
Improve Debug impls on Limb and Uint ([#195])
Residue: modular arithmetic with static compile-time moduli ([#130])
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_limbslimbs_mut -> as_limbs_mutinto_limbs -> to_limbsrandom_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)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
UInt::from_word and ::from_wide_word ([#105])
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)Deprecated *LimbUInt and UInt::*_uint_array ([#88])
Use const generic impls of *Mod traits ([#98])
Impl ArrayEncoding for U576 ([#96])
ArrayEncoding for U576 (#96)[#73]: https://github.com/RustCrypto/crypto-bigint/pull/73 [#94]: https://github.com/RustCrypto/crypto-bigint/pull/94
[#91]: https://github.com/RustCrypto/crypto-bigint/pull/91
UInt::as_uint_array (#91)Impl AsRef/AsMut<[LimbUInt]> for UInt ([#89])
AsRef/AsMut<[LimbUInt]> for UInt (#89)Wrong results for remainder ([#84])
[#82]: https://github.com/RustCrypto/crypto-bigint/pull/82
from_le_slice (#82)NOTE: this release was yanked due to [#82].
Nothing published for this version
Nothing published for this version
Output = Self to all bitwise ops on Integer trait ([#53])
Output = Self to all bitwise ops on Integer trait (#53)Bitwise ops to Integer trait ([#51])
Integer trait (#51)Deprecated LIMB_BYTES constant ([#43])
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)Nothing published for this version
Bitwise And/Or operations ([#25])
Impl Div/Rem for NonZero ([#14])
Make UInt division similar to other interfaces ([#8])
Implement constant-time division and modulo operations
### Added - UInt::shl_vartime ### Fixed - add_mod overflow handling
UInt::shl_vartimeadd_mod overflow handlingRecursive Length Prefix (RLP) encoding support for UInt
Integer traitShrAssign impl for UIntUIntConditionallySelectable impl for UInt
ConditionallySelectable impl for UInt[limb::Inner; LIMBS] conversions for UInt
limb module[limb::Inner; LIMBS] conversions for UIntUInt ([#586], [#590])Implement the Hash trait for UInt and Limb
UInt::wrapping_mulHash trait for UInt and Limb### Added - Limb::is_odd and UInt::is_odd - UInt::new - rand feature ### Changed - Deprecate LIMB_BYTES constant - Make Limb's Inner value public
Limb::is_odd and UInt::is_oddUInt::newrand featureLIMB_BYTES constantLimb's Inner value public### Added - Limb newtype - Target-specific rustdocs
Limb newtypeConstantTimeGreater/ConstantTimeLess impls for UInt
ConstantTimeGreater/ConstantTimeLess impls for UIntFrom conversions between UInt and limb arrayszeroize featureArrayEncoding::ByteSize boundsUInt::into_limbsEncoding traitNumBits/NumBytes traits; use Encoding instead- Initial release
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →