diff --git a/.travis.yml b/.travis.yml
index 4baf810..c89a989 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -268,7 +268,7 @@
 
 script:
   - cargo test --tests --no-default-features
-  - cargo test --no-default-features --features getrandom
+  - cargo test --tests --no-default-features --features getrandom
   # TODO: add simd_support feature:
   - cargo test --features=serde1,log
   - cargo test --examples
diff --git a/Cargo.toml b/Cargo.toml
index 8ce6f3c..46d9d96 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "rand"
-version = "0.7.0-pre.0"
+version = "0.7.0-pre.1"
 authors = ["The Rand Project Developers", "The Rust Project Developers"]
 license = "MIT/Apache-2.0"
 readme = "README.md"
@@ -55,7 +55,7 @@
 
 [dependencies]
 rand_core = { path = "rand_core", version = "0.5" }
-rand_pcg = { path = "rand_pcg", version = "0.1", optional = true }
+rand_pcg = { path = "rand_pcg", version = "0.2", optional = true }
 # Do not depend on 'getrandom_package' directly; use the 'getrandom' feature!
 getrandom_package = { version = "0.1.1", package = "getrandom", optional = true }
 log = { version = "0.4", optional = true }
@@ -76,42 +76,18 @@
 [target.'cfg(not(target_os = "emscripten"))'.dependencies]
 rand_chacha = { path = "rand_chacha", version = "0.2" }
 [target.'cfg(target_os = "emscripten")'.dependencies]
-rand_hc = { path = "rand_hc", version = "0.1" }
+rand_hc = { path = "rand_hc", version = "0.2" }
 
 [dev-dependencies]
-rand_pcg = { path = "rand_pcg", version = "0.1" }
+rand_pcg = { path = "rand_pcg", version = "0.2" }
 # Only for benches:
-rand_hc = { path = "rand_hc", version = "0.1" }
-rand_xoshiro = { path = "rand_xoshiro", version = "0.2" }
-rand_isaac = { path = "rand_isaac", version = "0.1" }
-rand_xorshift = { path = "rand_xorshift", version = "0.1" }
-rand_distr = { path = "rand_distr", version = "0.2" }
+rand_hc = { path = "rand_hc", version = "0.2" }
+rand_xoshiro = { path = "rand_xoshiro", version = "0.3" }
+rand_isaac = { path = "rand_isaac", version = "0.2" }
+rand_xorshift = { path = "rand_xorshift", version = "0.2" }
 
 [build-dependencies]
 autocfg = "0.1"
 
-[[bench]]
-name = "distributions"
-path = "benches/distributions.rs"
-required-features = ["small_rng"]
-
-[[bench]]
-name = "generators"
-path = "benches/generators.rs"
-required-features = ["small_rng"]
-
-[[bench]]
-name = "misc"
-path = "benches/misc.rs"
-required-features = ["small_rng"]
-
-[[bench]]
-name = "seq"
-path = "benches/seq.rs"
-required-features = ["small_rng"]
-
 [package.metadata.docs.rs]
 all-features = true
-
-[patch.crates-io]
-rand_core = { path = "rand_core", version = "0.5" }
diff --git a/benches/generators.rs b/benches/generators.rs
index 2def704..0e83401 100644
--- a/benches/generators.rs
+++ b/benches/generators.rs
@@ -30,7 +30,7 @@
 use rand_isaac::{IsaacRng, Isaac64Rng};
 use rand_chacha::{ChaCha20Core, ChaCha8Rng, ChaCha12Rng, ChaCha20Rng};
 use rand_hc::{Hc128Rng};
