| [package] |
| name = "rustix" |
| version = "0.38.31" |
| authors = [ |
| "Dan Gohman <dev@sunfishcode.online>", |
| "Jakub Konka <kubkon@jakubkonka.com>", |
| ] |
| description = "Safe Rust bindings to POSIX/Unix/Linux/Winsock-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 = "2021" |
| 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.63" |
| |
| [dependencies] |
| bitflags = { version = "2.4.0", default-features = false } |
| itoa = { version = "1.0.1", default-features = false, 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. |
| # With Rust 1.70.0, we can switch to `core::cell::OnceCell`. |
| [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. |
| # Enabling only the libc backend will limit available functionality. |
| [target.'cfg(all(not(rustix_use_libc), not(miri), target_os = "linux", target_endian = "little", any(target_arch = "arm", all(target_arch = "aarch64", target_pointer_width = "64"), target_arch = "riscv64", all(rustix_use_experimental_asm, target_arch = "powerpc64"), all(rustix_use_experimental_asm, target_arch = "mips"), all(rustix_use_experimental_asm, target_arch = "mips32r6"), all(rustix_use_experimental_asm, target_arch = "mips64"), all(rustix_use_experimental_asm, target_arch = "mips64r6"), target_arch = "x86", all(target_arch = "x86_64", target_pointer_width = "64"))))'.dependencies] |
| linux-raw-sys = { version = "0.4.12", default-features = false, features = ["general", "errno", "ioctl", "no_std", "elf"], optional = true } |
| errno = { version = "0.3.8", default-features = false, optional = true } |
| libc = { version = "0.2.152", default-features = false, 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", target_endian = "little", any(target_arch = "arm", all(target_arch = "aarch64", target_pointer_width = "64"), target_arch = "riscv64", all(rustix_use_experimental_asm, target_arch = "powerpc64"), all(rustix_use_experimental_asm, target_arch = "mips"), all(rustix_use_experimental_asm, target_arch = "mips32r6"), all(rustix_use_experimental_asm, target_arch = "mips64"), all(rustix_use_experimental_asm, target_arch = "mips64r6"), target_arch = "x86", all(target_arch = "x86_64", target_pointer_width = "64")))))))'.dependencies] |
| errno = { version = "0.3.8", default-features = false } |
| libc = { version = "0.2.152", default-features = false, 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", target_endian = "little", any(target_arch = "arm", all(target_arch = "aarch64", target_pointer_width = "64"), target_arch = "riscv64", all(rustix_use_experimental_asm, target_arch = "powerpc64"), all(rustix_use_experimental_asm, target_arch = "mips"), all(rustix_use_experimental_asm, target_arch = "mips32r6"), all(rustix_use_experimental_asm, target_arch = "mips64"), all(rustix_use_experimental_asm, target_arch = "mips64r6"), target_arch = "x86", all(target_arch = "x86_64", target_pointer_width = "64")))))))'.dependencies] |
| linux-raw-sys = { version = "0.4.12", default-features = false, features = ["general", "ioctl", "no_std"], optional = true } |
| |
| # For the libc backend on Windows, use the Winsock API in windows-sys. |
| [target.'cfg(windows)'.dependencies.windows-sys] |
| version = "0.52.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.errno] |
| version = "0.3.8" |
| default-features = false |
| |
| [dev-dependencies] |
| tempfile = "3.5.0" |
| libc = "0.2.152" |
| errno = { version = "0.3.8", default-features = false } |
| serial_test = "2.0.0" |
| memoffset = "0.9.0" |
| flate2 = "1.0" |
| static_assertions = "1.1.0" |
| |
| [target.'cfg(all(criterion, not(any(target_os = "emscripten", target_os = "wasi"))))'.dev-dependencies] |
| criterion = "0.4" |
| |
| [target.'cfg(windows)'.dev-dependencies] |
| ctor = "0.2.0" |
| |
| # Add Criterion configuration, as described here: |
| # <https://bheisler.github.io/criterion.rs/book/getting_started.html#step-1---add-dependency-to-cargotoml> |
| [[bench]] |
| name = "mod" |
| harness = false |
| |
| [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 = ["bitflags/std", "alloc", "libc?/std", "errno?/std"] |
| |
| # Enable this to request the libc backend. |
| use-libc = ["errno", "libc"] |
| |
| # Enable `rustix::event::*`. |
| event = [] |
| |
| # Enable `rustix::fs::*`. |
| fs = [] |
| |
| # Enable `rustix::io_uring::*` (on platforms that support it). |
| io_uring = ["event", "fs", "net", "linux-raw-sys/io_uring"] |
| |
| # Enable `rustix::mount::*`. |
| mount = [] |
| |
| # Enable `rustix::net::*`. |
| net = ["linux-raw-sys/net", "linux-raw-sys/netlink", "linux-raw-sys/if_ether", "linux-raw-sys/xdp"] |
| |
| # Enable `rustix::thread::*`. |
| thread = ["linux-raw-sys/prctl"] |
| |
| # Enable `rustix::process::*`. |
| process = ["linux-raw-sys/prctl"] |
| |
| # Enable `rustix::shm::*`. |
| shm = ["fs"] |
| |
| # 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::pipe::*`. |
| pipe = [] |
| |
| # Enable `rustix::rand::*`. |
| rand = [] |
| |
| # Enable `rustix::stdio::*`. |
| stdio = [] |
| |
| # Enable `rustix::system::*`. |
| system = ["linux-raw-sys/system"] |
| |
| # Enable `rustix::runtime::*`. This API is undocumented and unstable and |
| # experimental and not intended for general-purpose use. |
| runtime = ["linux-raw-sys/prctl"] |
| |
| # Enable all API features. |
| all-apis = [ |
| "event", |
| "fs", |
| "io_uring", |
| "mm", |
| "mount", |
| "net", |
| "param", |
| "pipe", |
| "process", |
| "procfs", |
| "pty", |
| "rand", |
| "runtime", |
| "shm", |
| "stdio", |
| "system", |
| "termios", |
| "thread", |
| "time", |
| ] |
| |
| # When using the linux_raw backend, should we use libc for reading the aux |
| # vectors, instead of reading them ourselves from /proc/self/auxv? |
| use-libc-auxv = [] |
| |
| # Enable "use-explicitly-provided-auxv" mode, with a public |
| # `rustix::param::init` function that must be called before anything else in |
| # rustix. This is unstable and experimental and not intended for |
| # general-purpose use. |
| use-explicitly-provided-auxv = [] |
| |
| # OS compatibility features |
| |
| # Optimize for Linux 4.11 or later |
| linux_4_11 = [] |
| |
| # Enable all optimizations for the latest Linux versions. |
| linux_latest = ["linux_4_11"] |
| |
| # Enable features which depend on the Rust global allocator, such as functions |
| # that return owned strings or `Vec`s. |
| alloc = [] |
| |
| # This is used in the port of std to rustix. This is experimental and not meant |
| # for regular use. |
| rustc-dep-of-std = [ |
| "dep:core", |
| "dep:alloc", |
| "dep:compiler_builtins", |
| "linux-raw-sys/rustc-dep-of-std", |
| "bitflags/rustc-dep-of-std", |
| "compiler_builtins?/rustc-dep-of-std", |
| ] |
| |
| # Obsolete and deprecated. |
| cc = [] |