authors = ["The Rust Project Developers"]
name = "core"
version = "0.0.0"
+build = "build.rs"
[lib]
name = "core"
--- /dev/null
+// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+fn main() {
+ // Remove this whenever snapshots and rustbuild nightlies are synced.
+ println!("cargo:rustc-cfg=cargobuild");
+}
// NB: These intrinsics take raw pointers because they mutate aliased
// memory, which is not valid for either `&` or `&mut`.
- #[cfg(stage0)]
+ #[cfg(all(stage0, not(cargobuild)))]
pub fn atomic_cxchg<T>(dst: *mut T, old: T, src: T) -> T;
- #[cfg(stage0)]
+ #[cfg(all(stage0, not(cargobuild)))]
pub fn atomic_cxchg_acq<T>(dst: *mut T, old: T, src: T) -> T;
- #[cfg(stage0)]
+ #[cfg(all(stage0, not(cargobuild)))]
pub fn atomic_cxchg_rel<T>(dst: *mut T, old: T, src: T) -> T;
- #[cfg(stage0)]
+ #[cfg(all(stage0, not(cargobuild)))]
pub fn atomic_cxchg_acqrel<T>(dst: *mut T, old: T, src: T) -> T;
- #[cfg(stage0)]
+ #[cfg(all(stage0, not(cargobuild)))]
pub fn atomic_cxchg_relaxed<T>(dst: *mut T, old: T, src: T) -> T;
- #[cfg(not(stage0))]
+ #[cfg(any(not(stage0), cargobuild))]
pub fn atomic_cxchg<T>(dst: *mut T, old: T, src: T) -> (T, bool);
- #[cfg(not(stage0))]
+ #[cfg(any(not(stage0), cargobuild))]
pub fn atomic_cxchg_acq<T>(dst: *mut T, old: T, src: T) -> (T, bool);
- #[cfg(not(stage0))]
+ #[cfg(any(not(stage0), cargobuild))]
pub fn atomic_cxchg_rel<T>(dst: *mut T, old: T, src: T) -> (T, bool);
- #[cfg(not(stage0))]
+ #[cfg(any(not(stage0), cargobuild))]
pub fn atomic_cxchg_acqrel<T>(dst: *mut T, old: T, src: T) -> (T, bool);
- #[cfg(not(stage0))]
+ #[cfg(any(not(stage0), cargobuild))]
pub fn atomic_cxchg_relaxed<T>(dst: *mut T, old: T, src: T) -> (T, bool);
- #[cfg(not(stage0))]
+ #[cfg(any(not(stage0), cargobuild))]
pub fn atomic_cxchg_failrelaxed<T>(dst: *mut T, old: T, src: T) -> (T, bool);
- #[cfg(not(stage0))]
+ #[cfg(any(not(stage0), cargobuild))]
pub fn atomic_cxchg_failacq<T>(dst: *mut T, old: T, src: T) -> (T, bool);
- #[cfg(not(stage0))]
+ #[cfg(any(not(stage0), cargobuild))]
pub fn atomic_cxchg_acq_failrelaxed<T>(dst: *mut T, old: T, src: T) -> (T, bool);
- #[cfg(not(stage0))]
+ #[cfg(any(not(stage0), cargobuild))]
pub fn atomic_cxchg_acqrel_failrelaxed<T>(dst: *mut T, old: T, src: T) -> (T, bool);
- #[cfg(not(stage0))]
pub fn atomic_cxchgweak<T>(dst: *mut T, old: T, src: T) -> (T, bool);
- #[cfg(not(stage0))]
pub fn atomic_cxchgweak_acq<T>(dst: *mut T, old: T, src: T) -> (T, bool);
- #[cfg(not(stage0))]
pub fn atomic_cxchgweak_rel<T>(dst: *mut T, old: T, src: T) -> (T, bool);
- #[cfg(not(stage0))]
pub fn atomic_cxchgweak_acqrel<T>(dst: *mut T, old: T, src: T) -> (T, bool);
- #[cfg(not(stage0))]
pub fn atomic_cxchgweak_relaxed<T>(dst: *mut T, old: T, src: T) -> (T, bool);
- #[cfg(not(stage0))]
pub fn atomic_cxchgweak_failrelaxed<T>(dst: *mut T, old: T, src: T) -> (T, bool);
- #[cfg(not(stage0))]
pub fn atomic_cxchgweak_failacq<T>(dst: *mut T, old: T, src: T) -> (T, bool);
- #[cfg(not(stage0))]
pub fn atomic_cxchgweak_acq_failrelaxed<T>(dst: *mut T, old: T, src: T) -> (T, bool);
- #[cfg(not(stage0))]
pub fn atomic_cxchgweak_acqrel_failrelaxed<T>(dst: *mut T, old: T, src: T) -> (T, bool);
pub fn atomic_load<T>(src: *const T) -> T;
#![feature(const_fn)]
#![feature(custom_attribute)]
#![feature(fundamental)]
+#![feature(inclusive_range_syntax)]
#![feature(intrinsics)]
#![feature(lang_items)]
#![feature(no_core)]
/// ```
#[stable(feature = "rust1", since = "1.0.0")]
#[inline]
- #[cfg_attr(not(stage0), rustc_no_mir)] // FIXME #29769 MIR overflow checking is TBD.
+ #[rustc_no_mir] // FIXME #29769 MIR overflow checking is TBD.
pub fn pow(self, mut exp: u32) -> Self {
let mut base = self;
let mut acc = Self::one();
/// ```
#[stable(feature = "rust1", since = "1.0.0")]
#[inline]
- #[cfg_attr(not(stage0), rustc_no_mir)] // FIXME #29769 MIR overflow checking is TBD.
+ #[rustc_no_mir] // FIXME #29769 MIR overflow checking is TBD.
pub fn abs(self) -> Self {
if self.is_negative() {
// Note that the #[inline] above means that the overflow
/// ```
#[stable(feature = "rust1", since = "1.0.0")]
#[inline]
- #[cfg_attr(not(stage0), rustc_no_mir)] // FIXME #29769 MIR overflow checking is TBD.
+ #[rustc_no_mir] // FIXME #29769 MIR overflow checking is TBD.
pub fn pow(self, mut exp: u32) -> Self {
let mut base = self;
let mut acc = Self::one();
/// An unbounded range.
#[derive(Copy, Clone, PartialEq, Eq)]
-#[cfg_attr(stage0, lang = "range_full")] // FIXME remove attribute after next snapshot
#[stable(feature = "rust1", since = "1.0.0")]
pub struct RangeFull;
/// A (half-open) range which is bounded at both ends.
#[derive(Clone, PartialEq, Eq)]
-#[cfg_attr(stage0, lang = "range")] // FIXME remove attribute after next snapshot
#[stable(feature = "rust1", since = "1.0.0")]
pub struct Range<Idx> {
/// The lower bound of the range (inclusive).
/// A range which is only bounded below.
#[derive(Clone, PartialEq, Eq)]
-#[cfg_attr(stage0, lang = "range_from")] // FIXME remove attribute after next snapshot
#[stable(feature = "rust1", since = "1.0.0")]
pub struct RangeFrom<Idx> {
/// The lower bound of the range (inclusive).
/// A range which is only bounded above.
#[derive(Copy, Clone, PartialEq, Eq)]
-#[cfg_attr(stage0, lang = "range_to")] // FIXME remove attribute after next snapshot
#[stable(feature = "rust1", since = "1.0.0")]
pub struct RangeTo<Idx> {
/// The upper bound of the range (exclusive).
#[inline]
fn index(&self, index: ops::RangeToInclusive<usize>) -> &[T] {
- // SNAP 4d3eebf change this to `0...index.end`
- self.index(ops::RangeInclusive::NonEmpty { start: 0, end: index.end })
+ self.index(0...index.end)
}
}
impl<T> ops::IndexMut<ops::RangeToInclusive<usize>> for [T] {
#[inline]
fn index_mut(&mut self, index: ops::RangeToInclusive<usize>) -> &mut [T] {
- // SNAP 4d3eebf change this to `0...index.end`
- self.index_mut(ops::RangeInclusive::NonEmpty { start: 0, end: index.end })
+ self.index_mut(0...index.end)
}
}
#[inline]
fn index(&self, index: ops::RangeToInclusive<usize>) -> &str {
- // SNAP 4d3eebf change this to `0...index.end`
- self.index(ops::RangeInclusive::NonEmpty { start: 0, end: index.end })
+ self.index(0...index.end)
}
}
impl ops::IndexMut<ops::RangeToInclusive<usize>> for str {
#[inline]
fn index_mut(&mut self, index: ops::RangeToInclusive<usize>) -> &mut str {
- // SNAP 4d3eebf change this to `0...index.end`
- self.index_mut(ops::RangeInclusive::NonEmpty { start: 0, end: index.end })
+ self.index_mut(0...index.end)
}
}
}
}
#[inline]
-#[cfg(not(stage0))]
+#[cfg(any(not(stage0), cargobuild))]
unsafe fn atomic_compare_exchange<T>(dst: *mut T,
old: T,
new: T,
}
#[inline]
-#[cfg(stage0)]
+#[cfg(all(stage0, not(cargobuild)))]
unsafe fn atomic_compare_exchange<T>(dst: *mut T,
old: T,
new: T,
}
#[inline]
-#[cfg(not(stage0))]
unsafe fn atomic_compare_exchange_weak<T>(dst: *mut T,
old: T,
new: T,
}
}
-#[inline]
-#[cfg(stage0)]
-unsafe fn atomic_compare_exchange_weak<T>(dst: *mut T,
- old: T,
- new: T,
- success: Ordering,
- failure: Ordering) -> Result<T, T>
- where T: ::cmp::Eq + ::marker::Copy
-{
- atomic_compare_exchange(dst, old, new, success, failure)
-}
-
#[inline]
unsafe fn atomic_and<T>(dst: *mut T, val: T, order: Ordering) -> T {
match order {
-rustc: 2016-02-17
+rustc: 2016-03-20
cargo: 2016-03-11
+S 2016-03-18 235d774
+ linux-i386 0e0e4448b80d0a12b75485795244bb3857a0a7ef
+ linux-x86_64 1273b6b6aed421c9e40c59f366d0df6092ec0397
+ macos-i386 9f9c0b4a2db09acbce54b792fb8839a735585565
+ macos-x86_64 52570f6fd915b0210a9be98cfc933148e16a75f8
+ winnt-i386 7703869608cc4192b8f1943e51b19ba1a03c0110
+ winnt-x86_64 8512b5ecc0c53a2cd3552e4f5688577de95cd978
+
S 2016-02-17 4d3eebf
linux-i386 5f194aa7628c0703f0fd48adc4ec7f3cc64b98c7
linux-x86_64 d29b7607d13d64078b6324aec82926fb493f59ba