Revision history for Future 0.49 2022-10-17 [CHANGES] * Big reshuffle to move most code into Future/PP.pm in order to support an optional Future-XS distribution too * Attempt to load Future::XS by preference if it is available * Additional unit tests for cornercases of XS implementation * Remember to provide the AWAIT_WAIT API method * Migrated Future::Queue out into its own distribution [BUGFIXES] * Bugfixes and unit tests for convergents on pre-cancelled futures (RT144459) 0.48 2022-01-26 [CHANGES] * Implement the new AWAIT_ON_CANCEL API shape for Future::AsyncAwait [BUGFIXES] * Make sure to set rtime for immediate futures (RT134620) 0.47 2021-01-01 [BUGFIXES] * Don't weaken() the waiting future in Future::Mutex as that causes it to be dropped in some situations 0.46 2020-10-19 [CHANGES] * Provide AWAIT_CHAIN_CANCEL named method for compatibility with upcoming Future::AsyncAwait::Awaitable method rename [BUGFIXES] * Ensure that Future::Mutex returns proper cloned future instances when waiting (RT133563) 0.45 2020-04-22 [CHANGES] * API changes to make duck-typing closer to Promises/A+ et.al: + Allow sequencing methods to yield non-Future results; upgrade them to being Future-wrapped + Add ->resolve and ->reject as aliases of ->done and ->fail * Recognise PERL_FUTURE_STRICT environment variable to restore previous sequencing method behaviour [BUGFIXES] * ->without_cancel still needs to cancel result if caller is cancelled * Ensure all Future::AsyncAwait interop methods properly respect subclassing 0.44 2020-03-25 [CHANGES] * Added ->result; use that in unit tests and docs where appropriate * Slight performance boost in internals by direct field access rather than accessor methods * Document ->await properly; make it wait until ready * Discourage ->block_until_ready 0.43 2020-01-07 [CHANGES] * Implement the Future::AsyncAwait::Awaitable API methods directly 0.42 2019-11-12 [CHANGES] * Added Future::Queue [BUGFIXES] * Remove already-completed futures from the on_cancel chain of others to avoid the list growing arbitrarily large in some situations; e.g easily provoked by long loops in Future::AsyncAwait 0.41 2019-06-13 [CHANGES] * Added Future::Exception->throw 0.40 2019-05-03 [CHANGES] * Added Future::Exception (RT129373) * Make ->get throw a Future::Exception and ->fail recognise one * Better documentation of the failure category parameter * Added a properly-documented ->block_until_ready 0.39 2018-09-20 14:03:05 [CHANGES] * Added Test::Future::Deferred * Use Syntax::Keyword::Try in example code * Various docs fixes 0.38 2017-12-18 01:41:52 [CHANGES] * Added counting ability to Future::Mutex (RT123876) [BUGFIXES] * Support perl 5.8.1 again (thanks ilmari) 0.37 2017/11/28 15:39:22 [CHANGES] * Finally got around to removing the old Makefile.PL [BUGFIXES] * Fix for convergent futures that lose strong references during cancellation (RT120468) * ->without_cancel shouldn't retain the originating future after completion (RT122920) 0.36 2017/11/27 22:04:52 [CHANGES] * Added ->retain method (RT123711) * Fixed some typoes in docs (RT118309) * Added ->state method (RT120759) [BUGFIXES] * Ensure that ->without_cancel still strongly holds a reference to its parent future (RT122920) 0.35 2017/06/23 20:37:57 [CHANGES] * Link to YAPC::EU talk video in SEE ALSO [BUGFIXES] * Handle cancelled/completed slots when fmap is cancelled (RT120469) (thanks tm604) 0.34 2016/10/02 18:40:06 [CHANGES] * Added Future::Mutex * Minor documentation wording fixes (thanks ilmari) [BUGFIXES] * Fallback to 'configure_requires' for older versions of Module::Build that don't support 'test_requires' (RT110721) 0.33 2015/07/29 16:15:55 [CHANGES] * Added ->catch and ->catch_with_f * Add catch-handler semantics to ->then / ->then_with_f * Also pass fmap* items via $_ (RT105558) * Undocument ->done_cb / ->fail_cb / ->cancel_cb * Entirely delete ->and_then / ->or_else * New barename documentation style including "since" versions * Further document the idea of failure categories as used by catch* 0.32 2015/03/10 19:54:22 [CHANGES] * Documentation updates for new ->wrap_cb method [BUGFIXES] * Empty convergents should respect subclassing (RT97537) * Adjust loss-report regexp for bleadperl (RT99002 again) * Make trailing periods in warning tests optional, to account for Carp version changes (RT100685) 0.31 2015/03/08 17:50:06 [CHANGES] * Added debugging warning when destroying a failed Future that has not reported its failure (RT102198) * Have ->and_then / ->or_else die immediately to further their deprecation * Announce done_cb/fail_cb/cancel_cb as deprecated in favour of curry * Provide ->wrap_cb method (experimental) [BUGFIXES] * Ensure that Test::Future does not retain Futures once they are complete (RT101128) * 'use Future' in Future::Utils (RT102167) 0.30 2014/11/26 14:29:28 [CHANGES] * Rename 'dependent' futures to 'convergent' * Removed examples/ scripts that now exist as independent modules * Added ->without_cancel * Sanity-check the $code argument to ->on_{ready,done,fail,cancel} to ensure it is callable or a Future [BUGFIXES] * Ensure that 'ready_at' is always set in DEBUG mode * Fix DEBUG 'lost_at' line number reporting tests for latest bleadperl (RT99002) * Ensure that if Future::Utils::repeat condition code dies, that is passed to the result Future and not propagated to the caller (RT100067) * Failure by returning a non-Future from a sequencing code block should report as a failed Future, not throw exception to caller 0.29 2014/07/17 12:18:12 [CHANGES] * Added Test::Future * Stronger deprecations - repeat {} on failures warns every time, ->and_then / ->or_else warn once [BUGFIXES] * Define the behaviour of dependent futures when components are cancelled. (Partially fixes RT96685) * Use Module::Build->prompt (RT96409) * Ensure that repeat on an empty foreach list or empty generator without 'otherwise' behaves correctly, just yield an immediate 0.28 2014/06/08 22:43:40 [CHANGES] * Added ->label * Added ->btime, rtime, elapsed tracing timers * Better handling of 'breaks' version detection 0.27 2014/06/06 17:42:27 [BUGFIXES] * Depend on Carp 1.25 for the new message format with trailing period, so tests work 0.26 2014/06/01 12:52:53 [CHANGES] * Added ->is_failed accessor * Implement ->export_to_level in Future::Utils * Print a warning about lost sequence Futures * Allow Future->done and Future->fail as simple class constructors to return immediates * Added Future->unwrap [BUGFIXES] * Ensure that sequence futures are weaken()ed in the forward direction. **NOTE** This will potentially break existing code that depended on strong references. This old code was, however, broken. 0.25 2014/02/22 03:47:08 [BUGFIXES] * Fix warning-matching test in unit test for both older and newer versions of Carp 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.
Generated by dwww version 1.15 on Mon Jul 1 02:27:44 CEST 2024.