IO-Async
view release on metacpan or search on metacpan
* Allow Notifier subclasses to last-ditch handle unrecognised
->configure() params
* Added $notifier->adopt_future
* Added $notifier->invoke_error and 'on_error' event
* Ensure that TimeQueue inserts in FIFO order for equal timestamps
* Kill remaining docs to long-dead IO::Async::Sequencer
[BUGFIXES]
* Cygwin needs the SELECT_CONNECT_EVEC OS hint as well
* Probe for a broken port to perform listen() tests on by using
ReuseAddr => 1 so it matches what IO::Async will do (RT84051)
0.62 2014/03/27 23:15:25
[CHANGES]
* Added IO::Async::Future->{done,fail}_later
* Allow overriding of debug log file or file descriptor
* Avoid Future's and_then/or_else methods
* Allow Channel->recv in async mode to return a Future (RT91180)
* Ensure that Function ->call Futures cancel correctly
* Added $routine->kill
* Kill the 'getaddrinfo' => 'getaddrinfo_array' legacy redirection
* Allow Loop's resolver to be changed to a different object
[BUGFIXES]
* Avoid relying on strong forward references in Future, by creating
intentional cycles on pending Futures. Workaround for bugfix in
upcoming Future release.
0.61 2013/10/15 01:10:51
[CHANGES]
* Some OSes lack signals; forbid the ->*_signal methods, and use
waitpid() polling for child processes if so
* Rearrangement of $loop->listen and IO::Async::Listener logic to
allow Listener subclasses to use listen extensions (e.g. SSL)
* Allow ->listen to construct new Stream or Socket handles
* Updated documentation and tests to emphasise futures with resolver
and ->listen
* Support spawning threads and watching for exit
* Support IO::Async::Routine based on threads
* Various MSWin32 improvements and fixes - it now passes tests \o/
* Declare that MSWin32 does not support POSIX-like fork(); skip all
unit tests and functionallity based on it if so
Note: These changes break IO::Async::SSL versions 0.12 or older.
[BUGFIXES]
* Ensure that $stream->write( CODE, on_write/write_len ) works
correctly
With many thanks to Mithaldu for the use of his Windows smoker for
development and testing of the MSWin32 fixes
0.60 2013/09/19 14:26:22
[CHANGES]
* Updated for Future 0.16 - no longer needs 'return' argument for
Future::Utils functions
* $stream->connect() ought to default socktype => "stream"
[BUGFIXES]
* Fix unit tests to better handle INADDR_LOOPBACK not being 127.0.0.1
* Skip-guard ->socket("inet6") unit tests on machines unable to
socket(AF_INET6)
* Remmeber to ->accept connections to testing socket in
t/63handle-connect.t
0.59 CHANGES:
* Allow IO::Async::Stream to define custom reader/writer methods
* Support writeready-for-read and readready-for-write in Stream
* Allow Stream->write() on_write and write_len args
* Neatened and documented Future ->fail arguments and conventions
* Added Stream on_writeable_{start,stop} events
* Added Handle->socket, ->bind and ->connect methods
* Revamp of Loop->connect logic; allow passing through an
IO::Async::Handle instance
BUGFIXES:
* Ensure that stream read EOF state is visible during queued on_read
events that caused it
* Fix 'return ... or die' precendence bug in Resolver (RT87051)
* Need to poll() for POLLPRI on MSWin32 and Cygwin
0.58 CHANGES:
* Added Stream read watermarks
BUGFIXES:
* Fix weakself event handlers' use of "shift or return"
0.57 CHANGES:
* Allow Stream->write from a Future, CODE that returns Future, Future
that returns CODE, etc...
* Added Future-returning Stream->read_* methods and ->push_on_read
* Return a flush-complete notification Future from Stream->write
* Allow Timer::Periodic to stop itself from its own on_tick event
* Wrap transport on_{read,write}_eof from Protocol::Stream
0.56 CHANGES:
* Added $loop->delay_future and $loop->timeout_future
* Added $future->loop accessor
* Use a faster splice()-based mechanism for the ARRAY-based TimeQueue
* Updated for Future::Utils 0.12 'repeat' function
BUGFIXES:
* Ensure that Process from => "" works
* If select() returns -1 ignore the bit vectors
* pipe() on Windows doesn't play with select(); emulate ->pipepair
using ->socketpair
* Correct use of S_ISREG and stat()
0.55 CHANGES:
* Try to ensure IO::Async::OS->socket returns an IO::Socket::IP
instance for PF_INET or PF_INET6 if it is available
* Don't bother testing subsecond loop_once behaviour because most
loops can't actually do it
* Use Future::Utils instead of CPS, removing a dependency
* Removed IO::Async::Sequencer
* Print a deprecation warning on old loop classes with old timer
support
0.54 CHANGES:
* Use Future instead of CPS::Future
* Created IO::Async::Future subclass
* Initial support for Futures on Loops
* Rewrite lots of internals to use Futures instead of MergePoints or
other logic
* Renamed all "task" to "future" in APIs
* Allow packing of inet/inet6 address structures to omit the IP or
port and presume passive or port 0
* Removed $notifier->get_loop synonym
* Make IO::Async::MergePoint throw a deprecation warning
0.53 CHANGES:
* Added IO_ASYNC_WATCHDOG debugging support
BUGFIXES:
* Remember to return a task from Function->call even if it's queued
(RT79248)
0.52 CHANGES:
* Initial attempt at Tasks using CPS::Future
* Minor fixes to timer LoopTests to prevent spurious failures of
sub-second timing
* Declare dependence on perl 5.10 now we're using 5.10 features
* Removed long-since deprecated IO::Async::DetachedCode
0.51 CHANGES:
* Split much code out to new IO::Async::OS heirarchy
* Drop dead dependency on Test::Warn
* Smaller simpler signal handling, avoid POSIX::SigSet
* Expose getfamilybyname and getsocktypebyname as OS methods
BUGFIXES:
* Many small MSWin32 fixes that might help pass some tests. Likely
still incomplete though
0.50 CHANGES:
* Added IO::Async::File
* Added filename mode of IO::Async::FileStream
* Make Heap dependency optional by reimplementing a tiny but less
efficient version of TimeQueue using a plain array
* No longer need MB-only Build.PL
BUGFIXES:
* Round up select() and poll() timeouts to nearest milisecond, might
help correct wait-time vs. gettimeofday() mismatches
* Fake read- and write-readiness of S_ISREG filehandles in select()
on MSWin32
* select() for exceptional status on MSWin32 to check for connect()
failures
* Don't unit-test that getsockname() works on socketpair()ed sockets
0.49 CHANGES:
* Fix watch_time => enqueue_timer conversions; fix unit tests and
Timer implementations
0.48 CHANGES:
* Support Channel long-running on_recv handler
* Support Channel directly between two Routines, in sync. mode at
both ends
* Added Loop->{watch,unwatch}_time API
* Added Function->restart and max_worker_calls parameter
* Support other reschedule policies for Timer::Periodic to allow
tick skipping, or drift
BUGFIXES:
* Fix example in Routine SYNOPSIS (thanks apeiron)
* Connector should check definedness of local_{host,port} rather than
* Expanded documentation of timers
BUGFIXES:
* Explicitly 'use IO::Handle;'
0.40 ADDITIONS:
* Added IO::Async::FileStream - RT66520
* Added IO::Async::Stream 'close_on_read_eof' parameter
* Added IO::Async::Listener 'on_accept_failure' event
CHANGES:
* Allow Loop->listen to be extended via extensions, similar to
->connect
* Autoflush streams used in Function::Worker objects by default
* Default Resolver to idle_timeout=30, min_workers=0
BUGFIXES:
* Don't convert method names to CODErefs during _capture_weakself as
it breaks dynamic dispatch and code reload - RT65785
* Only calculate Timer::Periodic's next tick time if it actually has
a Loop
* Put primary GID first in a 'setgroups' list, otherwise some BSDs
get upset - RT65127
* Load getaddrinfo() from Socket or Socket::GetAddrInfo in
t/50resolver.t
* Remove the anonymous Listener from the Loop if Loop->listen fails
- RT66168
* Supply LocalPort => 0 to IO::Socket::INET constructor explicitly
during testing
0.39 CHANGES:
* Added IO::Async::Notifier 'notifier_name' parameter, which may be
used in debugging code in a later version
* Added IO::Async::Stream on_write_eof event
* Complain about unrecognised keys in IO::Async::Loop->watch_io and
IO::Async::Stream->write
BUGFIXES:
* Don't claim on_hangup supported except on those places we know it
will be (Linux, FreeBSD >= 8.0)
* Fixed race condition in t/41detached-code.t
* Fixed race condition in IO::Async::Function
0.38 ADDITIONS:
* IO::Async::Function
* IO::Async::Loop->notifiers accessor
CHANGES:
* Symbolic flags in IO::Async::Resolver as convenience for commonly
used flag constants
* Distribution now uses Test::Fatal rather than Test::Exception
* Resolver is now a subclass of Function, not DetachedCode
BUGFIXES:
* More robust detection of Socket vs Socket::GetAddrInfo
* Portability fix for ChildManager's FD_CLOEXEC flag
0.37 ADDITIONS:
* Handle->close_read, ->close_write
* Stream on_read_eof event
* extract_addrinfo conveniences for 'inet', 'inet6' and 'unix'
CHANGES:
* Allow Process filehandles to set up plain pipes without read/write
behaviour on the associated Stream
* Renamed Loop->unpack_addrinfo to ->extract_addrinfo
* Prepare for Socket::getaddrinfo() in core; prefer it to
Socket::GetAddrInfo::getaddrinfo()
0.36 ADDITIONS:
* IO::Async::Process
CHANGES:
* Allow prequeuing of ->write data in Stream
* Check that signal handling remains properly deferred in LoopTests
* Miscellaneous documentation and examples updates
BUGFIXES:
* RT 64558 - getaddrinfo() returns duplicate addresses for localhost
* Don't rely on having NI_NUMERICSERV
0.35 ADDITIONS:
* Loop->unpack_addrinfo
CHANGES:
* Recognise 'inet' and 'unix' as socket families
* Recognise 'stream', 'dgram' and 'raw' as socket types
* Recognise nicer HASH-based addrinfo layout in ->connect and
->listen
* Listener now has on_stream / on_socket as full events, not just
CODEref parameters
* Make Resolver->getaddrinfo try synchronously if given numeric names
* Make Resolver->getnameinfo run synchronously if given
NI_NUMERICHOST|NI_NUMERICSERV flags
* Try to combine small data buffers from Stream->write calls if
possible
BUGFIXES:
* Linefeed in die case of getaddrinfo_hash to preserve exeception
string
* Deconfigure Protocol->transport after it is closed
0.34 ADDITIONS:
* New Notifier methods ->_replace_weakself, ->maybe_invoke_event,
->maybe_make_event_cb
* New Protocol method ->connect
* New subclass Protocol::LineStream
* Direct Resolver->getaddrinfo and ->getnameinfo methods
CHANGES:
* New Protocol::Stream->new( handle => $io ) parameters, which
creates an IO::Async::Stream to use as a transport
* Renamed Loop->detach_child to Loop->fork
* Pass errno values into ->connect on_connect_error and
->listen on_listen_error
* Support timeouts on Resolver operations
* Allow direct access to Resolver via Loop->resolver
BUGFIXES:
* Make sure Protocol::Stream handles writersub and on_flush callback
( run in 0.704 second using v1.01-cache-2.11-cpan-39bf76dae61 )