Merge pull request #856 from taiki-e/alloc
Remove #![feature(alloc)]
diff --git a/.travis.yml b/.travis.yml
index c375880..f3790dc 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -37,6 +37,8 @@
# Tests run on rand:
# - test no_std support, but only the unit tests:
# `cargo test --tests --no-default-features`
+# - test no_std support, including the alloc feature:
+# cargo test --tests --no-default-features --features=alloc
# - run unit tests and doctests with all features which are available on stable:
# `cargo test --features=serde1,log`
# - test examples:
@@ -44,8 +46,6 @@
# Additional tests on nightly:
# - run unit tests and doctests with all features which are available on nightly:
# `cargo test --all-features`
-# - test no_std support, including the nightly alloc feature:
-# cargo test --tests --no-default-features --features=alloc
# - run benchmarks as tests:
# `cargo test --benches --features=nightly`
# Tests on subcrates:
@@ -54,6 +54,8 @@
#
# TODO: SIMD support on stable releases
# NOTE: SIMD support is unreliable on nightly; we track the latest release
+# NOTE: Test for alloc feature in no_std is not included here because it depends
+# on the alloc crate stabilized in Rust 1.36.
matrix:
include:
- rust: 1.32.0
@@ -137,7 +139,7 @@
before_script:
- pip install 'travis-cargo<0.2' --user && export PATH=$HOME/.local/bin:$PATH
script:
- # Differs from standard script: alloc feature, all features, doc build
+ # Differs from standard script: all features, doc build
- cargo test --tests --no-default-features --features=alloc
- cargo test --all-features
- cargo test --benches --features=nightly
@@ -167,7 +169,7 @@
- cargo --list | egrep "^\s*deadlinks$" -q || cargo install cargo-deadlinks
- cargo deadlinks -V
script:
- # Differs from standard script: alloc feature, all features, doc build
+ # Differs from standard script: all features, doc build
- cargo test --tests --no-default-features --features=alloc
- cargo test --all-features
- cargo test --benches --features=nightly
@@ -276,11 +278,13 @@
script:
- cargo test --tests --no-default-features
- cargo test --tests --no-default-features --features getrandom
+ - cargo test --tests --no-default-features --features=alloc
# TODO: add simd_support feature:
- cargo test --features=serde1,log
- cargo test --examples
- cargo test --manifest-path rand_core/Cargo.toml
- cargo test --manifest-path rand_core/Cargo.toml --no-default-features
+ - cargo test --manifest-path rand_core/Cargo.toml --no-default-features --features=alloc
- cargo test --manifest-path rand_distr/Cargo.toml
- cargo test --manifest-path rand_isaac/Cargo.toml --features=serde1
- cargo test --manifest-path rand_pcg/Cargo.toml --features=serde1
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 88fba02..a2ae496 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,6 +11,7 @@
## [Unreleased]
- Fix `no_std` behaviour, appropriately enable c2-chacha's `std` feature (#844)
- Add a `no_std` target to CI to continously evaluate `no_std` status (#844)
+- `alloc` feature in `no_std` is available since Rust 1.36 (#856)
## [0.7.0] - 2019-06-28
diff --git a/README.md b/README.md
index b9d43e9..5acbadb 100644
--- a/README.md
+++ b/README.md
@@ -84,7 +84,7 @@
Rand is built with these features enabled by default:
- `std` enables functionality dependent on the `std` lib
-- `alloc` (implied by `std`) enables functionality requiring an allocator
+- `alloc` (implied by `std`) enables functionality requiring an allocator (when using this feature in `no_std`, Rand requires Rustc version 1.36 or greater)
- `getrandom` (implied by `std`) is an optional dependency providing the code
behind `rngs::OsRng`
diff --git a/rand_core/CHANGELOG.md b/rand_core/CHANGELOG.md
index c96d886..5d35b6a 100644
--- a/rand_core/CHANGELOG.md
+++ b/rand_core/CHANGELOG.md
@@ -4,6 +4,9 @@
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [Unreleased]
+- `alloc` feature in `no_std` is available since Rust 1.36 (#856)
+
## [0.5.1] - 2019-09-02
### Added
- `OsRng` added to `rand_core` (#863)
diff --git a/rand_core/src/lib.rs b/rand_core/src/lib.rs
index 4016002..d8e0189 100644
--- a/rand_core/src/lib.rs
+++ b/rand_core/src/lib.rs
@@ -38,7 +38,6 @@
#![allow(clippy::unreadable_literal)]
#![cfg_attr(not(feature="std"), no_std)]
-#![cfg_attr(all(feature="alloc", not(feature="std")), feature(alloc))]
use core::default::Default;
diff --git a/src/lib.rs b/src/lib.rs
index 5d8fa23..b4167c3 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -50,7 +50,6 @@
#![doc(test(attr(allow(unused_variables), deny(warnings))))]
#![cfg_attr(not(feature="std"), no_std)]
-#![cfg_attr(all(feature="alloc", not(feature="std")), feature(alloc))]
#![cfg_attr(all(feature="simd_support", feature="nightly"), feature(stdsimd))]
#![allow(clippy::excessive_precision, clippy::unreadable_literal, clippy::float_cmp)]
@@ -438,7 +437,7 @@
}
}
}
-
+
impl AsByteSliceMut for [Wrapping<$t>] {
fn as_byte_slice_mut(&mut self) -> &mut [u8] {
if self.len() == 0 {
@@ -602,7 +601,7 @@
rng.fill(&mut array[..]);
assert_eq!(array, [x as u32, (x >> 32) as u32]);
assert_eq!(rng.next_u32(), x as u32);
-
+
// Check equivalence using wrapped arrays
let mut warray = [Wrapping(0u32); 2];
rng.fill(&mut warray[..]);