Revision history for Future-AsyncAwait
0.26 2019-04-27 12:41:11
[BUGFIXES]
* Further fixes for foreach(LIST) handling (RT129319)
* Handle SAVEt_FREEPV (RT129320)
* Cleanup itervar and SAVEt_PADSV_AND_MORTALIZE of abandoned futures
(RT129320)
* Ensure body of async sub starts with OP_NEXSTATE so as not to upset
Devel::Cover (thanks ilmari) (RT128309)
0.25 2019-04-24 15:46:15
[BUGFIXES]
* Print a warning but don't panic on resume with lost returning
future (RT129303)
0.24 2019-04-18 23:47:56
[CHANGES]
* Stop `async sub`s on ->cancel (RT129202)
* Propagate ->cancel requests back to awaiting future, though at
present only on perl 5.24+ (RT129202)
* Added more internal consistency checks and `panic()` assertions
[BUGFIXES]
* Further fixes for broken behaviour of `foreach(LIST)` (RT129215)
* Fix Devel::MAT::Dumper helper for expired but unreclaimed magic
0.23 2019-04-16 01:08:34
[BUGFIXES]
* Many improvements to mortals handling, including workarounds for
lack of cx->old_tmpsfloor on perls before 5.24 (RT128619)
0.22 2019-04-02 00:12:47
[CHANGES]
* More detailed annotations in Devel::MAT::Dumper helper
[BUGFIXES]
* Partial attempt at freeing things when dropping a pending await
future (RT128620)
* Fix for labeled loop controls (RT128205)
0.21 2019-02-02 17:19:35
[BUGFIXES]
* Fix more memory leaks - simple test case now executes cleanly
(RT128222)
0.20 2019-01-16 22:34:20
[BUGFIXES]
* Ensure mortal SVs aren't reclaimed prematurely during
suspend/resume
* Fix several memory leaks. Some still remain but overall the
situation is much improved (RT128222)
0.19 2019-01-08 23:49:03
[BUGFIXES]
* Replace stolen array or hash pad lexicals with newAV() / newHV() to
maintain the expected SvTYPE() invariants (RT128176)
0.18 2019-01-05 20:08:38
[CHANGES]
* Declare threaded perls before version 5.22 as unsupported. The bug
remains open but for now I'm disinclined to look into it. (RT124351)
[BUGFIXES]
* Don't panic about blk_eval.old_eval_root or .cur_text fields, as it
seems we can safely ignore those (RT126036)
0.17 2019-01-04 18:45:22
[BUGFIXES]
* Perl 5.26 and above still needs SvREFCNT_inc() on the state array
in CXt_LOOP_ARR (RT124353)
* Better fix for scopestack name tracking under -DDEBUGGING
(RT128164)
* Set -DNO_XSLOCKS in order to get working JMPENV on MSWin32
(RT128163)
0.16 2019-01-03 22:09:28
[CHANGES]
* Use ENTER_with_name/LEAVE_with_name variants for easier debug (thanks
ilmari)
* Don't clone the CVf_CVGV_RC flag
* Unit-test that async/await also behaves fine through nested named
method calls
* Unit-test die after single await()
[BUGFIXES]
* Avoid call to non-public unshare_hek() function (RT125613)
* Remember to wrap pp_await in docatch() if CATCH_GET is true. Fixes
many failing test cases (double-nested await, RT126037, RT123062)
0.15 2018-01-24 04:12:04
[CHANGES]
* Support older perls back to 5.16 (continues work on RT122252). Just
5.14 remains unsupported now
* Neater implementation which avoids hacky workarounds from abusing
`cv_clone()`
[BUGFIXES]
* Avoid using anonymous union in struct SuspendedFrame (thanks ilmari)
(RT124171)
0.14 2018-01-22 04:42:02
[CHANGES]
* Document and test that 'await' works from inside 'do {}'
* Test that two nested 'async sub's can await nicely
[BUGFIXES]
* Fix for 'await' twice inside the same 'foreach' loop (RT124144)
* Fix handling of ITERVAR save/restore on perl 5.24+
* Use correct printf format for IVs when debug printing
* Ensure that captured lexicals from now-dead scopes remain working
0.13 2018-01-18 15:52:03
[CHANGES]
* Support older perls back to 5.18 (continues work on RT122252)
[BUGFIXES]
* Ensure that 'async sub' called in list context doesn't leak its
input arguments as well as Future result
0.12 2018-01-15 19:02:42
[CHANGES]
* Support older perls back as far as 5.20 and 5.22
(partly solves RT122252)
* Link to TPCiA talk recording on youtube
0.11 2018-01-07 16:35:25
[BUGFIXES]
* Fixes for markstack restoration calculation
* Don't save/restore PAD slots relating to outer captures or
protosubs (RT124026)
0.10 2017-08-13 23:25:33
[BUGFIXES]
* Implement enough of SAVEt_DESTRUCTOR_X to make try/finally work
* Fix the remaining integration tests with Syntax::Keyword::Try now
latest version (0.07) works correctly
0.09 2017-08-13 17:44:48
[CHANGES]
* Link to TPCiA talk slides
* Forbid the use of foreach loops on non-lexicals as that has
semantic problems due to the implied 'local'
* Unit-test that plain 'eval{}' works as expected
* Allow specifically the use of 'local $@' to support common patterns
around 'eval{}'
* Unit-test that try/catch from Syntax::Keyword::Try works
[BUGFIXES]
* Save cx->blk_gimme on CXt_LOOP_* contexts (thanks rurban)
(RT122673)
0.08 2017/08/10 16:48:52
[CHANGES]
* Handle the other CXt_LOOP_* context types, making foreach() loops
work
0.07 2017/07/11 23:26:48
[CHANGES]
* Forbid the use of 'await' outside of 'async sub'
* Handle CXt_BLOCK contexts
* Handle SAVEt_CLEARSV and SAVEt_CLEARPADRANGE savestack entries
* Further documentation rework
[BUGFIXES]
* Fix off-by-one error on reading the savestack, resulting in a
number of false-"TODO" failures being fixed
* Fix parser logic for parenthesized 'await( ... )' expressions
0.06 2017/06/29 17:43:19
[CHANGES]
* Support suspend/resume within while loops and plain loop blocks
* Import the syntax keywords by default, rather than having to
request them as an import symbol
* Added some initial documentation to explain the new syntax
[BUGFIXES]
* Declare (for now) dependency on perl 5.24 to prevent older versions
from attempting it and failing. We hope to support older versions
back to 5.14 in due course.
0.05 2017/06/27 15:20:54
[BUGFIXES]
* Fix await op so it can await multiple times within the same sub
0.04 2017/06/06 18:42:15
[CHANGES]
* Suspend and resume the PAD around an await so lexical variables are
preserved
* Ensure that anon async subs can suspend/resume - see also
https://rt.perl.org/Public/Bug/Display.html?id=131519
[BUGFIXES]
* Ensure MARK stack doesn't upset debugperl
0.03 2017/05/08 21:33:46
[CHANGES]
* Handle the value and mark stacks around suspend/await, allowing
some stack temporaries to be preserved
* Avoid naming internal functions "Perl_..."
[BUGFIXES]
* Ensure that die after await is still caught
* Avoid C++-style comments and C99-style for() loop variable declarations
(RT121569)
0.02 2017/05/08 16:55:38
[CHANGES]
* Initial tiny implementation of actual suspend/resume on 'await'