Add a copy-on-write container.
Added Freeze trait to CowArc
Allow SIMD types in generics. Closes #10604
Make shift_ref and mut_shift_ref return Option instead of failing
Make pop_ref and mut_pop_ref return Option instead of failing on empty vectors
Make mut_last return Option instead of failing on empty vector (and add a test for mut_last)
Handle attributes on cross-crate tuple-structs correctly

Fixes #11741
Update the zsh completion file for rustc.

Signed-off-by: OGINO Masanori <masanori.ogino@gmail.com>
Fix rustpkg tests with --disable-inject-std-version

Right now the bots are all injecting a libstd version, so all the rustpkg tests
are passing. All rustpkg compilations will fail unless the version number is
explicitly given because rustpkg attempts to exactly guess the target file name.
Switch back to using a pattern match in order to unbreak tests.

Closes #11852
Make next_power_of_two generic for unsigned integers

Also rename `next_power_of_two_opt` to `checked_next_power_of_two`.
Remove some unused imports
Remove free-standing div functions in std::uint
Move int and uint overflow tests into macros
Added minmax function.
Tests ok
auto merge of #11789 : pongad/rust/master, r=kballard

All tests passing. #5268
auto merge of #11963 : alexcrichton/rust/fix-rustpkg, r=brson

Right now the bots are all injecting a libstd version, so all the rustpkg tests
are passing. All rustpkg compilations will fail unless the version number is
explicitly given because rustpkg attempts to exactly guess the target file name.
Switch back to using a pattern match in order to unbreak tests.

Closes #11852
auto merge of #11930 : bjz/rust/next_power_of_two, r=huonw
auto merge of #11932 : dmanescu/rust/11741-stability-cross-crate, r=alexcrichton

Fixes #11741
Added tests and removed xfail-fast from run-pass/simd-experimental which is now fixed (see #11738).
Optimize u64_to_{le,be}_bytes

LLVM fails to properly optimize the shifts used to convert the source
value to the right endianess. The resulting assembly copies the value
to the stack one byte at a time even when there's no conversion required
(e.g. u64_to_le_bytes on a little endian machine).

Instead of doing the conversion ourselves using shifts, we can use the
existing intrinsics to perform the endianess conversion and then
transmute the value to get a fixed vector of its bytes.

Before:

test be_i8  ... bench:     21442 ns/iter (+/- 70)
test be_i16 ... bench:     21447 ns/iter (+/- 45)
test be_i32 ... bench:     23832 ns/iter (+/- 63)
test be_i64 ... bench:     26887 ns/iter (+/- 267)

test le_i8  ... bench:     21442 ns/iter (+/- 56)
test le_i16 ... bench:     21448 ns/iter (+/- 36)
test le_i32 ... bench:     23825 ns/iter (+/- 153)
test le_i64 ... bench:     26271 ns/iter (+/- 138)

After:

test be_i8  ... bench:     21438 ns/iter (+/- 10)
test be_i16 ... bench:     21441 ns/iter (+/- 15)
test be_i32 ... bench:     19057 ns/iter (+/- 6)
test be_i64 ... bench:     21439 ns/iter (+/- 34)

test le_i8  ... bench:     21438 ns/iter (+/- 19)
test le_i16 ... bench:     21439 ns/iter (+/- 8)
test le_i32 ... bench:     21439 ns/iter (+/- 19)
test le_i64 ... bench:     21438 ns/iter (+/- 22)
libsyntax: Introduce an `InternedString` type to reduce `@str` in the
compiler and use it for attributes