rustix 0.37.27

Safe Rust bindings to POSIX/Unix/Linux/Winsock2-like syscalls
Documentation
[package]
name = "rustix"
version = "0.37.27"
authors = [
    "Dan Gohman <dev@sunfishcode.online>",
    "Jakub Konka <kubkon@jakubkonka.com>",
]
description = "Safe Rust bindings to POSIX/Unix/Linux/Winsock2-like syscalls"
documentation = "https://docs.rs/rustix"
license = "Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT"
repository = "https://github.com/bytecodealliance/rustix"
edition = "2018"
keywords = ["api", "file", "network", "safe", "syscall"]
categories = ["os::unix-apis", "date-and-time", "filesystem", "network-programming"]
include = ["src", "build.rs", "Cargo.toml", "COPYRIGHT", "LICENSE*", "/*.md", "benches"]
rust-version = "1.48"

[build-dependencies]
cc = { version = "1.0.68", optional = true }

[dependencies]
bitflags = "1.3.2"
itoa = { version = "1.0.1", default-features = false, optional = true }
io-lifetimes = { version = "1.0.10", default-features = false, features = ["close"], optional = true }

# Special dependencies used in rustc-dep-of-std mode.
core = { version = "1.0.0", optional = true, package = "rustc-std-workspace-core" }
alloc = { version = "1.0.0", optional = true, package = "rustc-std-workspace-alloc" }
compiler_builtins = { version = '0.1.49', optional = true }

# The procfs feature needs once_cell.
[target.'cfg(any(target_os = "android", target_os = "linux"))'.dependencies]
once_cell = { version = "1.5.2", optional = true }

# Dependencies for platforms where linux_raw is supported, in addition to libc:
#
# On Linux on selected architectures, the linux_raw backend is supported, in
# addition to the libc backend. The linux_raw backend is used by default. The
# libc backend can be selected via adding `--cfg=rustix_use_libc` to
# `RUSTFLAGS` or enabling the `use-libc` cargo feature.
[target.'cfg(all(not(rustix_use_libc), not(miri), target_os = "linux", any(target_arch = "x86", all(target_arch = "x86_64", target_pointer_width = "64"), all(target_endian = "little", any(target_arch = "arm", all(target_arch = "aarch64", target_pointer_width = "64"), target_arch = "powerpc64", target_arch = "riscv64", target_arch = "mips", target_arch = "mips64")))))'.dependencies]
linux-raw-sys = { version = "0.3.6", default-features = false, features = ["general", "errno", "ioctl", "no_std"] }
libc_errno = { package = "errno", version = "0.3.1", default-features = false, optional = true }
libc = { version = "0.2.144", features = ["extra_traits"], optional = true }

# Dependencies for platforms where only libc is supported:
#
# On all other Unix-family platforms, and under Miri, we always use the libc
# backend, so enable its dependencies unconditionally.
[target.'cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = "linux", any(target_arch = "x86", all(target_arch = "x86_64", target_pointer_width = "64"), all(target_endian = "little", any(target_arch = "arm", all(target_arch = "aarch64", target_pointer_width = "64"), target_arch = "powerpc64", target_arch = "riscv64", target_arch = "mips", target_arch = "mips64"))))))))'.dependencies]
libc_errno = { package = "errno", version = "0.3.1", default-features = false }
libc = { version = "0.2.144", features = ["extra_traits"] }

# Additional dependencies for Linux with the libc backend:
#
# Some syscalls do not have libc wrappers, such as in `io_uring`. For these,
# the libc backend uses the linux-raw-sys ABI and `libc::syscall`.
[target.'cfg(all(any(target_os = "android", target_os = "linux"), any(rustix_use_libc, miri, not(all(target_os = "linux", any(target_arch = "x86", all(target_arch = "x86_64", target_pointer_width = "64"), all(target_endian = "little", any(target_arch = "arm", all(target_arch = "aarch64", target_pointer_width = "64"), target_arch = "powerpc64", target_arch = "riscv64", target_arch = "mips", target_arch = "mips64"))))))))'.dependencies]
linux-raw-sys = { version = "0.3.6", default-features = false, features = ["general", "ioctl", "no_std"] }

# For the libc backend on Windows, use the Winsock2 API in windows-sys.
[target.'cfg(windows)'.dependencies.windows-sys]
version = "0.48.0"
features = [
    "Win32_Foundation",
    "Win32_Networking_WinSock",
    "Win32_NetworkManagement_IpHelper",
    "Win32_System_Threading"
]

