nix v0.9.0 Release Notes

Release Date: 2017-07-24 // over 6 years ago
  • ➕ Added

    • ➕ Added sysconf, pathconf, and fpathconf (#630
    • ➕ Added sys::signal::SigAction::{ flags, mask, handler} (#611
    • ➕ Added nix::sys::pthread::pthread_self (#591
    • Added AioCb::from_boxed_slice (#582
    • ➕ Added nix::unistd::{openat, fstatat, readlink, readlinkat} (#551)
    • Added nix::pty::{grantpt, posix_openpt, ptsname/ptsname_r, unlockpt} (#556
    • ➕ Added nix::ptr::openpty (#456)
    • Added nix::ptrace::{ptrace_get_data, ptrace_getsiginfo, ptrace_setsiginfo and nix::Error::UnsupportedOperation} (#614)
    • ➕ Added cfmakeraw, cfsetspeed, and tcgetsid. (#527)
    • Added "bad none", "bad write_ptr", "bad write_int", and "bad readwrite" variants to the ioctl! macro. (#670)
    • On Linux and Android, added support for receiving PTRACE_O_TRACESYSGOOD events from wait and waitpid using WaitStatus::PtraceSyscall (#566).

    🔄 Changed

    • The ioctl! macro and its variants now allow the generated functions to have doccomments. (#661)
    • Changed ioctl!(write ...) into ioctl!(write_ptr ...) and ioctl!(write_int ..) variants to more clearly separate those use cases. (#670)
    • Marked sys::mman::{ mmap, munmap, madvise, munlock, msync } as unsafe. (#559)
    • 👍 Minimum supported Rust version is now 1.13.
    • ✂ Removed revents argument from PollFd::new() as it's an output argument and will be overwritten regardless of value. (#542)
    • 🔄 Changed type signature of sys::select::FdSet::contains to make self immutable (#564)
    • Introduced wrapper types for gid_t, pid_t, and uid_t as Gid, Pid, and Uid respectively. Various functions have been changed to use these new types as arguments. (#629)
    • 🛠 Fixed compilation on all Android and iOS targets (#527) and promoted them to Tier 2 support.
    • 🐧 nix::sys::statfs::{statfs,fstatfs} uses statfs definition from libc::statfs instead of own linux specific type nix::sys::Statfs. Also file system type constants like nix::sys::statfs::ADFS_SUPER_MAGIC were removed in favor of the libc equivalent. (#561)
    • 📚 Revised the termios API including additional tests and documentation and exposed it on iOS. (#527)
    • 🚦 eventfd, signalfd, and pwritev/preadv functionality is now included by default for all supported platforms. (#681)
    • The ioctl! macro's plain variants has been replaced with "bad read" to be consistent with other variants. The generated functions also have more strict types for their arguments. The "*_buf" variants also now calculate total array size and take slice references for improved type safety. The documentation has also been dramatically improved. (#670)

    ✂ Removed

    • ✂ Removed io::Error from nix::Error and the conversion from nix::Error to Errno (#614)
    • 🚚 All feature flags have been removed in favor of conditional compilation on supported platforms. execvpe is no longer supported, but this was already broken and will be added back in the next release. (#681)
    • ✂ Removed ioc_* functions and many helper constants and macros within the ioctl module. These should always have been private and only the ioctl! should be used in public code. (#670)

    🛠 Fixed

    • 🛠 Fixed multiple issues compiling under different archetectures and OSes. Now compiles on Linux/MIPS (#538), Linux/PPC (#553), MacOS/x86_64,i686 (#553), NetBSD/x64_64 (#538), FreeBSD/x86_64,i686 (#536), and Android (#631).
    • bind and errno_location now work correctly on Android (#631)
    • ➕ Added nix::ptrace on all Linux-kernel-based platforms #624. Previously it was only available on x86, x86-64, and ARM, and also not on Android.
    • 🛠 Fixed sys::socket::sendmsg with zero entry cmsgs parameter. (#623)
    • Multiple constants related to the termios API have now been properly defined for all supported platforms. (#527)
    • 👍 ioctl! macro now supports working with non-int datatypes and properly supports all platforms. (#670)