Revision history for Future 0.18 2013/09/20 19:09:57 [CHANGES] * Added 'try_repeat' and 'try_repeat_until_success' aliases * @CARP_NOT trust between Future and Future::Utils [BUGFIXES] * Fix to concurrent non-immediate + immediate fmap* return values 0.17 2013/09/07 16:53:47 [CHANGES] * Performance improvement by using direct member access instead of accessor methods * Documentation updates; suggestion of documentation style for Future-returning code [BUGFIXES] * 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 family 0.14 CHANGES: * Added Future->wrap constructor * Added Future::Utils::fmap* family of functions BUGFIXES: * 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 features 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 immediates * 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 0.03 INCOMPATIBLE CHANGES: * Future->needs_all and Future->needs_any now return dependents' results CHANGES: * 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.