diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index d42476bc4130d..cec891b4ee502 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -12,13 +12,13 @@ A version of this document [can be found online](https://www.rust-lang.org/condu
* Respect that people have differences of opinion and that every design or implementation choice carries a trade-off and numerous costs. There is seldom a right answer.
* Please keep unstructured critique to a minimum. If you have solid ideas you want to experiment with, make a fork and see how it works.
* We will exclude you from interaction if you insult, demean or harass anyone. That is not welcome behaviour. We interpret the term "harassment" as including the definition in the Citizen Code of Conduct; if you have any lack of clarity about what might be included in that concept, please read their definition. In particular, we don't tolerate behavior that excludes people in socially marginalized groups.
-* Private harassment is also unacceptable. No matter who you are, if you feel you have been or are being harassed or made uncomfortable by a community member, please contact one of the channel ops or any of the [Rust moderation team](/team.html#Moderation) immediately. Whether you're a regular contributor or a newcomer, we care about making this community a safe place for you and we've got your back.
+* Private harassment is also unacceptable. No matter who you are, if you feel you have been or are being harassed or made uncomfortable by a community member, please contact one of the channel ops or any of the [Rust moderation team][mod_team] immediately. Whether you're a regular contributor or a newcomer, we care about making this community a safe place for you and we've got your back.
* Likewise any spamming, trolling, flaming, baiting or other attention-stealing behaviour is not welcome.
## Moderation
-These are the policies for upholding our community's standards of conduct. If you feel that a thread needs moderation, please contact the [Rust moderation team](/team.html#Moderation).
+These are the policies for upholding our community's standards of conduct. If you feel that a thread needs moderation, please contact the [Rust moderation team][mod_team].
1. Remarks that violate the Rust standards of conduct, including hateful, hurtful, oppressive, or exclusionary remarks, are not allowed. (Cursing is allowed, but never targeting another user, and never in a hateful manner.)
2. Remarks that moderators find inappropriate, whether listed in the code of conduct or not, are also not allowed.
@@ -36,3 +36,5 @@ And if someone takes issue with something you said or did, resist the urge to be
The enforcement policies listed above apply to all official Rust venues; including official IRC channels (#rust, #rust-internals, #rust-tools, #rust-libs, #rustc, #rust-beginners, #rust-docs, #rust-community, #rust-lang, and #cargo); GitHub repositories under rust-lang, rust-lang-nursery, and rust-lang-deprecated; and all forums under rust-lang.org (users.rust-lang.org, internals.rust-lang.org). For other projects adopting the Rust Code of Conduct, please contact the maintainers of those projects for enforcement. If you wish to use this code of conduct for your own project, consider explicitly mentioning your moderation policy or making a copy with your own moderation policy so as to avoid confusion.
*Adapted from the [Node.js Policy on Trolling](http://blog.izs.me/post/30036893703/policy-on-trolling) as well as the [Contributor Covenant v1.3.0](http://contributor-covenant.org/version/1/3/0/).*
+
+[mod_team]: https://www.rust-lang.org/team.html#Moderation-team
diff --git a/src/etc/platform-intrinsics/x86/avx2.json b/src/etc/platform-intrinsics/x86/avx2.json
index 4e006c1c4cf41..dc055b583c568 100644
--- a/src/etc/platform-intrinsics/x86/avx2.json
+++ b/src/etc/platform-intrinsics/x86/avx2.json
@@ -174,7 +174,7 @@
"intrinsic": "256_sad_epu8",
"width": [256],
"llvm": "psad.bw",
- "ret": "u8",
+ "ret": "u64",
"args": ["0", "0"]
},
{
diff --git a/src/liballoc/slice.rs b/src/liballoc/slice.rs
index 18bb13d847a87..ab574c9f7e769 100644
--- a/src/liballoc/slice.rs
+++ b/src/liballoc/slice.rs
@@ -699,7 +699,7 @@ impl [T] {
core_slice::SliceExt::split_at(self, mid)
}
- /// Divides one `&mut` into two at an index.
+ /// Divides one mutable slice into two at an index.
///
/// The first will contain all indices from `[0, mid)` (excluding
/// the index `mid` itself) and the second will contain all
diff --git a/src/libcore/num/f32.rs b/src/libcore/num/f32.rs
index 43d38926c9718..7f758f2a23b19 100644
--- a/src/libcore/num/f32.rs
+++ b/src/libcore/num/f32.rs
@@ -8,7 +8,12 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
-//! Operations and constants for 32-bits floats (`f32` type)
+//! This module provides constants which are specific to the implementation
+//! of the `f32` floating point data type.
+//!
+//! Mathematically significant numbers are provided in the `consts` sub-module.
+//!
+//! *[See also the `f32` primitive type](../../std/primitive.f32.html).*
#![stable(feature = "rust1", since = "1.0.0")]
diff --git a/src/libcore/num/f64.rs b/src/libcore/num/f64.rs
index 4ff80a2f05d41..b9db4990a7e5f 100644
--- a/src/libcore/num/f64.rs
+++ b/src/libcore/num/f64.rs
@@ -8,7 +8,12 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
-//! Operations and constants for 64-bits floats (`f64` type)
+//! This module provides constants which are specific to the implementation
+//! of the `f64` floating point data type.
+//!
+//! Mathematically significant numbers are provided in the `consts` sub-module.
+//!
+//! *[See also the `f64` primitive type](../../std/primitive.f64.html).*
#![stable(feature = "rust1", since = "1.0.0")]
diff --git a/src/libcore/num/mod.rs b/src/libcore/num/mod.rs
index 851c0a0dd6f75..b89aa134e7344 100644
--- a/src/libcore/num/mod.rs
+++ b/src/libcore/num/mod.rs
@@ -103,6 +103,8 @@ macro_rules! int_impl {
///
/// # Examples
///
+ /// Basic usage:
+ ///
/// ```
/// assert_eq!(i8::min_value(), -128);
/// ```
@@ -116,6 +118,8 @@ macro_rules! int_impl {
///
/// # Examples
///
+ /// Basic usage:
+ ///
/// ```
/// assert_eq!(i8::max_value(), 127);
/// ```
@@ -1252,6 +1256,8 @@ macro_rules! uint_impl {
///
/// # Examples
///
+ /// Basic usage:
+ ///
/// ```
/// assert_eq!(u8::min_value(), 0);
/// ```
@@ -1263,6 +1269,8 @@ macro_rules! uint_impl {
///
/// # Examples
///
+ /// Basic usage:
+ ///
/// ```
/// assert_eq!(u8::max_value(), 255);
/// ```
diff --git a/src/librustc/mir/mod.rs b/src/librustc/mir/mod.rs
index 7dba01df2c2e1..68f8098709c43 100644
--- a/src/librustc/mir/mod.rs
+++ b/src/librustc/mir/mod.rs
@@ -1896,7 +1896,7 @@ pub struct GeneratorLayout<'tcx> {
///
/// Example: If type check produces a closure with the closure substs:
///
-/// ```
+/// ```text
/// ClosureSubsts = [
/// i8, // the "closure kind"
/// for<'x> fn(&'a &'x u32) -> &'x u32, // the "closure signature"
@@ -1907,7 +1907,7 @@ pub struct GeneratorLayout<'tcx> {
/// here, there is one unique free region (`'a`) but it appears
/// twice. We would "renumber" each occurence to a unique vid, as follows:
///
-/// ```
+/// ```text
/// ClosureSubsts = [
/// i8, // the "closure kind"
/// for<'x> fn(&'1 &'x u32) -> &'x u32, // the "closure signature"
diff --git a/src/librustc_back/target/aarch64_unknown_cloudabi.rs b/src/librustc_back/target/aarch64_unknown_cloudabi.rs
new file mode 100644
index 0000000000000..d5e8194c3f79b
--- /dev/null
+++ b/src/librustc_back/target/aarch64_unknown_cloudabi.rs
@@ -0,0 +1,32 @@
+// Copyright 2017 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 or the MIT license
+// , at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use LinkerFlavor;
+use target::{Target, TargetResult};
+
+pub fn target() -> TargetResult {
+ let mut base = super::cloudabi_base::opts();
+ base.max_atomic_width = Some(128);
+ base.abi_blacklist = super::arm_base::abi_blacklist();
+
+ Ok(Target {
+ llvm_target: "aarch64-unknown-cloudabi".to_string(),
+ target_endian: "little".to_string(),
+ target_pointer_width: "64".to_string(),
+ target_c_int_width: "32".to_string(),
+ data_layout: "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128".to_string(),
+ arch: "aarch64".to_string(),
+ target_os: "cloudabi".to_string(),
+ target_env: "".to_string(),
+ target_vendor: "unknown".to_string(),
+ linker_flavor: LinkerFlavor::Gcc,
+ options: base,
+ })
+}
diff --git a/src/librustc_back/target/armv7_unknown_cloudabi_eabihf.rs b/src/librustc_back/target/armv7_unknown_cloudabi_eabihf.rs
new file mode 100644
index 0000000000000..4dad8e1713b43
--- /dev/null
+++ b/src/librustc_back/target/armv7_unknown_cloudabi_eabihf.rs
@@ -0,0 +1,34 @@
+// Copyright 2017 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 or the MIT license
+// , at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use LinkerFlavor;
+use target::{Target, TargetResult};
+
+pub fn target() -> TargetResult {
+ let mut base = super::cloudabi_base::opts();
+ base.cpu = "cortex-a8".to_string();
+ base.max_atomic_width = Some(64);
+ base.features = "+v7,+vfp3,+neon".to_string();
+ base.abi_blacklist = super::arm_base::abi_blacklist();
+
+ Ok(Target {
+ llvm_target: "armv7-unknown-cloudabi-eabihf".to_string(),
+ target_endian: "little".to_string(),
+ target_pointer_width: "32".to_string(),
+ target_c_int_width: "32".to_string(),
+ data_layout: "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
+ arch: "arm".to_string(),
+ target_os: "cloudabi".to_string(),
+ target_env: "".to_string(),
+ target_vendor: "unknown".to_string(),
+ linker_flavor: LinkerFlavor::Gcc,
+ options: base,
+ })
+}
diff --git a/src/librustc_back/target/cloudabi_base.rs b/src/librustc_back/target/cloudabi_base.rs
new file mode 100644
index 0000000000000..c29130bdf8e96
--- /dev/null
+++ b/src/librustc_back/target/cloudabi_base.rs
@@ -0,0 +1,34 @@
+// Copyright 2017 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 or the MIT license
+// , at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use LinkerFlavor;
+use target::{LinkArgs, TargetOptions, RelroLevel};
+use std::default::Default;
+
+pub fn opts() -> TargetOptions {
+ let mut args = LinkArgs::new();
+ args.insert(LinkerFlavor::Gcc, vec![
+ "-Wl,-Bstatic".to_string(),
+ "-Wl,--no-dynamic-linker".to_string(),
+ "-Wl,--eh-frame-hdr".to_string(),
+ "-Wl,--gc-sections".to_string(),
+ ]);
+
+ TargetOptions {
+ executables: true,
+ target_family: Some("unix".to_string()),
+ linker_is_gnu: true,
+ pre_link_args: args,
+ position_independent_executables: true,
+ relro_level: RelroLevel::Full,
+ exe_allocation_crate: super::maybe_jemalloc(),
+ .. Default::default()
+ }
+}
diff --git a/src/librustc_back/target/i686_unknown_cloudabi.rs b/src/librustc_back/target/i686_unknown_cloudabi.rs
new file mode 100644
index 0000000000000..b9aa6176d8768
--- /dev/null
+++ b/src/librustc_back/target/i686_unknown_cloudabi.rs
@@ -0,0 +1,34 @@
+// Copyright 2017 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 or the MIT license
+// , at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use LinkerFlavor;
+use target::{Target, TargetResult};
+
+pub fn target() -> TargetResult {
+ let mut base = super::cloudabi_base::opts();
+ base.cpu = "pentium4".to_string();
+ base.max_atomic_width = Some(64);
+ base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap().push("-m32".to_string());
+ base.stack_probes = true;
+
+ Ok(Target {
+ llvm_target: "i686-unknown-cloudabi".to_string(),
+ target_endian: "little".to_string(),
+ target_pointer_width: "32".to_string(),
+ target_c_int_width: "32".to_string(),
+ data_layout: "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128".to_string(),
+ arch: "x86".to_string(),
+ target_os: "cloudabi".to_string(),
+ target_env: "".to_string(),
+ target_vendor: "unknown".to_string(),
+ linker_flavor: LinkerFlavor::Gcc,
+ options: base,
+ })
+}
diff --git a/src/librustc_back/target/mod.rs b/src/librustc_back/target/mod.rs
index 6f9ba5dada2d8..5c18e82fe3a92 100644
--- a/src/librustc_back/target/mod.rs
+++ b/src/librustc_back/target/mod.rs
@@ -57,6 +57,7 @@ mod apple_base;
mod apple_ios_base;
mod arm_base;
mod bitrig_base;
+mod cloudabi_base;
mod dragonfly_base;
mod emscripten_base;
mod freebsd_base;
@@ -227,6 +228,11 @@ supported_targets! {
("thumbv7em-none-eabihf", thumbv7em_none_eabihf),
("msp430-none-elf", msp430_none_elf),
+
+ ("aarch64-unknown-cloudabi", aarch64_unknown_cloudabi),
+ ("armv7-unknown-cloudabi-eabihf", armv7_unknown_cloudabi_eabihf),
+ ("i686-unknown-cloudabi", i686_unknown_cloudabi),
+ ("x86_64-unknown-cloudabi", x86_64_unknown_cloudabi),
}
/// Everything `rustc` knows about how to compile for a specific target.
diff --git a/src/librustc_back/target/x86_64_unknown_cloudabi.rs b/src/librustc_back/target/x86_64_unknown_cloudabi.rs
new file mode 100644
index 0000000000000..f9a563174d4a9
--- /dev/null
+++ b/src/librustc_back/target/x86_64_unknown_cloudabi.rs
@@ -0,0 +1,34 @@
+// Copyright 2017 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 or the MIT license
+// , at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use LinkerFlavor;
+use target::{Target, TargetResult};
+
+pub fn target() -> TargetResult {
+ let mut base = super::cloudabi_base::opts();
+ base.cpu = "x86-64".to_string();
+ base.max_atomic_width = Some(64);
+ base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap().push("-m64".to_string());
+ base.stack_probes = true;
+
+ Ok(Target {
+ llvm_target: "x86_64-unknown-cloudabi".to_string(),
+ target_endian: "little".to_string(),
+ target_pointer_width: "64".to_string(),
+ target_c_int_width: "32".to_string(),
+ data_layout: "e-m:e-i64:64-f80:128-n8:16:32:64-S128".to_string(),
+ arch: "x86_64".to_string(),
+ target_os: "cloudabi".to_string(),
+ target_env: "".to_string(),
+ target_vendor: "unknown".to_string(),
+ linker_flavor: LinkerFlavor::Gcc,
+ options: base,
+ })
+}
diff --git a/src/librustc_platform_intrinsics/x86.rs b/src/librustc_platform_intrinsics/x86.rs
index acb69423ffee3..e23222ad50b80 100644
--- a/src/librustc_platform_intrinsics/x86.rs
+++ b/src/librustc_platform_intrinsics/x86.rs
@@ -354,7 +354,7 @@ pub fn find(name: &str) -> Option {
},
"_mm256_sad_epu8" => Intrinsic {
inputs: { static INPUTS: [&'static Type; 2] = [&::U8x32, &::U8x32]; &INPUTS },
- output: &::U8x32,
+ output: &::U64x4,
definition: Named("llvm.x86.avx2.psad.bw")
},
"_mm256_shuffle_epi8" => Intrinsic {
diff --git a/src/libstd/f32.rs b/src/libstd/f32.rs
index e5b1394f0709a..6d76c7e722c45 100644
--- a/src/libstd/f32.rs
+++ b/src/libstd/f32.rs
@@ -13,7 +13,7 @@
//!
//! Mathematically significant numbers are provided in the `consts` sub-module.
//!
-//! *[See also the `f32` primitive type](../primitive.f32.html).*
+//! *[See also the `f32` primitive type](../../std/primitive.f32.html).*
#![stable(feature = "rust1", since = "1.0.0")]
#![allow(missing_docs)]
diff --git a/src/libstd/f64.rs b/src/libstd/f64.rs
index f4d804fd50823..dee9566f1fc68 100644
--- a/src/libstd/f64.rs
+++ b/src/libstd/f64.rs
@@ -13,7 +13,7 @@
//!
//! Mathematically significant numbers are provided in the `consts` sub-module.
//!
-//! *[See also the `f64` primitive type](../primitive.f64.html).*
+//! *[See also the `f64` primitive type](../../std/primitive.f64.html).*
#![stable(feature = "rust1", since = "1.0.0")]
#![allow(missing_docs)]
diff --git a/src/libstd/process.rs b/src/libstd/process.rs
index 1f6ddde00272c..c3d1e82bc3fe1 100644
--- a/src/libstd/process.rs
+++ b/src/libstd/process.rs
@@ -1584,7 +1584,7 @@ mod tests {
= if cfg!(target_os = "windows") {
Command::new("cmd").args(&["/C", "mkdir ."]).output().unwrap()
} else {
- Command::new("mkdir").arg(".").output().unwrap()
+ Command::new("mkdir").arg("./").output().unwrap()
};
assert!(status.code() == Some(1));
diff --git a/src/tools/build-manifest/src/main.rs b/src/tools/build-manifest/src/main.rs
index 371bbd16a5e92..fc2759df44748 100644
--- a/src/tools/build-manifest/src/main.rs
+++ b/src/tools/build-manifest/src/main.rs
@@ -46,8 +46,9 @@ static HOSTS: &'static [&'static str] = &[
static TARGETS: &'static [&'static str] = &[
"aarch64-apple-ios",
- "aarch64-unknown-fuchsia",
"aarch64-linux-android",
+ "aarch64-unknown-cloudabi",
+ "aarch64-unknown-fuchsia",
"aarch64-unknown-linux-gnu",
"aarch64-unknown-linux-musl",
"arm-linux-androideabi",
@@ -58,6 +59,7 @@ static TARGETS: &'static [&'static str] = &[
"armv5te-unknown-linux-gnueabi",
"armv7-apple-ios",
"armv7-linux-androideabi",
+ "armv7-unknown-cloudabi-eabihf",
"armv7-unknown-linux-gnueabihf",
"armv7-unknown-linux-musleabihf",
"armv7s-apple-ios",
@@ -69,6 +71,7 @@ static TARGETS: &'static [&'static str] = &[
"i686-linux-android",
"i686-pc-windows-gnu",
"i686-pc-windows-msvc",
+ "i686-unknown-cloudabi",
"i686-unknown-freebsd",
"i686-unknown-linux-gnu",
"i686-unknown-linux-musl",
@@ -86,13 +89,14 @@ static TARGETS: &'static [&'static str] = &[
"sparcv9-sun-solaris",
"wasm32-unknown-emscripten",
"wasm32-unknown-unknown",
- "x86_64-linux-android",
"x86_64-apple-darwin",
"x86_64-apple-ios",
+ "x86_64-linux-android",
"x86_64-pc-windows-gnu",
"x86_64-pc-windows-msvc",
"x86_64-rumprun-netbsd",
"x86_64-sun-solaris",
+ "x86_64-unknown-cloudabi",
"x86_64-unknown-freebsd",
"x86_64-unknown-fuchsia",
"x86_64-unknown-linux-gnu",