--- Coro/Changes 2007/09/30 13:57:34 1.246 +++ Coro/Changes 2007/10/19 05:52:41 1.279 @@ -1,25 +1,83 @@ Revision history for Perl extension Coro. -TODO: destroy gets only called on cancel: fix(?) TODO: should explore PerlIO::via::CoroCede and PerlIO::via::CoroAIO. TODO: maybe implement a default message channel, very much like Erlang (which is cool in a lot of important aspects (failures!), - but very lacking in others). + but very lacking in others (higher level ipc)). -3.8 +4.13 + - add Coro::Storable::blocking_thaw. + - use a vastly more complicated technique to localise + $SIG{__WARN/DIE__} that also works on perls <= 5.8.8. + - use a coroutine for the idle callback Coro::Event, + instead of running Event in the current coroutine context. + This also catches recursive invocations. + +4.11 Thu Oct 11 02:40:24 CEST 2007 + - port to threaded perls. + +4.1 Thu Oct 11 02:38:16 CEST 2007 + - incompatible change: $SIG{__DIE__} and $SIG{__WARN__} will now + be local to each coro (see Coro::State). + - incompatible change: for very deep reasons, cede and cede_notself + cannot return anything, so nothing will be returned. + - possibly bring back 5.10 compatibility (untested). + - work around stupid (and wrong) warning on 5.10 :(. + - overlay the saved state over the context stack. This saves + a few hundred bytes per coroutine on average and also + speeds up context switching a bit. + - further tune default stack sizes. + - (more) correctly calculate stack usage in coro_rss. + - Coro::Storable::blocking_* did not properly lock + resulting in races between coroutines. + - added Coro::Storable::guard. + - stopping to trace a coroutine could destroy the cctx of + an unrelated coroutine. + - explain the relationship between Perl and C coroutines in + more detail in Coro::State. + - Coro::Util::inet_aton did not short-circuit dotted quad forms, + causing a fork per resolve. This also affected Coro::Socket. + - switch to a separate stack in $coro->call/eval to avoid + invalidating pointers. + +4.03 Sat Oct 6 21:24:00 CEST 2007 + - added Coro::throw method. + - minor code cleanups. + +4.02 Sat Oct 6 02:36:47 CEST 2007 + - fix a very minor per-coroutine memleak (a single codereference). + - fixed a bug where the currently in-use c context would be freed + prematurely (can happen only when programs change the stacksize + or use tracing). + - tracing can no longer keep a coro alive after it terminated. + - do static branch prediction in the common path for gcc. gives + about 2-5% speed improvement here. + +4.01 Fri Oct 5 22:10:49 CEST 2007 + - instead of recreating *a* standard output handle we simply + use STDOUT, which is faster and hopefully more robust. + +4.0 Fri Oct 5 12:56:00 CEST 2007 - incompatibly changed Coro::Storable::freeze. - major new feature: added Coro::Debug, for interactive coroutine debugging, tracing and much more. + - major bug fix: unbelievable, but true: $_, $/ and many other + "saved" variables actually weren't being saved. This has been fixed, + of course, while increasing performance while losing all the save + flags. + - save flags are gone, and all the api functions dealing with them. - added Coro::Semaphore::adjust. - added Coro::Util::fork_eval. - added Coro::Storable::{nfreeze,blocking_{freeze,nfreeze}}. + - added Coro::killall. - reduce initial stack sizes to allow for "micro-coroutines". - better async_pool resource management, moved parts of async_pool handling to XS (major speed improvement). - actually croak before modifying important data structures. - refuse to transfer while compiling. - possibly support eval EXPR better now. - - enable assembly method per default on linux+bsd x86+amd64. + - enable assembly per default on linux+bsd x86+amd64. + - all internal members were renamed _something for easier subclassing. - many minor tweaks. 3.63 Wed May 16 14:10:06 CEST 2007