Revision history for Future-IO 0.23 2026-03-12 [CHANGES] * Improved performance of ImplBase's timer queue implementation * Also probe for KQueue implementation on OpenBSD and Darwin [BUGFIXES] * Fixed handling of `O_NONBLOCK` flag on default impl * Ensure that `->poll` enqueued during another `->poll` in default impl is not immediately invoked 0.22 2026-02-27 [CHANGES] * Document that you should always `poll` for at least one of the `POLLIN`, `POLLOUT` or `POLLPRI` flags * Provide optional base implementation methods for handling an alarm+sleep timer queue, to reduce code duplication * Probe for `Future::IO::Impl::KQueue` on FreeBSD [BUGFIXES] * Make sure to actually load the `POSIX` module to get its constants * Skip over probed impl modules that do not support the `poll` method 0.21 2026-02-26 [CHANGES] * Much improved default internal implementation: - Supports ->poll with `POLLPRI` - Supports ->poll on multiple filehandles at once [BUGFIXES] * Need to `->poll` for both `POLLOUT` and `POLLPRI` while waiting for `->connect`; this may make it work on Windows 0.20 2026-02-10 [CHANGES] * Also export and document the `POLLPRI` polling constant * Add `PERL_FUTURE_IO_IMPL` environment variable 0.19 2026-01-18 [CHANGES] * Added new `->poll` method as a neater and standardised way of doing what used to informally use ->ready_for_read or ->ready_for_write * Clarify in documentation the limits of guarantees around what happens when filehandle IO futures are cancelled 0.18 2026-01-08 [CHANGES] * Added `->load_best_impl` [BUGFIXES] * Require `Test::Future::IO::Impl` version 0.16 for portability bugfixes to the 'connect' and 'send' tests * Be prepared for the fact that `IO::Socket->send` might throw * Don't close() the local end of the STDIN stream in System.pm, as that upsets most implementation modules * `->send` in ImplBase should try agian using _send1, not _syswrite1 0.17 2025-07-15 [CHANGES] * Added new `->send`, `->recv` and `->recvfrom` socket IO wrapping methods * Provide `->read` and `->write` as better names for what were named `->sysread` and `->syswrite` 0.16 2024-09-16 [CHANGES] * Added `Future::IO->load_impl` convenience method for toplevel applications 0.15 2023-10-18 [BUGFIXES] * Avoid creating a long `->then` chain of Futures when handling EAGAIN (RT150117) * Temporarily enable blocking mode on filehandles when the default event loop is not using `select()`, to avoid a CPU spin (RT150117) 0.14 2023-04-25 [CHANGES] * Moved `Test::Future::IO::Impl` into its own distribution, so that downstream packages don't have to runtime-depend on `Test2` 0.13 2023-02-19 [CHANGES] * Swap all unit tests from `Test::More` to `Test2::V0` * Reomved test-time dependency on `Test::Identity` [BUGFIXES] * t/30system.t should check that the impl actually provides a `->waitpid` method before using it * Insert a hacky "sleep 1" into the connect tests on MSWin32 in case that helps fix the test failures 0.12 2023-01-31 [CHANGES] * Added `Future::IO::System`, containing a system()-like and a qx()-like method * Added `->sysread_until_eof` method * Update to perl v5.14 `package NAME VERSION` syntax * Use `await` notation in method minisynopsis lines [BUGFIXES] * Need to work harder to set LocalAddr during socket tests 0.11 2022-01-07 [CHANGES] * Added ->connect and ->accept for socket-based code * Provide ->HAVE_MULTIPLE_FILEHANDLES for user code to check if a real impl has been loaded * Simplify the default implementation so it can reuse most of the ImplBase class * Wording fix in docs for ->alarm 0.10 2021-08-26 [BUGFIXES] * Skip the unit test about filling pipes with ->syswrite on MSWin32 because the test just hangs there (RT138985) 0.09 2021-08-24 [CHANGES] * Added ->waitpid that real event loop implementations can provide (though built-in default implementation does not provide it) * Extracted impl tests to shareable Test::Future::IO::Impl module * Add links to existing CPAN implementations and test modules 0.08 2020-12-31 [CHANGES] * Added Future::IO->alarm [BUGFIXES] * Avoid CPU-spin in the single-filehandle case on nonblocking filehandles 0.07 2020-03-24 [CHANGES] * Make the ->await method wait until the future instance is ready * Document ->await 0.06 2019-06-26 18:11:54 [CHANGES] * Added Future::IO::ImplBase to assist implementation authors 0.05 2019-05-07 01:00:19 [CHANGES] * Misc small docs fixes [BUGFIXES] * Expect EINVAL on MSWin32 for pipe close write test, rather than EPIPE 0.04 2019-04-27 19:08:40 [CHANGES] * Added ->syswrite and ->syswrite_exactly [BUGFIXES] * Implement ->sysread_exactly test a better way that shouldn't break on Windows due to select() on pipes 0.03 2019-04-25 22:39:55 [CHANGES] * Add ->sysread_exactly 0.02 2019-04-10 14:01:17 [CHANGES] * Provide and document the $IMPL package variable mechanism [BUGFIXES] * Skip t/10sleep+sysread.t on MSWin32 because Windows doesn't support select() on pipes (RT129108) 0.01 2019-04-10 01:44:18 First version, released on an unsuspecting world.