diff --git a/CHANGELOG.md b/CHANGELOG.md index ad03ebe..f5ba688 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,15 @@ CHANGELOG ========= +# v2.0.0 + +- Set Rust edition to 2018 +- Make `rand` and `rand_core` dependencies more flexible + - Increase maximum version in constraint + - Make `rand_core` optional too + - Expose both crates +- Bump MSRV to 1.41.1 + # v1.2.0 - Add `Mnemonic::parse_in_normalized_without_checksum_check` diff --git a/Cargo.toml b/Cargo.toml index 1786136..c092b04 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bip39" -version = "1.2.0" +version = "2.0.0" authors = ["Steven Roose "] license = "CC0-1.0" homepage = "https://github.com/rust-bitcoin/rust-bip39/" @@ -9,14 +9,12 @@ documentation = "https://docs.rs/bip39/" description = "Library for BIP-39 Bitcoin mnemonic codes" keywords = [ "crypto", "bitcoin", "bip39", "mnemonic" ] readme = "README.md" - -[lib] -name = "bip39" -path = "src/lib.rs" +edition = "2018" [features] default = [ "std" ] std = [ "unicode-normalization", "serde/std" ] +rand = [ "crate_rand", "rand_core" ] # Note: English is the standard for bip39 so always included chinese-simplified = [] @@ -40,16 +38,19 @@ all-languages = [ ] [dependencies] -bitcoin_hashes = { version = "0.11.0", default-features = false } -rand_core = "0.4.0" - -unicode-normalization = { version = "=0.1.9", optional = true } -rand = { version = "0.6.0", optional = true } +rand_core = { version = ">=0.4.0, <0.7.0", optional = true } +crate_rand = { package = "rand", version = ">=0.6.0, <0.9.0", optional = true } serde = { version = "1.0", default-features = false, features = [ "alloc" ], optional = true } + # Enabling this feature raises the MSRV to 1.51 -zeroize = {version = "1.5", features = ["zeroize_derive"], optional = true} +zeroize = { version = "1.5", features = ["zeroize_derive"], optional = true } + +# Unexported dependnecies +bitcoin_hashes = { version = "0.11.0", default-features = false } +unicode-normalization = { version = "=0.1.22", optional = true } [dev-dependencies] -rand = { version = "0.6.0", optional = false } +rand_core = { version = "0.6.4", optional = false } +crate_rand = { package = "rand", version = "0.8.5", optional = false } bitcoin_hashes = "0.11.0" # enable default features for test diff --git a/README.md b/README.md index be035fc..5db3b76 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,6 @@ Use the `all-languages` feature to enable all languages. ## MSRV -This crate supports Rust v1.29 and up and works with `no_std`. +This crate supports Rust v1.41.1 and up and works with `no_std`. -If you enable the `zeroize` feature the MSRV becomes 1.51 +If you enable the `zeroize` feature the MSRV becomes 1.51. diff --git a/src/lib.rs b/src/lib.rs index 4144865..856ffe6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -31,13 +31,14 @@ pub extern crate core; extern crate alloc; extern crate bitcoin_hashes; -extern crate rand_core; #[cfg(feature = "std")] extern crate unicode_normalization; +#[cfg(feature = "rand_core")] +pub extern crate rand_core; #[cfg(feature = "rand")] -extern crate rand; +pub extern crate crate_rand as rand; #[cfg(feature = "serde")] pub extern crate serde; @@ -248,14 +249,14 @@ impl Mnemonic { /// Example: /// /// ``` - /// extern crate rand; /// extern crate bip39; /// /// use bip39::{Mnemonic, Language}; /// - /// let mut rng = rand::thread_rng(); + /// let mut rng = bip39::rand::thread_rng(); /// let m = Mnemonic::generate_in_with(&mut rng, Language::English, 24).unwrap(); /// ``` + #[cfg(feature = "rand_core")] pub fn generate_in_with( rng: &mut R, language: Language,