Revision history for IO-Async

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 improvements

0.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 delivery

0.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 set

0.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 data

0.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.05

0.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() calls

0.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 again

0.01    First version, released on an unsuspecting world.