Open
Description
Most Nix functions that involve files use RawFd
arguments, but those are difficult to use correctly. For example, it's easy to use-after-close. Rust nightly just added I/O Safety traits that fix most of the problems with RawFd
. It's a very good fit for Nix. We should begin using them as soon as possible. They're on track to be released as part of Rust 1.63.0, which will probably be released on 11-August.
https://github.com/rust-lang/rfcs/blob/master/text/3128-io-safety.md
- pty (feat: I/O safety for 'sys/termios' & 'pty' #1921)
- sched (feat: I/O safety for 'sys/uid' & 'sched' #1931)
- poll (feat: I/O safety for 'poll' #1937, Relax lifetime requirements for PollFd::new #2134)
- unistd (refactor: I/O safety for unistd.rs #2440)
- sendfile (feat: I/O safety for 'sys/sendfile' #1926)
- sys/select(feat: I/O safety for 'sys/select' #1940, Relax lifetime requirements for FdSet::{insert, remove, contains} #2136)
- sys/uio (feat: I/O safety for 'sys/uid' & 'sched' #1931)
- sys/termios (feat: I/O safety for 'sys/termios' & 'pty' #1921)
- sys/inotify (feat: I/O safety for 'sys/inotify' #1913)
- sys/wait (feat: I/O safety for 'sys/wait' #1923)
- sys/signalfd (signalfd optional file descriptor #1874)
- sys/event (Rustier kqueue API #1943)
- sys/statvfs (feat: I/O safety for 'sys/statvfs' #1927)
- sys/stat (refactor: I/O safety for sys/stat.rs #2439)
- sys/signal (feat: I/O safety for 'sys/signal' #1936)
- sys/statfs (feat: I/O safety for 'sys/statfs' #1919)
- sys/epoll (Epoll type #1882 )
- sys/eventfd (feat: I/O safety for 'sys/memfd' & 'sys/event' & 'sys/eventfd' #1928)
- sys/aio (Added I/O safety to sys::aio #2401)
- sys/socket/sockopt (Add I/O safety to sockopt and some socket functions #1915)
- sys/timerfd (feat: I/O safety for 'sys/timerfd' #1933)
- sys/socket/addr (Add I/O safety to sockopt and some socket functions #1915)
- sys/socket (Add I/O safety to sockopt and some socket functions #1915)
- sys/mman (Use I/O safety in sys::mman #1916)
- sys/dir (refactor: I/O safety for modules fcntl and dir #2434)
- sys/memfd (feat: I/O safety for 'sys/memfd' & 'sys/event' & 'sys/eventfd' #1928)
- sys/fcntl (refactor: I/O safety for modules fcntl and dir #2434)
- sys/kmod (feat: I/O safety for 'kmod' #1922)
- sys/fanotify (refactor: I/O safety for sys/fanotify.rs #2443)
Metadata
Metadata
Assignees
Labels
No labels