libcore: Add VaList and variadic arg handling intrinsics
## Summary
- Add intrinsics for `va_start`, `va_end`, `va_copy`, and `va_arg`.
- Add `core::va_list::VaList` to `libcore`.
Part 1 of (at least) 3 for #44930
Comments and critiques are very much welcomed 😄
Rollup of 22 pull requests
Successful merges:
- #55391 (bootstrap: clean up a few clippy findings)
- #56021 (avoid features_untracked)
- #56023 (atomic::Ordering: Get rid of misleading parts of intro)
- #56080 (Reduce the amount of bold text at doc.rlo)
- #56114 (Enclose type in backticks for "non-exhaustive patterns" error)
- #56124 (Fix small doc mistake on std::io::read::read_to_end)
- #56127 (Update an outdated comment in mir building)
- #56148 (Add rustc-guide as a submodule)
- #56149 (Make std::os::unix/linux::fs::MetadataExt::a/m/ctime* documentation clearer)
- #56220 (Suggest appropriate place for lifetime when declared after type arguments)
- #56223 (Make JSON output from -Zprofile-json valid)
- #56236 (Remove unsafe `unsafe` inner function.)
- #56255 (Update outdated code comments in StringReader)
- #56257 (rustc-guide has moved to rust-lang/)
- #56273 (Add missing doc link)
- #56289 (Fix small typo in comment of thread::stack_size)
- #56294 (Fix a typo in the documentation of std::ffi)
- #56312 (Deduplicate literal -> constant lowering)
- #56319 (fix futures creating aliasing mutable and shared ref)
- #56321 (rustdoc: add bottom margin spacing to nested lists)
- #56322 (resolve: Fix false-positives from lint `absolute_paths_not_starting_with_crate`)
- #56330 (Clean up span in non-trailing `..` suggestion)
Failed merges:
r? @ghost
fix futures creating aliasing mutable and shared ref
Fixes the problem described in https://github.com/solson/miri/issues/532#issuecomment-442552764: `set_task_waker` takes a shared reference and puts a copy into the TLS (in a `NonNull`), but `get_task_waker` gets it back out as a mutable reference. That violates "mutable references must not alias anything"!
Remove unsafe `unsafe` inner function.
Within this `Iterator` implementation, a function `unsafe_get` is
defined which unsafely allows _unchecked_ indexing of any element in a
slice. This should be marked as _unsafe_, but it is not.
To address this issue, I removed that inner function.
Make std::os::unix/linux::fs::MetadataExt::a/m/ctime* documentation clearer
I was confused by this API so I clarified what they are doing.
I was wondering if I should try to unify more documentation and examples between `unix` and `linux` (e.g. “of the file” is used in `unix` to refer to the file these metadata is for, “of this file” in `linux`, “of the underlying file” in `std::fs::File`).
Add rustc-guide as a submodule
Adding this as a submodule will allow two things:
- Linking to the guide from doc.rlo
- Doing a link check as part of the rust CI build
Key question: Do we want to wait for the book to be filled out more? e.g. do we ever want to move it out of the nursery?
r? @nikomatsakis
cc @steveklabnik