Movatterモバイル変換


[0]ホーム

URL:


PEVANS / IO-Async-0.803 / Changes
Revision history for IO-Async0.803   2024-01-29        [CHANGES]         * Module style updates:            + Use perl v5.14 for `//` operator and `package NAME VER` syntax            + Updated Pod style            + Swapped unit tests from `Test::More` to `Test2::V0`            + Removed several now-unnecessary test-time dependencies        [BUGFIXES]         * Take the first name for each aliased signal in case of aliased           names (RT145759)0.802   2022-08-15        [CHANGES]         * Preëmptively use Future ->udata API from upcoming release, to           avoid depending on it being a hashref         * Report correct caller file + line number in nested test calls to           wait_for {}        [BUGFIXES]         * Use 'SOCK_STREAM' instead of hardcoded 1 in t/50resolver.t         * Skip exceptional socket condition test on cygwin because it seems           always to fail there         * Avoid harmless warnings about undef at global destruction           (RT142754)0.801   2021-12-15        [BUGFIXES]         * Remove extraneous test-time use of Data::Dump (RT140143)0.800   2021-11-11        [CHANGES]         * Bumped up to three-digit minor version number         * Added IO::Async::OS->signum2name         * Implement Future::IO->waitpid API         * Skip the `spawn` Routine model if POSIX fork() is not available         * Replace getaddrinfo / getnameinfo with virtual mocking functions           for unit-testing the resolve, so as not to rely on local platform           resolver behaviours0.79    2021-08-06        [CHANGES]         * Permit IO::Async::Routine or Function by module+func names instead           of CODE reference         * Added new Routine/Function model of `spawn`         * Implement IO::Async::Resolver by module+func rather than code        [BUGFIXES]         * Require Socket 2.029 on MSWin32 because of AF_UNIX fix (RT133018)0.78    2021-01-21        [CHANGES]         * Warn on attempts to ->connect to INADDR(6)_LOOPBACK as some OSes           (e.g. OpenBSD) do not allow it         * Various fixes for IO::Async::LoopTests to better support           IO::Async::Loop::UV:            + Insert some ->loop_once(0) calls between timing tests to allow              libuv to clear its pending queues            + Allow loops to declare that they cannot perform all-child PID              watch and skip the relevant tests for it if so         * Have $loop->later return a future instance if not passed any code           (RT133240)        [BUGFIXES]         * Accept more error codes for failure to resolve missing hostname           (RT131109)         * Defend against some undef values at global destruction time           (RT132677)0.77    2020-05-13        [CHANGES]         * Updated for Metrics::Any 0.05         * Report an info-type gauge metric to track loop types         * Loop processing time should be a timer metric, not a distribution         * Don't bother reporting zero-byte stream read/write metrics        [BUGFIXES]         * Skip metrics-related unit tests if metrics aren't active, even           though we depend on Test::Metrics::Any         * Account for MSWin32's EWOULDBLOCK in t/70future-io.t0.76    2020-05-05        [CHANGES]         * Initial attempt at providing metrics via Metrics::Any         * Renamed ->(un)watch_child API to ->(un)watch_process         * Renamed 'child' LoopTests suite to 'process'0.75    2019-11-26 00:06:59        [CHANGES]         * Remember to keep O_NONBLOCK off on IO::Async::Channel sync mode           filehandles         * Added IO::Async::Process->finish_future         * Added IO::Async::Routine->result_future         * Future-returning version of IO::Async::Function->stop         * Don't load IO::Socket or Sereal modules unless required        [BUGFIXES]         * Refresh the sigpipe in ->post_fork if required (RT128588)         * Fix some spelling mistakes (RT130087)         * Skip the async getprotobyname() test if it doesn't work           synchronously (RT131029)0.74    2019-06-27 18:44:38        [CHANGES]         * Warn about IO::Async::Stream using autoflush on a blocking handle         * Implement queuing priorities for IO::Async::Function calls (RT129918)         * Send a terminating signal to a ->run_process process on cancellation           (RT129225)         * Optionally make ->run_process future fail when process exits non-zero           (RT129225)         * Implement the Future::IO->syswrite API        [BUGFIXES]         * Skip t/70future-io.t unless Future::IO is available (RT129807)         * Remember to set O_NONBLOCK on IO::Async::Channel async mode           filehandles (RT129879)         * Handle Windows 7 which returns ENETDOWN to failed AF_UNIX connect()           (RT129806)0.73    2019-06-12 16:49:28        [CHANGES]         * Provide an IO::Async implementation of Future::IO         * Added $loop->run_process (RT129225)         * Clear $ONE_TRUE_LOOP in $loop->fork so that child processes can do           IO::Async::Loop->new successfully         * Added $notifier->adopted_futures accessor (RT127818)         * Various docs fixes0.72    2018-04-02 19:34:27        [CHANGES]         * Expanded docs on Stream's on_read sub return values         * Overridable timeout for IO::Async::Test::wait_for         * Hide IO::Async::ChildManager as an internal implementation detail;           move the docs into main IO::Async::Loop         * Added $loop->open_process; suggest using that instead of           ->open_child         * Begin implementation of $loop->is_running method (part of RT123780)        [BUGFIXES]         * Make IO::Async::Future->await wait until it's ready         * Fix calculation of periodic timer in 'skip' mode (RT124414)         * Perform synchronous getaddrinfo shortcut even for service-less           lookups         * Make sure that errors from underlying read/write functions are           debug-logged by IO::Async::Stream0.71    2016/12/22 15:05:50        [CHANGES]         * Added 'prefork' option to IO::Async::Channel (RT115920) - thanks           GMARLER         * Prefer Sereal Channel encoding if that module is available         * Ensure that IaFunction still prints debug information on futures         * Miscellaneous spelling fixes in docs - thanks genio        [BUGFIXES]         * 'use lib ".";' for perl 5.24         * Make t/50resolver.t less sensitive to EAI_NONAME vs EAI_NODATA           because some resolvers lie (RT113429)         * Fix error message linefeed tests in t/50resolver.t (RT119369)         * Ensure that SIGPIPE is ignored if it's still at its default value0.70    2015/12/15 18:17:43        [CHANGES]         * Support perl 5.8.x (tested on 5.8.9, presumed working as far as           5.8.4)0.69    2015/11/09 19:56:58        [CHANGES]         * Use Future->catch instead of poorly-implemented string-eq test         * Use L<...> instead of C<...> in docs where appropriate (RT107417)           (thanks Arthur Axel 'fREW' Schmidt)        [BUGFIXES]         * Don't silently swallow Listener acceptor failures (RT107806)         * Don't silently swallow other ->connect errors         * Remember to ->unwatch_io before setting IaHandle's handle to undef0.68    2015/07/31 20:07:48        [CHANGES]         * Allow IO::Async::Function body to 'die' with an ARRAYref to set           more details on failed Future         * Have IO::Async::Resolver calls indicate the failed resolver name         * Have IO::Async::Resolver's getaddrinfo and getnameinfo resolvers           give error numbers in failure result         * Added 'init_code' parameter to IO::Async::Function (RT104127)         * Added IO::Async::Channel->encode, ->send_encoded; deprecate the old           ->send_frozen method         * Added IO::Async::Test::wait_for_future                [BUGFIXES]         * Clean up after 'on_hangup' loop tests (RT106061)         * Make ->stop + ->start on IO::Async::Timer::Periodic not forget the           first_interval (RT100927)0.67    2015/06/01 15:06:13        [CHANGES]         * Add a ->post_fork method to IO::Async::Loop in case subclasses           should take specific action (RT104130)         * Remove IO::Async::MergePoint entirely         * Add debug_printf() calls to IO::Async::Process         * Various documentation additions        [BUGFIXES]         * Remember to actually delete unused filehandles from the pollmask           (RT103922)0.66    2015/04/17 20:36:39        [CHANGES]         * Created IO::Async::Debug         * Ignore SIGPIPE by default (RT92024)         * IaSocket->bind now returns a Future         * Added IaSocket->bind resolver support and neatened up UDP examples           in synopsis/documentation        [BUGFIXES]         * Correct call to unpack() in IaStream example (RT103143)         * Don't silently eat accept() failures in IaListener (RT102677)         * Remember to add the new resolver instance to $loop in           ->set_resolver (RT103446)         * Correct implementation of ->unwatch_io on IaLoop::Poll to prevent           100% CPU spin (RT103445)         * Ensure that an exception thrown by Timer::Periodic's on_tick           doesn't prevent rescheduling0.65    2015/02/15 14:28:02        [CHANGES]         * Optionally allow IO::Async::Channel to use 'Sereal' serialisation         * Added documentation about the 'env' Child Manager key and copying           %ENV         * Take OS "preferred loop subclass" hints from IO::Async::OS directly        [BUGFIXES]         * Nested $stream->read_* inside read_* cause double-completion of           Future (RT101774)         * Implement IO::Async::Loop::Poll directly on _poll() syscall           wrapper, thus avoiding many bugs in IO::Poll (RT93141)         * Ensure that IO::Async::Loop::Select can cope with callbacks that           remove other IO handle watches (RT101919)         * Silently upgrade watched IO handles to O_NONBLOCK (RT102044)         * Complain about unrecognised keys to ->extract_addrinfo (RT101453)0.64    2014/10/17 17:51:07        [CHANGES]         * Make specific mention of 'TCP' and 'UDP' around socket examples           where appropriate         * Allow construction of an IO::Async::Handle using fileno integers           directly         * Provide a better search for 'all open filehandles' via IO::Async::OS           on Linux (RT97942)         * Allow IO::Async::Listener to have handle_constructor or handle_class           as a subclass method (RT97208)         * Clarify documentation on how to use IO::Async::Process's           on_exception event (RT98929)        [BUGFIXES]         * Ensure that Stream's write Futures are also informed of write errors           (RT97433)         * Remember to ->remove_child the individual workers of an           IO::Async::Function (RT99552)         * Fix IO::Async::Function synopsis example (RT97713)0.63    2014/07/11 15:09:08        [CHANGES]         * 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 fixes0.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.t0.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 Cygwin0.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::Stream0.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           support0.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 warning0.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::DetachedCode0.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 though0.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 sockets0.49    CHANGES:         * Fix watch_time => enqueue_timer conversions; fix unit tests and           Timer implementations0.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           existence0.47    CHANGES:         * Support $listener->listen( v6only => ... )         * Added new data-passing $loop->run and $loop->stop methods        BUGFIXES:         * Emulate ->socketpair on MSWin32 by connecting to a temporary socket         * Account for EWOULDBLOCK on MSWin32         * Don't try reading STDIN to block awaiting a signal in unit-tests         * Allow zero-delay Countdown timers (RT75954)         * Handle dup2() collisions in ChildManager filehandle setups           (RT75573)         * Fix race condition in t/33process.t (RT75573)         * Ensure Timer->stop doesn't fail if the timer isn't running           (RT75571)         * Possibly-fix some cygwin test failures (RT71706)         * Ensure that 'passive' getaddrinfo hint is handled in both           synchronous and numeric cases0.46    ADDITIONS:         * IO::Async::Routine + IO::Async::Channel         * IO::Async::Process->kill method        CHANGES:         * Use Socket 1.93 rather than dual-dependency logic on           Socket::GetAddrInfo         * Rewrote ::Function based on ::Routine and ::Channel         * Cleaner refcount behaviour in ::Process         * ::Process no longer waits for EOF condition on write-only pipes         * Don't unit-test the reading end of a pipe for HUP condition         * Documentation updates         * Removed documentation for long-since deprecated $loop->detach_child           and ->detach_code methods0.45    CHANGES:         * Added Timer->is_expired predicate, remove_on_expire parameter           (RT71767)        BUGFIXES:         * Use fd3/4 in ::Function rather than STDIN/STDOUT, to avoid           corrupting the return channel if the body function prints (RT72448)         * Better error detection around setuid/setgid/setgroups (RT72407)         * IO::Handle->binmode is not available as a method before perl 5.12;           use CORE::binmode() instead         * Don't attempt to invoke a missing on_notifier callback in           Loop->listen (RT71768)0.44    CHANGES:         * Allow Process to have sockets as handles; including datagram           sockets        BUGFIXES:         * Extract TimeQueue entiries before firing them, in case they do           something weird like cancelling themselves (RT70231)         * Test dollarbang for EWOULDBLOCK which might help MSWin32         * Cope correctly with Function handles in the presence of -CS or           PERL_UNICODE=S0.43    CHANGES:         * Allow IO::Async::Notifier to be used as a non-principle mixin class         * Provide Notifier->loop accessor         * Added (still-experimental) Notifier debug features         * Deleted various deprecated features:            + Notifier to Handle upgrade            + Loop->enable_childmanager, Loop->disable_childmanager         * Print deprecation warnings on Loop->detach_code, Loop->detach_child         * Minor improvements to LoopTests0.42    BUGFIXES:         * Test Stream encoding errors on a sequence which still returns           U+FFFD immediately on 5.14.0 (RT69020)0.41    CHANGES:         * Support 'encoding' parameter in IO::Async::Stream         * Allow IO::Async::Stream->write with an empty string, for the           side-effect of setting an on_flush handler         * Support 'first_interval' parameter to IO::Async::Timer::Periodic         * 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 testing0.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::Function0.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 flag0.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_NUMERICSERV0.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 closed0.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 callback0.33    ADDITIONS:         * Allow watching child PID 0, to capture every child process exit         * $loop->time accessor         * Stream->write( sub { ... } ) dynamic stream generation         * Stream->write( $data, on_flush => sub { ... } ) callback        CHANGES:         * IO::Async::Loop->new magic constructor now caches the loop; useful           for wrapping modules, other event system integration, etc..0.32    ADDITIONS:         * IO::Async::Timer::Absolute         * Listener accessors for ->sockname, ->family, ->socktype        CHANGES:         * Implement and document Handle's want_{read,write}ready parameters         * Rearranged documentation for Notifier subclasses; new EVENTS           sections         * Correct location for #io-async channel on irc.perl.org0.31    ADDITIONS:         * Delegate Protocol->close method and on_closed continuation to its           transport object         * Stream->new_for_stdin, ->new_for_stdout, ->new_for_stdio         * Support Listener->new( handle => $fh )         * IO::Async::PID notifier subclass        CHANGES:         * Better documentation of Listener and Connector addr and addrs           arguments        BUGFIXES:         * INADDR_ANY/INADDR_LOOPBACK fixes inside BSD jails with restricted           networking0.30    ADDITIONS:         * Added IO::Async::Socket         * Added IO::Async::Protocol and ::Protocol::Stream         * Added on_stream and on_socket continuations for $loop->connect and           Listener        CHANGES:         * Emulate socketpair(AF_INET,...)         * Allow IO::Async::Stream 's read_len and write_len to be configured           per-instance         * Allow a Stream object without an on_read handler        BUGFIXES:         * Cope with exceptional-state sockets in Loop::Poll0.29    CHANGES:         * Don't require 'CODE' refs for callbacks/continations; this allows           the use of CODEref objects, &{} operator overloads, or other things           that are callable         * Implement 'read_all' and 'write_all' options on IO::Async::Stream         * Allow IO::Async::Stream subclasses to override on_closed        BUGFIXES:         * Work around some OSes not implementing SO_ACCEPTCONN         * Ensure Handle's on_read_ready/on_write_ready callbacks also take a           $self reference0.28    BUGFIXES:         * Ensure that Timer->start returns $self even when not in a Loop         * Accept bare GLOB refs as IO::Async::Listener handles; upgrade them           to IO::Socket refs if required         * Applied documentation patch from RT 55375 - thanks to           Chris Williams0.27    CHANGES:         * Implement 'autoflush' option on IO::Async::Stream        BUGFIXES:         * Avoid $_ breaking stored signal handler references when invoking           them         * Ignore EINTR from sysread/syswrite         * More reliable socket address tests - don't rely on uninitialised           padding bytes between struct members0.26    BUGFIXES:         * Connect to INADDR_LOOPBACK rather than INADDR_ANY during           t/24listener.t; hopefully fixes FAILs on OpenBSD         * Fix IO::Async::Stream during combined read/write-ready of a closed           stream0.25    CHANGES:         * Accept 'stream'/'dgram'/'raw' as symbolic shortcuts for socket           types in connect/listen operations - avoids 'use Socket'         * Accept IO::Handle-derived objects in ChildManager setup keys as           well as raw GLOB refs        BUGFIXES:         * Various changes to test scripts to hopefully improve portability or           reliability during smoke tests0.24    ADDITIONS:         * Timer subclasses - Countdown and Periodic         * Idleness event watching via low-level 'watch_io/unwatch_io' methods           and higher-level 'later' method         * Added the missing 'unwatch_child' method         * Shareable acceptance testing suite for IO::Async::Loop subclasses           for better testing in subclass implementations        CHANGES:         * More future-proof API version checking for subclasses - requires           subclasses to declare their version.            ### pre-0.24 Loop subclasses are no longer compatible. ###         * Entirely remove the need to $loop->enable_childmanager by calling           waitpid() in 'watch_child'.0.23    CHANGES:         * Rearranged IO::Async::Listener to be a constructable Notifier           suclass         * Allow Signal, Timer and Listener to act as base classes as well as           standalone with callbacks         * Renamed IO::Async::Loop::IO_Poll to ::Poll; created transparent           backward-compatibility wrapper0.22    CHANGES:         * Added tcp-proxy.pl example         * More documentation on IO::Async::Notifier subclass-override methods         * Documented that IO::Async::MergePoint is just an Async::MergePoint         * Various small updates to keep CPANTS happy        BUGFIXES:         * Don't test Async::MergePoint locally as it's now a separate dist,           and the tests here were reporting false negatives.0.21    CHANGES:         * Added "use warnings" to all modules         * Created Notifier->configure method to allow changing properties of           a Notifier or subclass after construction         * New 'examples' dir with some small example scripts        BUGFIXES:         * More robust timing tests to avoid some spurious test failures due           to busy testing servers or other non-issues0.20    CHANGES:         * Major reworking of underlying Loop implementation:            + Unified low-level IO, timer and signal watches as callbacks            + Split IO handle parts of Notifier into new IO::Async::Handle              class            + Created Timer and Signal subclasses of Notifier           These changes will require a compatible upgrade to the underlying           Loop implementation.         * Hide SignalProxy and TimeQueue from CPAN's indexer, as they are           internal-only details that don't need exposing there.         * Loop magic constructor now warns if a specifically-requested class           is not available         * Allow multiple attachment of signals via Loop->attach_signal or new           Signal objects0.19    CHANGES:         * Allow control of Sequencer's pipelining         * Documentation fixes         * Allow Loop->run_child to take a 'setup' array         * Added 'setuid', 'setgid' and 'setgroups' child setup operations         * Support 'on_notifier' in Loop->listen        BUGFIXES:         * carp before return in Stream->write so it actually prints         * Ensure Streams still work after being closed and reopened by           ->set_handle         * If IO::Socket->new() fails, try again with generic ->socket           (makes IPv6 work on platforms without IO::Socket::INET6)0.18    CHANGES:         * Allow Sequencer to be a base class as well as using constructor           callbacks         * Use signal names from Config.pm rather than relying on POSIX.pm.           Covers more signals that way        BUGFIXES:         * Gracefully handle accept() returning EAGAIN         * Fixed handling of IO::Socket->getsockopt( SOL_SOCKET, SO_ERROR )0.17    CHANGES:         * Added Stream->close_when_empty and ->close_now. Added docs         * Added OS abstractions of socketpair() and pipe()         * Many documentation changes and updates        BUGFIXES:         * Properly handle stream read/write errors; close immediately rather           than deferring until empty.         * Various CPAN testers somketest bug fixes         * Fixed http://rt.cpan.org/Ticket/Display.html?id=384760.16    ADDITIONS:         * Loop->requeue_timer()         * Magic constructor in IO::Async::Loop which tries to find the best           subclass         * 'chdir' and 'nice' ChildManager operations        CHANGES:         * Make sure that top-level objects are refcount-clean by using           Test::Refcount, and Scalar::Util::weaken()        BUGFIXES:         * Keep perl 5.6.1 happy by not passing LocalPort => 0 when           constructing IO::Socket::INETs         * Pass the Type option to IO::Socket::INET constructor in test           scripts0.15    REMOVALS:         * IO::Async::Set subclasses and IO::Async::Buffer have now been           entirely removed.        CHANGES:         * Support handle-less IO::Async::Sequencer, like ::Notifier         * Set SO_REUSEADDR on listening sockets by default         * Allow Loop->listen() on a plain filehandle containing a socket         * No longer any need to explcitly call Loop->enable_childmanager        BUGFIXES:         * IO::Async::Loop->_adjust_timeout actually works properly         * Notifier->close() only runs on_closed callback if it actually            closed - allows for neater cross-connected Notifiers         * Made Notifier->want_{read,write}ready more efficient         * Notifier->close() on a child notifier works         * Loop->listen() should take the first successful address, rather           than trying them all0.14    REMOVALS:         * IO::Async::Set subclasses and IO::Async::Buffer are now completely           deprecated. Any attempt to use them will fail immediately.        ADDITIONS:         * 'keep' ChildManager operation         * IO::Async::Test::wait_for_stream()         * Loop->listen()         * IO::Async::Sequencer class        CHANGES:         * Support dynamic swapping of temporary 'on_read' handlers in Stream         * Now requires Socket::GetAddrInfo >= 0.08         * Further shortcuts in ChildManager setup keys - IO references and           simple string operation names         * Support handle-less IO::Async::Notifiers that have IO handles added           to them later         * Allow 'setup' key to Loop->detach_code()         * Various documentation updates        BUGFIXES:         * Allow the same filehandle to be 'dup'ed more than once in           ChildManager0.13    CHANGES:         * Flush all awaiting data from Stream when it becomes writeready         * Supply a real IO::Async::Test module to allow testing in 3rd party           distros         * Various documentation fixes        BUGFIXES:         * Don't rely on STDOUT being writable during test scripts0.12    CHANGES:         * Allow Notifiers that are write-only.         * Added ChildManager->open and ->run; with ->open_child and            ->run_child on the containing Loop.         * Moved IO::Async::Loop::Glib out to its own CPAN dist, to           simplify Build.PL and testing scripts        BUGFIXES:         * Make sure to "use IO::Socket" in IO::Async::Connector         * Pass 'socktype' argument to ->connect during testing0.11    INCOMPATIBLE CHANGES:         * Renamed IO::Async::Set::* to IO::Async::Loop::* - provided           backward-compatibility wrappers around old names.            IO::Async::Set::GMainLoop has become IO::Async::Lib::Glib         * Renamed IO::Async::Buffer to IO::Async::Stream - provided backward-           compatibility wrapper around old name.         * Loop->get_childmanager() and ->get_sigproxy() no longer allowed        CHANGES:         * Extended ->loop_once() and ->loop() feature out to all           IO::Async::Loop classes         * Added IO::Async::Resolver and IO::Async::Connector, plus Loop           integration         * Allow write-only IO::Async::Notifiers that have no read handle or           readiness callback.0.10    INCOMPATIBLE CHANGES:         * Renamed events and methods in IO::Async::Notifier to better fit the           naming scheme of normal Perl handles. Backward-compatibility hooks           are currently provided, but will be removed in a later release. Any           code using the old names should be updated        CHANGES:         * Allow DetachedCode to have multiple back-end worker processes.         * Control if a back-end worker exits when the code "die"s         * Added 'close()' method on Notifiers/Buffers. Sensible behaviour on           buffers with queued data to send         * Reset %SIG hash in ChildManager->detach_child()        BUGFIXES:         * Clean up temporary directory during testing         * Shut down DetachedCode workers properly on object deref         * Better handling of borderline timing failures in t/11set-*.t         * Close old handles before dup2()ing new ones when detaching code         * Various other minor test script improvements0.09    CHANGES:         * Added TimeQueue object and integration with IO::Async::Set and           subclasses.         * Added MergePoint object         * Added 'on_closed' callback support to IO::Async::Notifier        BUGFIXES:         * Don't depend on system locale when checking string value of $!         * Fixed test scripts to more closely approximate real code behaviour           in the presence of poll() vs. deferred signal delivery0.08    CHANGES:         * Added ChildManager->detach_child() method         * Added DetachedCode object        BUGFIXES:         * Better tests for presence of Glib to improve test false failures         * More lenient times in test script 11set-IO-Poll-timing to allow for           variances at test time         * Avoid bugs in post_select()/post_poll() caused by some notifier           callbacks removing other notifiers from the set0.07    BUGFIXES:         * Avoid race condition in t/30childmanager.t - wait for child process           to actually exit         * Avoid race condition in IO::Async::ChildManager->spawn() by waiting           for SIGCHLD+pipe close, rather than SIGCHLD+pipe data0.06    CHANGES:         * Allow 'env' setup key to ChildManager->spawn() to change the           child's %ENV         * Updated the way some of the ->spawn() tests are conducted. There           seems to be massive failures reported on cpantesters against 0.05.           These changes won't fix the bugs, but should assist in reporting           and tracking them down.        BUGFIXES:         * Don't rely on existence of /bin/true - test for /usr/bin/true as           well, fall back on "$^X -e 1"         * Avoid kernel race condition in t/32childmanager-spawn-setup.t by           proper use of select() when testing.0.05    CHANGES:         * Added ChildManager object         * Added singleton storage in IO::Async::Set to store a SignalProxy or           ChildManager conveniently        BUGFIXES:         * Workaround for a bug in IO::Poll version 0.050.04    CHANGES:         * Added dynamic signal attach / detach methods to SignalProxy         * Buffer now has on_read_error / on_write_error callbacks for           handling IO errors on underlying sysread()/syswrite() calls0.03    CHANGES:         * No longer build_requires 'Glib' - print a warning if it's not           installed but carry on anyway.         * IO_Poll->loop_once() now returns the result from the poll() call         * Added concept of nested child notifiers within Notifier object        BUGFIXES:         * Fix to test scripts that call IO_Poll's loop_once() with a timeout           of zero. This can cause a kernel race condition, so supply some           small non-zero value instead.0.02    INCOMPATIBLE CHANGES:         * Event methods/callback functions now called "on_*" to distinguish           them         * Callback functions now pass $self as first argument to simplify           called code        CHANGES:         * Improved POD in Notifier.pm and Buffer.pm        BUGFIXES:         * GMainLoop.pm - return 1 from callbacks so that glib doesn't remove           our IO sources         * GMainLoop.pm - make sure re-asserting want_writeready actually adds           the IO source again0.01    First version, released on an unsuspecting world.

Keyboard Shortcuts

Global
sFocus search bar
?Bring up this help dialog
GitHub
gpGo to pull requests
gigo to github issues (only if github is preferred repository)
POD
gaGo to author
gcGo to changes
giGo to issues
gdGo to dist
grGo to repository/SCM
gsGo to source
gbGo to file browse
Search terms
module: (e.g.module:Plugin)
distribution: (e.g.distribution:Dancer auth)
author: (e.g.author:SONGMU Redis)
version: (e.g.version:1.00)

[8]ページ先頭

©2009-2025 Movatter.jp