All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
- Added
sysconf
,pathconf
, andfpathconf
(#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
, andtcgetsid
. (#527)
- Changed
ioctl!(write ...)
to take argument by value instead as pointer. If you need a pointer as argument, useioctl!(write buf ...)
. (#626) - Marked
sys::mman::{ mmap, munmap, madvise, munlock, msync }
as unsafe. (#559) - Minimum supported Rust version is now 1.13.
- Removed
revents
argument fromPollFd::new()
as it's an output argument and will be overwritten regardless of value. (#542) - Changed type signature of
sys::select::FdSet::contains
to makeself
immutable (#564) - Introduced wrapper types for
gid_t
,pid_t
, anduid_t
asGid
,Pid
, andUid
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 fromlibc::statfs
instead of own linux specific typenix::sys::Statfs
. Also file system type constants likenix::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
, andpwritev
/preadv
functionality is now included by default for all supported platforms. (#681)
- Removed
io::Error
fromnix::Error
and the conversion fromnix::Error
toErrno
(#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)
- 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), andAndroid
(#631). bind
anderrno_location
now work correctly onAndroid
(#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 entrycmsgs
parameter. (#623) - Multiple constants related to the termios API have now been properly defined for all supported platforms. (#527)
- Fixed build on FreeBSD. (Cherry-picked a859ee3c)
- 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 bitflagsEpollCreateFlags
in::nix::sys::epoll
in order to support::libc::epoll_create1
. (#410) - Added
setresuid
andsetresgid
for Linux in::nix::unistd
(#448) - Added
getpgid
in::nix::unistd
(#433) - Added
tcgetpgrp
andtcsetpgrp
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
andminor
in::nix::sys::stat
for decomposingdev_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)
::nix::sys::termios::{cfgetispeed, cfsetispeed, cfgetospeed, cfsetospeed}
switched to useBaudRate
enum fromspeed_t
. (#518)epoll_ctl
now could accept None as argumentevent
when op isEpollOp::EpollCtlDel
. (#480)- Removed the
bad
keyword from theioctl!
macro (#478) - Changed
TimeVal
into an opaque Newtype (#475) kill
's signature, defined in::nix::sys::signal
, changed, so that the signal parameter has typeT: Into<Option<Signal>>
.None
as an argument for that parameter will result in a 0 passed to libc'skill
, while aSome
-argument will result in the previous behavior for the containedSignal
. (#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 theev_set
method. (#415) (#442) (#463) pipe2
now callslibc::pipe2
where available. Previously it was emulated usingpipe
, which meant that settingO_CLOEXEC
was not atomic. (#427)- Renamed
EpollEventKind
toEpollFlags
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 fieldevents
is now be read-only accessible with the new methodevents()
ofEpollEvent
. Instances ofEpollEvent
can be constructed using the new methodnew()
of EpollEvent. (#410)SigFlags
in::nix::sys::signal
has be renamed toSigmaskHow
and its type has changed frombitflags
toenum
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 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)
- Added
lseek
andlseek64
in::nix::unistd
(#377) - Added
mkdir
andgetcwd
in::nix::unistd
(#416) - Added accessors
sigmask_mut
andsigmask
toUContext
in::nix::ucontext
. (#370) - Added
WUNTRACED
toWaitPidFlag
in::nix::sys::wait
for non-linux targets. (#379) - Added new module
::nix::sys::reboot
with enumerationRebootMode
and functionsreboot
andset_cad_enabled
. Currently for linux only. (#386) FdSet
in::nix::sys::select
now also implementsClone
. (#405)- Added
F_FULLFSYNC
toFcntlArg
in::nix::fcntl
for apple targets. (#407) - Added
CpuSet::unset
in::nix::sched
. (#402) - Added constructor method
new()
toPollFd
in::nix::poll
, in order to allow creation of objects, after removing public access to members. (#399) - Added method
revents()
toPollFd
in::nix::poll
, in order to provide read access to formerly public memberrevents
. (#399) - Added
MSG_CMSG_CLOEXEC
toMsgFlags
in::nix::sys::socket
for linux only. (#422)
- Replaced the reexported integer constants for signals by the enumeration
Signal
in::nix::sys::signal
. (#362) - Renamed
EventFdFlag
toEfdFlags
in::nix::sys::eventfd
. (#383) - Changed the result types of
CpuSet::is_set
andCpuSet::set
in::nix::sched
toResult<bool>
andResult<()>
, respectively. They now returnEINVAL
, if an invalid argument for thefield
parameter is passed. (#402) MqAttr
in::nix::mqueue
is now an opaque proxy for::libc::mq_attr
, which has the same structure as the oldMqAttr
. The fieldmq_flags
of::libc::mq_attr
is readable using the new methodflags()
ofMqAttr
.MqAttr
also no longer implementsDebug
. (#392)- The parameter
msq_prio
ofmq_receive
with typeu32
in::nix::mqueue
was replaced by a parameter namedmsg_prio
with type&mut u32
, so that the message priority can be obtained by the caller. (#392) - The type alias
MQd
in::nix::queue
was replaced by the type aliaslibc::mqd_t
, both of which are aliases for the same type. (#392)
- Type alias
SigNum
from::nix::sys::signal
. (#362) - Type alias
CpuMask
from::nix::shed
. (#402) - Removed public fields from
PollFd
in::nix::poll
. (See also added methodrevents()
. (#399)
- Fixed the build problem for NetBSD (Note, that we currently do not support it, so it might already be broken again). (#389)
- Fixed the build on FreeBSD, and fixed the getsockopt, sendmsg, and recvmsg functions on that same OS. (#397)
- Added
gettid
in::nix::unistd
for linux and android. (#293) - Some mips support in
::nix::sched
and::nix::sys::syscall
. (#301) - Added
SIGNALFD_SIGINFO_SIZE
in::nix::sys::signalfd
. (#309) - Added new module
::nix::ucontext
with structUContext
. Currently for linux only. (#311) - Added
EPOLLEXCLUSIVE
toEpollEventKind
in::nix::sys::epoll
. (#330) - Added
pause
to::nix::unistd
. (#336) - Added
sleep
to::nix::unistd
. (#351) - Added
S_IFDIR
,S_IFLNK
,S_IFMT
toSFlag
in::nix::sys::stat
. (#359) - Added
clear
andextend
functions toSigSet
's implementation in::nix::sys::signal
. (#347) sockaddr_storage_to_addr
in::nix::sys::socket
now supportssockaddr_nl
on linux and android. (#366)- Added support for
SO_ORIGINAL_DST
in::nix::sys::socket
on linux. (#367) - Added
SIGINFO
in::nix::sys::signal
for the macos target as well asSIGPWR
andSIGSTKFLT
in::nix::sys::signal
for non-macos targets. (#361)
- Changed the structure
IoVec
in::nix::sys::uio
. (#304) - Replaced
CREATE_NEW_FD
bySIGNALFD_NEW
in::nix::sys::signalfd
. (#309) - Renamed
SaFlag
toSaFlags
andSigFlag
toSigFlags
in::nix::sys::signal
. (#314) - Renamed
Fork
toForkResult
and changed its fields in::nix::unistd
. (#332) - Added the
signal
parameter toclone
's signature in::nix::sched
. (#344) execv
,execve
, andexecvp
now returnResult<Void>
instead ofResult<()>
in::nix::unistd
. (#357)
- Improved the conversion from
std::net::SocketAddr
toInetAddr
in::nix::sys::socket::addr
. (#335)