Add a copy-on-write container.
Added Freeze trait to CowArc
Allow SIMD types in generics. Closes #10604
Use an absolute path in test_process_output_fail_to_start

This test is designed to ensure that running a non-existent executable
results in a correct error message (FileNotFound in this case of this
test).  However, if you try to run an executable that doesn't exist, and
that requires searching through the $PATH, and one of the $PATH components
is not readable, then a PermissionDenied error will be returned, instead
of FileNotFound.
Unhide lines in rustdoc's doc -- Closes #11645
Add /doc/{flate,rustdoc} to .gitignore
Minor fix to docs.
std: reduce the generic code instantiated by fail!().

This splits the vast majority of the code path taken by
`fail!()` (`begin_unwind`) into a separate non-generic inline(never)
function, so that uses of `fail!()` only monomorphise a small amount of
code, reducing code bloat and making very small crates compile faster.
Demote self to an (almost) regular argument and remove the env param.
Fixes #10667 and closes #10259.
std: add begin_unwind_fmt that reduces codesize for formatted fail!().

This ends up saving a single `call` instruction in the optimised code,
but saves a few hundred lines of non-optimised IR for `fn main() {
fail!("foo {}", "bar"); }` (comparing against the minimal generic
baseline from the parent commit).
Add .rs- instead of .rc-extension to LLVM module name
Feature gate #[simd]

Fixes #11721
debuginfo: Fix name attribute for DWARF compile units
Depend on libnative when testing

The stdtest binary uses both libnative and libgreen to test the two
implementations

Closes #11843
auto merge of #11595 : eddyb/rust/env-et-self-no-more, r=nikomatsakis

Non-exhaustive change list:
* `self` is now present in argument lists (modulo type-checking code I don't trust myself to refactor)
* methods have the same calling convention as bare functions (including the self argument)
* the env param is gone from all bare functions (and methods), only used by closures and `proc`s
* bare functions can only be coerced to closures and `proc`s if they are statically resolved, as they now require creating a wrapper specific to that function, to avoid indirect wrappers (equivalent to `impl<..Args, Ret> Fn<..Args, Ret> for fn(..Args) -> Ret`) that might not be optimizable by LLVM and don't work for `proc`s
* refactored some `trans::closure` code, leading to the removal of `trans::glue::make_free_glue` and `ty_opaque_closure_ptr`
auto merge of #11841 : huonw/rust/noinline-fail, r=alexcrichton

In two ways:
- for a plain `fail!(a)` we make the generic part of `begin_unwind` as small as possible (makes `fn main() { fail!() }` compile 2-3x faster, due to less monomorphisation bloat)
- for `fail!("format {}", "string")`, we avoid touching the generics completely by doing the formatting in a specialised function, which (with optimisations) saves a function call at the call-site of `fail!`. (This one has significantly less benefit than the first.)
Fix bug: metadata for struct constructor function needs to encode info
on its generic type parameters.

Test case to follow.
test case for issue #10031.
Removed take_glue from tydesc, inlining the equivalent refcount increment code instead.
auto merge of #11723 : eddyb/rust/more-trans-cleanup, r=pcwalton