@@ -4,16 +4,100 @@ All notable changes to this project will be documented in this file.
44The format is based on [ Keep a Changelog] ( http://keepachangelog.com/en/1.0.0/ )
55and this project adheres to [ Semantic Versioning] ( https://semver.org/spec/v2.0.0.html ) .
66
7- ## [ 0.4.2] - 2018-01-05
7+
8+ ## [ 0.5.0] - Unreleased
9+
10+ ### Crate features and organisation
11+ - Minimum Rust version update: 1.22.0. (#239 )
12+ - Create a seperate ` rand-core ` crate. (#288 )
13+ - Deprecate ` rand_derive ` . (#256 )
14+ - Add ` log ` feature. Logging is now available in ` JitterRng ` , ` OsRng ` , ` EntropyRng ` and ` ReseedingRng ` . (#246 )
15+ - Add ` serde-1 ` feature for some PRNGs. (#189 )
16+
17+ ### ` Rng ` trait
18+ - Split ` Rng ` in ` RngCore ` and ` Rng ` extension trait.
19+ ` next_u32 ` , ` next_u64 ` and ` fill_bytes ` are now part of ` RngCore ` . (#265 )
20+ - Add ` Rng::sample ` . (#256 )
21+ - Deprecate ` Rng::gen_weighted_bool ` . (#308 )
22+ - Add ` Rng::gen_bool ` . (#308 )
23+ - Remove ` Rng::next_f32 ` and ` Rng::next_f64 ` . (#273 )
24+ - Add optimized ` Rng::fill ` and ` Rng::try_fill ` methods. (#247 )
25+ - Deprecate ` Rng::gen_iter ` . (#286 )
26+ - Deprecate ` Rng::gen_ascii_chars ` . (#279 )
27+
28+ ### ` rand-core ` crate
29+ (changes included here because they greatly influence the Rand crate)
30+ - ` RngCore ` and ` SeedableRng ` are now part of ` rand-core ` . (#288 )
31+ - Add modules to help implementing RNGs ` impl ` and ` le ` . (#209 , #228 )
32+ - Add ` Error ` and ` ErrorKind ` . (#225 )
33+ - Add ` CryptoRng ` marker trait. (#273 )
34+ - Add ` BlockRngCore ` trait. (#281 )
35+ - Add ` BlockRng ` wrapper to help implementations. (#281 )
36+ - Revise the ` SeedableRng ` trait. (#233 )
37+ - Remove default implementations for ` RngCore::next_u64 ` and ` RngCore::fill_bytes ` . (#288 )
38+ - Add ` RngCore::try_fill_bytes ` . (#225 )
39+
40+ ### Other traits and types
41+ - Add ` NewRng ` trait. (#233 )
42+ - Add ` SmallRng ` wrapper. (#296 )
43+ - Rewrite ` ReseedingRng ` to only work with ` BlockRngCore ` (substantial performance improvement). (#281 )
44+ - Deprecate ` weak_rng ` . Use ` SmallRng ` instead. (#296 )
45+ - Deprecate ` random ` . (#296 )
46+ - Deprecate ` AsciiGenerator ` . (#279 )
47+
48+ ### Random number generators
49+ - Switch ` StdRng ` and ` thread_rng ` to HC-128. (#277 )
50+ - Change ` thread_rng ` reseeding threshold to 32 MiB. (#277 )
51+ - PRNGs no longer implement ` Copy ` . (#209 )
52+ - ` Debug ` implementations no longer show internals. (#209 )
53+ - Implement serialisation for ` XorShiftRng ` , ` IsaacRng ` and ` Isaac64Rng ` under the ` serde-1 ` feature. (#189 )
54+ - Implement ` BlockRngCore ` for ` ChaChaCore ` and ` Hc128Core ` . (#281 )
55+ - All PRNGs are now portable across big- and little-endian architectures. (#209 )
56+ - ` Isaac64Rng::next_u32 ` no longer throws away half the results. (#209 )
57+ - Add ` IsaacRng::new_from_u64 ` and ` Isaac64Rng::new_from_u64 ` . (#209 )
58+ - Remove ` IsaacWordRng ` wrapper. (#277 )
59+ - Add the HC-128 CSPRNG ` Hc128Rng ` . (#210 )
60+ - Add ` ChaChaRng::set_rounds ` method. (#243 )
61+ - Changes to ` JitterRng ` to get its size down from 2112 to 24 bytes. (#251 )
62+ - Various performance improvements to all PRNGs.
63+
64+ ### Platform support and ` OsRng `
65+ - Add support for CloudABI. (#224 )
66+ - Remove support for NaCl. (#225 )
67+ - Replace stubs with proper WASM support in ` OsRng ` . (#272 )
68+ - On systems that do not have a syscall interface, only keep a single file descriptor open for ` OsRng ` . (#239 )
69+ - Better error handling and reporting in ` OsRng ` (using new error type). (#225 )
70+ - ` OsRng ` now uses non-blocking when available. (#225 )
71+ - Add ` EntropyRng ` , which provides ` OsRng ` , but has ` JitterRng ` as a fallback. (#235 )
72+
73+ ### Distributions
74+ - New ` Distribution ` trait. (#256 )
75+ - Deprecate ` Rand ` , ` Sample ` and ` IndependentSample ` traits. (#256 )
76+ - Add a ` Uniform ` distribution (replaces most ` Rand ` implementations). (#256 )
77+ - Add ` Binomial ` and ` Poisson ` distributions. (#96 )
78+ - Add ` Alphanumeric ` distribution. (#279 )
79+ - Remove ` Open01 ` and ` Closed01 ` distributions, use ` Uniform ` instead (open distribution). (#274 )
80+ - Rework ` Range ` type, making it possible to implement it for user types. (#274 )
81+ - Add ` Range::new_inclusive ` for inclusive ranges. (#274 )
82+ - Add ` Range::sample_single ` to allow for optimized implementations. (#274 )
83+ - Use widening multiply method for much faster integer range reduction. (#274 )
84+ - ` Uniform ` distributions for ` bool ` uses ` Range ` . (#274 )
85+ - ` Uniform ` distributions for ` bool ` uses sign test. (#274 )
86+ - Add ` HighPrecision01 ` distribution. (#320 )
87+
88+
89+ ## [ 0.4.2] - 2018-01-06
890### Changed
9- - Use winapi on Windows
91+ - Use ` winapi ` on Windows
1092- Update for Fuchsia OS
1193- Remove dev-dependency on ` log `
1294
95+
1396## [ 0.4.1] - 2017-12-17
1497### Added
1598- ` no_std ` support
1699
100+
17101## [ 0.4.0-pre.0] - 2017-12-11
18102### Added
19103- ` JitterRng ` added as a high-quality alternative entropy source using the
@@ -29,6 +113,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
29113### Deprecated
30114 - ` sample ` function deprecated (replaced by ` sample_iter ` )
31115
116+
117+ ## [ 0.3.20] - 2018-01-06
118+ ### Changed
119+ - Remove dev-dependency on ` log `
120+ - Update ` fuchsia-zircon ` dependency to 0.3.2
121+
122+
123+ ## [ 0.3.19] - 2017-12-27
124+ ### Changed
125+ - Require ` log <= 0.3.8 ` for dev builds
126+ - Update ` fuchsia-zircon ` dependency to 0.3
127+ - Fix broken links in docs (to unblock compiler docs testing CI)
128+
129+
32130## [ 0.3.18] - 2017-11-06
33131### Changed
34132- ` thread_rng ` is seeded from the system time if ` OsRng ` fails
@@ -223,7 +321,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
223321- ` Rng::gen_ascii_chars() ` which will return an infinite stream of random ascii characters
224322
225323### Changed
226- - Now only depends on libcore! 2adf5363f88ffe06f6d2ea5c338d1b186d47f4a1
324+ - Now only depends on libcore!
227325- Remove ` Rng.choose() ` , rename ` Rng.choose_option() ` to ` .choose() `
228326- Rename OSRng to OsRng
229327- The WeightedChoice structure is no longer built with a ` Vec<Weighted<T>> ` ,
0 commit comments