From a0b8f38ab54ac451646aa00cd5e91b6c76f22a84 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Thu, 30 May 2024 05:57:19 +0200 Subject: Merging upstream version 1.72.1+dfsg1. Signed-off-by: Daniel Baumann --- vendor/rustix/README.md | 44 ++++++++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 16 deletions(-) (limited to 'vendor/rustix/README.md') diff --git a/vendor/rustix/README.md b/vendor/rustix/README.md index 792dd1197..f82019b0a 100644 --- a/vendor/rustix/README.md +++ b/vendor/rustix/README.md @@ -18,7 +18,7 @@ `rustix` provides efficient memory-safe and [I/O-safe] wrappers to POSIX-like, Unix-like, Linux, and Winsock2 syscall-like APIs, with configurable backends. It uses Rust references, slices, and return values instead of raw pointers, and -[`io-lifetimes`] instead of raw file descriptors, providing memory safety, +[I/O safety types] instead of raw file descriptors, providing memory safety, [I/O safety], and [provenance]. It uses `Result`s for reporting errors, [`bitflags`] instead of bare integer flags, an [`Arg`] trait with optimizations to efficiently accept any Rust string type, and several other efficient @@ -33,11 +33,11 @@ portable APIs built on this functionality, see the [`cap-std`], [`memfd`], * linux_raw, which uses raw Linux system calls and vDSO calls, and is supported on Linux on x86-64, x86, aarch64, riscv64gc, powerpc64le, - arm (v5 onwards), mipsel, and mips64el, with stable, nightly, and 1.48 Rust. + arm (v5 onwards), mipsel, and mips64el, with stable, nightly, and 1.63 Rust. - By being implemented entirely in Rust, avoiding `libc`, `errno`, and pthread cancellation, and employing some specialized optimizations, most functions - compile down to very efficient code. On nightly Rust, they can often be - fully inlined into user code. + compile down to very efficient code, which can often be fully inlined into + user code. - Most functions in `linux_raw` preserve memory, I/O safety, and pointer provenance all the way down to the syscalls. @@ -57,26 +57,38 @@ by default. The rest of the API is conditional with cargo feature flags: | Name | Description | ---------- | --------------------- +| `event` | [`rustix::event`]—Polling and event operations. | `fs` | [`rustix::fs`] and [`rustix::path`]—Filesystem operations. | `io_uring` | [`rustix::io_uring`]—Linux io_uring. | `mm` | [`rustix::mm`]—Memory map operations. | `net` | [`rustix::net`] and [`rustix::path`]—Network-related operations. | `param` | [`rustix::param`]—Process parameters. +| `pipe` | [`rustix::pipe`]—Pipe operations. | `process` | [`rustix::process`]—Process-associated operations. +| `procfs` | [`rustix::procfs`]—Utilities for reading `/proc` on Linux. +| `pty` | [`rustix::pty`]—Pseudoterminal operations. | `rand` | [`rustix::rand`]—Random-related operations. +| `stdio` | [`rustix::stdio`]—Stdio-related operations. +| `system` | [`rustix::system`]—System-related operations. | `termios` | [`rustix::termios`]—Terminal I/O stream operations. | `thread` | [`rustix::thread`]—Thread-associated operations. | `time` | [`rustix::time`]—Time-related operations. | | | `use-libc` | Enable the libc backend. +[`rustix::event`]: https://docs.rs/rustix/*/rustix/fs/index.html [`rustix::fs`]: https://docs.rs/rustix/*/rustix/fs/index.html [`rustix::io_uring`]: https://docs.rs/rustix/*/rustix/io_uring/index.html [`rustix::mm`]: https://docs.rs/rustix/*/rustix/mm/index.html [`rustix::net`]: https://docs.rs/rustix/*/rustix/net/index.html [`rustix::param`]: https://docs.rs/rustix/*/rustix/param/index.html +[`rustix::pipe`]: https://docs.rs/rustix/*/rustix/pipe/index.html [`rustix::process`]: https://docs.rs/rustix/*/rustix/process/index.html +[`rustix::procfs`]: https://docs.rs/rustix/*/rustix/procfs/index.html +[`rustix::pty`]: https://docs.rs/rustix/*/rustix/pty/index.html [`rustix::rand`]: https://docs.rs/rustix/*/rustix/rand/index.html +[`rustix::stdio`]: https://docs.rs/rustix/*/rustix/stdio/index.html +[`rustix::system`]: https://docs.rs/rustix/*/rustix/system/index.html [`rustix::termios`]: https://docs.rs/rustix/*/rustix/termios/index.html [`rustix::thread`]: https://docs.rs/rustix/*/rustix/thread/index.html [`rustix::time`]: https://docs.rs/rustix/*/rustix/time/index.html @@ -109,16 +121,17 @@ to low-level syscalls. `relibc` also doesn't tend to support features not supported on Redox, such as `*at` functions like `openat`, which are important features for `rustix`. -`rustix` has its own code for making direct syscalls, similar to the [`sc`] and -[`scall`] crates, though `rustix` can use either the Rust `asm!` macro or -out-of-line `.s` files so it supports Rust versions from 1.48 through Nightly. -`rustix` can also use Linux's vDSO mechanism to optimize Linux `clock_gettime` -on all architectures, and all Linux system calls on x86. And `rustix`'s -syscalls report errors using an optimized `Errno` type. +`rustix` has its own code for making direct syscalls, similar to the +[`syscall`], [`sc`], and [`scall`] crates, though `rustix` can use either the +Rust `asm!` macro or out-of-line `.s` files so it supports Rust versions from +1.63 through Nightly and architectures where Rust's inline asm is not yet +stable. `rustix` can also use Linux's vDSO mechanism to optimize Linux +`clock_gettime` on all architectures, and all Linux system calls on x86. And +`rustix`'s syscalls report errors using an optimized `Errno` type. `rustix`'s `*at` functions are similar to the [`openat`] crate, but `rustix` provides them as free functions rather than associated functions of a `Dir` -type. `rustix`'s `cwd()` function exposes the special `AT_FDCWD` value in a safe +type. `rustix`'s `CWD` constant exposes the special `AT_FDCWD` value in a safe way, so users don't need to open `.` to get a current-directory handle. `rustix`'s `openat2` function is similar to the [`openat2`] crate, but uses I/O @@ -133,7 +146,7 @@ safety types rather than `RawFd`, and the flags parameters to functions such as ## Minimum Supported Rust Version (MSRV) This crate currently works on the version of [Rust on Debian stable], which is -currently Rust 1.48. This policy may change in the future, in minor version +currently Rust 1.63. This policy may change in the future, in minor version releases, so users using a fixed version of Rust should pin to a specific version of this crate. @@ -149,8 +162,7 @@ version of this crate. [`scall`]: https://crates.io/crates/scall [`openat`]: https://crates.io/crates/openat [`openat2`]: https://crates.io/crates/openat2 -[`fs-set-times`]: https://crates.io/crates/fs-set-times -[`io-lifetimes`]: https://crates.io/crates/io-lifetimes +[I/O safety types]: https://doc.rust-lang.org/stable/std/os/fd/index.html#structs [`termios`]: https://crates.io/crates/termios [`libc`]: https://crates.io/crates/libc [`windows-sys`]: https://crates.io/crates/windows-sys @@ -163,6 +175,6 @@ version of this crate. [I/O-safe]: https://github.com/rust-lang/rfcs/blob/master/text/3128-io-safety.md [I/O safety]: https://github.com/rust-lang/rfcs/blob/master/text/3128-io-safety.md [provenance]: https://github.com/rust-lang/rust/issues/95228 -[`OwnedFd`]: https://docs.rs/io-lifetimes/*/io_lifetimes/struct.OwnedFd.html -[`AsFd`]: https://docs.rs/io-lifetimes/*/io_lifetimes/trait.AsFd.html +[`OwnedFd`]: https://doc.rust-lang.org/stable/std/os/fd/struct.OwnedFd.html +[`AsFd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.AsFd.html [`NOSYS`]: https://docs.rs/rustix/*/rustix/io/struct.Errno.html#associatedconstant.NOSYS -- cgit v1.2.3