about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2017-06-06 19:32:43 -0700
committerAlex Crichton <alex@alexcrichton.com>2017-06-19 22:25:05 -0700
commitbe7ebdd512e8b4de29c0e0cf5aabf486e988867b (patch)
treebb4cfa3e4d8b47883518fc1fd6a34b613b63aae7
parent04145943a25c3b8c7e7d7fe8c2efb04f259c25fb (diff)
downloadrust-be7ebdd512e8b4de29c0e0cf5aabf486e988867b.tar.gz
rust-be7ebdd512e8b4de29c0e0cf5aabf486e988867b.zip
Bump version and stage0 compiler
-rw-r--r--src/Cargo.lock10
-rw-r--r--src/bootstrap/bin/rustc.rs19
-rw-r--r--src/bootstrap/bootstrap.py1
-rw-r--r--src/bootstrap/channel.rs2
-rw-r--r--src/bootstrap/check.rs1
-rw-r--r--src/bootstrap/lib.rs23
-rw-r--r--src/doc/unstable-book/src/library-features/question-mark-carrier.md13
-rw-r--r--src/liballoc_jemalloc/build.rs5
-rw-r--r--src/libarena/lib.rs2
-rw-r--r--src/libcore/intrinsics.rs14
-rw-r--r--src/libcore/ops/mod.rs3
-rw-r--r--src/libcore/ops/try.rs64
-rw-r--r--src/libcore/slice/mod.rs21
-rw-r--r--src/libflate/lib.rs2
-rw-r--r--src/libfmt_macros/lib.rs4
-rw-r--r--src/libgetopts/lib.rs4
-rw-r--r--src/libgraphviz/lib.rs2
-rw-r--r--src/libproc_macro_plugin/lib.rs3
-rw-r--r--src/librustc/lib.rs5
-rw-r--r--src/librustc_back/lib.rs4
-rw-r--r--src/librustc_bitflags/lib.rs2
-rw-r--r--src/librustc_borrowck/lib.rs4
-rw-r--r--src/librustc_const_eval/lib.rs4
-rw-r--r--src/librustc_const_math/lib.rs4
-rw-r--r--src/librustc_data_structures/lib.rs3
-rw-r--r--src/librustc_driver/lib.rs5
-rw-r--r--src/librustc_errors/lib.rs4
-rw-r--r--src/librustc_incremental/lib.rs4
-rw-r--r--src/librustc_lint/lib.rs4
-rw-r--r--src/librustc_llvm/lib.rs4
-rw-r--r--src/librustc_metadata/lib.rs3
-rw-r--r--src/librustc_mir/lib.rs4
-rw-r--r--src/librustc_passes/lib.rs4
-rw-r--r--src/librustc_platform_intrinsics/lib.rs2
-rw-r--r--src/librustc_plugin/lib.rs4
-rw-r--r--src/librustc_privacy/lib.rs4
-rw-r--r--src/librustc_resolve/lib.rs4
-rw-r--r--src/librustc_save_analysis/lib.rs4
-rw-r--r--src/librustc_trans/lib.rs4
-rw-r--r--src/librustc_typeck/lib.rs5
-rw-r--r--src/librustdoc/lib.rs4
-rw-r--r--src/libserialize/lib.rs4
-rw-r--r--src/libsyntax/lib.rs4
-rw-r--r--src/libsyntax_ext/lib.rs4
-rw-r--r--src/libsyntax_pos/lib.rs8
-rw-r--r--src/libterm/lib.rs3
-rw-r--r--src/stage0.txt2
47 files changed, 24 insertions, 283 deletions
diff --git a/src/Cargo.lock b/src/Cargo.lock
index f99ffc6472d..5e92c21e83d 100644
--- a/src/Cargo.lock
+++ b/src/Cargo.lock
@@ -329,7 +329,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "gcc 0.3.51 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
- "libz-sys 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libz-sys 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)",
  "openssl-sys 0.9.14 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
  "vcpkg 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -621,7 +621,7 @@ dependencies = [
  "gcc 0.3.51 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
  "libssh2-sys 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "libz-sys 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libz-sys 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)",
  "openssl-sys 0.9.14 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
@@ -633,14 +633,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "cmake 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
- "libz-sys 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libz-sys 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)",
  "openssl-sys 0.9.14 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "libz-sys"
-version = "1.0.14"
+version = "1.0.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "gcc 0.3.51 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2071,7 +2071,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 "checksum libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)" = "38f5c2b18a287cf78b4097db62e20f43cace381dc76ae5c0a3073067f78b7ddc"
 "checksum libgit2-sys 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "df18a822100352d9863b302faf6f8f25c0e77f0e60feb40e5dbe1238b7f13b1d"
 "checksum libssh2-sys 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0db4ec23611747ef772db1c4d650f8bd762f07b461727ec998f953c614024b75"
-"checksum libz-sys 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)" = "e70195f655a44af531ad7135b1ec2a0a82522b451fe09730fbb25674a85996e7"
+"checksum libz-sys 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)" = "3fdd64ef8ee652185674455c1d450b83cbc8ad895625d543b5324d923f82e4d8"
 "checksum log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "880f77541efa6e5cc74e76910c9884d9859683118839d6a1dc3b11e63512565b"
 "checksum lzma-sys 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "013fa6506eb7d26040c46dab9ecb7ccb4e2896b5bf24a9d65932501ea9f67af8"
 "checksum matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "100aabe6b8ff4e4a7e32c1c13523379802df0772b82466207ac25b013f193376"
