The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
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