NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #107 most downloaded on crates.io
Rust friendly bindings to *nix APIs
Last release 5 months ago
11 May 2026
Release timing varies
gaps range from 4 weeks to 11 months
Rarely documented
notes for 10 of the last 60 stable releases
2 versions withdrawn
withdrawn after publishing
12 years old
79 releases · first in 2014
chore: Release nix version 0.31.3
chore: Release nix version 0.31.3
ioctl for Cygwin
(#2715)CLOCK_BOOTTIME/CLOCK_PROCESS_CPUTIME_ID/CLOCK_THREAD_CPUTIME_ID/CLOCK_UPTIME
to NetBSD-like platforms (#2716)kevent64 support on apple targets: Kqueue::kevent64, KEvent64,
and Kevent64Flags. (#2781)EpollEvent::events() to use from_bits_retain instead of
from_bits().unwrap(), preventing panics when the kernel returns
unknown epoll flags. (#2783)KEvent::flags() and KEvent::fflags() to use from_bits_retain
instead of from_bits().unwrap(), preventing panics when the kernel
returns unknown kqueue flags.
(#2784)One column per quarter.
chore: Release nix version 0.31.2
chore: Release nix version 0.31.2
0.2.181, rather than pinned to 0.2.180.
(#2744)chore: Release nix version 0.31.1
chore: Release nix version 0.31.0
chore: Release nix version 0.31.0
Added the UDP GSO/GRO socket options and CMsgs on Android. This includes the following types:
(#2666)
Define errno EWOULDBLOCK as an alias of EAGAIN to match the AIX libc definition. (#2692)
Enable module ifaddrs on GNU Hurd
(#2697)
Add termios OutputFlags::OFILL for Linux, Android, Aix, Cygwin, Fuchsia,
Haiku,
GNU/Hurd, Nto, Redox, Illumos, Solaris and Apple OSes.
(#2701)
add sync() for cygwin (#2708)
nix::sys::ptrace::syscall_info, which was not setting the data
argument properly, causing garbage values to be returned.
(#2653)Eq and PartialEq implementations from SigHandler, because they
never worked reliably. The suggested alternative is matches!. For
example:let h: SigHandler = ...
if matches!(h, SigHandler::SigIgn) {
...
}
``` ([#2642](https://github.com/nix-rust/nix/pull/2642))
IFF_NOTRAILERS by NetBSD, as it has been removed upstream and from
libc (#2724)chore: Release nix version 0.30.1
chore: Release nix version 0.30.1
chore: Release nix version 0.30.0
chore: Release nix version 0.30.0
IPV6_PKTINFO for BSDs/Linux/Android, also
IPV6_RECVPKTINFO for DragonFlyBSD
(#2113)fcntl's F_PREALLOCATE constant for Apple targets.
(#2393)SeekData and SeekHole to Whence for hurd and apple targets
(#2473)From trait implementation between SocketAddr and Sockaddr,
Sockaddr6 (#2474)posix_spawn API
(#2475)F_RDADVISE for Apple target
(#2480)F_RDAHEAD for Apple target
(#2482)F_LOG2PHYS and F_LOG2PHYS_EXT for Apple target
(#2483)MAP_SHARED_VALIDATE was added for all linux targets. & MAP_SYNC was added
for linux with the exclusion of mips architecures, and uclibc
(#2499)getregs()/getregset()/setregset() for Linux/musl/aarch64
(#2502)F_TRANSFEREXTENTS constant for Apple targets
(#2504)MapFlags::MAP_STACK in sys::man for netbsd
(#2526)libc::LOCAL_PEERTOKEN in getsockopt.
(#2529)syslog, openlog, closelog on all unix.
(#2537)TCP_FUNCTION_BLK sockopt, on FreeBSD.
(#2539)Into<OwnedFd> for PtyMaster/Fanotify/Inotify/SignalFd/TimerFd
(#2548)MremapFlags::MREMAP_DONTUNMAP to sys::mman::mremap for linux target.
(#2555)sockopt_impl! to the public API. It's now possible for users to
define
their own sockopts without needing to make a PR to Nix.
(#2556)TCP_FUNCTION_ALIAS sockopt, on FreeBSD.
(#2558)sys::mman::MmapAdvise MADV_PAGEOUT, MADV_COLD, MADV_WIPEONFORK,
MADV_KEEPONFORK for Linux and Android targets
(#2559)Sctp, as well as MSG_NOTIFICATION for non-Android
Linux targets. (#2562)from_owned_fd constructor to EventFd
(#2563)sys::mman::MmapAdvise MADV_POPULATE_READ, MADV_POPULATE_WRITE for
Linux and Android targets
(#2565)from_owned_fd constructor to
PtyMaster/Fanotify/Inotify/SignalFd/TimerFd
(#2566)FcntlArg::F_READAHEAD for FreeBSD target
(#2569)sockopt::LingerSec for Apple targets
(#2572)sockopt::EsclBind for solarish targets
(#2573)std::os::fd::AsRawFd trait method for
nix::sys::fanotify::Fanotify struct
(#2575)setlogmask on all unix.
(#2579)ioctl.
(#2580)sys::socket::SockProtocol::EthIp,
sys::socket::SockProtocol::EthIpv6,
sys::socket::SockProtocol::EthLoop
(#2581)setsockopt option for apple targets
(#2603)FilAttach and FilDetach to socket::sockopt for Illumos
(#2611)PeerPidfd (SO_PEERPIDFD) to socket::sockopt for Linux
(#2620)socket::sockopt::AttachReusePortCbpf for Linux
(#2621)ptrace::syscall_info for linux/glibc
(#2627)name argument of memfd_create() from &CStr to
<P: NixPath>(name: &P) (#2431)fcntl.rs and dir.rs now use I/O-safe types.
(#2434)sys/stat now adopts I/O safety.
(#2439)IpTos has been renamed to Ipv4Tos, the old symbol is
deprecated since 0.30.0 (#2465)EventFlag to EvFlags, and MemFdCreateFlag to MFdFlags
(#2476)nix::sys::socket::UnknownCmsg public and more readable
(#2520)ns argument of sys::prctl::set_timerslack() should be of type
c_ulong (#2505)OSStrings returned by getsockopt.
(#2557)SigevNotify is no longer PartialEq, Eq and Hash due to the use
of BorrowedFd (#1936)EventFd::defuse() is removed because it does nothing, EventFd::arm() is
also removed for symmetry reasons.
(#2452)Copy trait from PollFd
(#2631)getregset()/setregset() for Linux/glibc/x86/x86_64/aarch64/riscv64 and
getregs()/setregs() for Linux/glibc/aarch64/riscv64
(#2044)From trait implementation for conversions between sockaddr_in and
SockaddrIn, sockaddr_in6 and SockaddrIn6
(#2328)mount and unmount API for apple targets.
(#2347)_PC_MIN_HOLE_SIZE for pathconf and fpathconf.
(#2349)impl AsFd for pty::PtyMaster
(#2355)open flag O_SEARCH to AIX, Empscripten, FreeBSD, Fuchsia, solarish,
WASI (#2374)prctl_set_vma_anon_name for Linux/Android.
(#2378)sync(2) for apple_targets/solarish/haiku/aix/hurd, syncfs(2) for
hurd and fdatasync(2) for aix/hurd
(#2379)fcntl::OFlag::O_PATH for FreeBSD and Fuchsia
(#2382)PathconfVar::MIN_HOLE_SIZE for apple_targets.
(#2388)open flag O_SEARCH to apple_targets
(#2391)O_DSYNC may now be used with aio_fsync and fcntl on FreeBSD.
(#2404)Flock::relock for upgrading and downgrading locks.
(#2407)Change the ForkptyResult type to the following repr so that the
uninitialized
master field won't be accessed in the child process:
pub enum ForkptyResult {
Parent {
child: Pid,
master: OwnedFd,
},
Child,
}
``` ([#2315](https://github.com/nix-rust/nix/pull/2315))
Updated cfg_aliases dependency from version 0.1 to 0.2
(#2322)
Change the signature of ptrace::write and ptrace::write_user to make them
safe (#2324)
Allow use of SignalFd through shared reference
Like with many other file descriptors, concurrent use of signalfds is safe.
Changing the signal mask of and reading signals from a signalfd can now be
done
with the SignalFd API even if other references to it exist.
(#2367)
Changed tee, splice and vmsplice RawFd arguments to AsFd. (#2387)
Added I/O safety to the sys/aio module. Most functions that previously
accepted a AsRawFd argument now accept an AsFd instead.
(#2401)
RecvMsg::cmsgs() now returns a Result, and checks that cmsgs were not
truncated. (#2413)
fanotify queue overflows.
(#2399)Added mkdtemp wrapper (#1297)
Add associated constants UTIME_OMIT UTIME_NOW for TimeSpec
(#1879)
Added EventFd type. (#1945)
impl From<Signal> for SigSet.impl std::ops::BitOr for SigSet.impl std::ops::BitOr for Signal.impl std::ops::BitOr<Signal> for SigSet(#1959)
Added TlsGetRecordType control message type and corresponding enum for
linux (#2065)
Added Ipv6HopLimit to ::nix::sys::socket::ControlMessage for Linux,
MacOS, FreeBSD, DragonflyBSD, Android, iOS and Haiku.
(#2074)
Added Icmp and IcmpV6 to SockProtocol
(#2103)
Added rfork support for FreeBSD in unistd
(#2121)
Added MapFlags::map_hugetlb_with_size_log2 method for Linux targets
(#2125)
Added mmap_anonymous function
(#2127)
Added mips32r6 and mips64r6 support for signal, ioctl and ptrace
(#2138)
Added F_GETPATH FcntlFlags entry on Apple/NetBSD/DragonflyBSD for
::nix::fcntl. (#2142)
Added F_KINFO FcntlFlags entry on FreeBSD for ::nix::fcntl.
(#2152)
Added F_GETPATH_NOFIRMLINK and F_BARRIERFSYNC FcntlFlags entry
on Apple for ::nix::fcntl.
(#2155)
Added newtype Flock to automatically unlock a held flock upon drop.
Added Flockable trait to represent valid types for Flock.
(#2170)
Added SetSockOpt impls to enable Linux Kernel TLS on a TCP socket and to
import TLS parameters. (#2175)
::nix::sys::socket::SocketTimestamp enum for configuring the
TsClock (a.k.a SO_TS_CLOCK) sockoptScmRealtime and ScmMonotonic as new options in
::nix::sys::socket::ControlMessageOwned(#2187)
Added new fanotify API: wrappers for fanotify_init and fanotify_mark
(#2194)
Added SpecialCharacterindices support for haiku.
(#2195)
Added sys::sendfile support for solaris/illumos.
(#2198)
impl Display for InterfaceFlags (#2206)
Added sendfilev in sys::sendfile for solarish
(#2207)
Added fctrl::SealFlag::F_SEAL_FUTURE_WRITE
(#2213)
Added Ipv6MulticastHops as socket option to set and read.
(#2234)
Enable ControlMessageOwned::Ipv4RecvIf and
ControlMessageOwned::Ipv4RecvDstAddr for DragonFlyBSD
(#2240)
ClockId::set_time() and time::clock_settime() are now enabled on macOS
(#2241)
Added IpBindAddressNoPort sockopt to support IP_BIND_ADDRESS_NO_PORT
available on linux. (#2244)
Enable MapFlags::map_hugetlb_with_size_log2 method for Android/Fuchsia
(#2245)
Added TcpFastOpenConnect sockopt to support TCP_FASTOPEN_CONNECT
available on linux. (#2247)
Add reboot(2) for OpenBSD/NetBSD
(#2251)
Added new MemFdCreateFlag constants to sys::memfd on Linux and Android
related to hugetlbfs support.
(#2252)
Expose the inner fd of Kqueue through:
(#2258)
Added sys::eventfd support on FreeBSD
(#2259)
Added MmapFlags::MAP_FIXED constant in sys::mman for netbsd and openbsd
(#2260)
Added the SO_LISTENQLIMIT sockopt.
(#2263)
Enable the AT_EMPTY_PATH flag for the fchownat() function
(#2267)
Add AtFlags::AT_EMPTY_PATH for FreeBSD and Hurd
(#2270)
Enable `OFlag::O_DIRECTORY for Solarish (#2275)
Added the Backlog wrapper type for the listen call.
(#2276)
Add clock_nanosleep() (#2277)
Enabled O_DIRECT in fcntl::OFlags for solarish
(#2278)
Added a new API sigsuspend. (#2279)
errno::Errno::set functionerrno::Errno::set_raw functionerrno::Errno::last_raw functionerrno::Errno::from_raw function(#2283)
Enable the AT_EMPTY_PATH flag for the linkat() function
(#2284)
Enable unistd::{sync, syncfs} for Android (#2296)
poll now takes PollTimeout replacing libc::c_int.
(#1876)
Deprecated sys::eventfd::eventfd.
(#1945)
mmap, mmap_anonymous, munmap, mremap, madvise, msync, mprotect,
munlock and mlock updated to use NonNull.
(#2000)
mmap function now accepts F instead of Option<F>
(#2127)
PollFd::new now takes a BorrowedFd argument, with relaxed lifetime
requirements relative to the previous version.
(#2134)
FdSet::{insert, remove, contains} now take BorrowedFd arguments, and have
relaxed lifetime requirements relative to 0.27.1.
(#2136)
The following APIs now take an implementation of AsFd rather than a
RawFd:
unistd::tcgetpgrpunistd::tcsetpgrpunistd::fpathconfunistd::ttynameunistd::getpeereid (#2137)Changed openat() and Dir::openat(), now take optional dirfds
(#2139)
The MSRV is now 1.69 (#2144)
Changed function SockaddrIn::ip() to return net::Ipv4Addr and refactored
SocketAddrV6::ip() to be const
(#2151)
The following APIs now take optional dirfds:
readlinkat()fstatat()mknodat()mkdirat()execveat()(#2157)
Epoll::wait now takes EpollTimeout replacing isize.
(#2202)
errno::errno() function (use Errno::last_raw())errno::from_i32() function (use Errno::from_raw())errno::Errno::from_i32() function (use Errno::from_raw())(#2283)
SigSet incorrect implementation of Eq, PartialEq and Hash
(#1946)::sys::socket::sockopt::IpMulticastTtl by fixing the value of optlen
passed to libc::setsockopt and added tests.
(#2072)recvmmsg, potentially causing UB
(#2119)SignalFd::set_mask. In 0.27.0 it would actually close the file
descriptor. (#2141)sun_len value as
needed.
Fixed sys::socket::addr::from_raw_parts and
sys::socket::Sockaddrlike::len build for solaris.
(#2242)dup3 wrapper to perform a real call to dup3 instead of
emulating it via dup2 and fcntl to get rid of race condition
(#2268)::unistd::Group::members using read_unaligned to avoid crash on
misaligned pointers (#2311)FchownatFlags type has been deprecated, please use AtFlags instead.
(#2267)dup3 wrapper on macOS, which was emulated via dup2 and
fcntl and could cause a race condition. The dup3 system call is not
supported on macOS. (#2268)LinkatFlags type has been deprecated, please use AtFlags instead.
(#2284)AT_EACCESS to AtFlags on all platforms but android
(#1995)PF_ROUTE to SockType on macOS, iOS, all of the BSDs, Fuchsia, Haiku, Illumos.
(#1867)nix::ucontext module on aarch64-unknown-linux-gnu.
(#1662)CanRaw to SockProtocol and CanBcm as a separate SocProtocol constant.
(#1912)Generic and NFLOG to SockProtocol.
(#2092)mq_timedreceive to ::nix::mqueue.
([#1966])(https://github.com/nix-rust/nix/pull/1966)LocalPeerPid to nix::sys::socket::sockopt for macOS. (#1967)TFD_TIMER_CANCEL_ON_SET to ::nix::sys::time::TimerSetTimeFlags on Linux and Android.
(#2040)SOF_TIMESTAMPING_OPT_ID and SOF_TIMESTAMPING_OPT_TSONLY to nix::sys::socket::TimestampingFlag.
(#2048)SO_SETFIB and SO_USER_COOKIE to nix::sys::socket::sockopt for FreeBSD.
(#2085)SO_RTABLE for OpenBSD and SO_ACCEPTFILTER for FreeBSD/NetBSD to nix::sys::socket::sockopt.
(#2085)MSG_WAITFORONE to MsgFlags on Android, Fuchsia, Linux, NetBSD,
FreeBSD, OpenBSD, and Solaris.
(#2014)SO_TS_CLOCK for FreeBSD to nix::sys::socket::sockopt.
(#2093)nix::socket and nix::select are now available on Redox.
(#2012)mqueue::MqdT.
(#2097)kevent_flags on SigEvent.
(#1731)All Cargo features have been removed from the default set. Users will need to specify which features they depend on in their Cargo.toml. (#2091)
Implemented I/O safety for many, but not all, of Nix's APIs. Many public functions argument and return types have changed:
| Original Type | New Type |
|---|---|
| AsRawFd | AsFd |
| RawFd | BorrowedFd or OwnedFd |
(#1906)
Use I/O safety with copy_file_range, and expose it on FreeBSD.
(#1906)
The epoll interface now uses a type. (#1882)
With I/O-safe type applied in pty::OpenptyResult and pty::ForkptyResult,
users no longer need to manually close the file descriptors in these types.
(#1921)
Refactored name parameter of mq_open and mq_unlink to be generic over
NixPath.
(#2102).
Made clone unsafe, like fork.
(#1993)
sys::event::{kevent, kevent_ts} are deprecated in favor of
sys::kevent::Kqueue::kevent, and sys::event::kqueue is deprecated in
favor of sys::kevent::Kqueue::new.
(#1943)nix::sys::signalfd::signalfd is deprecated. Use
nix::sys::signalfd::SignalFd instead.
(#1938)SigEvent support on Fuchsia, where it was unsound.
(#2079)flock from ::nix::fcntl on Solaris.
(#2082)ETH_P_ALL in htons format
(#1925)recvmsg now sets the length of the received sockaddr_un field
correctly on Linux platforms. (#2041)SockaddrIn::from<std::net::SocketAddrV4>,
SockaddrIn6::from<std::net::SockaddrV6>, IpMembershipRequest::new, and
Ipv6MembershipRequest::new with future Rust versions.
(#2061)recvmsg.
(#2095)SockaddrIn6 bug that was swapping flowinfo and scope_id byte
ordering.
(#1964)sys::socket::sockopt::SockType using SOCK_PACKET.
(#1821)SockaddrStorage::{as_unix_addr, as_unix_addr_mut}
(#1871)MntFlags and unmount on all of the BSDs.any() and all() to poll::PollFd.
(#1877)MntFlags and unmount on all of the BSDs.
(#1849)Statfs::flags method.
(#1849)NSFS_MAGIC FsType on Linux and Android.
(#1829)sched_getcpu on platforms that support it.
(#1825)sched_getaffinity and sched_setaffinity on FreeBSD.
(#1804)line_discipline field to Termios on Linux, Android and Haiku
(#1805)domainname field of UtsName on Android and Linux
(#1817)RLIM_INFINITY from libc
(#1831)syncfs(2) on Linux
(#1833)faccessat(2) on illumos
(#1841)eaccess() on FreeBSD, DragonFly and Linux (glibc and musl).
(#1842)IP_TOS SO_PRIORITY and IPV6_TCLASS sockopts for Linux
(#1853)new_unnamed and is_unnamed for UnixAddr on Linux and Android.
(#1857)SockProtocol::Raw for raw sockets
(#1848)IP_MTU (IpMtu) IPPROTO_IP sockopt on Linux and Android.
(#1865)addr argument of sys::mman::mmap is now of type Option<NonZeroUsize>.
(#1870)length argument of sys::mman::mmap is now of type NonZeroUsize.
(#1873)SockaddrStorage to store a Unix-domain socket address on Linux.
(#1871)TimeSpec.
(#1801)User::from_name and Group::from_name panicking
when given a name containing a nul.
(#1815)User::from_uid and User::from_name crash on Android platform.
(#1824)getifaddrs to misbehave.
(#1788)faccessat
(#1780)memfd on Android.
(#1773)ETH_P_ALL to SockProtocol enum
(#1768)SysconfVar variants
(#1761)TimeSpec and TimeVal
(#1760)chflags.
(#1758)aio_writev and aio_readv.
(#1713)From<uid_t> for Uid and From<gid_t> for Gid
(#1727)From<SockaddrIn> for std::net::SocketAddrV4 and
impl From<SockaddrIn6> for std::net::SocketAddrV6.
(#1711)x86_64-unknown-haiku target.
(#1703)ptrace::read_user and ptrace::write_user for Linux.
(#1697)getrusage and helper types UsageWho and Usage
(#1747)DontRoute SockOpt
(#1752)signal::SigSet::from_sigset_t_unchecked().
(#1741)Ipv4OrigDstAddr sockopt and control message.
(#1772)Ipv6OrigDstAddr sockopt and control message.
(#1772)Ipv4SendSrcAddr control message.
(#1776)Reimplemented sendmmsg/recvmmsg to avoid allocations and with better API (#1744)
Rewrote the aio module. The new module:
Box an aio operation.priority arguments to i32.aio_return to usize.
(#1713)nix::poll::ppoll: sigmask parameter is now optional.
(#1739)
Changed gethostname to return an owned OsString.
(#1745)
signal:SigSet is now marked as repr(transparent).
(#1741)
lio_listio operations.
It was too complicated, and didn't fit Nix's theme of zero-cost abstractions.
Instead, it can be reimplemented downstream.
(#1713)nix::sys::socket::recvfrom.
(#1763)SockaddrStorage::{as_link_addr, as_link_addr_mut} for Linux-like
operating systems.
(#1729)SockaddrLike::from_raw implementations for VsockAddr and
SysControlAddr.
(#1736)UnixAddr::size on Linux-based OSes.
(#1702)target_os = "android"
and synced constants with libc v0.2.121.
(#1690)fexecve on DragonFly.
(#1577)sys::uio::IoVec is now Send and Sync
(#1582)EPOLLEXCLUSIVE on Android.
(#1567)fdatasync for FreeBSD, Fuchsia, NetBSD, and OpenBSD.
(#1581)sched_setaffinity and sched_getaffinity on DragonFly.
(#1537)posix_fallocate on DragonFly.
(#1621)SO_TIMESTAMPING support
(#1547)MqAttr struct
(#1619)TxTime sockopt and control message.
(#1564)sendfile on DragonFly.
(#1615)UMOUNT_NOFOLLOW, FUSE_SUPER_MAGIC on Linux.
(#1634)getresuid, setresuid, getresgid, and setresgid on DragonFly, FreeBSD, and OpenBSD.
(#1628)MAP_FIXED_NOREPLACE on Linux.
(#1636)fspacectl on FreeBSD
(#1640)accept4 on DragonFly, Emscripten, Fuchsia, Illumos, and NetBSD.
(#1654)AsRawFd implementation on OwningIter.
(#1563)process_vm_readv and process_vm_writev on Android.
(#1557)nix::ucontext module on s390x.
(#1662)Extend, FromIterator, and IntoIterator for SigSet and
added SigSet::iter and SigSetIter.
(#1553)ENOTRECOVERABLE and EOWNERDEAD error codes on DragonFly.
(#1665)Read and Write for &PtyMaster
(#1664)MSG_NOSIGNAL for Android, Dragonfly, FreeBSD, Fuchsia, Haiku, Illumos, Linux, NetBSD, OpenBSD and Solaris.
(#1670)waitid.
(#1584)Ipv6DontFrag for android, iOS, linux and macOS.IpDontFrag for iOS, macOS.
(#1692)mqueue functions now operate on a distinct type, nix::mqueue::MqdT.
Accessors take this type by reference, not by value.
(#1639)SigSet::extend in favor of <SigSet as Extend<Signal>>::extend.
Because of this change, you now need use std::iter::Extend to call extend
on a SigSet.
(#1553)PATH_MAX restriction from APIs accepting paths. Paths
will now be allocated on the heap if they are too long. In addition, large
instruction count improvements (~30x) were made to path handling.
(#1656)getrlimit and setrlimit to use rlim_t directly
instead of Option<rlim_t>.
(#1668)InetAddr and SockAddr in favor of SockaddrIn, SockaddrIn6,
and SockaddrStorage.
(#1684)IpAddr, Ipv4Addr, and Ipv6Addr in favor of their equivalents
from the standard library.
(#1685)uname now returns a Result<UtsName> instead of just a UtsName and
ignoring failures from libc. And getters on the UtsName struct now return
an &OsStr instead of &str.
(#1672)IoVec with IoSlice and IoSliceMut, and replaced IoVec::from_slice with
IoSlice::new. (#1643)InetAddr::from_std now sets the sin_len/sin6_len fields on the BSDs.
(#1642)LinkAddr::addr. That function now returns an Option.
(#1675)
(#1677)NetlinkAddr, AlgAddr,
SysControlAddr, LinkAddr, and VsockAddr.
(#1614)EventFlag::EV_SYSFLAG.
(#1635)FdSet::insert, FdSet::remove, and
FdSet::contains involving file descriptors outside of the range
0..FD_SETSIZE.
(#1575)LocalPeerCred sockopt.
(#1482)TimeSpec::from_duration and TimeSpec::from_timespec
(#1465)IPV6_V6ONLY sockopt.
(#1470)impl From<User> for libc::passwd trait implementation to convert a User
into a libc::passwd. Consumes the User struct to give ownership over
the member pointers.
(#1471)pthread_kill.
(#1472)mknodat.
(#1473)setrlimit and getrlimit.
(#1302)ptrace::interrupt method for platforms that support PTRACE_INTERRUPT
(#1422)IP6T_SO_ORIGINAL_DST sockopt.
(#1490)PTRACE_EVENT_STOP variant to the sys::ptrace::Event enum
(#1335)SockAddr::from_raw_sockaddr
(#1447)TcpRepair
(#1503)pwritev and preadv for more operating systems.
(#1511)TCP_MAXSEG TCP Maximum Segment Size socket options
(#1292)Ipv4RecvErr and Ipv6RecvErr sockopts and associated control messages.
(#1514)AsRawFd implementation on PollFd.
(#1516)Ipv4Ttl and Ipv6Ttl sockopts.
(#1515)MAP_EXCL, MAP_ALIGNED_SUPER, and MAP_CONCEAL mmap flags, and
exposed MAP_ANONYMOUS for all operating systems.
(#1522)
(#1525)
(#1531)
(#1534)PollFd.
(#1517)FdSet::{contains, highest, fds} no longer require a mutable reference.
(#1464)User::gecos and corresponding libc::passwd::pw_gecos are supported on
64-bit Android, change conditional compilation to include the field in
64-bit Android builds
(#1471)eventfds are supported on Android, change conditional compilation to
include sys::eventfd::eventfd and sys::eventfd::EfdFlagsfor Android
builds.
(#1481)Errno, are now marked as
#[non_exhaustive].
(#1474)const.
(#1476)
(#1492)sys::event::KEvent::filter now returns a Result instead of being
infalliable. The only cases where it will now return an error are cases
where it previously would've had undefined behavior.
(#1484)UnixAddr to encapsulate internals better in order to fix soundness
issues. No longer allows creating a UnixAddr from a raw sockaddr_un.
(#1496)posix_fadvise now returns errors in the conventional way, rather than as a
non-zero value in Ok().
(#1538)Signal::try_from on some platforms.
(#1484)unistd::getgrouplist.
(#1545)nix::sys::signal::NSIG. It was of dubious utility, and not correct
for all platforms.
(#1484)SockAddr/InetAddr::to_str in favor of ToString::to_string
(#1495)SigevNotify on OpenBSD and Redox.
(#1511)unistd::getgrouplist.
(#1545)if_nameindex (#1445)nmount for FreeBSD.
(#1453)IpFreebind socket option (sockopt) on Linux, Fuchsia and Android.
(#1456)TcpUserTimeout socket option (sockopt) on Linux and Fuchsia.
(#1457)renameat2 for Linux
(#1458)RxqOvfl support on Linux, Fuchsia and Android.
(#1455)ptsname_r now returns a lossily-converted string in the event of bad UTF,
just like ptsname.
(#1446)Into<std::io::Error>. It's also Clone, Copy, Eq, and
has a small fixed size. It also requires less typing. For example, the old
enum variant nix::Error::Sys(nix::errno::Errno::EINVAL) is now simply
nix::Error::EINVAL.
(#1446)unistd::getgrouplist.
(#1545)getresuid and getresgid
(#1430)sendfile64 (#1439)MS_LAZYTIME to MsFlags
(#1437)forkpty unsafe, like fork
(#1390)Uid, Gid and Pid methods from_raw and as_raw a const fn
(#1429)Uid::is_root a const fn
(#1429)AioCb is now always pinned. Once a libc::aiocb gets sent to the kernel,
its address in memory must not change. Nix now enforces that by using
std::pin. Most users won't need to change anything, except when using
aio_suspend. See that method's documentation for the new usage.
(#1440)LioCb is now constructed using a distinct LioCbBuilder struct. This
avoids a soundness issue with the old LioCb. Usage is similar but
construction now uses the builder pattern. See the documentation for
details.
(#1440)Errno, instead of consts in the
errno module.
(#1452)sockaddr_ll size, as reported by the Linux kernel, to be smaller then it's definition
(#1395)sendmmsg with multiple cmsgs
(#1414)Errno::EOPNOTSUPP to FreeBSD, where it was missing.
(#1452)sys::socket::accept4 from Android arm because libc removed it in
version 0.2.87.
(#1399)AioCb::from_boxed_slice and AioCb::from_boxed_mut_slice have been
removed. They were useful with earlier versions of Rust, but should no
longer be needed now that async/await are available. AioCbs now work
exclusively with borrowed buffers, not owned ones.
(#1440)unistd::getgrouplist.
(#1545)passwd field to Group (#1338)mremap (#1306)personality (#1331)getpeereid (#1342)IntoIterator for Dir
(#1333).recvfrom on an AddrFamily::Packet socket
(#1344)TimerFd now closes the underlying fd on drop.
(#1381)*_MAGIC filesystem constants on Linux s390x
(#1372)Dir, SignalFd, and PtyMaster are no longer Clone.
(#1382)SockLevel, which hasn't been used for a few years
(#1362)Copy and Clone from TimerFd.
(#1381)recvmmsg.
(#1341)SockProtocol enum
(#1289)clock_gettime, clock_settime, clock_getres,
clock_getcpuclockid functions and ClockId struct.
(#1281)PTRACE_SYSEMU and PTRACE_SYSEMU_SINGLESTEP.
(#1300)TCP_KEEPCNT and TCP_KEEPINTVL TCP keepalive options.
(#1283)SeekData and SeekHole on all Linux targets
(#1284)&[&CStr] and &[CString] as its list argument(s).
(#1278)unistd::fork an unsafe funtion, bringing it in line with libstd's decision.
(#1293)fchown(2) wrapper.
(#1257)MAP_HUGE_SIZE family of flags.
(#1211)F_OFD_* fcntl commands on Linux and Android.
(#1195)env::clearenv(): calls libc::clearenv on platforms
where it's available, and clears the environment of all variables
via std::env::vars and std::env::remove_var on others.
(#1185)FsType inner value made public.
(#1187)unistd::setfsuid and unistd::setfsgid to set the user or group
identity for filesystem checks per-thread.
(#1163)Ord, PartialOrd for unistd::Pid (#1189)select::FdSet::fds method to iterate over file descriptors in a set.
(#1207)sendmmsg and recvmmsg calls
(#1208)SCM_CREDS messages (UnixCredentials) on FreeBSD/DragonFly
(#1216)BindToDevice socket option (sockopt) on Linux
(#1233)EventFilter bitflags for EV_DISPATCH and EV_RECEIPT on OpenBSD.
(#1252)Ipv4PacketInfo and Ipv6PacketInfo to ControlMessage.
(#1222)CpuSet and UnixCredentials now implement Default.
(#1244)unistd::ttyname
(#1259)Ipv4PacketInfo and Ipv6PacketInfo to ControlMessage for iOS and Android.
(#1265)TimerFd.
(#1261)fallocate return type from c_int to () (#1201)sys::ptrace::setregs and sys::ptrace::getregs on x86_64-unknown-linux-musl target
(#1198)ptrace::write is now an unsafe function. Caveat programmer.
(#1245)execv, execve, execvp and execveat in ::nix::unistd and reboot in
::nix::sys::reboot now return Result<Infallible> instead of Result<Void> (#1239)sys::socket::sockaddr_storage_to_addr is no longer unsafe. So is
offset_of!.sys::socket::sockaddr_storage_to_addr, offset_of!, and Errno::clear are
no longer unsafe.SockAddr::as_ffi_pair,sys::socket::sockaddr_storage_to_addr, offset_of!,
and Errno::clear are no longer unsafe.
(#1244)Inotify methods now take self by value instead of by reference
(#1244)nix::poll::ppoll: timeout parameter is now optional, None is equivalent for infinite timeout.Fixed getsockopt. The old code produced UB which triggers a panic with
Rust 1.44.0.
(#1214)
Fixed a bug in nix::unistd that would result in an infinite loop when a group or user lookup required a buffer larger than 16KB. (#1198)
Fixed unaligned casting of cmsg_data to af_alg_iv (#1206)
Fixed readlink/readlinkat when reading symlinks longer than PATH_MAX (#1231)
PollFd, EpollEvent, IpMembershipRequest, Ipv6MembershipRequest,
TimeVal, and IoVec are now repr(transparent). This is required for
correctness's sake across all architectures and compilers, though now bugs
have been reported so far.
(#1243)
Fixed unaligned pointer read in Inotify::read_events.
(#1244)
Removed sys::socket::addr::from_libc_sockaddr from the public API.
(#1215)
Removed sys::termios::{get_libc_termios, get_libc_termios_mut, update_wrapper
from the public API. These were previously hidden in the docs but still usable
by downstream.
(#1235)
Nix no longer implements NixPath for Option<P> where P: NixPath. Most
Nix functions that accept NixPath arguments can't do anything useful with
None. The exceptions (mount and quotactl_sync) already take explicitly
optional arguments.
(#1242)
Removed unistd::daemon and unistd::pipe2 on OSX and ios
(#1255)
Removed sys::event::FilterFlag::NOTE_EXIT_REPARENTED and
sys::event::FilterFlag::NOTE_REAP on OSX and ios.
(#1255)
Removed sys::ptrace::ptrace on Android and Linux.
(#1255)
Dropped support for powerpc64-unknown-linux-gnu (#1266)
CLK_TCK to SysconfVar
(#1177)Added ptrace::seize(): similar to attach() on Linux
but with better-defined semantics.
(#1154)
Added Signal::as_str(): returns signal name as &'static str
(#1138)
Added posix_fallocate.
(#1105)
Implemented Default for FdSet
(#1107)
Added NixPath::is_empty.
(#1107)
Added mkfifoat
([#1133](https://github.com/nix
chore: Release nix version 0.29.0
chore: Release nix version 0.29.0
chore: Release nix version 0.28.0
chore: Release nix version 0.28.0
chore: Release nix version 0.27.1
chore: Release nix version 0.27.1
chore: Release nix version 0.27.0
chore: Release nix version 0.27.0
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →