Revision history for Future
0.24 2014/02/21 17:57:49
[CHANGES]
* Have repeat print a warning if it is asked to retry over a failure
* Change documentation to suggest try_repeat instead of repeat for
retries over failure
* Check at call time that sequencing callbacks really are callable,
leading to neater error messages (RT93164)
0.23 2014/01/19 15:26:55
[CHANGES]
* Link to Futures advent calendar 2013
* Fixes/additions to Phrasebook documentation, including section
about tree recursion
[BUGFIXES]
* 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
[CHANGES]
* 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
[CHANGES]
* Major performance improvement by folding out some layers of sub {}
wrapping in sequencing operations
* Added ->then_with_f and ->else_with_f
[BUGFIXES]
* Don't start another trial after cancelling a repeat() (RT91147)
0.20 2013/11/18 19:14:27
[CHANGES]
* Include an indication of done/failed/cancelled status of a Future
when ->done or ->failing an already-ready one
[BUGFIXES]
* Declare requires perl 5.8 because it fails on 5.6 smokers - no idea
why
* Fix a couple of typoes in docs (RT89185)
0.19 2013/09/27 13:31:16
[BUGFIXES]
* Guard against odd things happening during ->cancel at global
destruction (RT88967)
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.