The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
Revision history for Perl extension IO::FD.
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