Revision history for Perl extension IO::FD.
v0.3.1 2023-05-24
[tests]
- Fix failing send file test on OpenBSD. No sendfile to test!
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