-use rand_pcg::{Lcg64Xsh32, Mcg128Xsl64};
+use rand_pcg::{Pcg32, Pcg64, Pcg64Mcg};
 use rand_xorshift::XorShiftRng;
 use rand_xoshiro::{Xoshiro256StarStar, Xoshiro256Plus, Xoshiro128StarStar,
     Xoshiro128Plus, Xoroshiro128StarStar, Xoroshiro128Plus, SplitMix64,
@@ -63,8 +63,9 @@
 gen_bytes!(gen_bytes_xoroshiro64starstar, Xoroshiro64StarStar::from_entropy());
 gen_bytes!(gen_bytes_xoroshiro64star, Xoroshiro64Star::from_entropy());
 gen_bytes!(gen_bytes_splitmix64, SplitMix64::from_entropy());
-gen_bytes!(gen_bytes_lcg64_xsh32, Lcg64Xsh32::from_entropy());
-gen_bytes!(gen_bytes_mcg128_xsh64, Mcg128Xsl64::from_entropy());
+gen_bytes!(gen_bytes_pcg32, Pcg32::from_entropy());
+gen_bytes!(gen_bytes_pcg64, Pcg64::from_entropy());
+gen_bytes!(gen_bytes_pcg64mcg, Pcg64Mcg::from_entropy());
 gen_bytes!(gen_bytes_chacha8, ChaCha8Rng::from_entropy());
 gen_bytes!(gen_bytes_chacha12, ChaCha12Rng::from_entropy());
 gen_bytes!(gen_bytes_chacha20, ChaCha20Rng::from_entropy());
@@ -72,6 +73,7 @@
 gen_bytes!(gen_bytes_isaac, IsaacRng::from_entropy());
 gen_bytes!(gen_bytes_isaac64, Isaac64Rng::from_entropy());
 gen_bytes!(gen_bytes_std, StdRng::from_entropy());
+#[cfg(feature="small_rng")]
 gen_bytes!(gen_bytes_small, SmallRng::from_entropy());
 gen_bytes!(gen_bytes_os, OsRng);
 
@@ -102,8 +104,9 @@
 gen_uint!(gen_u32_xoroshiro64starstar, u32, Xoroshiro64StarStar::from_entropy());
 gen_uint!(gen_u32_xoroshiro64star, u32, Xoroshiro64Star::from_entropy());
 gen_uint!(gen_u32_splitmix64, u32, SplitMix64::from_entropy());
-gen_uint!(gen_u32_lcg64_xsh32, u32, Lcg64Xsh32::from_entropy());
-gen_uint!(gen_u32_mcg128_xsh64, u32, Mcg128Xsl64::from_entropy());
+gen_uint!(gen_u32_pcg32, u32, Pcg32::from_entropy());
+gen_uint!(gen_u32_pcg64, u32, Pcg64::from_entropy());
+gen_uint!(gen_u32_pcg64mcg, u32, Pcg64Mcg::from_entropy());
 gen_uint!(gen_u32_chacha8, u32, ChaCha8Rng::from_entropy());
 gen_uint!(gen_u32_chacha12, u32, ChaCha12Rng::from_entropy());
 gen_uint!(gen_u32_chacha20, u32, ChaCha20Rng::from_entropy());
@@ -111,6 +114,7 @@
 gen_uint!(gen_u32_isaac, u32, IsaacRng::from_entropy());
 gen_uint!(gen_u32_isaac64, u32, Isaac64Rng::from_entropy());
 gen_uint!(gen_u32_std, u32, StdRng::from_entropy());
+#[cfg(feature="small_rng")]
 gen_uint!(gen_u32_small, u32, SmallRng::from_entropy());
 gen_uint!(gen_u32_os, u32, OsRng);
 
@@ -124,8 +128,9 @@
 gen_uint!(gen_u64_xoroshiro64starstar, u64, Xoroshiro64StarStar::from_entropy());
 gen_uint!(gen_u64_xoroshiro64star, u64, Xoroshiro64Star::from_entropy());
 gen_uint!(gen_u64_splitmix64, u64, SplitMix64::from_entropy());
-gen_uint!(gen_u64_lcg64_xsh32, u64, Lcg64Xsh32::from_entropy());
-gen_uint!(gen_u64_mcg128_xsh64, u64, Mcg128Xsl64::from_entropy());
+gen_uint!(gen_u64_pcg32, u64, Pcg32::from_entropy());
+gen_uint!(gen_u64_pcg64, u64, Pcg64::from_entropy());
+gen_uint!(gen_u64_pcg64mcg, u64, Pcg64Mcg::from_entropy());
 gen_uint!(gen_u64_chacha8, u64, ChaCha8Rng::from_entropy());
 gen_uint!(gen_u64_chacha12, u64, ChaCha12Rng::from_entropy());
 gen_uint!(gen_u64_chacha20, u64, ChaCha20Rng::from_entropy());
@@ -133,6 +138,7 @@
 gen_uint!(gen_u64_isaac, u64, IsaacRng::from_entropy());
 gen_uint!(gen_u64_isaac64, u64, Isaac64Rng::from_entropy());
 gen_uint!(gen_u64_std, u64, StdRng::from_entropy());
+#[cfg(feature="small_rng")]
 gen_uint!(gen_u64_small, u64, SmallRng::from_entropy());
 gen_uint!(gen_u64_os, u64, OsRng);
 
@@ -159,8 +165,9 @@
 init_gen!(init_xoroshiro64starstar, Xoroshiro64StarStar);
 init_gen!(init_xoroshiro64star, Xoroshiro64Star);
 init_gen!(init_splitmix64, SplitMix64);
-init_gen!(init_lcg64_xsh32, Lcg64Xsh32);
-init_gen!(init_mcg128_xsh64, Mcg128Xsl64);
+init_gen!(init_pcg32, Pcg32);
+init_gen!(init_pcg64, Pcg64);
+init_gen!(init_pcg64mcg, Pcg64Mcg);
 init_gen!(init_hc128, Hc128Rng);
 init_gen!(init_isaac, IsaacRng);
 init_gen!(init_isaac64, Isaac64Rng);
diff --git a/benches/misc.rs b/benches/misc.rs
index 2b6c9ff..99e43b9 100644
--- a/benches/misc.rs
+++ b/benches/misc.rs
@@ -10,6 +10,7 @@
 
 extern crate test;
 extern crate rand;
+extern crate rand_pcg;
 
 const RAND_BENCH_N: u64 = 1000;
 
@@ -17,10 +18,11 @@
 
 use rand::prelude::*;
 use rand::distributions::{Distribution, Standard, Bernoulli};
+use rand_pcg::{Pcg32, Pcg64Mcg};
 
 #[bench]
 fn misc_gen_bool_const(b: &mut Bencher) {
-    let mut rng = StdRng::from_rng(&mut thread_rng()).unwrap();
+    let mut rng = Pcg32::from_rng(&mut thread_rng()).unwrap();
     b.iter(|| {
         let mut accum = true;
         for _ in 0..::RAND_BENCH_N {
@@ -32,7 +34,7 @@
 
 #[bench]
 fn misc_gen_bool_var(b: &mut Bencher) {
-    let mut rng = StdRng::from_rng(&mut thread_rng()).unwrap();
+    let mut rng = Pcg32::from_rng(&mut thread_rng()).unwrap();
     b.iter(|| {
         let mut accum = true;
         let mut p = 0.18;
@@ -46,7 +48,7 @@
 
 #[bench]
 fn misc_gen_ratio_const(b: &mut Bencher) {
-    let mut rng = StdRng::from_rng(&mut thread_rng()).unwrap();
+    let mut rng = Pcg32::from_rng(&mut thread_rng()).unwrap();
     b.iter(|| {
         let mut accum = true;
         for _ in 0..::RAND_BENCH_N {
@@ -58,7 +60,7 @@
 
 #[bench]
 fn misc_gen_ratio_var(b: &mut Bencher) {
-    let mut rng = StdRng::from_rng(&mut thread_rng()).unwrap();
+    let mut rng = Pcg32::from_rng(&mut thread_rng()).unwrap();
     b.iter(|| {
         let mut accum = true;
         for i in 2..(::RAND_BENCH_N as u32 + 2) {
@@ -70,7 +72,7 @@
 
 #[bench]
 fn misc_bernoulli_const(b: &mut Bencher) {
-    let mut rng = StdRng::from_rng(&mut thread_rng()).unwrap();
+    let mut rng = Pcg32::from_rng(&mut thread_rng()).unwrap();
     b.iter(|| {
         let d = rand::distributions::Bernoulli::new(0.18).unwrap();
         let mut accum = true;
@@ -83,7 +85,7 @@
 
 #[bench]
 fn misc_bernoulli_var(b: &mut Bencher) {
-    let mut rng = StdRng::from_rng(&mut thread_rng()).unwrap();
+    let mut rng = Pcg32::from_rng(&mut thread_rng()).unwrap();
     b.iter(|| {
         let mut accum = true;
         let mut p = 0.18;
@@ -99,7 +101,7 @@
 #[bench]
 fn gen_1k_iter_repeat(b: &mut Bencher) {
     use std::iter;
-    let mut rng = SmallRng::from_rng(&mut thread_rng()).unwrap();
+    let mut rng = Pcg64Mcg::from_rng(&mut thread_rng()).unwrap();
     b.iter(|| {
         let v: Vec<u64> = iter::repeat(()).map(|()| rng.gen()).take(128).collect();
         v
@@ -109,7 +111,7 @@
 
 #[bench]
 fn gen_1k_sample_iter(b: &mut Bencher) {
-    let mut rng = SmallRng::from_rng(&mut thread_rng()).unwrap();
+    let mut rng = Pcg64Mcg::from_rng(&mut thread_rng()).unwrap();
     b.iter(|| {
         let v: Vec<u64> = Standard.sample_iter(&mut rng).take(128).collect();
         v
@@ -119,7 +121,7 @@
 
 #[bench]
 fn gen_1k_gen_array(b: &mut Bencher) {
-    let mut rng = SmallRng::from_rng(&mut thread_rng()).unwrap();
+    let mut rng = Pcg64Mcg::from_rng(&mut thread_rng()).unwrap();
     b.iter(|| {
         // max supported array length is 32!
         let v: [[u64; 32]; 4] = rng.gen();
@@ -130,7 +132,7 @@
 
 #[bench]
 fn gen_1k_fill(b: &mut Bencher) {
-    let mut rng = SmallRng::from_rng(&mut thread_rng()).unwrap();
+    let mut rng = Pcg64Mcg::from_rng(&mut thread_rng()).unwrap();
     let mut buf = [0u64; 128];
     b.iter(|| {
         rng.fill(&mut buf[..]);
diff --git a/benches/seq.rs b/benches/seq.rs
index 0ca3398..e426ffb 100644
--- a/benches/seq.rs
+++ b/benches/seq.rs
@@ -11,6 +11,7 @@
 
 extern crate test;
 extern crate rand;
+extern crate rand_pcg;
 
 use test::Bencher;
 
@@ -18,6 +19,10 @@
 use rand::seq::*;
 use std::mem::size_of;
 
+// We force use of 32-bit RNG since seq code is optimised for use with 32-bit
+// generators on all platforms.
+use rand_pcg::Pcg32 as SmallRng;
+
 const RAND_BENCH_N: u64 = 1000;
 
 #[bench]
diff --git a/rand_distr/Cargo.toml b/rand_distr/Cargo.toml
index 568854c..874adbb 100644
--- a/rand_distr/Cargo.toml
+++ b/rand_distr/Cargo.toml
@@ -22,6 +22,6 @@
 rand = { path = "..", version = ">=0.5, <=0.7.0-pre.9" }
 
 [dev-dependencies]
-rand_pcg = { version = "0.1", path = "../rand_pcg" }
+rand_pcg = { version = "0.2", path = "../rand_pcg" }
 # Histogram implementation for testing uniformity
 average = "0.9.2"
diff --git a/benches/distributions.rs b/rand_distr/benches/distributions.rs
similarity index 82%
rename from benches/distributions.rs
rename to rand_distr/benches/distributions.rs
index af6ea00..893ac47 100644
--- a/benches/distributions.rs
+++ b/rand_distr/benches/distributions.rs
@@ -9,13 +9,10 @@
 #![feature(test)]
 
 extern crate test;
-extern crate rand;
-extern crate rand_distr;
 
 const RAND_BENCH_N: u64 = 1000;
 
 use std::mem::size_of;
-#[cfg(rustc_1_28)]
 use std::num::{NonZeroU8, NonZeroU16, NonZeroU32, NonZeroU64, NonZeroU128};
 use test::Bencher;
 use std::time::Duration;
@@ -23,22 +20,25 @@
 use rand::prelude::*;
 use rand_distr::{*, weighted::WeightedIndex};
 
+// At this time, distributions are optimised for 64-bit platforms.
+use rand_pcg::Pcg64Mcg;
+
 macro_rules! distr_int {
     ($fnn:ident, $ty:ty, $distr:expr) => {
         #[bench]
         fn $fnn(b: &mut Bencher) {
-            let mut rng = SmallRng::from_entropy();
+            let mut rng = Pcg64Mcg::from_entropy();
             let distr = $distr;
 
             b.iter(|| {
                 let mut accum = 0 as $ty;
-                for _ in 0..::RAND_BENCH_N {
+                for _ in 0..RAND_BENCH_N {
                     let x: $ty = distr.sample(&mut rng);
                     accum = accum.wrapping_add(x);
                 }
                 accum
             });
-            b.bytes = size_of::<$ty>() as u64 * ::RAND_BENCH_N;
+            b.bytes = size_of::<$ty>() as u64 * RAND_BENCH_N;
         }
     }
 }
@@ -47,18 +47,18 @@
     ($fnn:ident, $tynz:ty, $ty:ty, $distr:expr) => {
         #[bench]
         fn $fnn(b: &mut Bencher) {
-            let mut rng = SmallRng::from_entropy();
+            let mut rng = Pcg64Mcg::from_entropy();
             let distr = $distr;
 
             b.iter(|| {
                 let mut accum = 0 as $ty;
-                for _ in 0..::RAND_BENCH_N {
+                for _ in 0..RAND_BENCH_N {
                     let x: $tynz = distr.sample(&mut rng);
                     accum = accum.wrapping_add(x.get());
                 }
                 accum
             });
-            b.bytes = size_of::<$ty>() as u64 * ::RAND_BENCH_N;
+            b.bytes = size_of::<$ty>() as u64 * RAND_BENCH_N;
         }
     }
 }
@@ -67,18 +67,18 @@
     ($fnn:ident, $ty:ty, $distr:expr) => {
         #[bench]
         fn $fnn(b: &mut Bencher) {
-            let mut rng = SmallRng::from_entropy();
+            let mut rng = Pcg64Mcg::from_entropy();
             let distr = $distr;
 
             b.iter(|| {
                 let mut accum = 0.0;
-                for _ in 0..::RAND_BENCH_N {
+                for _ in 0..RAND_BENCH_N {
                     let x: $ty = distr.sample(&mut rng);
                     accum += x;
                 }
                 accum
             });
-            b.bytes = size_of::<$ty>() as u64 * ::RAND_BENCH_N;
+            b.bytes = size_of::<$ty>() as u64 * RAND_BENCH_N;
         }
     }
 }
@@ -87,18 +87,18 @@
     ($fnn:ident, $distr:expr) => {
         #[bench]
         fn $fnn(b: &mut Bencher) {
-            let mut rng = SmallRng::from_entropy();
+            let mut rng = Pcg64Mcg::from_entropy();
             let distr = $distr;
 
             b.iter(|| {
                 let mut accum = Duration::new(0, 0);
-                for _ in 0..::RAND_BENCH_N {
+                for _ in 0..RAND_BENCH_N {
                     let x: Duration = distr.sample(&mut rng);
                     accum = accum.checked_add(x).unwrap_or(Duration::new(u64::max_value(), 999_999_999));
                 }
                 accum
             });
-            b.bytes = size_of::<Duration>() as u64 * ::RAND_BENCH_N;
+            b.bytes = size_of::<Duration>() as u64 * RAND_BENCH_N;
         }
     }
 }
@@ -107,18 +107,18 @@
     ($fnn:ident, $ty:ty, $distr:expr) => {
         #[bench]
         fn $fnn(b: &mut Bencher) {
-            let mut rng = SmallRng::from_entropy();
+            let mut rng = Pcg64Mcg::from_entropy();
             let distr = $distr;
 
             b.iter(|| {
                 let mut accum = 0u32;
-                for _ in 0..::RAND_BENCH_N {
+                for _ in 0..RAND_BENCH_N {
                     let x: $ty = distr.sample(&mut rng);
                     accum = accum.wrapping_add(x as u32);
                 }
                 accum
             });
-            b.bytes = size_of::<$ty>() as u64 * ::RAND_BENCH_N;
+            b.bytes = size_of::<$ty>() as u64 * RAND_BENCH_N;
         }
     }
 }
@@ -127,18 +127,18 @@
     ($fnn:ident, $ty:ty, $distr:expr) => {
         #[bench]
         fn $fnn(b: &mut Bencher) {
-            let mut rng = SmallRng::from_entropy();
+            let mut rng = Pcg64Mcg::from_entropy();
             let distr = $distr;
 
             b.iter(|| {
                 let mut accum = 0u32;
-                for _ in 0..::RAND_BENCH_N {
+                for _ in 0..RAND_BENCH_N {
                     let x: $ty = distr.sample(&mut rng);
                     accum = accum.wrapping_add(x[0] as u32);
                 }
                 accum
             });
-            b.bytes = size_of::<$ty>() as u64 * ::RAND_BENCH_N;
+            b.bytes = size_of::<$ty>() as u64 * RAND_BENCH_N;
         }
     }
 }
@@ -183,11 +183,11 @@
 distr_int!(distr_standard_i32, i32, Standard);
 distr_int!(distr_standard_i64, i64, Standard);
 distr_int!(distr_standard_i128, i128, Standard);
-#[cfg(rustc_1_28)] distr_nz_int!(distr_standard_nz8, NonZeroU8, u8, Standard);
-#[cfg(rustc_1_28)] distr_nz_int!(distr_standard_nz16, NonZeroU16, u16, Standard);
-#[cfg(rustc_1_28)] distr_nz_int!(distr_standard_nz32, NonZeroU32, u32, Standard);
-#[cfg(rustc_1_28)] distr_nz_int!(distr_standard_nz64, NonZeroU64, u64, Standard);
-#[cfg(rustc_1_28)] distr_nz_int!(distr_standard_nz128, NonZeroU128, u128, Standard);
+distr_nz_int!(distr_standard_nz8, NonZeroU8, u8, Standard);
+distr_nz_int!(distr_standard_nz16, NonZeroU16, u16, Standard);
+distr_nz_int!(distr_standard_nz32, NonZeroU32, u32, Standard);
+distr_nz_int!(distr_standard_nz64, NonZeroU64, u64, Standard);
+distr_nz_int!(distr_standard_nz128, NonZeroU128, u128, Standard);
 
 distr!(distr_standard_bool, bool, Standard);
 distr!(distr_standard_alphanumeric, char, Alphanumeric);
@@ -231,19 +231,19 @@
     ($fnn:ident, $ty:ident, $low:expr, $high:expr) => {
         #[bench]
         fn $fnn(b: &mut Bencher) {
-            let mut rng = SmallRng::from_entropy();
+            let mut rng = Pcg64Mcg::from_entropy();
 
             b.iter(|| {
                 let mut high = $high;
                 let mut accum: $ty = 0;
-                for _ in 0..::RAND_BENCH_N {
+                for _ in 0..RAND_BENCH_N {
                     accum = accum.wrapping_add(rng.gen_range($low, high));
                     // force recalculation of range each time
                     high = high.wrapping_add(1) & std::$ty::MAX;
                 }
                 accum
             });
-            b.bytes = size_of::<$ty>() as u64 * ::RAND_BENCH_N;
+            b.bytes = size_of::<$ty>() as u64 * RAND_BENCH_N;
         }
     }
 }
@@ -259,13 +259,13 @@
     ($fnn:ident, $ty:ident, $low:expr, $high:expr) => {
         #[bench]
         fn $fnn(b: &mut Bencher) {
-            let mut rng = SmallRng::from_entropy();
+            let mut rng = Pcg64Mcg::from_entropy();
 
             b.iter(|| {
                 let mut high = $high;
                 let mut low = $low;
                 let mut accum: $ty = 0.0;
-                for _ in 0..::RAND_BENCH_N {
+                for _ in 0..RAND_BENCH_N {
                     accum += rng.gen_range(low, high);
                     // force recalculation of range each time
                     low += 0.9;
@@ -273,7 +273,7 @@
                 }
                 accum
             });
-            b.bytes = size_of::<$ty>() as u64 * ::RAND_BENCH_N;
+            b.bytes = size_of::<$ty>() as u64 * RAND_BENCH_N;
         }
     }
 }
@@ -283,25 +283,25 @@
 
 #[bench]
 fn dist_iter(b: &mut Bencher) {
-    let mut rng = SmallRng::from_entropy();
+    let mut rng = Pcg64Mcg::from_entropy();
     let distr = Normal::new(-2.71828, 3.14159).unwrap();
     let mut iter = distr.sample_iter(&mut rng);
 
     b.iter(|| {
         let mut accum = 0.0;
-        for _ in 0..::RAND_BENCH_N {
+        for _ in 0..RAND_BENCH_N {
             accum += iter.next().unwrap();
         }
         accum
     });
-    b.bytes = size_of::<f64>() as u64 * ::RAND_BENCH_N;
+    b.bytes = size_of::<f64>() as u64 * RAND_BENCH_N;
 }
 
 macro_rules! sample_binomial {
     ($name:ident, $n:expr, $p:expr) => {
         #[bench]
         fn $name(b: &mut Bencher) {
-            let mut rng = SmallRng::from_rng(&mut thread_rng()).unwrap();
+            let mut rng = Pcg64Mcg::from_rng(&mut thread_rng()).unwrap();
             let (n, p) = ($n, $p);
             b.iter(|| {
                 let d = Binomial::new(n, p).unwrap();
diff --git a/rand_hc/CHANGELOG.md b/rand_hc/CHANGELOG.md
index 2820275..a629d7d 100644
--- a/rand_hc/CHANGELOG.md
+++ b/rand_hc/CHANGELOG.md
@@ -4,7 +4,11 @@
 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).
 
-## [0.1.1] - 2019-06-06
+## [0.2.0] - 2019-06-12
+- Bump minor crate version since rand_core bump is a breaking change
+- Switch to Edition 2018
+
+## [0.1.1] - 2019-06-06 - yanked
 - Bump `rand_core` version
 - Adjust usage of `#[inline]`
 
diff --git a/rand_hc/Cargo.toml b/rand_hc/Cargo.toml
index 7b1eb80..e062935 100644
--- a/rand_hc/Cargo.toml
+++ b/rand_hc/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "rand_hc"
-version = "0.1.1"
+version = "0.2.0"
 authors = ["The Rand Project Developers"]
 license = "MIT/Apache-2.0"
 readme = "README.md"
@@ -12,6 +12,7 @@
 """
 keywords = ["random", "rng", "hc128"]
 categories = ["algorithms", "no-std"]
+edition = "2018"
 
 [badges]
 travis-ci = { repository = "rust-random/rand" }
diff --git a/rand_hc/src/lib.rs b/rand_hc/src/lib.rs
index 10466cf..c1ae665 100644
--- a/rand_hc/src/lib.rs
+++ b/rand_hc/src/lib.rs
@@ -18,8 +18,6 @@
 
 #![no_std]
 
-pub extern crate rand_core;
-
 mod hc128;
 
 pub use hc128::{Hc128Rng, Hc128Core};
diff --git a/rand_isaac/CHANGELOG.md b/rand_isaac/CHANGELOG.md
index 95de12a..0a5591f 100644
--- a/rand_isaac/CHANGELOG.md
+++ b/rand_isaac/CHANGELOG.md
@@ -4,7 +4,11 @@
 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).
 
-## [0.1.2] - 2019-06-06
+## [0.2.0] - 2019-06-12
+- Bump minor crate version since rand_core bump is a breaking change
+- Switch to Edition 2018
+
+## [0.1.2] - 2019-06-06 - yanked
 - Bump `rand_core` version
 - Remove deprecated code
 - Adjust usage of `#[inline]`
diff --git a/rand_isaac/Cargo.toml b/rand_isaac/Cargo.toml
index 63beeec..5e3bf12 100644
--- a/rand_isaac/Cargo.toml
+++ b/rand_isaac/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "rand_isaac"
-version = "0.1.2"
+version = "0.2.0"
 authors = ["The Rand Project Developers", "The Rust Project Developers"]
 license = "MIT/Apache-2.0"
 readme = "README.md"
@@ -12,18 +12,18 @@
 """
 keywords = ["random", "rng", "isaac"]
 categories = ["algorithms", "no-std"]
+edition = "2018"
 
 [badges]
 travis-ci = { repository = "rust-random/rand" }
 appveyor = { repository = "rust-random/rand" }
 
 [features]
-serde1 = ["serde", "serde_derive", "rand_core/serde1"]
+serde1 = ["serde", "rand_core/serde1"]
 
 [dependencies]
 rand_core = { path = "../rand_core", version = "0.5" }
-serde = { version = "1", optional = true }
-serde_derive = { version = "^1.0.38", optional = true }
+serde = { version = "1", features = ["derive"], optional = true }
 
 [dev-dependencies]
 # This is for testing serde, unfortunately we can't specify feature-gated dev
diff --git a/rand_isaac/src/isaac.rs b/rand_isaac/src/isaac.rs
index f857737..2caf61a 100644
--- a/rand_isaac/src/isaac.rs
+++ b/rand_isaac/src/isaac.rs
@@ -11,9 +11,10 @@
 
 use core::{fmt, slice};
 use core::num::Wrapping as w;
+#[cfg(feature="serde1")] use serde::{Serialize, Deserialize};
 use rand_core::{RngCore, SeedableRng, Error, le};
 use rand_core::block::{BlockRngCore, BlockRng};
-use isaac_array::IsaacArray;
+use crate::isaac_array::IsaacArray;
 
 #[allow(non_camel_case_types)]
 type w32 = w<u32>;
diff --git a/rand_isaac/src/isaac64.rs b/rand_isaac/src/isaac64.rs
index 902715e..7d4b88c 100644
--- a/rand_isaac/src/isaac64.rs
+++ b/rand_isaac/src/isaac64.rs
@@ -11,9 +11,10 @@
 
 use core::{fmt, slice};
 use core::num::Wrapping as w;
+#[cfg(feature="serde1")] use serde::{Serialize, Deserialize};
 use rand_core::{RngCore, SeedableRng, Error, le};
 use rand_core::block::{BlockRngCore, BlockRng64};
-use isaac_array::IsaacArray;
+use crate::isaac_array::IsaacArray;
 
 #[allow(non_camel_case_types)]
 type w64 = w<u64>;
diff --git a/rand_isaac/src/isaac_array.rs b/rand_isaac/src/isaac_array.rs
index 0fa6147..cbe4a59 100644
--- a/rand_isaac/src/isaac_array.rs
+++ b/rand_isaac/src/isaac_array.rs
@@ -13,7 +13,7 @@
 // implement `AsRef`, `Default`, `Serialize`, `Deserialize`, or any other
 // traits for that matter.
 
-#[cfg(feature="serde1")] use serde::{Serialize, Deserialize};
+#[cfg(feature="serde")] use serde::{Serialize, Deserialize};
 
 const RAND_SIZE_LEN: usize = 8;
 const RAND_SIZE: usize = 1 << RAND_SIZE_LEN;
@@ -21,10 +21,10 @@
 
 #[derive(Copy, Clone)]
 #[allow(missing_debug_implementations)]
-#[cfg_attr(feature="serde1", derive(Serialize, Deserialize))]
+#[cfg_attr(feature="serde", derive(Serialize, Deserialize))]
 pub struct IsaacArray<T> {
-    #[cfg_attr(feature="serde1",serde(with="isaac_array_serde"))]
-    #[cfg_attr(feature="serde1", serde(bound(
+    #[cfg_attr(feature="serde",serde(with="isaac_array_serde"))]
+    #[cfg_attr(feature="serde", serde(bound(
         serialize = "T: Serialize",
         deserialize = "T: Deserialize<'de> + Copy + Default")))]
     inner: [T; RAND_SIZE]
@@ -66,7 +66,7 @@
 }
 
 
-#[cfg(feature="serde1")]
+#[cfg(feature="serde")]
 pub(super) mod isaac_array_serde {
     const RAND_SIZE_LEN: usize = 8;
     const RAND_SIZE: usize = 1 << RAND_SIZE_LEN;
diff --git a/rand_isaac/src/lib.rs b/rand_isaac/src/lib.rs
index 285d631..84cdf21 100644
--- a/rand_isaac/src/lib.rs
+++ b/rand_isaac/src/lib.rs
@@ -16,16 +16,7 @@
 #![deny(missing_debug_implementations)]
 #![doc(test(attr(allow(unused_variables), deny(warnings))))]
 
-#![cfg_attr(not(all(feature="serde1", test)), no_std)]
-
-pub extern crate rand_core;
-
-#[cfg(feature="serde1")] extern crate serde;
-#[cfg(feature="serde1")] #[macro_use] extern crate serde_derive;
-
-// To test serialization we need bincode and the standard library
-#[cfg(all(feature="serde1", test))] extern crate bincode;
-#[cfg(all(feature="serde1", test))] extern crate std as core;
+#![cfg_attr(not(all(feature="serde", test)), no_std)]
 
 pub mod isaac;
 pub mod isaac64;
diff --git a/rand_pcg/CHANGELOG.md b/rand_pcg/CHANGELOG.md
index 6957224..a9b82fd 100644
--- a/rand_pcg/CHANGELOG.md
+++ b/rand_pcg/CHANGELOG.md
@@ -4,6 +4,11 @@
 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).
 
+## [0.2.0] - 2019-06-12
+- Add `Lcg128Xsl64` aka `Pcg64`
+- Bump minor crate version since rand_core bump is a breaking change
+- Switch to Edition 2018
+
 ## [0.1.2] - 2019-02-23
 - require `bincode` 1.1.2 for i128 auto-detection
 - make `bincode` a dev-dependency again #663
diff --git a/rand_pcg/Cargo.toml b/rand_pcg/Cargo.toml
index 9c3d501..e77c2c6 100644
--- a/rand_pcg/Cargo.toml
+++ b/rand_pcg/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "rand_pcg"
-version = "0.1.2"
+version = "0.2.0"
 authors = ["The Rand Project Developers"]
 license = "MIT/Apache-2.0"
 readme = "README.md"
@@ -12,19 +12,18 @@
 """
 keywords = ["random", "rng", "pcg"]
 categories = ["algorithms", "no-std"]
-build = "build.rs"
+edition = "2018"
 
 [badges]
 travis-ci = { repository = "rust-random/rand" }
 appveyor = { repository = "rust-random/rand" }
 
 [features]
-serde1 = ["serde", "serde_derive"]
+serde1 = ["serde"]
 
 [dependencies]
 rand_core = { path = "../rand_core", version = "0.5" }
-serde = { version = "1", optional = true }
-serde_derive = { version = "^1.0.38", optional = true }
+serde = { version = "1", features = ["derive"], optional = true }
 
 [dev-dependencies]
 # This is for testing serde, unfortunately we can't specify feature-gated dev
diff --git a/rand_pcg/build.rs b/rand_pcg/build.rs
deleted file mode 100644
index 06e12a4..0000000
--- a/rand_pcg/build.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-extern crate autocfg;
-
-fn main() {
-    println!("cargo:rerun-if-changed=build.rs");
-    let ac = autocfg::new();
-    ac.emit_rustc_version(1, 26);
-}
diff --git a/rand_pcg/src/lib.rs b/rand_pcg/src/lib.rs
index 9648e85..9ebfb0b 100644
--- a/rand_pcg/src/lib.rs
+++ b/rand_pcg/src/lib.rs
@@ -17,11 +17,12 @@
 //! -   `Pcg32` aka `Lcg64Xsh32`, officially known as `pcg32`, a general
 //!     purpose RNG. This is a good choice on both 32-bit and 64-bit CPUs
 //!     (for 32-bit output).
-//! -   `Pcg64Mcg` aka `Mcg128Xsl64`, officially known as `mcg_xsl_rr_128_64`,
+//! -   `Pcg64` aka `Lcg128Xsl64`, officially known as `pcg64`, a general
+//!     purpose RNG. This is a good choice on 64-bit CPUs.
+//! -   `Pcg64Mcg` aka `Mcg128Xsl64`, officially known as `pcg64_fast`,
 //!     a general purpose RNG using 128-bit multiplications. This has poor
 //!     performance on 32-bit CPUs but is a good choice on 64-bit CPUs for
-//!     both 32-bit and 64-bit output. (Note: this RNG is only available using
-//!     Rust 1.26 or later.)
+//!     both 32-bit and 64-bit output.
 //!
 //! Both of these use 16 bytes of state and 128-bit seeds, and are considered
 //! value-stable (i.e. any change affecting the output given a fixed seed would
@@ -36,13 +37,11 @@
 
 #![no_std]
 
-pub extern crate rand_core;
-
-#[cfg(feature="serde1")] extern crate serde;
-#[cfg(feature="serde1")] #[macro_use] extern crate serde_derive;
-
 mod pcg64;
-#[cfg(all(rustc_1_26, not(target_os = "emscripten")))] mod pcg128;
+#[cfg(not(target_os = "emscripten"))] mod pcg128;
 
 pub use self::pcg64::{Pcg32, Lcg64Xsh32};
-#[cfg(all(rustc_1_26, not(target_os = "emscripten")))] pub use self::pcg128::{Pcg64Mcg, Mcg128Xsl64};
+#[cfg(not(target_os = "emscripten"))] pub use self::pcg128::{
+        Pcg64, Lcg128Xsl64,
+        Pcg64Mcg, Mcg128Xsl64,
+};
diff --git a/rand_pcg/src/pcg128.rs b/rand_pcg/src/pcg128.rs
index 9aff506..eb462f7 100644
--- a/rand_pcg/src/pcg128.rs
+++ b/rand_pcg/src/pcg128.rs
@@ -16,6 +16,107 @@
 use core::fmt;
 use core::mem::transmute;
 use rand_core::{RngCore, SeedableRng, Error, le};
+#[cfg(feature="serde1")] use serde::{Serialize, Deserialize};
+
+/// A PCG random number generator (XSL RR 128/64 (LCG) variant).
+///
+/// Permuted Congruential Generator with 128-bit state, internal Linear
+/// Congruential Generator, and 64-bit output via "xorshift low (bits),
+/// random rotation" output function.
+///
+/// This is a 128-bit LCG with explicitly chosen stream with the PCG-XSL-RR
+/// output function. This combination is the standard `pcg64`.
+///
+/// Despite the name, this implementation uses 32 bytes (256 bit) space
+/// comprising 128 bits of state and 128 bits stream selector. These are both
+/// set by `SeedableRng`, using a 256-bit seed.
+#[derive(Clone)]
+#[cfg_attr(feature="serde1", derive(Serialize,Deserialize))]
+pub struct Lcg128Xsl64 {
+    state: u128,
+    increment: u128,
+}
+
+/// `Lcg128Xsl64` is also officially known as `pcg64`.
+pub type Pcg64 = Lcg128Xsl64;
+
+impl Lcg128Xsl64 {
+    /// Construct an instance compatible with PCG seed and stream.
+    ///
+    /// Note that PCG specifies default values for both parameters:
+    ///
+    /// - `state = 0xcafef00dd15ea5e5`
+    /// - `stream = 0xa02bdbf7bb3c0a7ac28fa16a64abf96`
+    pub fn new(state: u128, stream: u128) -> Self {
+        // The increment must be odd, hence we discard one bit:
+        let increment = (stream << 1) | 1;
+        Lcg128Xsl64::from_state_incr(state, increment)
+    }
+
+    #[inline]
+    fn from_state_incr(state: u128, increment: u128) -> Self {
+        let mut pcg = Lcg128Xsl64 { state, increment };
+        // Move away from inital value:
+        pcg.state = pcg.state.wrapping_add(pcg.increment);
+        pcg.step();
+        pcg
+    }
+
+    #[inline]
+    fn step(&mut self) {
+        // prepare the LCG for the next round
+        self.state = self.state
+            .wrapping_mul(MULTIPLIER)
+            .wrapping_add(self.increment);
+    }
+}
+
+// Custom Debug implementation that does not expose the internal state
+impl fmt::Debug for Lcg128Xsl64 {
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        write!(f, "Lcg128Xsl64 {{}}")
+    }
+}
+
+/// We use a single 255-bit seed to initialise the state and select a stream.
+/// One `seed` bit (lowest bit of `seed[8]`) is ignored.
+impl SeedableRng for Lcg128Xsl64 {
+    type Seed = [u8; 32];
+
+    fn from_seed(seed: Self::Seed) -> Self {
+        let mut seed_u64 = [0u64; 4];
+        le::read_u64_into(&seed, &mut seed_u64);
+        let state = (seed_u64[0] as u128) | ((seed_u64[1] as u128) << 64);
+        let incr = (seed_u64[2] as u128) | ((seed_u64[3] as u128) << 64);
+
+        // The increment must be odd, hence we discard one bit:
+        Lcg128Xsl64::from_state_incr(state, incr | 1)
+    }
+}
+
+impl RngCore for Lcg128Xsl64 {
+    #[inline]
+    fn next_u32(&mut self) -> u32 {
+        self.next_u64() as u32
+    }
+
+    #[inline]
+    fn next_u64(&mut self) -> u64 {
+        self.step();
+        output_xsl_rr(self.state)
+    }
+
+    #[inline]
+    fn fill_bytes(&mut self, dest: &mut [u8]) {
+        fill_bytes_impl(self, dest)
+    }
+
+    #[inline]
+    fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), Error> {
+        Ok(self.fill_bytes(dest))
+    }
+}
+
 
 /// A PCG random number generator (XSL 128/64 (MCG) variant).
 ///
@@ -23,19 +124,18 @@
 /// Congruential Generator, and 64-bit output via "xorshift low (bits),
 /// random rotation" output function.
 ///
-/// This is a 128-bit MCG with the PCG-XSL-RR output function.
+/// This is a 128-bit MCG with the PCG-XSL-RR output function, also known as
+/// `pcg64_fast`.
 /// Note that compared to the standard `pcg64` (128-bit LCG with PCG-XSL-RR
 /// output function), this RNG is faster, also has a long cycle, and still has
 /// good performance on statistical tests.
-///
-/// Note: this RNG is only available using Rust 1.26 or later.
 #[derive(Clone)]
 #[cfg_attr(feature="serde1", derive(Serialize,Deserialize))]
 pub struct Mcg128Xsl64 {
     state: u128,
 }
 
-/// A friendly name for `Mcg128Xsl64`.
+/// A friendly name for `Mcg128Xsl64` (also known as `pcg64_fast`).
 pub type Pcg64Mcg = Mcg128Xsl64;
 
 impl Mcg128Xsl64 {
@@ -80,39 +180,13 @@
 
     #[inline]
     fn next_u64(&mut self) -> u64 {
-        // prepare the LCG for the next round
-        let state = self.state.wrapping_mul(MULTIPLIER);
-        self.state = state;
-
-        // Output function XSL RR ("xorshift low (bits), random rotation")
-        // Constants are for 128-bit state, 64-bit output
-        const XSHIFT: u32 = 64;     // (128 - 64 + 64) / 2
-        const ROTATE: u32 = 122;    // 128 - 6
-
-        let rot = (state >> ROTATE) as u32;
-        let xsl = ((state >> XSHIFT) as u64) ^ (state as u64);
-        xsl.rotate_right(rot)
+        self.state = self.state.wrapping_mul(MULTIPLIER);
+        output_xsl_rr(self.state)
     }
 
     #[inline]
     fn fill_bytes(&mut self, dest: &mut [u8]) {
-        // specialisation of impls::fill_bytes_via_next; approx 3x faster
-        let mut left = dest;
-        while left.len() >= 8 {
-            let (l, r) = {left}.split_at_mut(8);
-            left = r;
-            let chunk: [u8; 8] = unsafe {
-                transmute(self.next_u64().to_le())
-            };
-            l.copy_from_slice(&chunk);
-        }
-        let n = left.len();
-        if n > 0 {
-            let chunk: [u8; 8] = unsafe {
-                transmute(self.next_u64().to_le())
-            };
-            left.copy_from_slice(&chunk[..n]);
-        }
+        fill_bytes_impl(self, dest)
     }
 
     #[inline]
@@ -120,3 +194,35 @@
         Ok(self.fill_bytes(dest))
     }
 }
+
+#[inline(always)]
+fn output_xsl_rr(state: u128) -> u64 {
+    // Output function XSL RR ("xorshift low (bits), random rotation")
+    // Constants are for 128-bit state, 64-bit output
+    const XSHIFT: u32 = 64;     // (128 - 64 + 64) / 2
+    const ROTATE: u32 = 122;    // 128 - 6
+
+    let rot = (state >> ROTATE) as u32;
+    let xsl = ((state >> XSHIFT) as u64) ^ (state as u64);
+    xsl.rotate_right(rot)
+}
+
+#[inline(always)]
+fn fill_bytes_impl<R: RngCore + ?Sized>(rng: &mut R, dest: &mut [u8]) {
+    let mut left = dest;
+    while left.len() >= 8 {
+        let (l, r) = {left}.split_at_mut(8);
+        left = r;
+        let chunk: [u8; 8] = unsafe {
+            transmute(rng.next_u64().to_le())
+        };
+        l.copy_from_slice(&chunk);
+    }
+    let n = left.len();
+    if n > 0 {
+        let chunk: [u8; 8] = unsafe {
+            transmute(rng.next_u64().to_le())
+        };
+        left.copy_from_slice(&chunk[..n]);
+    }
+}
diff --git a/rand_pcg/src/pcg64.rs b/rand_pcg/src/pcg64.rs
index 9177ec2..dd14530 100644
--- a/rand_pcg/src/pcg64.rs
+++ b/rand_pcg/src/pcg64.rs
@@ -11,8 +11,8 @@
 //! PCG random number generators
 
 use core::fmt;
-use core::mem::transmute;
 use rand_core::{RngCore, SeedableRng, Error, le, impls};
+#[cfg(feature="serde1")] use serde::{Serialize, Deserialize};
 
 // This is the default multiplier used by PCG for 64-bit state.
 const MULTIPLIER: u64 = 6364136223846793005;
@@ -45,7 +45,8 @@
     /// Note that PCG specifies default values for both parameters:
     ///
     /// - `state = 0xcafef00dd15ea5e5`
-    /// - `stream = 721347520444481703`
+    /// - `stream = 0xa02bdbf7bb3c0a7`
+    // Note: stream is 1442695040888963407u64 >> 1
     pub fn new(state: u64, stream: u64) -> Self {
         // The increment must be odd, hence we discard one bit:
         let increment = (stream << 1) | 1;
@@ -115,23 +116,7 @@
 
     #[inline]
     fn fill_bytes(&mut self, dest: &mut [u8]) {
-        // specialisation of impls::fill_bytes_via_next; approx 40% faster
-        let mut left = dest;
-        while left.len() >= 4 {
-            let (l, r) = {left}.split_at_mut(4);
-            left = r;
-            let chunk: [u8; 4] = unsafe {
-                transmute(self.next_u32().to_le())
-            };
-            l.copy_from_slice(&chunk);
-        }
-        let n = left.len();
-        if n > 0 {
-            let chunk: [u8; 4] = unsafe {
-                transmute(self.next_u32().to_le())
-            };
-            left.copy_from_slice(&chunk[..n]);
-        }
+        impls::fill_bytes_via_next(self, dest)
     }
 
     #[inline]
diff --git a/rand_pcg/tests/lcg128xsl64.rs b/rand_pcg/tests/lcg128xsl64.rs
new file mode 100644
index 0000000..efc72ff
--- /dev/null
+++ b/rand_pcg/tests/lcg128xsl64.rs
@@ -0,0 +1,55 @@
+use rand_core::{RngCore, SeedableRng};
+use rand_pcg::{Lcg128Xsl64, Pcg64};
+
+#[test]
+fn test_lcg128xsl64_construction() {
+    // Test that various construction techniques produce a working RNG.
+    let seed = [1,2,3,4, 5,6,7,8, 9,10,11,12, 13,14,15,16,
+            17,18,19,20, 21,22,23,24, 25,26,27,28, 29,30,31,32];
+    let mut rng1 = Lcg128Xsl64::from_seed(seed);
+    assert_eq!(rng1.next_u64(), 8740028313290271629);
+
+    let mut rng2 = Lcg128Xsl64::from_rng(&mut rng1).unwrap();
+    assert_eq!(rng2.next_u64(), 1922280315005786345);
+
+    let mut rng3 = Lcg128Xsl64::seed_from_u64(0);
+    assert_eq!(rng3.next_u64(), 2354861276966075475);
+
+    // This is the same as Lcg128Xsl64, so we only have a single test:
+    let mut rng4 = Pcg64::seed_from_u64(0);
+    assert_eq!(rng4.next_u64(), 2354861276966075475);
+}
+
+#[test]
+fn test_lcg128xsl64_true_values() {
+    // Numbers copied from official test suite (C version).
+    let mut rng = Lcg128Xsl64::new(42, 54);
+
+    let mut results = [0u64; 6];
+    for i in results.iter_mut() { *i = rng.next_u64(); }
+    let expected: [u64; 6] = [0x86b1da1d72062b68, 0x1304aa46c9853d39,
+        0xa3670e9e0dd50358, 0xf9090e529a7dae00, 0xc85b9fd837996f2c, 0x606121f8e3919196];
+    assert_eq!(results, expected);
+}
+
+#[cfg(feature="serde1")]
+#[test]
+fn test_lcg128xsl64_serde() {
+    use bincode;
+    use std::io::{BufWriter, BufReader};
+
+    let mut rng = Lcg128Xsl64::seed_from_u64(0);
+
+    let buf: Vec<u8> = Vec::new();
+    let mut buf = BufWriter::new(buf);
+    bincode::serialize_into(&mut buf, &rng).expect("Could not serialize");
+
+    let buf = buf.into_inner().unwrap();
+    let mut read = BufReader::new(&buf[..]);
+    let mut deserialized: Lcg128Xsl64 = bincode::deserialize_from(&mut read)
+        .expect("Could not deserialize");
+
+    for _ in 0..16 {
+        assert_eq!(rng.next_u64(), deserialized.next_u64());
+    }
+}
diff --git a/rand_pcg/tests/lcg64xsh32.rs b/rand_pcg/tests/lcg64xsh32.rs
index 775b12c..e05bcc1 100644
--- a/rand_pcg/tests/lcg64xsh32.rs
+++ b/rand_pcg/tests/lcg64xsh32.rs
@@ -1,7 +1,3 @@
-extern crate rand_pcg;
-extern crate rand_core;
-#[cfg(all(feature="serde1", test))] extern crate bincode;
-
 use rand_core::{RngCore, SeedableRng};
 use rand_pcg::{Lcg64Xsh32, Pcg32};
 
diff --git a/rand_pcg/tests/mcg128xsl64.rs b/rand_pcg/tests/mcg128xsl64.rs
index 3279536..d58fa75 100644
--- a/rand_pcg/tests/mcg128xsl64.rs
+++ b/rand_pcg/tests/mcg128xsl64.rs
@@ -1,8 +1,3 @@
-#![cfg(rustc_1_26)]
-extern crate rand_pcg;
-extern crate rand_core;
-#[cfg(all(feature="serde1", test))] extern crate bincode;
-
 use rand_core::{RngCore, SeedableRng};
 use rand_pcg::{Mcg128Xsl64, Pcg64Mcg};
 
diff --git a/rand_xorshift/CHANGELOG.md b/rand_xorshift/CHANGELOG.md
index 78abf6b..ce3098a 100644
--- a/rand_xorshift/CHANGELOG.md
+++ b/rand_xorshift/CHANGELOG.md
@@ -4,7 +4,11 @@
 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).
 
-## [0.1.2] - 2019-06-06
+## [0.2.0] - 2019-06-12
+- Bump minor crate version since rand_core bump is a breaking change
+- Switch to Edition 2018
+
+## [0.1.2] - 2019-06-06 - yanked
 - Bump `rand_core` version
 - Make XorShiftRng::from_rng portable by enforcing Endianness (#815)
 
diff --git a/rand_xorshift/Cargo.toml b/rand_xorshift/Cargo.toml
index 86ad39d..c47bcc9 100644
--- a/rand_xorshift/Cargo.toml
+++ b/rand_xorshift/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "rand_xorshift"
-version = "0.1.2"
+version = "0.2.0"
 authors = ["The Rand Project Developers", "The Rust Project Developers"]
 license = "MIT/Apache-2.0"
 readme = "README.md"
@@ -12,18 +12,18 @@
 """
 keywords = ["random", "rng", "xorshift"]
 categories = ["algorithms", "no-std"]
+edition = "2018"
 
 [badges]
 travis-ci = { repository = "rust-random/rand" }
 appveyor = { repository = "rust-random/rand" }
 
 [features]
-serde1 = ["serde", "serde_derive"]
+serde1 = ["serde"]
 
 [dependencies]
 rand_core = { path = "../rand_core", version = "0.5" }
-serde = { version = "1", optional = true }
-serde_derive = { version = "^1.0.38", optional = true }
+serde = { version = "1", features = ["derive"], optional = true }
 
 [dev-dependencies]
 # This is for testing serde, unfortunately we can't specify feature-gated dev
diff --git a/rand_xorshift/src/lib.rs b/rand_xorshift/src/lib.rs
index f6301b1..769921f 100644
--- a/rand_xorshift/src/lib.rs
+++ b/rand_xorshift/src/lib.rs
@@ -17,14 +17,10 @@
 
 #![no_std]
 
-pub extern crate rand_core;
-
-#[cfg(feature="serde1")] extern crate serde;
-#[cfg(feature="serde1")] #[macro_use] extern crate serde_derive;
-
 use core::num::Wrapping as w;
 use core::{fmt, slice};
 use rand_core::{RngCore, SeedableRng, Error, impls, le};
+#[cfg(feature="serde1")] use serde::{Serialize, Deserialize};
 
 /// An Xorshift random number generator.
 ///
diff --git a/rand_xorshift/tests/mod.rs b/rand_xorshift/tests/mod.rs
index 32f6b94..7ecdeae 100644
--- a/rand_xorshift/tests/mod.rs
+++ b/rand_xorshift/tests/mod.rs
@@ -1,7 +1,3 @@
-extern crate rand_core;
-extern crate rand_xorshift;
-#[cfg(all(feature="serde1", test))] extern crate bincode;
-
 use rand_core::{RngCore, SeedableRng};
 use rand_xorshift::XorShiftRng;
 
diff --git a/rand_xoshiro/CHANGELOG.md b/rand_xoshiro/CHANGELOG.md
index 8a32c6a..0edf848 100644
--- a/rand_xoshiro/CHANGELOG.md
+++ b/rand_xoshiro/CHANGELOG.md
@@ -4,7 +4,11 @@
 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).
 
-## [0.2.1] - 2019-06-06
+## [0.3.0] - 2019-06-12
+- Bump minor crate version since rand_core bump is a breaking change
+- Switch to Edition 2018
+
+## [0.2.1] - 2019-06-06 - yanked
 - Bump `rand_core` version
 - Document crate features in README
 
diff --git a/rand_xoshiro/Cargo.toml b/rand_xoshiro/Cargo.toml
index 94b0a29..43a5b88 100644
--- a/rand_xoshiro/Cargo.toml
+++ b/rand_xoshiro/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "rand_xoshiro"
-version = "0.2.1" # NB: When modifying, also modify html_root_url in lib.rs
+version = "0.3.0" # NB: When modifying, also modify html_root_url in lib.rs
 authors = ["The Rand Project Developers"]
 license = "MIT/Apache-2.0"
 readme = "README.md"
@@ -10,15 +10,15 @@
 description = "Xoshiro, xoroshiro and splitmix64 random number generators"
 keywords = ["random", "rng"]
 categories = ["algorithms"]
+edition = "2018"
 
 [features]
-serde1 = ["serde", "serde_derive"]
+serde1 = ["serde"]
 
 [dependencies]
 byteorder = { version = "1", default-features=false }
 rand_core = { path = "../rand_core", version = "0.5" }
-serde = { version = "1", optional=true }
-serde_derive = { version = "^1.0.38", optional=true }
+serde = { version = "1", features = ["derive"], optional=true }
 
 [dev-dependencies]
 # This is for testing serde, unfortunately we can't specify feature-gated dev
diff --git a/rand_xoshiro/src/common.rs b/rand_xoshiro/src/common.rs
index 9ee09e2..b188dd6 100644
--- a/rand_xoshiro/src/common.rs
+++ b/rand_xoshiro/src/common.rs
@@ -9,7 +9,7 @@
 /// Initialize a RNG from a `u64` seed using `SplitMix64`.
 macro_rules! from_splitmix {
     ($seed:expr) => { {
-        let mut rng = ::SplitMix64::seed_from_u64($seed);
+        let mut rng = crate::SplitMix64::seed_from_u64($seed);
         Self::from_rng(&mut rng).unwrap()
     } }
 }
diff --git a/rand_xoshiro/src/lib.rs b/rand_xoshiro/src/lib.rs
index 4ea92cb..42ee963 100644
--- a/rand_xoshiro/src/lib.rs
+++ b/rand_xoshiro/src/lib.rs
@@ -58,16 +58,12 @@
 
 #![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk.png",
        html_favicon_url = "https://www.rust-lang.org/favicon.ico",
-       html_root_url = "https://docs.rs/rand_xoshiro/0.2.1")]
+       html_root_url = "https://docs.rs/rand_xoshiro/0.3.0")]
 
 #![deny(missing_docs)]
 #![deny(missing_debug_implementations)]
 #![cfg_attr(feature = "cargo-clippy", allow(unreadable_literal))]
 #![no_std]
-extern crate byteorder;
-pub extern crate rand_core;
-#[cfg(feature="serde1")] extern crate serde;
-#[cfg(feature="serde1")] #[macro_use] extern crate serde_derive;
 
 #[macro_use]
 mod common;
@@ -83,6 +79,7 @@
 mod xoroshiro64starstar;
 mod xoroshiro64star;
 
+pub use rand_core;
 pub use splitmix64::SplitMix64;
 pub use xoshiro128starstar::Xoshiro128StarStar;
 pub use xoshiro128plus::Xoshiro128Plus;
diff --git a/rand_xoshiro/src/splitmix64.rs b/rand_xoshiro/src/splitmix64.rs
index d83f9c9..9a29faf 100644
--- a/rand_xoshiro/src/splitmix64.rs
+++ b/rand_xoshiro/src/splitmix64.rs
@@ -6,6 +6,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+#[cfg(feature="serde1")] use serde::{Serialize, Deserialize};
 use byteorder::{ByteOrder, LittleEndian};
 use rand_core::le::read_u64_into;
 use rand_core::impls::fill_bytes_via_next;
diff --git a/rand_xoshiro/src/xoroshiro128plus.rs b/rand_xoshiro/src/xoroshiro128plus.rs
index 2a3e095..243b427 100644
--- a/rand_xoshiro/src/xoroshiro128plus.rs
+++ b/rand_xoshiro/src/xoroshiro128plus.rs
@@ -6,6 +6,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+#[cfg(feature="serde1")] use serde::{Serialize, Deserialize};
 use rand_core;
 use rand_core::le::read_u64_into;
 use rand_core::impls::fill_bytes_via_next;
diff --git a/rand_xoshiro/src/xoroshiro128starstar.rs b/rand_xoshiro/src/xoroshiro128starstar.rs
index a15fc50..32f13c8 100644
--- a/rand_xoshiro/src/xoroshiro128starstar.rs
+++ b/rand_xoshiro/src/xoroshiro128starstar.rs
@@ -6,6 +6,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+#[cfg(feature="serde1")] use serde::{Serialize, Deserialize};
 use rand_core;
 use rand_core::le::read_u64_into;
 use rand_core::impls::fill_bytes_via_next;
diff --git a/rand_xoshiro/src/xoroshiro64star.rs b/rand_xoshiro/src/xoroshiro64star.rs
index 7237411..6bb708a 100644
--- a/rand_xoshiro/src/xoroshiro64star.rs
+++ b/rand_xoshiro/src/xoroshiro64star.rs
@@ -6,6 +6,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+#[cfg(feature="serde1")] use serde::{Serialize, Deserialize};
 use rand_core;
 use rand_core::le::read_u32_into;
 use rand_core::impls::{fill_bytes_via_next, next_u64_via_u32};
diff --git a/rand_xoshiro/src/xoroshiro64starstar.rs b/rand_xoshiro/src/xoroshiro64starstar.rs
index fef840c..8e1aea1 100644
--- a/rand_xoshiro/src/xoroshiro64starstar.rs
+++ b/rand_xoshiro/src/xoroshiro64starstar.rs
@@ -6,6 +6,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+#[cfg(feature="serde1")] use serde::{Serialize, Deserialize};
 use rand_core;
 use rand_core::le::read_u32_into;
 use rand_core::impls::{fill_bytes_via_next, next_u64_via_u32};
diff --git a/rand_xoshiro/src/xoshiro128plus.rs b/rand_xoshiro/src/xoshiro128plus.rs
index e24fa45..9bcdaf3 100644
--- a/rand_xoshiro/src/xoshiro128plus.rs
+++ b/rand_xoshiro/src/xoshiro128plus.rs
@@ -6,6 +6,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+#[cfg(feature="serde1")] use serde::{Serialize, Deserialize};
 use rand_core::impls::{next_u64_via_u32, fill_bytes_via_next};
 use rand_core::le::read_u32_into;
 use rand_core::{SeedableRng, RngCore, Error};
diff --git a/rand_xoshiro/src/xoshiro128starstar.rs b/rand_xoshiro/src/xoshiro128starstar.rs
index ee485f3..aa1c4bf 100644
--- a/rand_xoshiro/src/xoshiro128starstar.rs
+++ b/rand_xoshiro/src/xoshiro128starstar.rs
@@ -6,6 +6,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+#[cfg(feature="serde1")] use serde::{Serialize, Deserialize};
 use rand_core::impls::{next_u64_via_u32, fill_bytes_via_next};
 use rand_core::le::read_u32_into;
 use rand_core::{SeedableRng, RngCore, Error};
diff --git a/rand_xoshiro/src/xoshiro256plus.rs b/rand_xoshiro/src/xoshiro256plus.rs
index 4e577b6..0821abc 100644
--- a/rand_xoshiro/src/xoshiro256plus.rs
+++ b/rand_xoshiro/src/xoshiro256plus.rs
@@ -6,6 +6,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+#[cfg(feature="serde1")] use serde::{Serialize, Deserialize};
 use rand_core::impls::fill_bytes_via_next;
 use rand_core::le::read_u64_into;
 use rand_core::{SeedableRng, RngCore, Error};
diff --git a/rand_xoshiro/src/xoshiro256starstar.rs b/rand_xoshiro/src/xoshiro256starstar.rs
index 1c2e83b..2c9aacc 100644
--- a/rand_xoshiro/src/xoshiro256starstar.rs
+++ b/rand_xoshiro/src/xoshiro256starstar.rs
@@ -6,6 +6,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+#[cfg(feature="serde1")] use serde::{Serialize, Deserialize};
 use rand_core::impls::fill_bytes_via_next;
 use rand_core::le::read_u64_into;
 use rand_core::{SeedableRng, RngCore, Error};
diff --git a/rand_xoshiro/src/xoshiro512plus.rs b/rand_xoshiro/src/xoshiro512plus.rs
index bc4823a..68ac385 100644
--- a/rand_xoshiro/src/xoshiro512plus.rs
+++ b/rand_xoshiro/src/xoshiro512plus.rs
@@ -6,11 +6,12 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+#[cfg(feature="serde1")] use serde::{Serialize, Deserialize};
 use rand_core::impls::fill_bytes_via_next;
 use rand_core::le::read_u64_into;
 use rand_core::{SeedableRng, RngCore, Error};
 
-use Seed512;
+use crate::Seed512;
 
 /// A xoshiro512+ random number generator.
 ///
diff --git a/rand_xoshiro/src/xoshiro512starstar.rs b/rand_xoshiro/src/xoshiro512starstar.rs
index 3109f2b..92fc5fe 100644
--- a/rand_xoshiro/src/xoshiro512starstar.rs
+++ b/rand_xoshiro/src/xoshiro512starstar.rs
@@ -6,11 +6,12 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+#[cfg(feature="serde1")] use serde::{Serialize, Deserialize};
 use rand_core::impls::fill_bytes_via_next;
 use rand_core::le::read_u64_into;
 use rand_core::{SeedableRng, RngCore, Error};
 
-use Seed512;
+use crate::Seed512;
 
 /// A xoshiro512** random number generator.
 ///