# For the libc backend on Windows, also use the errno crate, which has Windows
# support.
[target.'cfg(windows)'.dependencies.libc_errno]
version = "0.3.1"
package = "errno"
default-features = false

[dev-dependencies]
tempfile = "3.4.0"
libc = "0.2.144"
libc_errno = { package = "errno", version = "0.3.1", default-features = false }
io-lifetimes = { version = "1.0.10", default-features = false, features = ["close"] }
memoffset = "0.9.0"
flate2 = "1.0"

[target.'cfg(windows)'.dev-dependencies]
ctor = "0.2.0"

[package.metadata.docs.rs]
features = ["all-apis"]
rustdoc-args = ["--cfg", "doc_cfg"]
targets = [
    "x86_64-unknown-linux-gnu",
    "i686-unknown-linux-gnu",
    "x86_64-apple-darwin",
    "x86_64-pc-windows-msvc",
    "x86_64-unknown-freebsd",
    "x86_64-unknown-openbsd",
    "x86_64-unknown-netbsd",
    "x86_64-unknown-dragonfly",
    "x86_64-unknown-illumos",
    "x86_64-unknown-redox",
    "x86_64-unknown-haiku",
    "wasm32-unknown-emscripten",
    "wasm32-wasi",
]

[features]

# By default, use `std` and use libc for aux values.
#
# It turns out to be bizarrely awkward to obtain the aux values reliably and
# efficiently on Linux from anywhere other than libc. We can do it, but most
# users are better served by just using libc for this.
default = ["std", "use-libc-auxv"]

# This enables use of std. Disabling this enables `#![no_std], and requires
# Rust 1.64 or newer.
std = ["io-lifetimes"]

# This is used in the port of std to rustix.
rustc-dep-of-std = [
    "core",
    "alloc",
    "compiler_builtins",
    "linux-raw-sys/rustc-dep-of-std",
    "bitflags/rustc-dep-of-std",
]

# Enable this to request the libc backend.
use-libc = ["libc_errno", "libc"]

# Enable `rustix::fs::*`.
fs = []

# Enable `rustix::io_uring::*` (on platforms that support it).
io_uring = ["fs", "net"]

# Enable `rustix::net::*`.
net = []

# Enable `rustix::thread::*`.
thread = []

# Enable `rustix::process::*`.
process = []

# Enable `rustix::time::*`.
time = []

# Enable `rustix::param::*`.
param = ["fs"]

# Enable this to enable `rustix::io::proc_self_*` (on Linux) and `ttyname`.
procfs = ["once_cell", "itoa", "fs"]

# Enable `rustix::pty::*`.
pty = ["itoa", "fs"]

# Enable `rustix::termios::*`.
termios = []

# Enable `rustix::mm::*`.
mm = []

# Enable `rustix::rand::*`.
rand = []

# Enable `rustix::runtime::*`. This API is undocumented and unstable and
# experimental and not intended for general-purpose use.
runtime = []

# Enable all API features.
all-apis = [
    "fs",
    "io_uring",
    "mm",
    "net",
    "param",
    "process",
    "procfs",
    "pty",
    "rand",
    "runtime",
    "termios",
    "thread",
    "time",
]

# When using the linux_raw backend, and not using Mustang, should we use libc
# for reading the aux vectors, instead of reading them ourselves from
# /proc/self/auxv?
use-libc-auxv = ["libc"]

# Expose io-lifetimes' features for third-party crate impls.
# Some of these are temporarily disabled, until the upstream crates add the
# needed trait implementations.
#async-std = ["io-lifetimes/async-std"]
#tokio = ["io-lifetimes/tokio"]
os_pipe = ["io-lifetimes/os_pipe"]
#socket2 = ["io-lifetimes/socket2"]
#mio = ["io-lifetimes/mio"]
fs-err = ["io-lifetimes/fs-err"]
#all-impls = ["async-std", "tokio", "os_pipe", "socket2", "mio", "fs-err"]
all-impls = ["os_pipe", "fs-err"]

# OS compatability features

# Optimize for Linux 4.11 or later
linux_4_11 = []

# Enable all optimizations for the latest Linux versions.
linux_latest = ["linux_4_11"]