Revision history for Perl extension IO::FD.
v0.3.9 2024-05-05
[fixes]
- Attempt to fix failing compilation on experimental routines (BSD)
v0.3.8 2024-05-05
[fixes]
- Fix failing compilation on experimental routines
- Fix stat format warnings
v0.3.7 2023-01-05
[fixes]
- newSVpvf silently fails on 32bit systems and long long ints. Use sprintf
and copy result for larger stat fields
v0.3.6 2023-01-02
[fixes]
- Addressed signed/unsigned output of dev_t from stat (thanks to Slaven for
identifying)
- Removed testing of stat struct st_rdev due to sign
- Documented differences in CORE::stat and IO::FD::stat st_rdev field sign
handling
- 64bit fields in stat structure on 32bit Perl now are string scalars as
POD documented previously. (st_dev, st_ino, st_nlink, st_rdev, st_size,
a/m/c times, st_blocks)
- Added missing routines to :all export
- Moved time macros to include file where they are actually used.
v0.3.5 2023-12-03
[fixes]
- Update documentation with explicit defined testing on return values as
the major differences to core Perl routines of same names.
v0.3.4 2023-12-03
[fixes]
- Attempted fix stat and lstat. Passing tests on 64bit systems.
v0.3.3 2023-11-12
[fixes]
- Fixed logic error in return value of send/sendto binding.
- Fixed error checking on uninitialized result code of send/sendto
- Fixed link to github using https
- Fixed failing test on linux due to unknown bare word
v0.3.2 2023-07-25
[improvements]
- Do not attempt import of non existent SOCK_NONBLOCK and SOCK_CLOEXEC on darwin
- Added constant::more to prerequisites (for future improvements)
- Added link to bug tracker
- updated GH actions workflow
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