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.
0.10.0 - 2026-02-01
This release makes a number of significant changes which we hope will be the last significant breakage before 1.0. Code has moved from the rust-random/rand repository to its own rust-random/rand_core.
- Edition changed to 2024 and MSRV bumped to 1.85 (rand#1668)
RngCoreandTryRngCoreare renamed toRngandTryRngrespectively (#54)Rngis now an extension trait ofTryRng<Error = Infallible>(#45)TryRng::Erroris bound oncore::error::Errorinstead ofDebug + Display(#58)- Relax
Sizedbound on impls ofSeedableRng(rand#1641)
TryRng::read_adaptermethod (replaced withrand::RngReader) (rand#1669)os_rngcrate feature (rand#1674)OsRngandOsErrorstructs (rand#1674)SeedableRng::from_os_rngandSeedableRng::try_from_os_rngmethods (rand#1674)getrandomdependency (rand#1674)stdcrate feature (rand#1674)- Optional
serdedependency (#28) UnwrapMutstruct andRng::unwrap_mutmethod (#45)Rng::unwrap_errmethod in favor of explicit wrapping inUnwrapErr(#53)
BlockRng::reconstructandBlockRng::remaining_resultsmethods (#36)block::Generator::dropmethod (#35)BlockRng::word_offsetmethod (#44)
- Replaced
lehelper functions with newutilshelpers (rand#1667, #34, #38, #45) - Rename
BlockRng::generate_and_setmethod toreset_and_skip(#44) - Rename
block::BlockRngCoretrait toblock::Generator(#26) - Rename
BlockRngCore::Resultsassociated type toOutputand remove type bounds on it (#26)
- Implementation of
RngforBlockRng, making the latter more generic (#34) BlockRng64struct (#34)BlockRng::resetmethod (#44)BlockRng::indexmethod (replaced withBlockRng::word_offset) (#44)Generator::Itemassociated type (#26)CryptoBlockRng(#69)
0.9.3 - 2025-02-29
- Remove
zerocopydependency (rand#1607) - Deprecate
rand_core::impls::fill_via_u32_chunks,fill_via_u64_chunks(rand#1607)
0.9.2 - 2025-02-22
- Relax
Sizedbound on impls ofTryRngCore,TryCryptoRngandUnwrapMut(rand#1593) - Add
UnwrapMut::reto reborrow the inner rng with a tighter lifetime (rand#1595)
0.9.1 - 2025-02-16
- Add
TryRngCore::unwrap_mut, providing an impl ofRngCoreover&mut rng(rand#1589)
0.9.0 - 2025-01-27
- Bump the MSRV to 1.63.0 (rand#1536); note that 1.60.0 may work for dependents when using
--ignore-rust-version - Update to
getrandomv0.3.0 (rand#1558) - Use
zerocopyto replace someunsafecode (rand#1349, rand#1393, rand#1446, rand#1502) - Rename feature
serde1toserde(rand#1477) - Rename feature
getrandomtoos_rng(rand#1537)
- Allow
rand_core::impls::fill_via_u*_chunksto mutate source (rand#1182) - Add fn
RngCore::read_adapterimplementingstd::io::Read(rand#1267) - Add trait
CryptoBlockRng: BlockRngCore; maketrait CryptoRng: RngCorereplacingCryptoRngCore(rand#1273) - Add traits
TryRngCore,TryCryptoRng(rand#1424, rand#1499) - Rename
fn SeedableRng::from_rng->try_from_rngand add infallible variantfn from_rng(rand#1424) - Rename
fn SeedableRng::from_entropy->from_os_rngand add fallible variantfn try_from_os_rng(rand#1424) - Add bounds
CloneandAsRefto associated typeSeedableRng::Seed(rand#1491)
0.6.4 - 2022-09-15
- Fix unsoundness in
<BlockRng64 as RngCore>::next_u32(rand#1160) - Reduce use of
unsafeand improve gen_bytes performance (rand#1180) - Add
CryptoRngCoretrait (rand#1187, rand#1230)
0.6.3 - 2021-06-15
0.6.2 - 2021-02-12
- Fixed assertions in
le::read_u32_intoandle::read_u64_intowhich could have allowed buffers not to be fully populated (rand#1096)
0.6.1 - 2021-01-03
- Avoid panic when using
RngCore::seed_from_u64with a seed which is not a multiple of four (rand#1082)
- Enable all stable features in the playground (rand#1081)
0.6.0 - 2020-12-08
- Bump MSRV to 1.36, various code improvements (rand#1011)
- Update to getrandom v0.2 (rand#1041)
- Fix:
next_u32_via_fillandnext_u64_via_fillnow use LE as documented (rand#1061)
- Reduce usage of
unsafe(rand#962, rand#963, rand#1011) - Annotate feature-gates in documentation (rand#1019)
- Document available error codes (rand#1061)
- Various documentation tweaks
- Fix some clippy warnings (rand#1036)
- Apply rustfmt (rand#926)
0.5.1 - 2019-08-28
OsRngadded torand_core(rand#863)Error::INTERNAL_STARTandError::CUSTOM_STARTconstants (rand#864)Error::raw_os_errormethod (rand#864)DebugandDisplayformatting forgetrandomerror codes withoutstd(rand#864)
allocfeature inno_stdis available since Rust 1.36 (rand#856)- Added
#[inline]toErrorconversion methods (rand#864)
0.5.0 - 2019-06-06
- Enable testing with Miri and fix incorrect pointer usages (rand#779, rand#780, rand#781, rand#783, rand#784)
- Rewrite
Errortype and adjust API (rand#800) - Adjust usage of
#[inline]forBlockRngandBlockRng64
0.4.0 - 2019-01-24
- Disable the
stdfeature by default (rand#702)
0.3.0 - 2018-09-24
- Add
SeedableRng::seed_from_u64for convenient seeding. (rand#537)
0.2.1 - 2018-06-08
- References to a
CryptoRngnow also implementCryptoRng. (rand#470)
0.2.0 - 2018-05-21
- Enable the
stdfeature by default. (rand#409) - Remove
BlockRng{64}::innerandBlockRng::inner_mut; instead makingcorepublic - Change
BlockRngCore::Resultsbound to also requireAsMut<[Self::Item]>. (rand#419)
- Add
BlockRng{64}::indexandBlockRng{64}::generate_and_set. (rand#374, rand#419) - Implement
std::io::Readfor RngCore. (rand#434)
0.1.0 - 2018-04-17
(Split out of the Rand crate, changes here are relative to rand 0.4.2.)
RngCoreandSeedableRngare now part ofrand_core. (rand#288)- Add modules to help implementing RNGs
implandle. (rand#209, rand#228) - Add
ErrorandErrorKind. (rand#225) - Add
CryptoRngmarker trait. (rand#273) - Add
BlockRngCoretrait. (rand#281) - Add
BlockRngandBlockRng64wrappers to help implementations. (rand#281, rand#325) - Add
RngCore::try_fill_bytes. (rand#225)