nix v0.14.0 Release Notes

Release Date: 2019-05-22 // 8 months ago
  • ➕ Added

    • Add IP_RECVIF & IP_RECVDSTADDR. Enable IP_PKTINFO and IP6_PKTINFO on netbsd/openbsd. (#1002)
    • Added inotify_init1, inotify_add_watch and inotify_rm_watch wrappers for Android and Linux. (#1016)
    • Add ALG_SET_IV, ALG_SET_OP and ALG_SET_AEAD_ASSOCLEN control messages and AF_ALG socket types on Linux and Android (#1031)
    • ➕ Add killpg (#1034)
    • ➕ Added ENOTSUP errno support for Linux and Android. (#969)
    • ➕ Add several errno constants from OpenBSD 6.2 (#1036)
    • Added from_std and to_std methods for sys::socket::IpAddr (#1043)
    • ➕ Added nix::unistd:seteuid and nix::unistd::setegid for those platforms that do not support setresuid nor setresgid respectively. (#1044)
    • ➕ Added a access wrapper (#1045)
    • ➕ Add forkpty (#1042)
    • ➕ Add sched_yield (#1050)

    🔄 Changed

    • PollFd event flags renamed to PollFlags (#1024)
    • recvmsg now returns an Iterator over ControlMessageOwned objects rather than ControlMessage objects. This is sadly not backwards-compatible. Fix code like this: rust if let ControlMessage::ScmRights(&fds) = cmsg {

    By replacing it with code like this:

      if let ControlMessageOwned::ScmRights(fds) = cmsg {
    

    (#1020)

    • Replaced CmsgSpace with the cmsg_space macro. (#1020)

    🛠 Fixed

    • 🛠 Fixed multiple bugs when using sendmsg and recvmsg with ancillary control messages (#1020)
    • Macros exported by nix may now be imported via use on the Rust 2018 edition without importing helper macros for BSD targets. (#1041)

    For example, in Rust 2018, the ioctl_read_bad! macro can now be imported without importing the convert_ioctl_res! macro.

      use nix::ioctl_read_bad;
    
      ioctl_read_bad!(tcgets, libc::TCGETS, libc::termios);
    

    ✂ Removed

    • Daemon, NOTE_REAP, and NOTE_EXIT_REPARENTED are now deprecated on OSX and iOS. (#1033)
    • PTRACE_GETREGS, PTRACE_SETREGS, PTRACE_GETFPREGS, and PTRACE_SETFPREGS have been removed from some platforms where they never should've been defined in the first place. (#1055)