--- Coro/Changes 2001/12/10 21:18:28 1.64 +++ Coro/Changes 2007/01/14 20:47:53 1.199 @@ -1,5 +1,272 @@ Revision history for Perl extension Coro. +TODO: better (earlier) error messages on broken transfer's +TODO: destroy gets only called on cancel: fix(?) + + - remove t/09_timer.t, as it isn't really testing much + but was rather flaky in practise. + - async_pool coro would keep arguments and callback alive until + it was reused. + - cancellation of a coroutine could cause spurious idle calls + in cede_notself. + +3.3 Sat Jan 6 03:45:00 CET 2007 + - implement $coro->on_destroy. + - Coro::Event blocking semantics have been changed, + documented and - hopefully - improved. + - fix nice adding, not subtracting, from priority. + - fix ->prio and api_is_ready (patch by Mark Hinds). + - fixed an assert ("... == prev__cctx->idle_te") + that could errronously trigger. + - fix various large and small memleaks. + - use a (hopefully) more stable cancel implementation + that immediately frees the coroutine data. + - cede/cede_notself return a status now. + - added Coro::guard function. + - added a global coroutine pool for jobs (on my machine, + I can create and execute 48k simple coros/s with async, + and 128k coros with async_pool). + - Coro::AIO now uses the coroutine priority as io priority. + +3.2 Fri Dec 22 05:07:09 CET 2006 + - improve portability to slightly older perls. + - use cleaner coroutine destruction. + - simplify configuration for users. + - optionally (unrecommended) prefer perl functions over + their coro replacements. + +3.11 Tue Dec 5 13:11:24 CET 2006 + - fixed some bogus assert's, but as perl.h disables assert even + without NDEBUG (thank you very much), not too many people should + notice (that did include myself). Andreas König noticed, though :) + - do not save/restore PL_sortcxix on >= 5.9.x, it doesn't seem to have + it. Also noticed by Andreas König :) + - save/restore tainted status. + - verified to pass the testsuite on my 5.9.5. + +3.1 Mon Dec 4 23:03:40 CET 2006 + - INCOMPATIBLE CHANGE: $/ is now per-coroutine (but slow). + - incompatible change: transfer flags are now per-state. + - give a better error message on deadlock. + - document Coro::nready. + - enhanced testsuite. + +3.01 Sun Dec 3 23:47:42 CET 2006 + - forgot to include Coro::Timer. + +3.0 Sun Dec 3 22:57:25 CET 2006 + - the "FINALLY COMPLETELY STABLE" release (coming soon: + the "FAMOUS LAST WORDS" release). + - implement a new stack sharing algorithm, which uses a stack + pool (size currently hardcoded). + - make stack sharing mandatory (it no longer uses a heuristic). + - eval/die no longer cause weird problems under heavy use. + - Coro::Event could cause livelocks if it was used but + no Coro::Event watchers were used. + - Coro::Event now uses asynccheck as prepare does not + check for changed watchers. + - Coro::Event allows multiple waiting coros and will wake up one + per event. + - Coro::Event should be cleaner and more efficient now. + - new utility function Coro::unblock_sub. + - document the sad fact that Event is no longer reentrant. + - putting a coroutine into the ready queue twice could under + some circumstances lead to stack corruption. + - minor incompatibility: subclassing Coro::State is supported + directly now without going through a _coro_state member. + - state/coro switching is much faster now. + - very minor optimisations and code/documentation cleanup. + - avoid problems due to compiler inlining. + - removed timers from Coro::Timer -> use AnyEvent instead. + - replaced Coro::idle coroutine by (cleaner) idle handler. + - updated to newest libcoro. + - implement enhanced support for valgrind. + - implement is_ready and return value for ready. + - removed Coro::Cont, it was a misnomer (it's generators), + and it was somewhat annoying to get it right. Will come back + if somebody asks for it :) + - many ->wait methods and Coro::Event could return + spuriously without the event having happened. + +2.5 Tue Nov 7 12:22:33 CET 2006 + - made Coro::Util, Coro::Select, Coro::Handle and Coro::Socket + use AnyEvent, moved them to Coro/. + - added Coro::LWP which contains all the uglyness required to + make LWP non-blocking. + - should work with perl 5.9.x now (Andreas König made me do it). + - fixed another bug in Coro::Select when the timeout was undef. + - reuse PL_start_env for all coros, saves some memory per coroutine. + - manage PL_top_env differently, hopefully to avoid panic: top_env. + - timeout argument was not properly used in Coro::Socket. + - allow limited forms of subclassing in Coro::Handle/Coro::Socket. + - emulate undocumented(!) functionality of IO::Socket required + by LWP(!!). + - updated eg/lwp to work with newer lwp's. + - remove "FATAL: uncaught exception" prefix. Coroutines that die + kill the whole process, just as exceptions in the main "coroutine" + did already. + +2.1 Wed Nov 1 23:01:13 CET 2006 + - fix a long-standing bug in Coro::Select where select with + zero timeout would instead change the current default filehandle. + - use a simpler and hopefully more robust way to clone padlists + (uses less memory and a perl function instead of our own). + - coro can now create a stack guard area on many architectures. + - Coro::AIO properly reexports additional functions from IO::AIO. + - updated libcoro with a workaround for OS X, + pach and testing by Michael Schwern. + +2.0 Tue Oct 24 05:47:17 CEST 2006 + - support additional aio requests in Coro::AIO. + +1.9 (never properly released due to a glitch) + +1.8 Thu Feb 2 00:59:06 CET 2006 + - applied suggested patch by SAMV to avoid problems during stupid + mark & sweep gc run. + - applied patch by Scott Walters for 5.9.3 compatibility. + +1.7 Tue Dec 27 01:41:58 CET 2005 + - added Coro::AIO, a thin wrapper around IO::AIO. + - improved Makefile.PL explanations. + +1.6 Mon Dec 12 21:30:05 CET 2005 + - additionally save PM_curpm might fix as-of-yet + unseen problems with regex matches being attributed to the + wrong package. + - add t/10_bugs.t, which currently checks against imho broken + perls that use 0.26MB of stack space per Perl_magic_get + invocation (newer linuxes) as opposed to the 0.0002MB perl + normally uses. + - make stacksize configurable for the ultimate debian experience. + +1.51 Mon Dec 12 18:48:36 CET 2005 + - remove debugging warn() accidentally left in Coro::Select. + +1.5 Tue Nov 29 13:32:44 CET 2005 + - use Coro::Event inside Coro::Select to avoid spurious deadlocks. + - fix Coro::Select 'select'. + - strict'ify some modules. + - libcoro errornously restored the SIGUSR2 handler to SIGUSR1. + - use XSLoader in selected modules. + - remove some 5.6 compatibility cruft. + +1.4 Tue Sep 6 00:11:05 CEST 2005 + - libcoro did not take into account the trampoline on amd64, + when 'l'inux method was used. + +1.31 Tue Aug 30 23:31:33 CEST 2005 + - some portability fixes/workarounds. + +1.3 Sat Aug 20 03:08:56 CEST 2005 + - no code changes. module seems to work fine. + - improve Coro::State docs, remove reference to nonexisting + Coro::State::flush method. + - no longer autodetect windows, present it as an option instead. + +1.2 Mon May 16 02:00:55 CEST 2005 + - included libcoro.c earlier in State.xs, might improve portability. + - use a faster and possibly more stable Coro::Cont implementation. + - accept x86_64 in addition to amd64 for optimized linux-amd64 support. + - fix bugs Coro::SemaphoreSet that could cause locks never to be freed. + - fix bugs in CoroAPI.h and document it in Coro::MakeMaker. + +1.11 Thu Mar 3 18:00:52 CET 2005 + - change of contact address. + +1.1 Tue Feb 22 20:51:16 CET 2005 + - support [l]inux method on amd64. + - allow some context switches while compiling/eval'ing. + +1.0 Tue Aug 10 03:47:27 CEST 2004 + - Event 0.89 fixes the bug again. + - fix the remaining(??) memleak. I didn't free the cache-AV for + padlists, so one AV per created anon-sub leaked. + +0.97 Fri May 14 15:23:32 CEST 2004 + - remove stupid gcc extension that was an experiment only anyway. + +0.96 Thu May 13 18:09:29 CEST 2004 + - tell people if they have yet another broken Event variant. + - made Coro to work _better_ with threads (it seems that, as long + as you use Coros in one thread only everything will work fine. + Looking at the perl source the problem might be missing locking + between Coro and some perl internal routines. That's not easily + fixable). + - (hopefully) got rid of the static xnext inside transfer. + +0.95 Sun Feb 15 03:20:28 CET 2004 + - removed Coro::State::flush, implemented a new and much + faster caching mechanism by attaching magic to the CV. + - a memleak with (real) closures remains. + - dramatically reduced size of stacks to 65536 (linux/x86), after + observing that even myhttpd never had more than a kilobyte + of stack in use (stack is still only physically allocated in + pagesize increments for systems suporting mmap). + - fix for a "cygwin-64" architecture added, proposed by Stefan Traby. + - fix for threaded perl. + +0.9 Sun Nov 23 04:32:39 CET 2003 + - fix a few very hard to track down but (of course) stupid + memory leaks. + - stringify version number to avoid locale problems :(. + - perl 5.9.0 does not have SvPADBUSY, reported by Scott Walters, + hopefully ignoring it "just works". + +0.8 Wed Nov 5 19:38:40 CET 2003 + - port to perl5.005_03, but only 5.8.x+ is supported! + - honor LocalAddr even without LocalPort in Coro::Socket. + +0.7 Tue May 27 03:12:38 CEST 2003 + - the version jump indicates some level of testing, not gobs + of new features. + - uh... I found the prompt function in ExtUtils::MakeMaker. + Highly correct stuff, that is... + - fixed(?) a bug with die's in coroutines causing "panic: top_env". + the fix is not well understood by the author, so beware :(. + +0.652 Thu May 8 02:54:46 CEST 2003 + - Applied patch by Slaven Rezic to set default to "s" on FreeBSD, + cause version 4 doesn't have ucontext. + - Benjamin Reed reported that setjmp works fine on darwin, + so preselect it. + +0.651 Sat Mar 29 15:00:23 CET 2003 + - fix a bug in Coro::Handle where some bytes could get lost + on reading, reported by jason@nichego.net. + +0.65 Sun Mar 23 00:08:26 CET 2003 + - added a README.linux-glibc. + - new module Coro::Select. + - also save/restore PL_comppad, fixes segfaults with 5.8.1. + (I never claimed that I know what I am doing ;). + - set default to setjmp/longjmp on non-x86-linux. + +0.6 Thu Nov 21 11:09:06 CET 2002 + - made lazy context switching the default. + - fixed the bug where SemaphoreSet::guard + was the same as timed_guard and timed_guard was missing. + - fix a memleak in Coro::Timer. + - reclassified context sharing as not experimental. + +0.534 Sun Apr 14 03:05:12 CEST 2002 + - fixed backspace => tab in header parsing (myhttpd). + - added eg/readline, for elmex. + - Coro::Event now calls ->start on first call instead of + ->again, which created wrong timeouts for the first ->next. + - fixed a bug where Coro::Socket returned a closed socket instead + of nothing on ECONNREFUSED and similar error conditions. + +0.533 Mon Feb 18 18:49:40 CET 2002 + - adapt to finally working Event-0.85. + - fixed buggy event initialization (trapped under windows, but how + could it possibly have worked anywhere?) + +0.532 Wed Jan 16 02:45:32 CET 2002 + - removed the reference to pp_entersub, might work on + (some) win32 perls now (testsuite works under cygwin, + without Event, which freezes). + 0.531 Mon Dec 10 22:18:44 CET 2001 - Fixed a bug in SemaphoreSet::timed_down.