49 KiB
Change Log
All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
[0.20.0] - 20 February 2021
Added
- Added a
passwd
field toGroup
(#1338) - Added
mremap
(#1306) - Added
personality
(#1331) - Added limited Fuchsia support (#1285)
- Added
getpeereid
(#1342) - Implemented
IntoIterator
forDir
(#1333).
Changed
- Minimum supported Rust version is now 1.40.0. (#1356)
- i686-apple-darwin has been demoted to Tier 2 support, because it's deprecated by Xcode. (#1350)
- Fixed calling
recvfrom
on anAddrFamily::Packet
socket (#1344)
Fixed
TimerFd
now closes the underlying fd on drop. (#1381)- Define
*_MAGIC
filesystem constants on Linux s390x (#1372) - mqueue, sysinfo, timespec, statfs, test_ptrace_syscall() on x32 (#1366)
Removed
Dir
,SignalFd
, andPtyMaster
are no longerClone
. (#1382)- Removed
SockLevel
, which hasn't been used for a few years (#1362) - Removed both
Copy
andClone
fromTimerFd
. (#1381)
[0.19.1] - 28 November 2020
Fixed
- Fixed bugs in
recvmmsg
. (#1341)
[0.19.0] - 6 October 2020
Added
- Added Netlink protocol families to the
SockProtocol
enum (#1289) - Added
clock_gettime
,clock_settime
,clock_getres
,clock_getcpuclockid
functions andClockId
struct. (#1281) - Added wrapper functions for
PTRACE_SYSEMU
andPTRACE_SYSEMU_SINGLESTEP
. (#1300) - Add support for Vsock on Android rather than just Linux. (#1301)
- Added
TCP_KEEPCNT
andTCP_KEEPINTVL
TCP keepalive options. (#1283)
Changed
- Expose
SeekData
andSeekHole
on all Linux targets (#1284) - Changed unistd::{execv,execve,execvp,execvpe,fexecve,execveat} to take both
&[&CStr]
and&[CString]
as its list argument(s). (#1278) - Made
unistd::fork
an unsafe funtion, bringing it in line with libstd's decision. (#1293)
Fixed
Removed
[0.18.0] - 26 July 2020
Added
- Added
fchown(2)
wrapper. (#1257) - Added support on linux systems for
MAP_HUGE_
SIZE
family of flags. (#1211) - Added support for
F_OFD_*
fcntl
commands on Linux and Android. (#1195) - Added
env::clearenv()
: callslibc::clearenv
on platforms where it's available, and clears the environment of all variables viastd::env::vars
andstd::env::remove_var
on others. (#1185) FsType
inner value made public. (#1187)- Added
unistd::setfsuid
andunistd::setfsgid
to set the user or group identity for filesystem checks per-thread. (#1163) - Derived
Ord
,PartialOrd
forunistd::Pid
(#1189) - Added
select::FdSet::fds
method to iterate over file descriptors in a set. (#1207) - Added support for UDP generic segmentation offload (GSO) and generic receive offload (GRO) (#1209)
- Added support for
sendmmsg
andrecvmmsg
calls (#1208) - Added support for
SCM_CREDS
messages (UnixCredentials
) on FreeBSD/DragonFly (#1216) - Added
BindToDevice
socket option (sockopt) on Linux (#1233) - Added
EventFilter
bitflags forEV_DISPATCH
andEV_RECEIPT
on OpenBSD. (#1252) - Added support for
Ipv4PacketInfo
andIpv6PacketInfo
toControlMessage
. (#1222) CpuSet
andUnixCredentials
now implementDefault
. (#1244)- Added
unistd::ttyname
(#1259) - Added support for
Ipv4PacketInfo
andIpv6PacketInfo
toControlMessage
for iOS and Android. (#1265) - Added support for
TimerFd
. (#1261)
Changed
- Changed
fallocate
return type fromc_int
to()
(#1201) - Enabled
sys::ptrace::setregs
andsys::ptrace::getregs
on x86_64-unknown-linux-musl target (#1198) - On Linux,
ptrace::write
is now anunsafe
function. Caveat programmer. (#1245) execv
,execve
,execvp
andexecveat
in::nix::unistd
andreboot
in::nix::sys::reboot
now returnResult<Infallible>
instead ofResult<Void>
(#1239)sys::socket::sockaddr_storage_to_addr
is no longerunsafe
. So isoffset_of!
.sys::socket::sockaddr_storage_to_addr
,offset_of!
, andErrno::clear
are no longerunsafe
.SockAddr::as_ffi_pair
,sys::socket::sockaddr_storage_to_addr
,offset_of!
, andErrno::clear
are no longerunsafe
. (#1244)- Several
Inotify
methods now takeself
by value instead of by reference (#1244) nix::poll::ppoll
:timeout
parameter is now optional, None is equivalent for infinite timeout.
Fixed
-
Fixed
getsockopt
. The old code produced UB which triggers a panic with Rust 1.44.0. (#1214) -
Fixed a bug in nix::unistd that would result in an infinite loop when a group or user lookup required a buffer larger than 16KB. (#1198)
-
Fixed unaligned casting of
cmsg_data
toaf_alg_iv
(#1206) -
Fixed
readlink
/readlinkat
when reading symlinks longer thanPATH_MAX
(#1231) -
PollFd
,EpollEvent
,IpMembershipRequest
,Ipv6MembershipRequest
,TimeVal
, andIoVec
are nowrepr(transparent)
. This is required for correctness's sake across all architectures and compilers, though now bugs have been reported so far. (#1243) -
Fixed unaligned pointer read in
Inotify::read_events
. (#1244)
Removed
-
Removed
sys::socket::addr::from_libc_sockaddr
from the public API. (#1215) -
Removed
sys::termios::{get_libc_termios, get_libc_termios_mut, update_wrapper
from the public API. These were previously hidden in the docs but still usable by downstream. (#1235) -
Nix no longer implements
NixPath
forOption<P> where P: NixPath
. Most Nix functions that acceptNixPath
arguments can't do anything useful withNone
. The exceptions (mount
andquotactl_sync
) already take explicitly optional arguments. (#1242) -
Removed
unistd::daemon
andunistd::pipe2
on OSX and ios (#1255) -
Removed
sys::event::FilterFlag::NOTE_EXIT_REPARENTED
andsys::event::FilterFlag::NOTE_REAP
on OSX and ios. (#1255) -
Removed
sys::ptrace::ptrace
on Android and Linux. (#1255) -
Dropped support for powerpc64-unknown-linux-gnu (#1266)
[0.17.0] - 3 February 2020
Added
- Add
CLK_TCK
toSysconfVar
(#1177)
Changed
Fixed
Removed
- Removed deprecated Error::description from error types (#1175)
[0.16.1] - 23 December 2019
Added
Changed
Fixed
- Fixed the build for OpenBSD (#1168)
Removed
[0.16.0] - 1 December 2019
Added
-
Added
ptrace::seize()
: similar toattach()
on Linux but with better-defined semantics. (#1154) -
Added
Signal::as_str()
: returns signal name as&'static str
(#1138) -
Added
posix_fallocate
. (#1105) -
Implemented
Default
forFdSet
(#1107) -
Added
NixPath::is_empty
. (#1107) -
Added
mkfifoat
(#1133) -
Added
User::from_uid
,User::from_name
,User::from_gid
andGroup::from_name
, (#1139) -
Added
linkat
(#1101) -
Added
sched_getaffinity
. (#1148) -
Added optional
Signal
argument toptrace::{detach, syscall}
for signal injection. (#1083)
Changed
-
sys::termios::BaudRate
now implementsTryFrom<speed_t>
instead ofFrom<speed_t>
. The oldFrom
implementation would panic on failure. (#1159) -
sys::socket::ControlMessage::ScmCredentials
andsys::socket::ControlMessageOwned::ScmCredentials
now wrapUnixCredentials
rather thanlibc::ucred
. (#1160) -
sys::socket::recvmsg
now takes a plainVec
instead of aCmsgBuffer
implementor. If you were already usingcmsg_space!
, then you needn't worry. (#1156) -
sys::socket::recvfrom
now returnsResult<(usize, Option<SockAddr>)>
instead ofResult<(usize, SockAddr)>
. (#1145) -
Signal::from_c_int
has been replaced bySignal::try_from
(#1113) -
Changed
readlink
andreadlinkat
to returnOsString
(#1109)# use nix::fcntl::{readlink, readlinkat}; // the buffer argument of `readlink` and `readlinkat` has been removed, // and the return value is now an owned type (`OsString`). // Existing code can be updated by removing the buffer argument // and removing any clone or similar operation on the output // old code `readlink(&path, &mut buf)` can be replaced with the following let _: OsString = readlink(&path); // old code `readlinkat(dirfd, &path, &mut buf)` can be replaced with the following let _: OsString = readlinkat(dirfd, &path);
-
Minimum supported Rust version is now 1.36.0. (#1108)
-
Ipv4Addr::octets
,Ipv4Addr::to_std
,Error::as_errno
,ForkResult::is_child
,ForkResult::is_parent
,Gid::as_raw
,Uid::is_root
,Uid::as_raw
,Pid::as_raw
, andPollFd::revents
now takeself
by value. (#1107) -
Type
&CString
for parameters ofexec(v|ve|vp|vpe|veat)
are changed to&CStr
. (#1121)
Fixed
-
Fix length of abstract socket addresses (#1120)
-
Fix initialization of msghdr in recvmsg/sendmsg when built with musl (#1136)
Removed
- Remove the deprecated
CmsgSpace
. (#1156)
[0.15.0] - 10 August 2019
Added
- Added
MSG_WAITALL
toMsgFlags
insys::socket
. (#1079) - Implemented
Clone
,Copy
,Debug
,Eq
,Hash
, andPartialEq
for most types that support them. (#1035) - Added
copy_file_range
wrapper (#1069) - Add
mkdirat
. (#1084) - Add
posix_fadvise
. (#1089) - Added
AF_VSOCK
toAddressFamily
. (#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()
andfstatfs()
return result withStatfs
wrapper (#928)
Fixed
- Enabled
sched_yield
for all nix hosts. (#1090)
Removed
[0.14.1] - 2019-06-06
Added
-
Macros exported by
nix
may now be imported viause
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 theconvert_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 likeu32.
(#1072)
Fixed
- Fix the build on Android and Linux/mips with recent versions of libc. (#1072)
Removed
[0.14.0] - 2019-05-21
Added
- Add IP_RECVIF & IP_RECVDSTADDR. Enable IP_PKTINFO and IP6_PKTINFO on netbsd/openbsd. (#1002)
- Added
inotify_init1
,inotify_add_watch
andinotify_rm_watch
wrappers for Android and Linux. (#1016) - Add
ALG_SET_IV
,ALG_SET_OP
andALG_SET_AEAD_ASSOCLEN
control messages andAF_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
andto_std
methods forsys::socket::IpAddr
(#1043) - Added
nix::unistd:seteuid
andnix::unistd::setegid
for those platforms that do not supportsetresuid
norsetresgid
respectively. (#1044) - Added a
access
wrapper (#1045) - Add
forkpty
(#1042) - Add
sched_yield
(#1050)
Changed
-
PollFd
event flags renamed toPollFlags
(#1024) -
recvmsg
now returns an Iterator overControlMessageOwned
objects rather thanControlMessage
objects. This is sadly not backwards-compatible. Fix code like this:if let ControlMessage::ScmRights(&fds) = cmsg {
By replacing it with code like this:
if let ControlMessageOwned::ScmRights(fds) = cmsg {
(#1020)
-
Replaced
CmsgSpace
with thecmsg_space
macro. (#1020)
Fixed
-
Fixed multiple bugs when using
sendmsg
andrecvmsg
with ancillary control messages (#1020) -
Macros exported by
nix
may now be imported viause
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 theconvert_ioctl_res!
macro.use nix::ioctl_read_bad; ioctl_read_bad!(tcgets, libc::TCGETS, libc::termios);
Removed
Daemon
,NOTE_REAP
, andNOTE_EXIT_REPARENTED
are now deprecated on OSX and iOS. (#1033)PTRACE_GETREGS
,PTRACE_SETREGS
,PTRACE_GETFPREGS
, andPTRACE_SETFPREGS
have been removed from some platforms where they never should've been defined in the first place. (#1055)
[0.13.0] - 2019-01-15
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
insetsockopt
. (#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
[0.12.0] 2018-11-28
Added
- Added
FromStr
andDisplay
impls fornix::sys::Signal
(#884) - Added a
sync
wrapper. (#961) - Added a
sysinfo
wrapper. (#922) - Support the
SO_PEERCRED
socket option and theUnixCredentials
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 (wrapsfdopendir
,readdir
, andrewinddir
). (#916) - Added
kmod
module that allows loading and unloading kernel modules on Linux. (#930) - Added
futimens
andutimesat
wrappers (#944), anlutimes
wrapper (#967), and autimes
wrapper (#946). - Added
AF_UNSPEC
wrapper toAddressFamily
(#948) - Added the
mode_t
public alias withinsys::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
andsuseconds_t
public aliases withinsys::time
. (#968) - Added
unistd::execvpe
for Haiku, Linux and OpenBSD (#975) - Added
Error::as_errno
. (#977)
Changed
Fixed
- Made
preadv
take immutable slice of IoVec. (#914) - Fixed passing multiple file descriptors over Unix Sockets. (#918)
Removed
[0.11.0] 2018-06-01
Added
- Added
sendfile
on FreeBSD and Darwin. (#901) - Added
pselect
(#894) - Exposed
preadv
andpwritev
on the BSDs. (#883) - Added
mlockall
andmunlockall
(#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 forlibc::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
, andEVFILT_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
andDebug
forSysControlAddr
now includes all fields. (#837)ioctl!
has been replaced with a family ofioctl_*!
macros. (#833)io!
,ior!
,iow!
, andiorw!
has been renamed torequest_code_none!
,request_code_read!
,request_code_write!
, andrequest_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
andO_NONBLOCK
was removed fromsocket()
,accept4()
, andsocketpair()
. (#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 ac_ulong
as the parameter on Linux non-musl targets (#833)
Removed
- Removed explicit support for the
bytes
crate from thesys::aio
module. Seesys::aio::AioCb::from_boxed_slice
examples for alternatives. (#872) - Removed
sys::aio::lio_listio
. Usesys::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)
[0.10.0] 2018-01-26
Added
- Added specialized wrapper:
sys::ptrace::step
(#852) - Added
AioCb::from_ptr
andAioCb::from_mut_ptr
(#820) - Added specialized wrappers:
sys::ptrace::{traceme, syscall, cont, attach}
. Using the matching routines withsys::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 toWaitStatus
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) - 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 toWaitStatus
for converting raw status values toWaitStatus
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
asunsafe
. - Changed function signature of
socket()
andsocketpair()
. Theprotocol
argument has changed type fromc_int
toSockProtocol
. It accepts aNone
value for default protocol that was specified with zero usingc_int
. (#647) - Made
select
easier to use, adding the ability to automatically calculate thenfds
parameter using the newFdSet::highest
(#701) - Exposed
unistd::setresuid
andunistd::setresgid
on FreeBSD and OpenBSD (#721) - Refactored the
statvfs
module removing extraneous API functions and thestatvfs::vfs
module. Additionally(f)statvfs()
now return the struct directly. And the returnedStatvfs
struct now exposes its data through accessor methods. (#729) - The
addr
argument tomadvise
andmsync
is now*mut
to better match the libc API. (#731) shm_open
andshm_unlink
are no longer exposed on Android targets, where they are not officially supported. (#731)MapFlags
,MmapAdvise
, andMsFlags
expose some more variants and only officially-supported variants are provided for each target. (#731)- Marked
pty::ptsname
function asunsafe
(#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 theAioCb
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 aUserCredentials
struct that contains only getters for its fields. (#814) - Both
ip_mreq
andipv6_mreq
have been replaced withIpMembershipRequest
andIpv6MembershipRequest
. (#814) - Removed return type from
pause
. (#829) - Changed the termios APIs to allow for using a
u32
instead of theBaudRate
enum on BSD platforms to support arbitrary baud rates. See the module docs fornix::sys::termios
for more details. (#843)
Fixed
- Fix compilation and tests for OpenBSD targets (#688)
- Fixed error handling in
AioCb::fsync
,AioCb::read
, andAioCb::write
. It is no longer an error to drop anAioCb
that failed to enqueue in the OS. (#715) - Fix potential memory corruption on non-Linux platforms when using
sendmsg
/recvmsg
, caused by mismatchedmsghdr
definition. (#648)
Removed
AioCb::from_boxed_slice
has been removed. It was never actually safe. Usefrom_bytes
orfrom_bytes_mut
instead. (#820)- The syscall module has been removed. This only exposed enough functionality for
memfd_create()
andpivot_root()
, which are still exposed as separate functions. (#747) - The
Errno
variants are no longer reexported from theerrno
module.Errno
itself is no longer reexported from the crate root and instead must be accessed using theerrno
module. (#696) - Removed
MS_VERBOSE
,MS_NOSEC
, andMS_BORN
fromMsFlags
. These are internal kernel flags and should never have been exposed. (#814)
[0.9.0] 2017-07-23
Added
- 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) - 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 fromwait
andwaitpid
usingWaitStatus::PtraceSyscall
(#566).
Changed
- The
ioctl!
macro and its variants now allow the generated functions to have doccomments. (#661) - Changed
ioctl!(write ...)
intoioctl!(write_ptr ...)
andioctl!(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 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)- 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
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) - Removed
ioc_*
functions and many helper constants and macros within theioctl
module. These should always have been private and only theioctl!
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), 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)
ioctl!
macro now supports working with non-int datatypes and properly supports all platforms. (#670)
[0.8.1] 2017-04-16
Fixed
- Fixed build on FreeBSD. (Cherry-picked a859ee3c)
[0.8.0] 2017-03-02
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 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)
Changed
::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
- 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)
[0.7.0] 2016-09-09
Added
- 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)
Changed
- 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)
Removed
- 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
- 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)
[0.6.0] 2016-06-10
Added
- 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
- 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)
Fixed
- Improved the conversion from
std::net::SocketAddr
toInetAddr
in::nix::sys::socket::addr
. (#335)