Revision history for Perl extension IO::FD. v0.3.0 2023-05-24 [features] - Added pread and pwrite - Added mkfifo and mkfifoat - Added open (not sysopen) and openat [improvements] - Fcntl call to set O_CLOEXEC in open/openat/sysopen*/mkfifo* is only applied if the mode parameter DIDN'T specify O_CLOEXEC, AND if the fd is greater than $^F. Saves a useless syscall to set the value twice when manually specified during opens. [tests] - pread and pwrite tests added - mkfifo, mktemp and mkstemp tests added - mkfifoat tests added - open and openat tests added [documentation] - added POD (minimal) for new features - Fixed typos and grammar errors [other] - Code split across multiple files. - Conditional building to better handle missing functions on NetBSD (sendfile) and earily versions of macOS (mkfifoat) v0.2.0 2023-01-06 [features] - Added accept4 function. Native on linux, emulates on darwin and bsd - Added IO::FD::SOCK_NONBLOCK and IO::FD::SOCK_CLOEXEC constants for darwin emulation of accept4 flags. - Added sendfile [changes] - All functions returning a new fd to an existing variable now check the variable can be modified. If it cannot a exception is thrown. This is more ie built in Perl behaviour. - All functions taking an fd now check it is an IV and and warns, returns undef and $! is set to EBADF. This is more like built in Perl behaviour. - All functions (minus accept4) returning an new fd set CLOEXEC flag if its larger than $^F behaving more like standard Perl. accept4 uses an explicit flag to manually set and is not set automatically - Function accept_multiple now implemented via accep4 on linux with SOCK_NONBLOCK set - Added explicit $^F=1000 to IO::FD and core Perl benchmarking code [bug fixes] - Fixed multiple argument handling issues of input fds which would lead to 0 values [tests] - Added better tests for accepting sockets - Added sendfile test - Added test for bad file descriptors and readonly return variables [documentation] - Documented changes regarding $^F - Documented new functions - Reformatted changes file v0.1.4 2022-12-17 [bug fixes] - Fixed undefined fd sysread/syswrite bug An undefined fd value passed to sysread* or syswrite* would be be converted to 0, which normally is a valid fd (STDIN). - Change sysread* and syswrite* functions to expect an SV instead of an int and test for undefined fd and return undefined. v0.1.3 2022-11-15 [features] - Added accept_multiple routine [bug fixes] - Fixed IPv6 address corruption bug. Not enough space was allocated for IPv6 addresses. Now using struct sockaddr_storage instead of struct sockaddr for sizing. - Fixed sockaddr allocation Routines returning packed sockaddr structures now have SvCUR forced to length of INET/INET6/UNIX sockaddr types. This stops Socket::unpack_sockaddr_in6 for example complaining the length of the SV is too long for the address family. [documentation] - Documented accept_multiple and small POD typo fixes. [tests] - Fixed potential blocking hang in pipe test. It attempted to read more data than was written - Disabled stat testing. IO::FD::stat is currently broken, to be fixed... v0.1.2 2022-10-23 [features] - Added shutdown to IO::FD and IO::FD::DWIM [bug fixes] - Fixed failing peername test due to 'Temporary failure in name resolution' - Fixed up XS returns [tests] - Removed kqueue/kevent test as it is experimental and broken v0.1.1 2022-10-09 [bug fixes] - Added thread context macros to fix failing build on threaded Perl - Fixed IO::FD::recv bug, not updating current length of PV - IO::FD::recv now returns single element, like Perl - Added test for IO::FD::send and IO::FD::recv - Fixed IO:FD::readline to actually work as documented. [changes] - IO::FD::mkstemp returns undef for second item. This is a stop gap until a cross platform 'fd=>path' is implemented - IO::FD::mktemp and IO::FD::mkstemp now requires 6 'X' characters for better compatibility (linux) - IO::FD::readline now dies if called expecting a line split read. Works for $/=undef or $/=\integer only [tests] - Added tests for IO::FD::readline - Renamed some tests and other test cleanup v0.1.0 2022-08-05 - original version; created by h2xs 1.23 with options --name IO::FD