Auto merge of #106296 - matthiaskrgr:rollup-ukdbqwx, r=matthiaskrgr
Rollup of 4 pull requests Successful merges: - #99244 (doc: clearer and more correct Iterator::scan) - #103707 (Replace libstd, libcore, liballoc terminology in docs) - #104182 (`IN6ADDR_ANY_INIT` and `IN6ADDR_LOOPBACK_INIT` documentation.) - #106273 (rustdoc: remove redundant CSS `.source .content { overflow: visible }`) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
commit
bbdca4c28f
43 changed files with 104 additions and 95 deletions
|
@ -23,7 +23,7 @@ extern "Rust" {
|
|||
// These are the magic symbols to call the global allocator. rustc generates
|
||||
// them to call `__rg_alloc` etc. if there is a `#[global_allocator]` attribute
|
||||
// (the code expanding that attribute macro generates those functions), or to call
|
||||
// the default implementations in libstd (`__rdl_alloc` etc. in `library/std/src/alloc.rs`)
|
||||
// the default implementations in std (`__rdl_alloc` etc. in `library/std/src/alloc.rs`)
|
||||
// otherwise.
|
||||
// The rustc fork of LLVM 14 and earlier also special-cases these function names to be able to optimize them
|
||||
// like `malloc`, `realloc`, and `free`, respectively.
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
//! This library provides smart pointers and collections for managing
|
||||
//! heap-allocated values.
|
||||
//!
|
||||
//! This library, like libcore, normally doesn’t need to be used directly
|
||||
//! This library, like core, normally doesn’t need to be used directly
|
||||
//! since its contents are re-exported in the [`std` crate](../std/index.html).
|
||||
//! Crates that use the `#![no_std]` attribute however will typically
|
||||
//! not depend on `std`, so they’d use this crate instead.
|
||||
|
@ -75,7 +75,7 @@
|
|||
))]
|
||||
#![no_std]
|
||||
#![needs_allocator]
|
||||
// To run liballoc tests without x.py without ending up with two copies of liballoc, Miri needs to be
|
||||
// To run alloc tests without x.py without ending up with two copies of alloc, Miri needs to be
|
||||
// able to "empty" this crate. See <https://github.com/rust-lang/miri-test-libstd/issues/4>.
|
||||
// rustc itself never sets the feature, so this line has no affect there.
|
||||
#![cfg(any(not(feature = "miri-test-libstd"), test, doctest))]
|
||||
|
|
|
@ -653,7 +653,7 @@ impl [u8] {
|
|||
///
|
||||
/// ```error
|
||||
/// error[E0207]: the type parameter `T` is not constrained by the impl trait, self type, or predica
|
||||
/// --> src/liballoc/slice.rs:608:6
|
||||
/// --> library/alloc/src/slice.rs:608:6
|
||||
/// |
|
||||
/// 608 | impl<T: Clone, V: Borrow<[T]>> Concat for [V] {
|
||||
/// | ^ unconstrained type parameter
|
||||
|
|
|
@ -2678,7 +2678,7 @@ impl From<&String> for String {
|
|||
}
|
||||
}
|
||||
|
||||
// note: test pulls in libstd, which causes errors here
|
||||
// note: test pulls in std, which causes errors here
|
||||
#[cfg(not(test))]
|
||||
#[stable(feature = "string_from_box", since = "1.18.0")]
|
||||
impl From<Box<str>> for String {
|
||||
|
|
|
@ -3191,7 +3191,7 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
// note: test pulls in libstd, which causes errors here
|
||||
// note: test pulls in std, which causes errors here
|
||||
#[cfg(not(test))]
|
||||
#[stable(feature = "vec_from_box", since = "1.18.0")]
|
||||
impl<T, A: Allocator> From<Box<[T], A>> for Vec<T, A> {
|
||||
|
@ -3209,7 +3209,7 @@ impl<T, A: Allocator> From<Box<[T], A>> for Vec<T, A> {
|
|||
}
|
||||
}
|
||||
|
||||
// note: test pulls in libstd, which causes errors here
|
||||
// note: test pulls in std, which causes errors here
|
||||
#[cfg(not(no_global_oom_handling))]
|
||||
#[cfg(not(test))]
|
||||
#[stable(feature = "box_from_vec", since = "1.20.0")]
|
||||
|
|
|
@ -32,7 +32,7 @@ fn test_btree_map() {
|
|||
// spawn(f());
|
||||
// }
|
||||
//
|
||||
// where with some unintentionally overconstrained Send impls in liballoc's
|
||||
// where with some unintentionally overconstrained Send impls in alloc's
|
||||
// internals, the future might incorrectly not be Send even though every
|
||||
// single type involved in the program is Send and Sync.
|
||||
require_send_sync(async {
|
||||
|
|
|
@ -1994,7 +1994,7 @@ impl<T: ?Sized> UnsafeCell<T> {
|
|||
#[rustc_const_stable(feature = "const_unsafecell_get", since = "1.32.0")]
|
||||
pub const fn get(&self) -> *mut T {
|
||||
// We can just cast the pointer from `UnsafeCell<T>` to `T` because of
|
||||
// #[repr(transparent)]. This exploits libstd's special status, there is
|
||||
// #[repr(transparent)]. This exploits std's special status, there is
|
||||
// no guarantee for user code that this will work in future versions of the compiler!
|
||||
self as *const UnsafeCell<T> as *const T as *mut T
|
||||
}
|
||||
|
@ -2052,7 +2052,7 @@ impl<T: ?Sized> UnsafeCell<T> {
|
|||
#[rustc_const_stable(feature = "unsafe_cell_raw_get", since = "1.56.0")]
|
||||
pub const fn raw_get(this: *const Self) -> *mut T {
|
||||
// We can just cast the pointer from `UnsafeCell<T>` to `T` because of
|
||||
// #[repr(transparent)]. This exploits libstd's special status, there is
|
||||
// #[repr(transparent)]. This exploits std's special status, there is
|
||||
// no guarantee for user code that this will work in future versions of the compiler!
|
||||
this as *const T as *mut T
|
||||
}
|
||||
|
|
|
@ -558,7 +558,7 @@ impl Display for Arguments<'_> {
|
|||
///
|
||||
/// Derived `Debug` formats are not stable, and so may change with future Rust
|
||||
/// versions. Additionally, `Debug` implementations of types provided by the
|
||||
/// standard library (`libstd`, `libcore`, `liballoc`, etc.) are not stable, and
|
||||
/// standard library (`std`, `core`, `alloc`, etc.) are not stable, and
|
||||
/// may also change with future Rust versions.
|
||||
///
|
||||
/// # Examples
|
||||
|
|
|
@ -1381,8 +1381,8 @@ pub trait Iterator {
|
|||
Take::new(self, n)
|
||||
}
|
||||
|
||||
/// An iterator adapter similar to [`fold`] that holds internal state and
|
||||
/// produces a new iterator.
|
||||
/// An iterator adapter which, like [`fold`], holds internal state, but
|
||||
/// unlike [`fold`], produces a new iterator.
|
||||
///
|
||||
/// [`fold`]: Iterator::fold
|
||||
///
|
||||
|
@ -1394,20 +1394,25 @@ pub trait Iterator {
|
|||
///
|
||||
/// On iteration, the closure will be applied to each element of the
|
||||
/// iterator and the return value from the closure, an [`Option`], is
|
||||
/// yielded by the iterator.
|
||||
/// returned by the `next` method. Thus the closure can return
|
||||
/// `Some(value)` to yield `value`, or `None` to end the iteration.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// Basic usage:
|
||||
///
|
||||
/// ```
|
||||
/// let a = [1, 2, 3];
|
||||
/// let a = [1, 2, 3, 4];
|
||||
///
|
||||
/// let mut iter = a.iter().scan(1, |state, &x| {
|
||||
/// // each iteration, we'll multiply the state by the element
|
||||
/// // each iteration, we'll multiply the state by the element ...
|
||||
/// *state = *state * x;
|
||||
///
|
||||
/// // then, we'll yield the negation of the state
|
||||
/// // ... and terminate if the state exceeds 6
|
||||
/// if *state > 6 {
|
||||
/// return None;
|
||||
/// }
|
||||
/// // ... else yield the negation of the state
|
||||
/// Some(-*state)
|
||||
/// });
|
||||
///
|
||||
|
|
|
@ -38,18 +38,18 @@
|
|||
//! which do not trigger a panic can be assured that this function is never
|
||||
//! called. The `lang` attribute is called `eh_personality`.
|
||||
|
||||
// Since libcore defines many fundamental lang items, all tests live in a
|
||||
// separate crate, libcoretest, to avoid bizarre issues.
|
||||
// Since core defines many fundamental lang items, all tests live in a
|
||||
// separate crate, libcoretest (library/core/tests), to avoid bizarre issues.
|
||||
//
|
||||
// Here we explicitly #[cfg]-out this whole crate when testing. If we don't do
|
||||
// this, both the generated test artifact and the linked libtest (which
|
||||
// transitively includes libcore) will both define the same set of lang items,
|
||||
// transitively includes core) will both define the same set of lang items,
|
||||
// and this will cause the E0152 "found duplicate lang item" error. See
|
||||
// discussion in #50466 for details.
|
||||
//
|
||||
// This cfg won't affect doc tests.
|
||||
#![cfg(not(test))]
|
||||
// To run libcore tests without x.py without ending up with two copies of libcore, Miri needs to be
|
||||
// To run core tests without x.py without ending up with two copies of core, Miri needs to be
|
||||
// able to "empty" this crate. See <https://github.com/rust-lang/miri-test-libstd/issues/4>.
|
||||
// rustc itself never sets the feature, so this line has no affect there.
|
||||
#![cfg(any(not(feature = "miri-test-libstd"), test, doctest))]
|
||||
|
@ -311,7 +311,7 @@ pub mod f64;
|
|||
#[macro_use]
|
||||
pub mod num;
|
||||
|
||||
/* The libcore prelude, not as all-encompassing as the libstd prelude */
|
||||
/* The core prelude, not as all-encompassing as the std prelude */
|
||||
|
||||
pub mod prelude;
|
||||
|
||||
|
@ -378,12 +378,12 @@ mod const_closure;
|
|||
#[stable(feature = "core_primitive", since = "1.43.0")]
|
||||
pub mod primitive;
|
||||
|
||||
// Pull in the `core_arch` crate directly into libcore. The contents of
|
||||
// Pull in the `core_arch` crate directly into core. The contents of
|
||||
// `core_arch` are in a different repository: rust-lang/stdarch.
|
||||
//
|
||||
// `core_arch` depends on libcore, but the contents of this module are
|
||||
// `core_arch` depends on core, but the contents of this module are
|
||||
// set up in such a way that directly pulling it here works such that the
|
||||
// crate uses the this crate as its libcore.
|
||||
// crate uses the this crate as its core.
|
||||
#[path = "../../stdarch/crates/core_arch/src/mod.rs"]
|
||||
#[allow(
|
||||
missing_docs,
|
||||
|
@ -402,12 +402,12 @@ mod core_arch;
|
|||
#[stable(feature = "simd_arch", since = "1.27.0")]
|
||||
pub mod arch;
|
||||
|
||||
// Pull in the `core_simd` crate directly into libcore. The contents of
|
||||
// Pull in the `core_simd` crate directly into core. The contents of
|
||||
// `core_simd` are in a different repository: rust-lang/portable-simd.
|
||||
//
|
||||
// `core_simd` depends on libcore, but the contents of this module are
|
||||
// `core_simd` depends on core, but the contents of this module are
|
||||
// set up in such a way that directly pulling it here works such that the
|
||||
// crate uses this crate as its libcore.
|
||||
// crate uses this crate as its core.
|
||||
#[path = "../../portable-simd/crates/core_simd/src/mod.rs"]
|
||||
#[allow(missing_debug_implementations, dead_code, unsafe_op_in_unsafe_fn, unused_unsafe)]
|
||||
#[allow(rustdoc::bare_urls)]
|
||||
|
|
|
@ -428,7 +428,7 @@ impl f32 {
|
|||
self != self
|
||||
}
|
||||
|
||||
// FIXME(#50145): `abs` is publicly unavailable in libcore due to
|
||||
// FIXME(#50145): `abs` is publicly unavailable in core due to
|
||||
// concerns about portability, so this implementation is for
|
||||
// private use internally.
|
||||
#[inline]
|
||||
|
|
|
@ -427,7 +427,7 @@ impl f64 {
|
|||
self != self
|
||||
}
|
||||
|
||||
// FIXME(#50145): `abs` is publicly unavailable in libcore due to
|
||||
// FIXME(#50145): `abs` is publicly unavailable in core due to
|
||||
// concerns about portability, so this implementation is for
|
||||
// private use internally.
|
||||
#[inline]
|
||||
|
|
|
@ -90,14 +90,14 @@ pub macro unreachable_2021 {
|
|||
),
|
||||
}
|
||||
|
||||
/// An internal trait used by libstd to pass data from libstd to `panic_unwind`
|
||||
/// and other panic runtimes. Not intended to be stabilized any time soon, do
|
||||
/// not use.
|
||||
/// An internal trait used by std to pass data from std to `panic_unwind` and
|
||||
/// other panic runtimes. Not intended to be stabilized any time soon, do not
|
||||
/// use.
|
||||
#[unstable(feature = "std_internals", issue = "none")]
|
||||
#[doc(hidden)]
|
||||
pub unsafe trait BoxMeUp {
|
||||
/// Take full ownership of the contents.
|
||||
/// The return type is actually `Box<dyn Any + Send>`, but we cannot use `Box` in libcore.
|
||||
/// The return type is actually `Box<dyn Any + Send>`, but we cannot use `Box` in core.
|
||||
///
|
||||
/// After this method got called, only some dummy default value is left in `self`.
|
||||
/// Calling this method twice, or calling `get` after calling this method, is an error.
|
||||
|
|
|
@ -157,7 +157,7 @@ impl fmt::Display for PanicInfo<'_> {
|
|||
write!(formatter, "'{}', ", payload)?
|
||||
}
|
||||
// NOTE: we cannot use downcast_ref::<String>() here
|
||||
// since String is not available in libcore!
|
||||
// since String is not available in core!
|
||||
// The payload is a String when `std::panic!` is called with multiple arguments,
|
||||
// but in that case the message is also available.
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
//! Panic support for libcore
|
||||
//! Panic support for core
|
||||
//!
|
||||
//! The core library cannot define panicking, but it does *declare* panicking. This
|
||||
//! means that the functions inside of libcore are allowed to panic, but to be
|
||||
//! useful an upstream crate must define panicking for libcore to use. The current
|
||||
//! means that the functions inside of core are allowed to panic, but to be
|
||||
//! useful an upstream crate must define panicking for core to use. The current
|
||||
//! interface for panicking is:
|
||||
//!
|
||||
//! ```
|
||||
|
@ -13,7 +13,7 @@
|
|||
//! This definition allows for panicking with any general message, but it does not
|
||||
//! allow for failing with a `Box<Any>` value. (`PanicInfo` just contains a `&(dyn Any + Send)`,
|
||||
//! for which we fill in a dummy value in `PanicInfo::internal_constructor`.)
|
||||
//! The reason for this is that libcore is not allowed to allocate.
|
||||
//! The reason for this is that core is not allowed to allocate.
|
||||
//!
|
||||
//! This module contains a few other panicking functions, but these are just the
|
||||
//! necessary lang items for the compiler. All panics are funneled through this
|
||||
|
@ -94,7 +94,7 @@ pub fn panic_nounwind(msg: &'static str) -> ! {
|
|||
// Next we define a bunch of higher-level wrappers that all bottom out in the two core functions
|
||||
// above.
|
||||
|
||||
/// The underlying implementation of libcore's `panic!` macro when no formatting is used.
|
||||
/// The underlying implementation of core's `panic!` macro when no formatting is used.
|
||||
// never inline unless panic_immediate_abort to avoid code
|
||||
// bloat at the call sites as much as possible
|
||||
#[cfg_attr(not(feature = "panic_immediate_abort"), inline(never), cold)]
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
//! The libcore prelude
|
||||
//! The core prelude
|
||||
//!
|
||||
//! This module is intended for users of libcore which do not link to libstd as
|
||||
//! well. This module is imported by default when `#![no_std]` is used in the
|
||||
//! same manner as the standard library's prelude.
|
||||
//! This module is intended for users of core which do not link to std as well.
|
||||
//! This module is imported by default when `#![no_std]` is used in the same
|
||||
//! manner as the standard library's prelude.
|
||||
|
||||
#![stable(feature = "core_prelude", since = "1.4.0")]
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
//! This module contains a sorting algorithm based on Orson Peters' pattern-defeating quicksort,
|
||||
//! published at: <https://github.com/orlp/pdqsort>
|
||||
//!
|
||||
//! Unstable sorting is compatible with libcore because it doesn't allocate memory, unlike our
|
||||
//! Unstable sorting is compatible with core because it doesn't allocate memory, unlike our
|
||||
//! stable sorting implementation.
|
||||
|
||||
use crate::cmp;
|
||||
|
|
|
@ -368,7 +368,7 @@ impl str {
|
|||
#[inline(always)]
|
||||
pub unsafe fn as_bytes_mut(&mut self) -> &mut [u8] {
|
||||
// SAFETY: the cast from `&str` to `&[u8]` is safe since `str`
|
||||
// has the same layout as `&[u8]` (only libstd can make this guarantee).
|
||||
// has the same layout as `&[u8]` (only std can make this guarantee).
|
||||
// The pointer dereference is safe since it comes from a mutable reference which
|
||||
// is guaranteed to be valid for writes.
|
||||
unsafe { &mut *(self as *mut str as *mut [u8]) }
|
||||
|
|
|
@ -17,7 +17,7 @@ mod unicode_data;
|
|||
#[stable(feature = "unicode_version", since = "1.45.0")]
|
||||
pub const UNICODE_VERSION: (u8, u8, u8) = unicode_data::UNICODE_VERSION;
|
||||
|
||||
// For use in liballoc, not re-exported in libstd.
|
||||
// For use in alloc, not re-exported in std.
|
||||
pub use unicode_data::{
|
||||
case_ignorable::lookup as Case_Ignorable, cased::lookup as Cased, conversions,
|
||||
};
|
||||
|
|
|
@ -807,7 +807,7 @@ fn ptr_metadata_bounds() {
|
|||
}
|
||||
// "Synthetic" trait impls generated by the compiler like those of `Pointee`
|
||||
// are not checked for bounds of associated type.
|
||||
// So with a buggy libcore we could have both:
|
||||
// So with a buggy core we could have both:
|
||||
// * `<dyn Display as Pointee>::Metadata == DynMetadata`
|
||||
// * `DynMetadata: !PartialEq`
|
||||
// … and cause an ICE here:
|
||||
|
|
|
@ -1 +1 @@
|
|||
// All `str` tests live in liballoc/tests
|
||||
// All `str` tests live in library/alloc/tests/str.rs
|
||||
|
|
|
@ -61,7 +61,7 @@ pub unsafe fn __rust_start_panic(_payload: *mut &mut dyn BoxMeUp) -> u32 {
|
|||
//
|
||||
// https://docs.microsoft.com/en-us/cpp/intrinsics/fastfail
|
||||
//
|
||||
// Note: this is the same implementation as in libstd's `abort_internal`
|
||||
// Note: this is the same implementation as in std's `abort_internal`
|
||||
unsafe fn abort() -> ! {
|
||||
#[allow(unused)]
|
||||
const FAST_FAIL_FATAL_APP_EXIT: usize = 7;
|
||||
|
@ -89,7 +89,7 @@ pub unsafe fn __rust_start_panic(_payload: *mut &mut dyn BoxMeUp) -> u32 {
|
|||
// This... is a bit of an oddity. The tl;dr; is that this is required to link
|
||||
// correctly, the longer explanation is below.
|
||||
//
|
||||
// Right now the binaries of libcore/libstd that we ship are all compiled with
|
||||
// Right now the binaries of core/std that we ship are all compiled with
|
||||
// `-C panic=unwind`. This is done to ensure that the binaries are maximally
|
||||
// compatible with as many situations as possible. The compiler, however,
|
||||
// requires a "personality function" for all functions compiled with `-C
|
||||
|
@ -109,7 +109,7 @@ pub unsafe fn __rust_start_panic(_payload: *mut &mut dyn BoxMeUp) -> u32 {
|
|||
// library just defines this symbol so there's at least some personality
|
||||
// somewhere.
|
||||
//
|
||||
// Essentially this symbol is just defined to get wired up to libcore/libstd
|
||||
// Essentially this symbol is just defined to get wired up to core/std
|
||||
// binaries, but it should never be called as we don't link in an unwinding
|
||||
// runtime at all.
|
||||
pub mod personalities {
|
||||
|
|
|
@ -82,11 +82,11 @@ cfg_if::cfg_if! {
|
|||
}
|
||||
|
||||
extern "C" {
|
||||
/// Handler in libstd called when a panic object is dropped outside of
|
||||
/// Handler in std called when a panic object is dropped outside of
|
||||
/// `catch_unwind`.
|
||||
fn __rust_drop_panic() -> !;
|
||||
|
||||
/// Handler in libstd called when a foreign exception is caught.
|
||||
/// Handler in std called when a foreign exception is caught.
|
||||
fn __rust_foreign_exception() -> !;
|
||||
}
|
||||
|
||||
|
|
|
@ -356,7 +356,7 @@ impl<I, O> Clone for Client<I, O> {
|
|||
|
||||
fn maybe_install_panic_hook(force_show_panics: bool) {
|
||||
// Hide the default panic output within `proc_macro` expansions.
|
||||
// NB. the server can't do this because it may use a different libstd.
|
||||
// NB. the server can't do this because it may use a different std.
|
||||
static HIDE_PANICS_DURING_EXPANSION: Once = Once::new();
|
||||
HIDE_PANICS_DURING_EXPANSION.call_once(|| {
|
||||
let prev = panic::take_hook();
|
||||
|
|
|
@ -15,9 +15,9 @@ use std::ops::BitXor;
|
|||
/// Type alias for a hashmap using the `fx` hash algorithm.
|
||||
pub type FxHashMap<K, V> = HashMap<K, V, BuildHasherDefault<FxHasher>>;
|
||||
|
||||
/// A speedy hash algorithm for use within rustc. The hashmap in liballoc
|
||||
/// by default uses SipHash which isn't quite as speedy as we want. In the
|
||||
/// compiler we're not really worried about DOS attempts, so we use a fast
|
||||
/// A speedy hash algorithm for use within rustc. The hashmap in alloc by
|
||||
/// default uses SipHash which isn't quite as speedy as we want. In the compiler
|
||||
/// we're not really worried about DOS attempts, so we use a fast
|
||||
/// non-cryptographic hash.
|
||||
///
|
||||
/// This is the same as the algorithm used by Firefox -- which is a homespun
|
||||
|
|
|
@ -112,7 +112,7 @@ macro_rules! define_dispatcher_impl {
|
|||
$name::$method(server, $($arg),*)
|
||||
};
|
||||
// HACK(eddyb) don't use `panic::catch_unwind` in a panic.
|
||||
// If client and server happen to use the same `libstd`,
|
||||
// If client and server happen to use the same `std`,
|
||||
// `catch_unwind` asserts that the panic counter was 0,
|
||||
// even when the closure passed to it didn't panic.
|
||||
let r = if thread::panicking() {
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
// See rustc-std-workspace-core for why this crate is needed.
|
||||
|
||||
// Rename the crate to avoid conflicting with the alloc module in liballoc.
|
||||
// Rename the crate to avoid conflicting with the alloc module in alloc.
|
||||
extern crate alloc as foo;
|
||||
|
||||
pub use foo::*;
|
||||
|
|
|
@ -23,10 +23,10 @@
|
|||
//!
|
||||
//! ## Platform support
|
||||
//!
|
||||
//! Not all platforms that libstd compiles for support capturing backtraces.
|
||||
//! Some platforms simply do nothing when capturing a backtrace. To check
|
||||
//! whether the platform supports capturing backtraces you can consult the
|
||||
//! `BacktraceStatus` enum as a result of `Backtrace::status`.
|
||||
//! Not all platforms that std compiles for support capturing backtraces. Some
|
||||
//! platforms simply do nothing when capturing a backtrace. To check whether the
|
||||
//! platform supports capturing backtraces you can consult the `BacktraceStatus`
|
||||
//! enum as a result of `Backtrace::status`.
|
||||
//!
|
||||
//! Like above with accuracy platform support is done on a best effort basis.
|
||||
//! Sometimes libraries might not be available at runtime or something may go
|
||||
|
|
|
@ -166,7 +166,7 @@ impl Repr {
|
|||
// `new_unchecked` is safe.
|
||||
let res = Self(unsafe { NonNull::new_unchecked(tagged) }, PhantomData);
|
||||
// quickly smoke-check we encoded the right thing (This generally will
|
||||
// only run in libstd's tests, unless the user uses -Zbuild-std)
|
||||
// only run in std's tests, unless the user uses -Zbuild-std)
|
||||
debug_assert!(matches!(res.data(), ErrorData::Custom(_)), "repr(custom) encoding failed");
|
||||
res
|
||||
}
|
||||
|
@ -177,7 +177,7 @@ impl Repr {
|
|||
// Safety: `TAG_OS` is not zero, so the result of the `|` is not 0.
|
||||
let res = Self(unsafe { NonNull::new_unchecked(ptr::invalid_mut(utagged)) }, PhantomData);
|
||||
// quickly smoke-check we encoded the right thing (This generally will
|
||||
// only run in libstd's tests, unless the user uses -Zbuild-std)
|
||||
// only run in std's tests, unless the user uses -Zbuild-std)
|
||||
debug_assert!(
|
||||
matches!(res.data(), ErrorData::Os(c) if c == code),
|
||||
"repr(os) encoding failed for {code}"
|
||||
|
@ -191,7 +191,7 @@ impl Repr {
|
|||
// Safety: `TAG_SIMPLE` is not zero, so the result of the `|` is not 0.
|
||||
let res = Self(unsafe { NonNull::new_unchecked(ptr::invalid_mut(utagged)) }, PhantomData);
|
||||
// quickly smoke-check we encoded the right thing (This generally will
|
||||
// only run in libstd's tests, unless the user uses -Zbuild-std)
|
||||
// only run in std's tests, unless the user uses -Zbuild-std)
|
||||
debug_assert!(
|
||||
matches!(res.data(), ErrorData::Simple(k) if k == kind),
|
||||
"repr(simple) encoding failed {:?}",
|
||||
|
@ -348,7 +348,7 @@ fn kind_from_prim(ek: u32) -> Option<ErrorKind> {
|
|||
// that our encoding relies on for correctness and soundness. (Some of these are
|
||||
// a bit overly thorough/cautious, admittedly)
|
||||
//
|
||||
// If any of these are hit on a platform that libstd supports, we should likely
|
||||
// If any of these are hit on a platform that std supports, we should likely
|
||||
// just use `repr_unpacked.rs` there instead (unless the fix is easy).
|
||||
macro_rules! static_assert {
|
||||
($condition:expr) => {
|
||||
|
|
|
@ -202,7 +202,7 @@
|
|||
no_global_oom_handling,
|
||||
not(no_global_oom_handling)
|
||||
))]
|
||||
// To run libstd tests without x.py without ending up with two copies of libstd, Miri needs to be
|
||||
// To run std tests without x.py without ending up with two copies of std, Miri needs to be
|
||||
// able to "empty" this crate. See <https://github.com/rust-lang/miri-test-libstd/issues/4>.
|
||||
// rustc itself never sets the feature, so this line has no affect there.
|
||||
#![cfg(any(not(feature = "miri-test-libstd"), test, doctest))]
|
||||
|
@ -532,7 +532,7 @@ pub mod process;
|
|||
pub mod sync;
|
||||
pub mod time;
|
||||
|
||||
// Pull in `std_float` crate into libstd. The contents of
|
||||
// Pull in `std_float` crate into std. The contents of
|
||||
// `std_float` are in a different repository: rust-lang/portable-simd.
|
||||
#[path = "../../portable-simd/crates/std_float/src/lib.rs"]
|
||||
#[allow(missing_debug_implementations, dead_code, unsafe_op_in_unsafe_fn, unused_unsafe)]
|
||||
|
@ -602,7 +602,7 @@ mod personality;
|
|||
#[allow(dead_code, unused_attributes, fuzzy_provenance_casts)]
|
||||
mod backtrace_rs;
|
||||
|
||||
// Re-export macros defined in libcore.
|
||||
// Re-export macros defined in core.
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[allow(deprecated, deprecated_in_future)]
|
||||
pub use core::{
|
||||
|
@ -610,7 +610,7 @@ pub use core::{
|
|||
unimplemented, unreachable, write, writeln,
|
||||
};
|
||||
|
||||
// Re-export built-in macros defined through libcore.
|
||||
// Re-export built-in macros defined through core.
|
||||
#[stable(feature = "builtin_macro_prelude", since = "1.38.0")]
|
||||
#[allow(deprecated)]
|
||||
pub use core::{
|
||||
|
|
|
@ -1195,6 +1195,9 @@ impl Ipv6Addr {
|
|||
|
||||
/// An IPv6 address representing localhost: `::1`.
|
||||
///
|
||||
/// This corresponds to constant `IN6ADDR_LOOPBACK_INIT` or `in6addr_loopback` in other
|
||||
/// languages.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
|
@ -1203,11 +1206,15 @@ impl Ipv6Addr {
|
|||
/// let addr = Ipv6Addr::LOCALHOST;
|
||||
/// assert_eq!(addr, Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1));
|
||||
/// ```
|
||||
#[doc(alias = "IN6ADDR_LOOPBACK_INIT")]
|
||||
#[doc(alias = "in6addr_loopback")]
|
||||
#[stable(feature = "ip_constructors", since = "1.30.0")]
|
||||
pub const LOCALHOST: Self = Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1);
|
||||
|
||||
/// An IPv6 address representing the unspecified address: `::`
|
||||
///
|
||||
/// This corresponds to constant `IN6ADDR_ANY_INIT` or `in6addr_any` in other languages.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
|
@ -1216,6 +1223,8 @@ impl Ipv6Addr {
|
|||
/// let addr = Ipv6Addr::UNSPECIFIED;
|
||||
/// assert_eq!(addr, Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0));
|
||||
/// ```
|
||||
#[doc(alias = "IN6ADDR_ANY_INIT")]
|
||||
#[doc(alias = "in6addr_any")]
|
||||
#[stable(feature = "ip_constructors", since = "1.30.0")]
|
||||
pub const UNSPECIFIED: Self = Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0);
|
||||
|
||||
|
|
|
@ -517,7 +517,7 @@ pub fn panicking() -> bool {
|
|||
!panic_count::count_is_zero()
|
||||
}
|
||||
|
||||
/// Entry point of panics from the libcore crate (`panic_impl` lang item).
|
||||
/// Entry point of panics from the core crate (`panic_impl` lang item).
|
||||
#[cfg(not(test))]
|
||||
#[panic_handler]
|
||||
pub fn begin_panic_handler(info: &PanicInfo<'_>) -> ! {
|
||||
|
|
|
@ -306,7 +306,7 @@ unsafe fn u8_slice_as_os_str(s: &[u8]) -> &OsStr {
|
|||
// This casts are safe as OsStr is internally a wrapper around [u8] on all
|
||||
// platforms.
|
||||
//
|
||||
// Note that currently this relies on the special knowledge that libstd has;
|
||||
// Note that currently this relies on the special knowledge that std has;
|
||||
// these types are single-element structs but are not marked
|
||||
// repr(transparent) or repr(C) which would make these casts not allowable
|
||||
// outside std.
|
||||
|
|
|
@ -139,9 +139,9 @@ fn lang_start_internal(
|
|||
// mechanism itself.
|
||||
//
|
||||
// There are a couple of instances where unwinding can begin. First is inside of the
|
||||
// `rt::init`, `rt::cleanup` and similar functions controlled by libstd. In those instances a
|
||||
// panic is a libstd implementation bug. A quite likely one too, as there isn't any way to
|
||||
// prevent libstd from accidentally introducing a panic to these functions. Another is from
|
||||
// `rt::init`, `rt::cleanup` and similar functions controlled by bstd. In those instances a
|
||||
// panic is a std implementation bug. A quite likely one too, as there isn't any way to
|
||||
// prevent std from accidentally introducing a panic to these functions. Another is from
|
||||
// user code from `main` or, more nefariously, as described in e.g. issue #86030.
|
||||
// SAFETY: Only called once during runtime initialization.
|
||||
panic::catch_unwind(move || unsafe { init(argc, argv, sigpipe) }).map_err(rt_abort)?;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
//! Android ABI-compatibility module
|
||||
//!
|
||||
//! The ABI of Android has changed quite a bit over time, and libstd attempts to
|
||||
//! be both forwards and backwards compatible as much as possible. We want to
|
||||
//! The ABI of Android has changed quite a bit over time, and std attempts to be
|
||||
//! both forwards and backwards compatible as much as possible. We want to
|
||||
//! always work with the most recent version of Android, but we also want to
|
||||
//! work with older versions of Android for whenever projects need to.
|
||||
//!
|
||||
|
|
|
@ -164,7 +164,7 @@ pub unsafe fn init(argc: isize, argv: *const *const u8, sigpipe: u8) {
|
|||
unsafe fn reset_sigpipe(#[allow(unused_variables)] sigpipe: u8) {
|
||||
#[cfg(not(any(target_os = "emscripten", target_os = "fuchsia", target_os = "horizon")))]
|
||||
{
|
||||
// We don't want to add this as a public type to libstd, nor do we
|
||||
// We don't want to add this as a public type to std, nor do we
|
||||
// want to `include!` a file from the compiler (which would break
|
||||
// Miri and xargo for example), so we choose to duplicate these
|
||||
// constants from `compiler/rustc_session/src/config/sigpipe.rs`.
|
||||
|
|
|
@ -512,7 +512,7 @@ impl FromRawFd for Socket {
|
|||
// A workaround for this bug is to call the res_init libc function, to clear
|
||||
// the cached configs. Unfortunately, while we believe glibc's implementation
|
||||
// of res_init is thread-safe, we know that other implementations are not
|
||||
// (https://github.com/rust-lang/rust/issues/43592). Code here in libstd could
|
||||
// (https://github.com/rust-lang/rust/issues/43592). Code here in std could
|
||||
// try to synchronize its res_init calls with a Mutex, but that wouldn't
|
||||
// protect programs that call into libc in other ways. So instead of calling
|
||||
// res_init unconditionally, we call it only when we detect we're linking
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
//! Support for "weak linkage" to symbols on Unix
|
||||
//!
|
||||
//! Some I/O operations we do in libstd require newer versions of OSes but we
|
||||
//! need to maintain binary compatibility with older releases for now. In order
|
||||
//! to use the new functionality when available we use this module for
|
||||
//! detection.
|
||||
//! Some I/O operations we do in std require newer versions of OSes but we need
|
||||
//! to maintain binary compatibility with older releases for now. In order to
|
||||
//! use the new functionality when available we use this module for detection.
|
||||
//!
|
||||
//! One option to use here is weak linkage, but that is unfortunately only
|
||||
//! really workable with ELF. Otherwise, use dlsym to get the symbol value at
|
||||
|
|
|
@ -20,7 +20,7 @@ pub fn lock() -> impl Drop {
|
|||
/// Prints the current backtrace.
|
||||
pub fn print(w: &mut dyn Write, format: PrintFmt) -> io::Result<()> {
|
||||
// There are issues currently linking libbacktrace into tests, and in
|
||||
// general during libstd's own unit tests we're not testing this path. In
|
||||
// general during std's own unit tests we're not testing this path. In
|
||||
// test mode immediately return here to optimize away any references to the
|
||||
// libbacktrace symbols
|
||||
if cfg!(test) {
|
||||
|
@ -111,7 +111,7 @@ unsafe fn _print_fmt(fmt: &mut fmt::Formatter<'_>, print_fmt: PrintFmt) -> fmt::
|
|||
}
|
||||
|
||||
/// Fixed frame used to clean the backtrace with `RUST_BACKTRACE=1`. Note that
|
||||
/// this is only inline(never) when backtraces in libstd are enabled, otherwise
|
||||
/// this is only inline(never) when backtraces in std are enabled, otherwise
|
||||
/// it's fine to optimize away.
|
||||
#[cfg_attr(feature = "backtrace", inline(never))]
|
||||
pub fn __rust_begin_short_backtrace<F, T>(f: F) -> T
|
||||
|
@ -127,7 +127,7 @@ where
|
|||
}
|
||||
|
||||
/// Fixed frame used to clean the backtrace with `RUST_BACKTRACE=1`. Note that
|
||||
/// this is only inline(never) when backtraces in libstd are enabled, otherwise
|
||||
/// this is only inline(never) when backtraces in std are enabled, otherwise
|
||||
/// it's fine to optimize away.
|
||||
#[cfg_attr(feature = "backtrace", inline(never))]
|
||||
pub fn __rust_end_short_backtrace<F, T>(f: F) -> T
|
||||
|
|
|
@ -949,7 +949,7 @@ pub mod fast {
|
|||
|
||||
// note that this is just a publicly-callable function only for the
|
||||
// const-initialized form of thread locals, basically a way to call the
|
||||
// free `register_dtor` function defined elsewhere in libstd.
|
||||
// free `register_dtor` function defined elsewhere in std.
|
||||
pub unsafe fn register_dtor(a: *mut u8, dtor: unsafe extern "C" fn(*mut u8)) {
|
||||
unsafe {
|
||||
register_dtor(a, dtor);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
//! These tests just check that the macros are available in libstd.
|
||||
//! These tests just check that the macros are available in std.
|
||||
|
||||
#![cfg_attr(
|
||||
any(
|
||||
|
|
|
@ -88,7 +88,7 @@ pub type _Unwind_Exception_Cleanup_Fn =
|
|||
extern "C" fn(unwind_code: _Unwind_Reason_Code, exception: *mut _Unwind_Exception);
|
||||
|
||||
// FIXME: The `#[link]` attributes on `extern "C"` block marks those symbols declared in
|
||||
// the block are reexported in dylib build of libstd. This is needed when build rustc with
|
||||
// the block are reexported in dylib build of std. This is needed when build rustc with
|
||||
// feature `llvm-libunwind', as no other cdylib will provided those _Unwind_* symbols.
|
||||
// However the `link` attribute is duplicated multiple times and does not just export symbol,
|
||||
// a better way to manually export symbol would be another attribute like `#[export]`.
|
||||
|
|
|
@ -355,10 +355,6 @@ img {
|
|||
max-width: 100%;
|
||||
}
|
||||
|
||||
.source .content {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
.sub-logo-container, .logo-container {
|
||||
/* zero text boxes so that computed line height = image height exactly */
|
||||
line-height: 0;
|
||||
|
|
Loading…
Add table
Reference in a new issue