Revision history for Future

0.23    2013/01/19 15:26:55
         * Link to Futures advent calendar 2013
         * Fixes/additions to Phrasebook documentation, including section
           about tree recursion

         * Ensure that late addition of additional items to a fmap foreach
           array works correctly even with concurrency

0.22    2014/01/12 03:12:18
         * Ignore ->done or ->fail on cancelled Futures
         * Added ->then_done, ->then_fail, ->else_done, ->else_fail
         * Neaten up naming of fmap* family - provide both long and short
           names for each function
         * Added Future::Utils::call and call_with_escape
         * Ensure that dependent futures on subclasses tries to use derived
           futures as prototype if possible

0.21    2013/12/29 18:14:41
         * Major performance improvement by folding out some layers of sub {}
           wrapping in sequencing operations
         * Added ->then_with_f and ->else_with_f
         * Don't start another trial after cancelling a repeat() (RT91147)

0.20    2013/11/18 19:14:27
         * Include an indication of done/failed/cancelled status of a Future
           when ->done or ->failing an already-ready one

         * Declare requires perl 5.8 because it fails on 5.6 smokers - no idea
         * Fix a couple of typoes in docs (RT89185)

0.19    2013/09/27 13:31:16
         * Guard against odd things happening during ->cancel at global
           destruction (RT88967)

0.18    2013/09/20 19:09:57
         * Added 'try_repeat' and 'try_repeat_until_success' aliases
         * @CARP_NOT trust between Future and Future::Utils

         * Fix to concurrent non-immediate + immediate fmap* return values

0.17    2013/09/07 16:53:47
         * Performance improvement by using direct member access instead of
           accessor methods
         * Documentation updates; suggestion of documentation style for
           Future-returning code

         * Respect subclassing of immediate->followed_by and dependent futures
           with mixed subclass or immediate components

0.16    CHANGES:
         * Proper behaviour of ->wait_all and ->needs_all on an empty list -
           just return empty immediate done
         * Proper behaviour of ->wait_any and ->needs_any on an empty list -
           return an immediate failure
         * Performance improvement to ->done for immediate Future->new->done
         * Keep a count of pending child futures to avoid quadratic behaviour
           due to linear scan of children every time one completes
         * Improve efficiency of Future::Utils::repeat and fmap* when trials
           return immediates
         * Make repeat and fmap* 'return' argument optional by cloning the
           first non-immediate trial
         * Rework unit tests to avoid dependency on Test::Warn

0.15    CHANGES:
         * Added Future->call constructor
         * Fixed reference-retaining bug in Future's on_cancel callback list
         * Ensure that ->cancel returns $self even on immediates
         * Documentation updates to mention ->wrap and ->call, and the fmap

0.14    CHANGES:
         * Added Future->wrap constructor
         * Added Future::Utils::fmap* family of functions

         * Fixed a precedence bug in 'and' vs &&

0.13    CHANGES:
         * Added ->then and ->else methods; like ->and_then but code is passed
           result directly instead of invocant future
         * Added repeat { ... } foreach, otherwise argument to set final
           result and also handle empty lists
         * Added repeat { ... } generate
         * Turn repeat { ... } code block exceptions into failed futures
         * Ensure that ->on_cancel returns $self (RT85134)
         * Documentation / Phrasebook updates to demonstrate newly added

0.12    CHANGES:
         * Take a 'return' argument to Future::Utils::repeat; deprecate the
           trial-cloning feature for subclasses
         * Have ->followed_by/etc... print a warning in void context
         * Throw an exception when ->followed_by/etc.. code does not yield a
           Future (RT84188)
         * Ensure that ->needs_all/->needs_any work correctly on a mix of
           immediate and pending Futures (RT84187)
         * Ensure that ->on_done/->on_fail always return invocant (RT84313)
         * Ensure that ->on_ready($f) works on cancelled Futures (RT84312)

0.11    CHANGES:
         * Added Future::Phrasebook documentation file
         * Ensure that exceptions thrown from ->followed_by code block are
           caught and turned into failed Futures
         * Fix filename regexp matches for unit-tests so they work on Windows

0.10    BUGFIXES:
         * Account for newer Carp version in unit tests, which appends
           trailing period to messages

0.09    CHANGES:
         * Split ->fail method into new ->die call, only append caller
           file/line to the exception in the latter
         * Various documentation and example improvements

0.08    CHANGES:
         * Ignore attempts to cancel already-complete or already-cancelled
           futures, or to attach ->on_cancel callbacks to them
         * $future->get should return the first result in scalar context
         * Added Future::Utils with repeat { ...} and
           repeat_until_success { ... } looping constructs

         * Link to LPW2012 talk slides

0.07    CHANGES:
         * Leak debugging

0.06    CHANGES:
         * Remembered to actually include the example scripts. No other actual
           code changes.

0.05    CHANGES:
         * Respect subclassing by allowing ->new on instances
         * Allow subclasses to provide an ->await method which will be used
           by ->get and ->failure
         * Added some example scripts to demonstrate how to use Futures with
           various event systems

0.04    CHANGES:
         * Fix implementation of sequenced futures to work properly on
         * Ensure that future->future chaining via callbacks works correctly
           on immediates
         * Link to "curry" in the docs about CODE-returning convenience
           accessors ->done_cb, ->fail_cb and ->cancel_cb

         * Future->needs_all and Future->needs_any now return dependents'

         * Removed $future->( ... ) callable override
         * Pass $f1 to ->or_else code block by symmetry with ->and_then
         * Added $f->followed_by
         * Added Future->wait_any dependent future constructor
         * Rearranged documentation and added more examples

0.02    CHANGES:
         * Rearranged non-leaf future logic
         * Added {pending,ready,done,failed,cancelled}_futures accessors
         * Added Future->needs_any constructor

0.01    First version, released on an unsuspecting world.