All Versions
16
Latest Version
Avg Release Cycle
140 days
Latest Release
122 days ago

Changelog History
Page 1

  • v0.15.0

    August 10, 2019

    ➕ Added

    • ➕ Added MSG_WAITALL to MsgFlags in sys::socket. (#1079)
    • 👯 Implemented Clone, Copy, Debug, Eq, Hash, and PartialEq for most types that support them. (#1035)
    • Added copy_file_range wrapper (#1069)
    • ➕ Add mkdirat. (#1084)
    • ➕ Add posix_fadvise. (#1089)
    • ➕ Added AF_VSOCK to AddressFamily. (#1091)
    • ➕ Add unlinkat (#1058)
    • ➕ Add renameat. (#1097)

    🔄 Changed

    • 👌 Support for ifaddrs now present when building for Android. (#1077)
    • 👍 Minimum supported Rust version is now 1.31.0 (#1035) (#1095)
    • Now functions statfs() and fstatfs() return result with Statfs wrapper (#928)

    🛠 Fixed

    • Enabled sched_yield for all nix hosts. (#1090)

    ✂ Removed

  • v0.14.1

    June 07, 2019

    ➕ Added

    • Macros exported by nix may now be imported via use on the Rust 2018 edition without importing helper macros on Linux targets. (#1066)

    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);
    

    🔄 Changed

    • 🔄 Changed some public types from reexports of libc types like uint32_t to the native equivalents like u32. (#1072)

    🛠 Fixed

    • 🛠 Fix the build on Android and Linux/mips with recent versions of libc. (#1072)

    ✂ Removed

  • v0.14.0

    May 22, 2019

    ➕ 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)
  • v0.13.1

    June 10, 2019
  • v0.13.0

    January 15, 2019

    ➕ Added

    • ➕ Added PKTINFO(V4) & V6PKTINFO cmsg support - Android/FreeBSD/iOS/Linux/MacOS. (#990)
    • ➕ Added support of CString type in setsockopt. (#972)
    • ➕ Added option TCP_CONGESTION in setsockopt. (#972)
    • ➕ Added symlinkat wrapper. (#997)
    • ➕ Added ptrace::{getregs, setregs}. (#1010)
    • ➕ Added nix::sys::signal::signal. (#817)
    • ➕ Added an mprotect wrapper. (#991)

    🔄 Changed

    🛠 Fixed

    • lutimes never worked on OpenBSD as it is not implemented on OpenBSD. It has been removed. (#1000)
    • fexecve never worked on NetBSD or on OpenBSD as it is not implemented on either OS. It has been removed. (#1000)

    ✂ Removed

  • v0.12.1

    June 08, 2019
  • v0.12.0

    November 28, 2018

    ➕ Added

    • ➕ Added FromStr and Display impls for nix::sys::Signal (#884)
    • ➕ Added a sync wrapper. (#961)
    • ➕ Added a sysinfo wrapper. (#922)
    • 👌 Support the SO_PEERCRED socket option and the UnixCredentials type on all Linux and Android targets. (#921)
    • ➕ Added support for SCM_CREDENTIALS, allowing to send process credentials over Unix sockets. (#923)
    • ➕ Added a dir module for reading directories (wraps fdopendir, readdir, and rewinddir). (#916)
    • ➕ Added kmod module that allows loading and unloading kernel modules on Linux. (#930)
    • ➕ Added futimens and utimesat wrappers (#944), an lutimes wrapper (#967), and a utimes wrapper (#946).
    • ➕ Added AF_UNSPEC wrapper to AddressFamily (#948)
    • ➕ Added the mode_t public alias within sys::stat. (#954)
    • ➕ Added a truncate wrapper. (#956)
    • ➕ Added a fchownat wrapper. (#955)
    • ➕ Added support for ptrace on BSD operating systems (#949)
    • ➕ Added ptrace functions for reads and writes to tracee memory and ptrace kill (#949) (#958)
    • ➕ Added a acct wrapper module for enabling and disabling process accounting (#952)
    • Added the time_t and suseconds_t public aliases within sys::time. (#968)
    • ➕ Added unistd::execvpe for Haiku, Linux and OpenBSD (#975)
    • ➕ Added Error::as_errno. (#977)

    🔄 Changed

    • Increased required Rust version to 1.24.1 (#900) (#966)

    🛠 Fixed

    • Made preadv take immutable slice of IoVec. (#914)
    • 🛠 Fixed passing multiple file descriptors over Unix Sockets. (#918)

    ✂ Removed

  • v0.11.1

    June 07, 2019
  • v0.11.0

    June 02, 2018

    ➕ Added

    • ➕ Added sendfile on FreeBSD and Darwin. (#901)
    • ➕ Added pselect (#894)
    • 🔦 Exposed preadv and pwritev on the BSDs. (#883)
    • ➕ Added mlockall and munlockall (#876)
    • ➕ Added SO_MARK on Linux. (#873)
    • ➕ Added safe support for nearly any buffer type in the sys::aio module. (#872)
    • ➕ Added sys::aio::LioCb as a wrapper for libc::lio_listio. (#872)
    • ➕ Added unistd::getsid (#850)
    • ➕ Added alarm. (#830)
    • Added interface flags IFF_NO_PI, IFF_TUN, IFF_TAP on linux-like systems. (#853)
    • ➕ Added statvfs module to all MacOS and Linux architectures. (#832)
    • Added EVFILT_EMPTY, EVFILT_PROCDESC, and EVFILT_SENDFILE on FreeBSD. (#825)
    • 🔦 Exposed termios::cfmakesane on FreeBSD. (#825)
    • Exposed MSG_CMSG_CLOEXEC on *BSD. (#825)
    • ➕ Added fchmod, fchmodat. (#857)
    • Added request_code_write_int! on FreeBSD/DragonFlyBSD (#833)

    🔄 Changed

    • Display and Debug for SysControlAddr now includes all fields. (#837)
    • ioctl! has been replaced with a family of ioctl_*! macros. (#833)
    • io!, ior!, iow!, and iorw! has been renamed to request_code_none!, request_code_read!, request_code_write!, and request_code_readwrite! respectively. These have also now been exposed in the documentation. (#833)
    • 🐧 Enabled more ptrace::Request definitions for uncommon Linux platforms (#892)
    • Emulation of FD_CLOEXEC and O_NONBLOCK was removed from socket(), accept4(), and socketpair(). (#907)

    🛠 Fixed

    • 🛠 Fixed possible panics when using SigAction::flags on Linux (#869)
    • Properly exposed 460800 and 921600 baud rates on NetBSD (#837)
    • Fixed ioctl_write_int! on FreeBSD/DragonFlyBSD (#833)
    • ioctl_write_int! now properly supports passing a c_ulong as the parameter on Linux non-musl targets (#833)

    ✂ Removed

    • ✂ Removed explicit support for the bytes crate from the sys::aio module. See sys::aio::AioCb::from_boxed_slice examples for alternatives. (#872)
    • ✂ Removed sys::aio::lio_listio. Use sys::aio::LioCb::listio instead. (#872)
    • ✂ Removed emulated accept4() from macos, ios, and netbsd targets (#907)
    • ✂ Removed IFF_NOTRAILERS on OpenBSD, as it has been removed in OpenBSD 6.3 (#893)
  • v0.10.0

    January 26, 2018

    ➕ Added

    • ➕ Added specialized wrapper: sys::ptrace::step (#852)
    • Added AioCb::from_ptr and AioCb::from_mut_ptr (#820)
    • ➕ Added specialized wrappers: sys::ptrace::{traceme, syscall, cont, attach}. Using the matching routines with sys::ptrace::ptrace is now deprecated.
    • ➕ Added nix::poll module for all platforms (#672)
    • ➕ Added nix::ppoll function for FreeBSD and DragonFly (#672)
    • ➕ Added protocol families in AddressFamily enum. (#647)
    • ➕ Added the pid() method to WaitStatus for extracting the PID. (#722)
    • ➕ Added nix::unistd:fexecve. (#727)
    • 🔦 Expose uname() on all platforms. (#739)
    • 🔦 Expose signalfd module on Android as well. (#739)
    • ➕ Added nix::sys::ptrace::detach. (#749)
    • ➕ Added timestamp socket control message variant: nix::sys::socket::ControlMessage::ScmTimestamp (#663)
    • ➕ Added socket option variant that enables the timestamp socket control message: nix::sys::socket::sockopt::ReceiveTimestamp (#663)
    • ➕ Added more accessor methods for AioCb (#773)
    • ➕ Add nix::sys::fallocate ([#768](https:://github.com/nix-rust/nix/pull/768))
    • ➕ Added nix::unistd::mkfifo. (#602)
    • Added ptrace::Options::PTRACE_O_EXITKILL on Linux and Android. (#771)
    • Added nix::sys::uio::{process_vm_readv, process_vm_writev} on Linux (#568)
    • ➕ Added nix::unistd::{getgroups, setgroups, getgrouplist, initgroups}. (#733)
    • ➕ Added nix::sys::socket::UnixAddr::as_abstract on Linux and Android. (#785)
    • ➕ Added nix::unistd::execveat on Linux and Android. (#800)
    • ➕ Added the from_raw() method to WaitStatus for converting raw status values to WaitStatus independent of syscalls. (#741)
    • ➕ Added more standard trait implementations for various types. (#814)
    • ➕ Added sigprocmask to the signal module. (#826)
    • ➕ Added nix::sys::socket::LinkAddr on Linux and all bsdlike system. (#813)
    • Add socket options for IP_TRANSPARENT / BIND_ANY. (#835)

    🔄 Changed

    • 🔦 Exposed the mqueue module for all supported operating systems. (#834)
    • 👉 Use native pipe2 on all BSD targets. Users should notice no difference. (#777)
    • 📇 Renamed existing ptrace wrappers to encourage namespacing (#692)
    • Marked sys::ptrace::ptrace as unsafe.
    • 🔄 Changed function signature of socket() and socketpair(). The protocol argument has changed type from c_int to SockProtocol. It accepts a None value for default protocol that was specified with zero using c_int. (#647)
    • Made select easier to use, adding the ability to automatically calculate the nfds parameter using the new FdSet::highest (#701)
    • 🔦 Exposed unistd::setresuid and unistd::setresgid on FreeBSD and OpenBSD (#721)
    • ♻️ Refactored the statvfs module removing extraneous API functions and the statvfs::vfs module. Additionally (f)statvfs() now return the struct directly. And the returned Statvfs struct now exposes its data through accessor methods. (#729)
    • 👍 The addr argument to madvise and msync is now *mut to better match the libc API. (#731)
    • shm_open and shm_unlink are no longer exposed on Android targets, where they are not officially supported. (#731)
    • MapFlags, MmapAdvise, and MsFlags expose some more variants and only officially-supported variants are provided for each target. (#731)
    • Marked pty::ptsname function as unsafe (#744)
    • ⚡️ Moved constants ptrace request, event and options to enums and updated ptrace functions and argument types accordingly. (#749)
    • AioCb::Drop will now panic if the AioCb is still in-progress (#715)
    • 🐧 Restricted nix::sys::socket::UnixAddr::new_abstract to Linux and Android only. (#785)
    • 🚚 The ucred struct has been removed in favor of a UserCredentials struct that contains only getters for its fields. (#814)
    • Both ip_mreq and ipv6_mreq have been replaced with IpMembershipRequest and Ipv6MembershipRequest. (#814)
    • ✂ Removed return type from pause. (#829)
    • 🔄 Changed the termios APIs to allow for using a u32 instead of the BaudRate enum on BSD platforms to support arbitrary baud rates. See the module docs for nix::sys::termios for more details. (#843)

    🛠 Fixed

    • 🛠 Fix compilation and tests for OpenBSD targets (#688)
    • 🛠 Fixed error handling in AioCb::fsync, AioCb::read, and AioCb::write. It is no longer an error to drop an AioCb that failed to enqueue in the OS. (#715)
    • 🛠 Fix potential memory corruption on non-Linux platforms when using sendmsg/recvmsg, caused by mismatched msghdr definition. (#648)

    ✂ Removed

    • AioCb::from_boxed_slice has been removed. It was never actually safe. Use from_bytes or from_bytes_mut instead. (#820)
    • 🚚 The syscall module has been removed. This only exposed enough functionality for memfd_create() and pivot_root(), which are still exposed as separate functions. (#747)
    • The Errno variants are no longer reexported from the errno module. Errno itself is no longer reexported from the crate root and instead must be accessed using the errno module. (#696)
    • Removed MS_VERBOSE, MS_NOSEC, and MS_BORN from MsFlags. These are internal kernel flags and should never have been exposed. (#814)