nix v0.24.0 Release Notes

Release Date: 2022-04-21 // almost 2 years ago
  • ➕ Added

    • ➕ Added fine-grained features flags. Most Nix functionality can now be conditionally enabled. By default, all features are enabled. (#1611)
    • ➕ Added statfs FS type magic constants for target_os = "android" and synced constants with libc v0.2.121. (#1690)
    • ➕ Added fexecve on DragonFly. (#1577)
    • 🔀 sys::uio::IoVec is now Send and Sync (#1582)
    • ➕ Added EPOLLEXCLUSIVE on Android. (#1567)
    • ➕ Added fdatasync for FreeBSD, Fuchsia, NetBSD, and OpenBSD. (#1581)
    • Added sched_setaffinity and sched_getaffinity on DragonFly. (#1537)
    • ➕ Added posix_fallocate on DragonFly. (#1621)
    • ➕ Added SO_TIMESTAMPING support (#1547)
    • ➕ Added getter methods to MqAttr struct (#1619)
    • ➕ Added the TxTime sockopt and control message. (#1564)
    • ➕ Added POSIX per-process timer support (#1622)
    • ➕ Added sendfile on DragonFly. (#1615)
    • Added UMOUNT_NOFOLLOW, FUSE_SUPER_MAGIC on Linux. (#1634)
    • ➕ Added getresuid, setresuid, getresgid, and setresgid on DragonFly, FreeBSD, and OpenBSD. (#1628)
    • 🛠 Added MAP_FIXED_NOREPLACE on Linux. (#1636)
    • ➕ Added fspacectl on FreeBSD (#1640)
    • ➕ Added accept4 on DragonFly, Emscripten, Fuchsia, Illumos, and NetBSD. (#1654)
    • ➕ Added AsRawFd implementation on OwningIter. (#1563)
    • Added process_vm_readv and process_vm_writev on Android. (#1557)
    • ➕ Added nix::uncontext module on s390x. (#1662)
    • Implemented Extend, FromIterator, and IntoIterator for SigSet and added SigSet::iter and SigSetIter. (#1553)
    • ➕ Added ENOTRECOVERABLE and EOWNERDEAD error codes on DragonFly. (#1665)
    • Implemented Read and Write for &PtyMaster (#1664)
    • ➕ Added MSG_NOSIGNAL for Android, Dragonfly, FreeBSD, Fuchsia, Haiku, Illumos, Linux, NetBSD, OpenBSD and Solaris. (#1670)
    • ➕ Added waitid. (#1584)
    • ➕ Added Ipv6DontFrag for android, iOS, linux and macOS.
    • ➕ Added IpDontFrag for iOS, macOS. (#1692)

    🔄 Changed

    • mqueue functions now operate on a distinct type, nix::mqueue::MqdT. Accessors take this type by reference, not by value. (#1639)
    • ✂ Removed 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)
    • ✂ Removed the the 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)
    • 🔄 Changed getrlimit and setrlimit to use rlim_t directly instead of Option<rlim_t>. (#1668)
    • 🗄 Deprecated InetAddr and SockAddr in favor of SockaddrIn, SockaddrIn6, and SockaddrStorage. (#1684)
    • 🗄 Deprecated 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)
    • Replaced IoVec with IoSlice and IoSliceMut, and replaced IoVec::from_slice with IoSlice::new. (#1643)

    🛠 Fixed

    • InetAddr::from_std now sets the sin_len/sin6_len fields on the BSDs. (#1642)
    • 🛠 Fixed a panic in LinkAddr::addr. That function now returns an Option. (#1675) (#1677)

    ✂ Removed

    • ✂ Removed public access to the inner fields of NetlinkAddr, AlgAddr, SysControlAddr, LinkAddr, and VsockAddr. (#1614)
    • ✂ Removed EventFlag::EV_SYSFLAG. (#1635)