Skip to content

Commit a921880

Browse files
committed
std: move platform modules into sys::pal
1 parent e324cf0 commit a921880

File tree

251 files changed

+189
-181
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

251 files changed

+189
-181
lines changed

compiler/rustc_middle/src/ty/print/pretty.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -505,29 +505,29 @@ pub trait PrettyPrinter<'tcx>: Printer<'tcx> + fmt::Write {
505505
// we need to handle re-exports correctly.
506506
//
507507
// For example, take `std::os::unix::process::CommandExt`, this trait is actually
508-
// defined at `std::sys::unix::ext::process::CommandExt` (at time of writing).
508+
// defined at `std::sys::pal::unix::ext::process::CommandExt` (at time of writing).
509509
//
510-
// `std::os::unix` reexports the contents of `std::sys::unix::ext`. `std::sys` is
510+
// `std::os::unix` reexports the contents of `std::sys::pal::unix::ext`. `std::sys` is
511511
// private so the "true" path to `CommandExt` isn't accessible.
512512
//
513513
// In this case, the `visible_parent_map` will look something like this:
514514
//
515515
// (child) -> (parent)
516-
// `std::sys::unix::ext::process::CommandExt` -> `std::sys::unix::ext::process`
517-
// `std::sys::unix::ext::process` -> `std::sys::unix::ext`
518-
// `std::sys::unix::ext` -> `std::os`
516+
// `std::sys::pal::unix::ext::process::CommandExt` -> `std::sys::pal::unix::ext::process`
517+
// `std::sys::pal::unix::ext::process` -> `std::sys::pal::unix::ext`
518+
// `std::sys::pal::unix::ext` -> `std::os`
519519
//
520-
// This is correct, as the visible parent of `std::sys::unix::ext` is in fact
520+
// This is correct, as the visible parent of `std::sys::pal::unix::ext` is in fact
521521
// `std::os`.
522522
//
523523
// When printing the path to `CommandExt` and looking at the `cur_def_key` that
524-
// corresponds to `std::sys::unix::ext`, we would normally print `ext` and then go
524+
// corresponds to `std::sys::pal::unix::ext`, we would normally print `ext` and then go
525525
// to the parent - resulting in a mangled path like
526526
// `std::os::ext::process::CommandExt`.
527527
//
528528
// Instead, we must detect that there was a re-export and instead print `unix`
529-
// (which is the name `std::sys::unix::ext` was re-exported as in `std::os`). To
530-
// do this, we compare the parent of `std::sys::unix::ext` (`std::sys::unix`) with
529+
// (which is the name `std::sys::pal::unix::ext` was re-exported as in `std::os`). To
530+
// do this, we compare the parent of `std::sys::pal::unix::ext` (`std::sys::pal::unix`) with
531531
// the visible parent (`std::os`). If these do not match, then we iterate over
532532
// the children of the visible parent (as was done when computing
533533
// `visible_parent_map`), looking for the specific child we currently have and then

library/std/src/sys/mod.rs

Lines changed: 8 additions & 121 deletions
Original file line numberDiff line numberDiff line change
@@ -1,121 +1,8 @@
1-
//! Platform-dependent platform abstraction.
2-
//!
3-
//! The `std::sys` module is the abstracted interface through which
4-
//! `std` talks to the underlying operating system. It has different
5-
//! implementations for different operating system families, today
6-
//! just Unix and Windows, and initial support for Redox.
7-
//!
8-
//! The centralization of platform-specific code in this module is
9-
//! enforced by the "platform abstraction layer" tidy script in
10-
//! `tools/tidy/src/pal.rs`.
11-
//!
12-
//! This module is closely related to the platform-independent system
13-
//! integration code in `std::sys_common`. See that module's
14-
//! documentation for details.
15-
//!
16-
//! In the future it would be desirable for the independent
17-
//! implementations of this module to be extracted to their own crates
18-
//! that `std` can link to, thus enabling their implementation
19-
//! out-of-tree via crate replacement. Though due to the complex
20-
//! inter-dependencies within `std` that will be a challenging goal to
21-
//! achieve.
22-
23-
#![allow(missing_debug_implementations)]
24-
25-
pub mod common;
26-
mod personality;
27-
28-
cfg_if::cfg_if! {
29-
if #[cfg(unix)] {
30-
mod unix;
31-
pub use self::unix::*;
32-
} else if #[cfg(windows)] {
33-
mod windows;
34-
pub use self::windows::*;
35-
} else if #[cfg(target_os = "solid_asp3")] {
36-
mod solid;
37-
pub use self::solid::*;
38-
} else if #[cfg(target_os = "hermit")] {
39-
mod hermit;
40-
pub use self::hermit::*;
41-
} else if #[cfg(target_os = "wasi")] {
42-
mod wasi;
43-
pub use self::wasi::*;
44-
} else if #[cfg(target_family = "wasm")] {
45-
mod wasm;
46-
pub use self::wasm::*;
47-
} else if #[cfg(target_os = "xous")] {
48-
mod xous;
49-
pub use self::xous::*;
50-
} else if #[cfg(target_os = "uefi")] {
51-
mod uefi;
52-
pub use self::uefi::*;
53-
} else if #[cfg(all(target_vendor = "fortanix", target_env = "sgx"))] {
54-
mod sgx;
55-
pub use self::sgx::*;
56-
} else {
57-
mod unsupported;
58-
pub use self::unsupported::*;
59-
}
60-
}
61-
62-
cfg_if::cfg_if! {
63-
// Fuchsia components default to full backtrace.
64-
if #[cfg(target_os = "fuchsia")] {
65-
pub const FULL_BACKTRACE_DEFAULT: bool = true;
66-
} else {
67-
pub const FULL_BACKTRACE_DEFAULT: bool = false;
68-
}
69-
}
70-
71-
#[cfg(not(test))]
72-
cfg_if::cfg_if! {
73-
if #[cfg(target_os = "android")] {
74-
pub use self::android::log2f32;
75-
pub use self::android::log2f64;
76-
} else {
77-
#[inline]
78-
pub fn log2f32(n: f32) -> f32 {
79-
unsafe { crate::intrinsics::log2f32(n) }
80-
}
81-
82-
#[inline]
83-
pub fn log2f64(n: f64) -> f64 {
84-
unsafe { crate::intrinsics::log2f64(n) }
85-
}
86-
}
87-
}
88-
89-
// Solaris/Illumos requires a wrapper around log, log2, and log10 functions
90-
// because of their non-standard behavior (e.g., log(-n) returns -Inf instead
91-
// of expected NaN).
92-
#[cfg(not(test))]
93-
#[cfg(any(target_os = "solaris", target_os = "illumos"))]
94-
#[inline]
95-
pub fn log_wrapper<F: Fn(f64) -> f64>(n: f64, log_fn: F) -> f64 {
96-
if n.is_finite() {
97-
if n > 0.0 {
98-
log_fn(n)
99-
} else if n == 0.0 {
100-
f64::NEG_INFINITY // log(0) = -Inf
101-
} else {
102-
f64::NAN // log(-n) = NaN
103-
}
104-
} else if n.is_nan() {
105-
n // log(NaN) = NaN
106-
} else if n > 0.0 {
107-
n // log(Inf) = Inf
108-
} else {
109-
f64::NAN // log(-Inf) = NaN
110-
}
111-
}
112-
113-
#[cfg(not(test))]
114-
#[cfg(not(any(target_os = "solaris", target_os = "illumos")))]
115-
#[inline]
116-
pub fn log_wrapper<F: Fn(f64) -> f64>(n: f64, log_fn: F) -> f64 {
117-
log_fn(n)
118-
}
119-
120-
#[cfg(not(target_os = "uefi"))]
121-
pub type RawOsError = i32;
1+
/// The PAL (platform abstraction layer) contains platform-specific abstractions
2+
/// for implementing the features in the other submodules module, e.g. UNIX file
3+
/// descriptors.
4+
mod pal;
5+
6+
// FIXME(117276): remove this, move feature implementations into individual
7+
// submodules.
8+
pub use pal::*;

0 commit comments

Comments
 (0)