--- Coro/Changes 2007/09/22 20:11:53 1.241 +++ Coro/Changes 2007/10/12 18:26:13 1.277 @@ -1,24 +1,77 @@ Revision history for Perl extension Coro. -TODO: better (earlier) error messages on broken transfer's -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.7 + - add Coro::Storable::blocking_thaw. + +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. - - added Coro::Debug, interactive coroutine debugging. + - 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). - - work around bugs in Event causing events to be develivered - for freed watchers (with invalid pointers in them...), using - some ugly perl hacks :/ + - actually croak before modifying important data structures. + - refuse to transfer while compiling. + - possibly support eval EXPR better now. + - 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