nix v0.8.0 Release Notes

Release Date: 2017-03-02 // about 7 years ago
  • ➕ Added

    • ➕ Added ::nix::sys::termios::BaudRate enum to provide portable baudrate values. (#518)
    • ➕ Added a new WaitStatus::PtraceEvent to support ptrace events on Linux and Android (#438)
    • ➕ Added support for POSIX AIO (#483) (#506)
    • ➕ Added support for XNU system control sockets (#478)
    • ➕ Added support for ioctl calls on BSD platforms (#478)
    • ➕ Added struct TimeSpec (#475) (#483)
    • ➕ Added complete definitions for all kqueue-related constants on all supported OSes (#415)
    • ➕ Added function epoll_create1 and bitflags EpollCreateFlags in ::nix::sys::epoll in order to support ::libc::epoll_create1. (#410)
    • ➕ Added setresuid and setresgid for Linux in ::nix::unistd (#448)
    • ➕ Added getpgid in ::nix::unistd (#433)
    • ➕ Added tcgetpgrp and tcsetpgrp in ::nix::unistd (#451)
    • ➕ Added CLONE_NEWCGROUP in ::nix::sched (#457)
    • ➕ Added getpgrp in ::nix::unistd (#491)
    • ➕ Added fchdir in ::nix::unistd (#497)
    • ➕ Added major and minor in ::nix::sys::stat for decomposing dev_t (#508)
    • 🛠 Fixed the style of many bitflags and use libc in more places. (#503)
    • ➕ Added ppoll in ::nix::poll (#520)
    • ➕ Added support for getting and setting pipe size with fcntl(2) on Linux (#540)

    🔄 Changed

    • ::nix::sys::termios::{cfgetispeed, cfsetispeed, cfgetospeed, cfsetospeed} switched to use BaudRate enum from speed_t. (#518)
    • epoll_ctl now could accept None as argument event when op is EpollOp::EpollCtlDel. (#480)
    • ✂ Removed the bad keyword from the ioctl! macro (#478)
    • 🔄 Changed TimeVal into an opaque Newtype (#475)
    • 🚦 kill's signature, defined in ::nix::sys::signal, changed, so that the signal parameter has type T: Into<Option<Signal>>. None as an argument for that parameter will result in a 0 passed to libc's kill, while a Some-argument will result in the previous behavior for the contained Signal. (#445)
    • 👍 The minimum supported version of rustc is now 1.7.0. (#444)
    • 🔄 Changed KEvent to an opaque structure that may only be modified by its constructor and the ev_set method. (#415) (#442) (#463)
    • pipe2 now calls libc::pipe2 where available. Previously it was emulated using pipe, which meant that setting O_CLOEXEC was not atomic. (#427)
    • 📇 Renamed EpollEventKind to EpollFlags in ::nix::sys::epoll in order for it to conform with our conventions. (#410)
    • EpollEvent in ::nix::sys::epoll is now an opaque proxy for ::libc::epoll_event. The formerly public field events is now be read-only accessible with the new method events() of EpollEvent. Instances of EpollEvent can be constructed using the new method new() of EpollEvent. (#410)
    • 🚦 SigFlags in ::nix::sys::signal has be renamed to SigmaskHow and its type has changed from bitflags to enum in order to conform to our conventions. (#460)
    • sethostname now takes a &str instead of a &[u8] as this provides an API that makes more sense in normal, correct usage of the API.
    • gethostname previously did not expose the actual length of the hostname written from the underlying system call at all. This has been updated to return a &CStr within the provided buffer that is always properly NUL-terminated (this is not guaranteed by the call with all platforms/libc implementations).
    • 🔦 Exposed all fcntl(2) operations at the module level, so they can be imported direclty instead of via FcntlArg enum. (#541)

    🛠 Fixed

    • 🛠 Fixed multiple issues with Unix domain sockets on non-Linux OSes (#474)
    • 🛠 Fixed using kqueue with EVFILT_USER on FreeBSD (#415)
    • 🛠 Fixed the build on FreeBSD, and fixed the getsockopt, sendmsg, and recvmsg functions on that same OS. (#397)
    • 🛠 Fixed an off-by-one bug in UnixAddr::new_abstract in ::nix::sys::socket. (#429)
    • 🛠 Fixed clone passing a potentially unaligned stack. (#490)
    • 🛠 Fixed mkdev not creating a dev_t the same way as libc. (#508)