diff --git a/src/bootstrap/bin/rustc.rs b/src/bootstrap/bin/rustc.rs
index d048645d4d5..12152fc4399 100644
--- a/src/bootstrap/bin/rustc.rs
+++ b/src/bootstrap/bin/rustc.rs
@@ -118,13 +118,6 @@ fn main() {
             cmd.arg("-Cprefer-dynamic");
         }
 
-        // Pass the `rustbuild` feature flag to crates which rustbuild is
-        // building. See the comment in bootstrap/lib.rs where this env var is
-        // set for more details.
-        if env::var_os("RUSTBUILD_UNSTABLE").is_some() {
-            cmd.arg("--cfg").arg("rustbuild");
-        }
-
         // Help the libc crate compile by assisting it in finding the MUSL
         // native libraries.
         if let Some(s) = env::var_os("MUSL_ROOT") {
@@ -218,11 +211,7 @@ fn main() {
                 // do that we pass a weird flag to the compiler to get it to do
                 // so. Note that this is definitely a hack, and we should likely
                 // flesh out rpath support more fully in the future.
-                //
-                // FIXME: remove condition after next stage0
-                if stage != "0" {
-                    cmd.arg("-Z").arg("osx-rpath-install-name");
-                }
+                cmd.arg("-Z").arg("osx-rpath-install-name");
                 Some("-Wl,-rpath,@loader_path/../lib")
             } else if !target.contains("windows") {
                 Some("-Wl,-rpath,$ORIGIN/../lib")
@@ -242,12 +231,8 @@ fn main() {
         // Force all crates compiled by this compiler to (a) be unstable and (b)
         // allow the `rustc_private` feature to link to other unstable crates
         // also in the sysroot.
-        //
-        // FIXME: remove condition after next stage0
         if env::var_os("RUSTC_FORCE_UNSTABLE").is_some() {
-            if stage != "0" {
-                cmd.arg("-Z").arg("force-unstable-if-unmarked");
-            }
+            cmd.arg("-Z").arg("force-unstable-if-unmarked");
         }
     }
 
diff --git a/src/bootstrap/bootstrap.py b/src/bootstrap/bootstrap.py
index 971064fe9fe..1d3b77916d6 100644
--- a/src/bootstrap/bootstrap.py
+++ b/src/bootstrap/bootstrap.py
@@ -385,6 +385,7 @@ class RustBuild(object):
         if self.clean and os.path.exists(build_dir):
             shutil.rmtree(build_dir)
         env = os.environ.copy()
+        env["RUSTC_BOOTSTRAP"] = '1'
         env["CARGO_TARGET_DIR"] = build_dir
         env["RUSTC"] = self.rustc()
         env["LD_LIBRARY_PATH"] = os.path.join(self.bin_root(), "lib") + \
diff --git a/src/bootstrap/channel.rs b/src/bootstrap/channel.rs
index 1b9536fba35..4664b1f765e 100644
--- a/src/bootstrap/channel.rs
+++ b/src/bootstrap/channel.rs
@@ -23,7 +23,7 @@ use build_helper::output;
 use Build;
 
 // The version number
-pub const CFG_RELEASE_NUM: &'static str = "1.19.0";
+pub const CFG_RELEASE_NUM: &'static str = "1.20.0";
 
 // An optional number to put after the label, e.g. '.2' -> '-beta.2'
 // Be sure to make this starts with a dot to conform to semver pre-release
diff --git a/src/bootstrap/check.rs b/src/bootstrap/check.rs
index 0d3cc2e0b1b..068efe18cce 100644
--- a/src/bootstrap/check.rs
+++ b/src/bootstrap/check.rs
@@ -672,6 +672,7 @@ pub fn bootstrap(build: &Build) {
     cmd.arg("test")
        .current_dir(build.src.join("src/bootstrap"))
        .env("CARGO_TARGET_DIR", build.out.join("bootstrap"))
+       .env("RUSTC_BOOTSTRAP", "1")
        .env("RUSTC", &build.rustc);
     if build.flags.cmd.no_fail_fast() {
         cmd.arg("--no-fail-fast");
diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs
index e0e6583b935..ca8cc3212d7 100644
--- a/src/bootstrap/lib.rs
+++ b/src/bootstrap/lib.rs
@@ -429,29 +429,6 @@ impl Build {
                  .env("RUSTC_SNAPSHOT_LIBDIR", self.rustc_libdir(compiler));
         }
 
-        // There are two invariants we must maintain:
-        // * stable crates cannot depend on unstable crates (general Rust rule),
-        // * crates that end up in the sysroot must be unstable (rustbuild rule).
-        //
-        // In order to do enforce the latter, we pass the env var
-        // `RUSTBUILD_UNSTABLE` down the line for any crates which will end up
-        // in the sysroot. We read this in bootstrap/bin/rustc.rs and if it is
-        // set, then we pass the `rustbuild` feature to rustc when building the
-        // the crate.
-        //
-        // In turn, crates that can be used here should recognise the `rustbuild`
-        // feature and opt-in to `rustc_private`.
-        //
-        // We can't always pass `rustbuild` because crates which are outside of
-        // the compiler, libs, and tests are stable and we don't want to make
-        // their deps unstable (since this would break the first invariant
-        // above).
-        //
-        // FIXME: remove this after next stage0
-        if mode != Mode::Tool && stage == 0 {
-            cargo.env("RUSTBUILD_UNSTABLE", "1");
-        }
-
         // Ignore incremental modes except for stage0, since we're
         // not guaranteeing correctness across builds if the compiler
         // is changing under your feet.`
diff --git a/src/doc/unstable-book/src/library-features/question-mark-carrier.md b/src/doc/unstable-book/src/library-features/question-mark-carrier.md
deleted file mode 100644
index a5e6965faec..00000000000
--- a/src/doc/unstable-book/src/library-features/question-mark-carrier.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# `question_mark_carrier`
-
-The tracking issue for this feature is: [#31436]
-
-[#31436]: https://github.com/rust-lang/rust/issues/31436
-
-------------------------
-
-This feature has been superseded by [`try_trait`][try_trait].
-
-It exists only in stage0 for bootstrapping.
-
-[try_trait]: library-features/try-trait.html
diff --git a/src/liballoc_jemalloc/build.rs b/src/liballoc_jemalloc/build.rs
index f3a0eebe698..23677bca9f1 100644
--- a/src/liballoc_jemalloc/build.rs
+++ b/src/liballoc_jemalloc/build.rs
@@ -154,6 +154,11 @@ fn main() {
     make.current_dir(&native.out_dir)
         .arg("build_lib_static");
 
+    // These are intended for mingw32-make which we don't use
+    if cfg!(windows) {
+        make.env_remove("MAKEFLAGS").env_remove("MFLAGS");
+    }
+
     // mingw make seems... buggy? unclear...
     if !host.contains("windows") {
         make.arg("-j")
diff --git a/src/libarena/lib.rs b/src/libarena/lib.rs
index 4338ac7fd02..8e3b3f2074d 100644
--- a/src/libarena/lib.rs
+++ b/src/libarena/lib.rs
@@ -19,7 +19,6 @@
 //! objects of a single type.
 
 #![crate_name = "arena"]
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
 #![crate_type = "rlib"]
 #![crate_type = "dylib"]
 #![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
@@ -33,7 +32,6 @@
 #![feature(dropck_eyepatch)]
 #![feature(generic_param_attrs)]
 #![feature(needs_drop)]
-#![cfg_attr(stage0, feature(staged_api))]
 #![cfg_attr(test, feature(test))]
 
 #![allow(deprecated)]
diff --git a/src/libcore/intrinsics.rs b/src/libcore/intrinsics.rs
index 8188c15a282..981ab5b6c46 100644
--- a/src/libcore/intrinsics.rs
+++ b/src/libcore/intrinsics.rs
@@ -572,7 +572,6 @@ extern "rust-intrinsic" {
     ///
     /// The `locality` argument must be a constant integer and is a temporal locality specifier
     /// ranging from (0) - no locality, to (3) - extremely local keep in cache
-    #[cfg(not(stage0))]
     pub fn prefetch_read_data<T>(data: *const T, locality: i32);
     /// The `prefetch` intrinsic is a hint to the code generator to insert a prefetch instruction
     /// if supported; otherwise, it is a noop.
@@ -581,7 +580,6 @@ extern "rust-intrinsic" {
     ///
     /// The `locality` argument must be a constant integer and is a temporal locality specifier
     /// ranging from (0) - no locality, to (3) - extremely local keep in cache
-    #[cfg(not(stage0))]
     pub fn prefetch_write_data<T>(data: *const T, locality: i32);
     /// The `prefetch` intrinsic is a hint to the code generator to insert a prefetch instruction
     /// if supported; otherwise, it is a noop.
@@ -590,7 +588,6 @@ extern "rust-intrinsic" {
     ///
     /// The `locality` argument must be a constant integer and is a temporal locality specifier
     /// ranging from (0) - no locality, to (3) - extremely local keep in cache
-    #[cfg(not(stage0))]
     pub fn prefetch_read_instruction<T>(data: *const T, locality: i32);
     /// The `prefetch` intrinsic is a hint to the code generator to insert a prefetch instruction
     /// if supported; otherwise, it is a noop.
@@ -599,20 +596,9 @@ extern "rust-intrinsic" {
     ///
     /// The `locality` argument must be a constant integer and is a temporal locality specifier
     /// ranging from (0) - no locality, to (3) - extremely local keep in cache
-    #[cfg(not(stage0))]
     pub fn prefetch_write_instruction<T>(data: *const T, locality: i32);
 }
 
-// Empty bootstrap implementations for stage0 compilation
-#[cfg(stage0)]
-pub fn prefetch_read_data<T>(_data: *const T, _locality: i32) { /* EMPTY */ }
-#[cfg(stage0)]
-pub fn prefetch_write_data<T>(_data: *const T, _locality: i32) { /* EMPTY */ }
-#[cfg(stage0)]
-pub fn prefetch_read_instruction<T>(_data: *const T, _locality: i32) { /* EMPTY */ }
-#[cfg(stage0)]
-pub fn prefetch_write_instruction<T>(_data: *const T, _locality: i32) { /* EMPTY */ }
-
 extern "rust-intrinsic" {
 
     pub fn atomic_fence();
diff --git a/src/libcore/ops/mod.rs b/src/libcore/ops/mod.rs
index 4e0389e5de4..a78f4fe28a6 100644
--- a/src/libcore/ops/mod.rs
+++ b/src/libcore/ops/mod.rs
@@ -186,9 +186,6 @@ pub use self::range::{Range, RangeFrom, RangeFull, RangeTo};
 #[unstable(feature = "inclusive_range", reason = "recently added, follows RFC", issue = "28237")]
 pub use self::range::{RangeInclusive, RangeToInclusive};
 
-#[unstable(feature = "question_mark_carrier", issue = "31436")]
-#[cfg(stage0)]
-pub use self::try::Carrier;
 #[unstable(feature = "try_trait", issue = "42327")]
 pub use self::try::Try;
 
diff --git a/src/libcore/ops/try.rs b/src/libcore/ops/try.rs
index cf75cf79fae..2f0639d1a60 100644
--- a/src/libcore/ops/try.rs
+++ b/src/libcore/ops/try.rs
@@ -8,70 +8,6 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-/// This trait has been superseded by the `Try` trait, but must remain
-/// here as `?` is still lowered to it in stage0 .
-#[cfg(stage0)]
-#[unstable(feature = "question_mark_carrier", issue = "31436")]
-pub trait Carrier {
-    /// The type of the value when computation succeeds.
-    type Success;
-    /// The type of the value when computation errors out.
-    type Error;
-
-    /// Create a `Carrier` from a success value.
-    fn from_success(_: Self::Success) -> Self;
-
-    /// Create a `Carrier` from an error value.
-    fn from_error(_: Self::Error) -> Self;
-
-    /// Translate this `Carrier` to another implementation of `Carrier` with the
-    /// same associated types.
-    fn translate<T>(self) -> T where T: Carrier<Success=Self::Success, Error=Self::Error>;
-}
-
-#[cfg(stage0)]
-#[unstable(feature = "question_mark_carrier", issue = "31436")]
-impl<U, V> Carrier for Result<U, V> {
-    type Success = U;
-    type Error = V;
-
-    fn from_success(u: U) -> Result<U, V> {
-        Ok(u)
-    }
-
-    fn from_error(e: V) -> Result<U, V> {
-        Err(e)
-    }
-
-    fn translate<T>(self) -> T
-        where T: Carrier<Success=U, Error=V>
-    {
-        match self {
-            Ok(u) => T::from_success(u),
-            Err(e) => T::from_error(e),
-        }
-    }
-}
-
-struct _DummyErrorType;
-
-impl Try for _DummyErrorType {
-    type Ok = ();
-    type Error = ();
-
-    fn into_result(self) -> Result<Self::Ok, Self::Error> {
-        Ok(())
-    }
-
-    fn from_ok(_: ()) -> _DummyErrorType {
-        _DummyErrorType
-    }
-
-    fn from_error(_: ()) -> _DummyErrorType {
-        _DummyErrorType
-    }
-}
-
 /// A trait for customizing the behaviour of the `?` operator.
 ///
 /// A type implementing `Try` is one that has a canonical way to view it
diff --git a/src/libcore/slice/mod.rs b/src/libcore/slice/mod.rs
index b13e19c0306..ce5da9ec2d5 100644
--- a/src/libcore/slice/mod.rs
+++ b/src/libcore/slice/mod.rs
@@ -1030,47 +1030,38 @@ impl<T> SliceIndex<[T]> for ops::RangeInclusive<usize> {
     }
 }
 
-#[cfg(stage0)] // The bootstrap compiler has a different `...` desugar
-fn inclusive(start: usize, end: usize) -> ops::RangeInclusive<usize> {
-    ops::RangeInclusive { start, end }
-}
-#[cfg(not(stage0))]
-fn inclusive(start: usize, end: usize) -> ops::RangeInclusive<usize> {
-    start...end
-}
-
 #[unstable(feature = "inclusive_range", reason = "recently added, follows RFC", issue = "28237")]
 impl<T> SliceIndex<[T]> for ops::RangeToInclusive<usize> {
     type Output = [T];
 
     #[inline]
     fn get(self, slice: &[T]) -> Option<&[T]> {
-        inclusive(0, self.end).get(slice)
+        (0...self.end).get(slice)
     }
 
     #[inline]
     fn get_mut(self, slice: &mut [T]) -> Option<&mut [T]> {
-        inclusive(0, self.end).get_mut(slice)
+        (0...self.end).get_mut(slice)
     }
 
     #[inline]
     unsafe fn get_unchecked(self, slice: &[T]) -> &[T] {
-        inclusive(0, self.end).get_unchecked(slice)
+        (0...self.end).get_unchecked(slice)
     }
 
     #[inline]
     unsafe fn get_unchecked_mut(self, slice: &mut [T]) -> &mut [T] {
-        inclusive(0, self.end).get_unchecked_mut(slice)
+        (0...self.end).get_unchecked_mut(slice)
     }
 
     #[inline]
     fn index(self, slice: &[T]) -> &[T] {
-        inclusive(0, self.end).index(slice)
+        (0...self.end).index(slice)
     }
 
     #[inline]
     fn index_mut(self, slice: &mut [T]) -> &mut [T] {
-        inclusive(0, self.end).index_mut(slice)
+        (0...self.end).index_mut(slice)
     }
 }
 
diff --git a/src/libflate/lib.rs b/src/libflate/lib.rs
index e0bea884f31..bc34e7810be 100644
--- a/src/libflate/lib.rs
+++ b/src/libflate/lib.rs
@@ -15,7 +15,6 @@
 //! [mz]: https://code.google.com/p/miniz/
 
 #![crate_name = "flate"]
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
 #![crate_type = "rlib"]
 #![crate_type = "dylib"]
 #![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
@@ -25,7 +24,6 @@
 #![deny(warnings)]
 
 #![feature(libc)]
-#![cfg_attr(stage0, feature(staged_api))]
 #![feature(unique)]
 #![cfg_attr(test, feature(rand))]
 
diff --git a/src/libfmt_macros/lib.rs b/src/libfmt_macros/lib.rs
index 967bfb6c990..493ce04f672 100644
--- a/src/libfmt_macros/lib.rs
+++ b/src/libfmt_macros/lib.rs
@@ -15,7 +15,6 @@
 //! generated instead.
 
 #![crate_name = "fmt_macros"]
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
 #![crate_type = "rlib"]
 #![crate_type = "dylib"]
 #![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
@@ -25,9 +24,6 @@
        test(attr(deny(warnings))))]
 #![deny(warnings)]
 
-#![cfg_attr(stage0, feature(staged_api))]
-#![feature(rustc_private)]
-
 pub use self::Piece::*;
 pub use self::Position::*;
 pub use self::Alignment::*;
diff --git a/src/libgetopts/lib.rs b/src/libgetopts/lib.rs
index c69c68ba59c..f41fc5aa29f 100644
--- a/src/libgetopts/lib.rs
+++ b/src/libgetopts/lib.rs
@@ -78,9 +78,6 @@
 //! ```
 
 #![crate_name = "getopts"]
-#![cfg_attr(stage0, unstable(feature = "rustc_private",
-            reason = "use the crates.io `getopts` library instead",
-            issue = "27812"))]
 #![crate_type = "rlib"]
 #![crate_type = "dylib"]
 #![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
@@ -91,7 +88,6 @@
 
 #![deny(missing_docs)]
 #![deny(warnings)]
-#![cfg_attr(stage0, feature(staged_api))]
 
 use self::Name::*;
 use self::HasArg::*;
diff --git a/src/libgraphviz/lib.rs b/src/libgraphviz/lib.rs
index 2c6744e7c90..6a5edc9f9e9 100644
--- a/src/libgraphviz/lib.rs
+++ b/src/libgraphviz/lib.rs
@@ -284,8 +284,6 @@
 //! * [DOT language](http://www.graphviz.org/doc/info/lang.html)
 
 #![crate_name = "graphviz"]
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
-#![cfg_attr(stage0, feature(staged_api))]
 #![crate_type = "rlib"]
 #![crate_type = "dylib"]
 #![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
diff --git a/src/libproc_macro_plugin/lib.rs b/src/libproc_macro_plugin/lib.rs
index 68c5d495918..d1bc0966eb5 100644
--- a/src/libproc_macro_plugin/lib.rs
+++ b/src/libproc_macro_plugin/lib.rs
@@ -72,7 +72,6 @@
 //! }
 //! ```
 #![crate_name = "proc_macro_plugin"]
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
 #![feature(plugin_registrar)]
 #![crate_type = "dylib"]
 #![crate_type = "rlib"]
@@ -81,9 +80,7 @@
        html_root_url = "https://doc.rust-lang.org/nightly/")]
 #![deny(warnings)]
 
-#![cfg_attr(stage0, feature(staged_api))]
 #![feature(rustc_diagnostic_macros)]
-#![cfg_attr(stage0, feature(rustc_private))]
 
 extern crate rustc_plugin;
 extern crate syntax;
diff --git a/src/librustc/lib.rs b/src/librustc/lib.rs
index 2216103636f..7be8c8f5e3f 100644
--- a/src/librustc/lib.rs
+++ b/src/librustc/lib.rs
@@ -42,11 +42,6 @@
 #![feature(sort_unstable)]
 #![feature(trace_macros)]
 
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
-#![cfg_attr(stage0, feature(rustc_private))]
-#![cfg_attr(stage0, feature(staged_api))]
-#![cfg_attr(stage0, feature(loop_break_value))]
-
 #![recursion_limit="256"]
 
 extern crate arena;
diff --git a/src/librustc_back/lib.rs b/src/librustc_back/lib.rs
index 69eabfe2ac0..c776f28ecd0 100644
--- a/src/librustc_back/lib.rs
+++ b/src/librustc_back/lib.rs
@@ -35,10 +35,6 @@
 #![feature(rand)]
 #![cfg_attr(test, feature(rand))]
 
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
-#![cfg_attr(stage0, feature(rustc_private))]
-#![cfg_attr(stage0, feature(staged_api))]
-
 extern crate syntax;
 extern crate libc;
 extern crate serialize;
diff --git a/src/librustc_bitflags/lib.rs b/src/librustc_bitflags/lib.rs
index 23558d82883..7576d9eeb3f 100644
--- a/src/librustc_bitflags/lib.rs
+++ b/src/librustc_bitflags/lib.rs
@@ -14,8 +14,6 @@
 #![crate_type = "rlib"]
 #![no_std]
 #![deny(warnings)]
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
-#![cfg_attr(stage0, feature(staged_api))]
 
 //! A typesafe bitmask flag generator.
 
diff --git a/src/librustc_borrowck/lib.rs b/src/librustc_borrowck/lib.rs
index 61732680897..9c980ddf08a 100644
--- a/src/librustc_borrowck/lib.rs
+++ b/src/librustc_borrowck/lib.rs
@@ -23,10 +23,6 @@
 #![feature(associated_consts)]
 #![feature(nonzero)]
 
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
-#![cfg_attr(stage0, feature(rustc_private))]
-#![cfg_attr(stage0, feature(staged_api))]
-
 #[macro_use] extern crate log;
 #[macro_use] extern crate syntax;
 extern crate syntax_pos;
diff --git a/src/librustc_const_eval/lib.rs b/src/librustc_const_eval/lib.rs
index 8142829e816..5a61f35ed1c 100644
--- a/src/librustc_const_eval/lib.rs
+++ b/src/librustc_const_eval/lib.rs
@@ -29,10 +29,6 @@
 #![feature(const_fn)]
 #![feature(i128_type)]
 
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
-#![cfg_attr(stage0, feature(rustc_private))]
-#![cfg_attr(stage0, feature(staged_api))]
-
 extern crate arena;
 #[macro_use] extern crate syntax;
 #[macro_use] extern crate log;
diff --git a/src/librustc_const_math/lib.rs b/src/librustc_const_math/lib.rs
index 528170781ea..0dce0e1fb02 100644
--- a/src/librustc_const_math/lib.rs
+++ b/src/librustc_const_math/lib.rs
@@ -26,10 +26,6 @@
 #![feature(i128)]
 #![feature(i128_type)]
 
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
-#![cfg_attr(stage0, feature(rustc_private))]
-#![cfg_attr(stage0, feature(staged_api))]
-
 extern crate syntax;
 
 extern crate serialize as rustc_serialize; // used by deriving
diff --git a/src/librustc_data_structures/lib.rs b/src/librustc_data_structures/lib.rs
index cc0e5dec266..d63b4c9c31b 100644
--- a/src/librustc_data_structures/lib.rs
+++ b/src/librustc_data_structures/lib.rs
@@ -37,9 +37,6 @@
 #![feature(specialization)]
 #![feature(manually_drop)]
 
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
-#![cfg_attr(stage0, feature(rustc_private))]
-#![cfg_attr(stage0, feature(staged_api))]
 #![cfg_attr(stage0, feature(struct_field_attributes))]
 
 #![cfg_attr(unix, feature(libc))]
diff --git a/src/librustc_driver/lib.rs b/src/librustc_driver/lib.rs
index 6839274800c..cf5d963ff73 100644
--- a/src/librustc_driver/lib.rs
+++ b/src/librustc_driver/lib.rs
@@ -28,11 +28,6 @@
 #![feature(rustc_diagnostic_macros)]
 #![feature(set_stdio)]
 
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
-#![cfg_attr(stage0, feature(rustc_private))]
-#![cfg_attr(stage0, feature(staged_api))]
-#![cfg_attr(stage0, feature(loop_break_value))]
-
 extern crate arena;
 extern crate getopts;
 extern crate graphviz;
diff --git a/src/librustc_errors/lib.rs b/src/librustc_errors/lib.rs
index 975b720276e..ada1c632bc0 100644
--- a/src/librustc_errors/lib.rs
+++ b/src/librustc_errors/lib.rs
@@ -22,10 +22,6 @@
 #![feature(libc)]
 #![feature(conservative_impl_trait)]
 
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
-#![cfg_attr(stage0, feature(rustc_private))]
-#![cfg_attr(stage0, feature(staged_api))]
-
 extern crate term;
 extern crate libc;
 extern crate serialize as rustc_serialize;
diff --git a/src/librustc_incremental/lib.rs b/src/librustc_incremental/lib.rs
index 70f967d50b0..5bd7a24bdaf 100644
--- a/src/librustc_incremental/lib.rs
+++ b/src/librustc_incremental/lib.rs
@@ -22,10 +22,6 @@
 #![feature(conservative_impl_trait)]
 #![feature(sort_unstable)]
 
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
-#![cfg_attr(stage0, feature(rustc_private))]
-#![cfg_attr(stage0, feature(staged_api))]
-
 extern crate graphviz;
 #[macro_use] extern crate rustc;
 extern crate rustc_data_structures;
diff --git a/src/librustc_lint/lib.rs b/src/librustc_lint/lib.rs
index 9870842a28e..f5c43c7b57d 100644
--- a/src/librustc_lint/lib.rs
+++ b/src/librustc_lint/lib.rs
@@ -35,10 +35,6 @@
 #![feature(rustc_diagnostic_macros)]
 #![feature(slice_patterns)]
 
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
-#![cfg_attr(stage0, feature(rustc_private))]
-#![cfg_attr(stage0, feature(staged_api))]
-
 #[macro_use]
 extern crate syntax;
 #[macro_use]
diff --git a/src/librustc_llvm/lib.rs b/src/librustc_llvm/lib.rs
index 790d493f191..bb555077cdb 100644
--- a/src/librustc_llvm/lib.rs
+++ b/src/librustc_llvm/lib.rs
@@ -28,10 +28,6 @@
 #![feature(link_args)]
 #![feature(static_nobundle)]
 
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
-#![cfg_attr(stage0, feature(rustc_private))]
-#![cfg_attr(stage0, feature(staged_api))]
-
 extern crate libc;
 #[macro_use]
 #[no_link]
diff --git a/src/librustc_metadata/lib.rs b/src/librustc_metadata/lib.rs
index 56c150fd4c8..9439bb4a363 100644
--- a/src/librustc_metadata/lib.rs
+++ b/src/librustc_metadata/lib.rs
@@ -26,9 +26,6 @@
 #![feature(specialization)]
 #![feature(discriminant_value)]
 #![feature(rustc_private)]
-
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
-#![cfg_attr(stage0, feature(staged_api))]
 #![feature(sort_unstable)]
 
 #[macro_use]
diff --git a/src/librustc_mir/lib.rs b/src/librustc_mir/lib.rs
index 014705bf32f..bfa31c052e4 100644
--- a/src/librustc_mir/lib.rs
+++ b/src/librustc_mir/lib.rs
@@ -27,10 +27,6 @@ Rust MIR: a lowered representation of Rust. Also: an experiment!
 #![feature(placement_in_syntax)]
 #![feature(collection_placement)]
 
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
-#![cfg_attr(stage0, feature(rustc_private))]
-#![cfg_attr(stage0, feature(staged_api))]
-
 #[macro_use] extern crate log;
 extern crate graphviz as dot;
 #[macro_use]
diff --git a/src/librustc_passes/lib.rs b/src/librustc_passes/lib.rs
index 97f0022b8db..3949152e848 100644
--- a/src/librustc_passes/lib.rs
+++ b/src/librustc_passes/lib.rs
@@ -24,10 +24,6 @@
 
 #![feature(rustc_diagnostic_macros)]
 
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
-#![cfg_attr(stage0, feature(rustc_private))]
-#![cfg_attr(stage0, feature(staged_api))]
-
 #[macro_use]
 extern crate rustc;
 extern crate rustc_const_eval;
diff --git a/src/librustc_platform_intrinsics/lib.rs b/src/librustc_platform_intrinsics/lib.rs
index 21dd360c9bb..347708a4f9b 100644
--- a/src/librustc_platform_intrinsics/lib.rs
+++ b/src/librustc_platform_intrinsics/lib.rs
@@ -9,10 +9,8 @@
 // except according to those terms.
 
 #![crate_name = "rustc_platform_intrinsics"]
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
 #![crate_type = "dylib"]
 #![crate_type = "rlib"]
-#![cfg_attr(stage0, feature(staged_api))]
 #![deny(warnings)]
 #![allow(bad_style)]
 
diff --git a/src/librustc_plugin/lib.rs b/src/librustc_plugin/lib.rs
index 0df82be3adc..d43625e3c23 100644
--- a/src/librustc_plugin/lib.rs
+++ b/src/librustc_plugin/lib.rs
@@ -60,10 +60,6 @@
 
 #![feature(rustc_diagnostic_macros)]
 
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
-#![cfg_attr(stage0, feature(rustc_private))]
-#![cfg_attr(stage0, feature(staged_api))]
-
 #[macro_use] extern crate syntax;
 
 extern crate rustc;
diff --git a/src/librustc_privacy/lib.rs b/src/librustc_privacy/lib.rs
index 153da91db68..fb7258d4266 100644
--- a/src/librustc_privacy/lib.rs
+++ b/src/librustc_privacy/lib.rs
@@ -18,10 +18,6 @@
 
 #![feature(rustc_diagnostic_macros)]
 
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
-#![cfg_attr(stage0, feature(rustc_private))]
-#![cfg_attr(stage0, feature(staged_api))]
-
 extern crate rustc;
 #[macro_use] extern crate syntax;
 extern crate syntax_pos;
diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs
index b77d5a2f71f..50ff23453a1 100644
--- a/src/librustc_resolve/lib.rs
+++ b/src/librustc_resolve/lib.rs
@@ -19,10 +19,6 @@
 #![feature(associated_consts)]
 #![feature(rustc_diagnostic_macros)]
 
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
-#![cfg_attr(stage0, feature(rustc_private))]
-#![cfg_attr(stage0, feature(staged_api))]
-
 #[macro_use]
 extern crate log;
 #[macro_use]
diff --git a/src/librustc_save_analysis/lib.rs b/src/librustc_save_analysis/lib.rs
index 4e9e72fe249..f54973e0897 100644
--- a/src/librustc_save_analysis/lib.rs
+++ b/src/librustc_save_analysis/lib.rs
@@ -19,10 +19,6 @@
 #![feature(custom_attribute)]
 #![allow(unused_attributes)]
 
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
-#![cfg_attr(stage0, feature(rustc_private))]
-#![cfg_attr(stage0, feature(staged_api))]
-
 #[macro_use] extern crate rustc;
 
 #[macro_use] extern crate log;
diff --git a/src/librustc_trans/lib.rs b/src/librustc_trans/lib.rs
index 4c7037c9ef2..c808a6597c8 100644
--- a/src/librustc_trans/lib.rs
+++ b/src/librustc_trans/lib.rs
@@ -36,10 +36,6 @@
 #![feature(conservative_impl_trait)]
 #![feature(command_envs)]
 
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
-#![cfg_attr(stage0, feature(rustc_private))]
-#![cfg_attr(stage0, feature(staged_api))]
-
 use rustc::dep_graph::WorkProduct;
 use syntax_pos::symbol::Symbol;
 
diff --git a/src/librustc_typeck/lib.rs b/src/librustc_typeck/lib.rs
index 26ea3ab3a33..9e99af633d5 100644
--- a/src/librustc_typeck/lib.rs
+++ b/src/librustc_typeck/lib.rs
@@ -82,11 +82,6 @@ This API is completely unstable and subject to change.
 #![feature(rustc_diagnostic_macros)]
 #![feature(slice_patterns)]
 
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
-#![cfg_attr(stage0, feature(rustc_private))]
-#![cfg_attr(stage0, feature(staged_api))]
-#![cfg_attr(stage0, feature(loop_break_value))]
-
 #[macro_use] extern crate log;
 #[macro_use] extern crate syntax;
 extern crate syntax_pos;
diff --git a/src/librustdoc/lib.rs b/src/librustdoc/lib.rs
index 380ee9c06a7..f0b16ccf975 100644
--- a/src/librustdoc/lib.rs
+++ b/src/librustdoc/lib.rs
@@ -26,10 +26,6 @@
 #![feature(unicode)]
 #![feature(vec_remove_item)]
 
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
-#![cfg_attr(stage0, feature(rustc_private))]
-#![cfg_attr(stage0, feature(staged_api))]
-
 extern crate arena;
 extern crate getopts;
 extern crate env_logger;
diff --git a/src/libserialize/lib.rs b/src/libserialize/lib.rs
index ca27b34d681..c3107d1f190 100644
--- a/src/libserialize/lib.rs
+++ b/src/libserialize/lib.rs
@@ -15,9 +15,6 @@ Core encoding and decoding interfaces.
 */
 
 #![crate_name = "serialize"]
-#![cfg_attr(stage0, unstable(feature = "rustc_private",
-            reason = "deprecated in favor of rustc-serialize on crates.io",
-            issue = "27812"))]
 #![crate_type = "rlib"]
 #![crate_type = "dylib"]
 #![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
@@ -31,7 +28,6 @@ Core encoding and decoding interfaces.
 #![feature(core_intrinsics)]
 #![feature(i128_type)]
 #![feature(specialization)]
-#![cfg_attr(stage0, feature(staged_api))]
 #![cfg_attr(test, feature(test))]
 
 pub use self::serialize::{Decoder, Encoder, Decodable, Encodable};
diff --git a/src/libsyntax/lib.rs b/src/libsyntax/lib.rs
index 32dafcdb582..a8338fccb6b 100644
--- a/src/libsyntax/lib.rs
+++ b/src/libsyntax/lib.rs
@@ -27,10 +27,6 @@
 #![feature(rustc_diagnostic_macros)]
 #![feature(i128_type)]
 
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
-#![cfg_attr(stage0, feature(rustc_private))]
-#![cfg_attr(stage0, feature(staged_api))]
-
 extern crate serialize;
 #[macro_use] extern crate log;
 #[macro_use] extern crate bitflags;
diff --git a/src/libsyntax_ext/lib.rs b/src/libsyntax_ext/lib.rs
index 60f5d24ac97..2016fc4fbe1 100644
--- a/src/libsyntax_ext/lib.rs
+++ b/src/libsyntax_ext/lib.rs
@@ -20,10 +20,6 @@
 
 #![feature(proc_macro_internals)]
 
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
-#![cfg_attr(stage0, feature(rustc_private))]
-#![cfg_attr(stage0, feature(staged_api))]
-
 extern crate fmt_macros;
 extern crate log;
 #[macro_use]
diff --git a/src/libsyntax_pos/lib.rs b/src/libsyntax_pos/lib.rs
index 94656b3aea7..bb62efd376a 100644
--- a/src/libsyntax_pos/lib.rs
+++ b/src/libsyntax_pos/lib.rs
@@ -29,17 +29,13 @@
 #![allow(unused_attributes)]
 #![feature(specialization)]
 
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
-#![cfg_attr(stage0, feature(rustc_private))]
-#![cfg_attr(stage0, feature(staged_api))]
-
 use std::borrow::Cow;
 use std::cell::{Cell, RefCell};
-use std::ops::{Add, Sub};
-use std::rc::Rc;
 use std::cmp;
 use std::fmt;
 use std::hash::Hasher;
+use std::ops::{Add, Sub};
+use std::rc::Rc;
 
 use rustc_data_structures::stable_hasher::StableHasher;
 
diff --git a/src/libterm/lib.rs b/src/libterm/lib.rs
index eb0ee6ba154..753dfbe4cee 100644
--- a/src/libterm/lib.rs
+++ b/src/libterm/lib.rs
@@ -57,9 +57,6 @@
 #![feature(custom_attribute)]
 #![allow(unused_attributes)]
 
-#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
-#![cfg_attr(stage0, feature(staged_api))]
-
 use std::io::prelude::*;
 
 pub use terminfo::TerminfoTerminal;
diff --git a/src/stage0.txt b/src/stage0.txt
index 974be125651..12a56ba48e4 100644
--- a/src/stage0.txt
+++ b/src/stage0.txt
@@ -12,7 +12,7 @@
 # source tarball for a stable release you'll likely see `1.x.0` for rustc and
 # `0.x.0` for Cargo where they were released on `date`.
 
-date: 2017-04-25
+date: 2017-06-15
 rustc: beta
 cargo: beta