--- Coro/Changes 2001/07/17 02:55:29 1.11 +++ Coro/Changes 2006/12/01 03:47:55 1.165 @@ -1,5 +1,323 @@ Revision history for Perl extension Coro. +3.0 + - the "FINALLY COMPLETELY STABLE" release (coming soon: + the "FAMOUS LAST WORDS" release). + - implement a new stack sharing algorithm. + - 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 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. + - 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. + +0.53 Tue Nov 27 21:11:13 CET 2001 + - some tests for Event. + - slightly different internal architecture to get refcnt into the object + and not the reference. might fix a few bugs, certainly did introduce + new ones. + - Coro::Timer (independent of Event). + - new timed_wait functions for Coro::Signal, Semaphore, SemaphoreSet. + +0.52 Tue Nov 6 21:36:18 CET 2001 + - ported to cygwin (trivial). + patch by Gerrit P. Haase . + - small setjmp code fix by Sullivan.DanielJ@epamail.epa.gov. + +0.51 Thu Nov 1 20:39:01 CET 2001 + - terminate/cancel now work properly (otherwise termination + could cause a "next coroutine is not and contains not..." + error. + - added Coro::Socket::shutdown. + - Coro::Event::loop no is the same as Event::loop. + - implemented terminate with args + join. + +0.5 Fri Sep 28 16:15:35 CEST 2001 + - fixed "print" on a Coro::Handle. The print method worked. + - small tweaks (seem to reduce memory consumption a lot) + in various modules. + - splendid use of "no warnings" scattered throughout. + - added Coro::Handle::rbuf, fixed Coro::Handle::fh. + +0.49 Sun Sep 16 02:42:45 CEST 2001 + - changed some method calls to function calls for speed + inside Coro::Handle. + - make Coro::Handle use an array instead of a hash for + speed reasons. + - IRIX mystery solved: it's SGI's NT, after all: "standard, huh?". + sjlj and ucontext should now work. + - IRIX-specific port for libcoro. + - swapped order of accept results to match IO::Socket. + - changed getsock/peername to sock/peername to match IO::Socket. + - fixed a bug that caused segfault when returning to main task + under some circumstances. + - other bugfixes. + +0.45 Sun Sep 2 02:54:01 CEST 2001 + - new method Coro::Handle::timeout. + - corrected speling of set...name to get...name in Coro::Socket. + - Coro::Socket::accept now returns a Coro::Socket, not a Coro::Handle. + - Coro::Handle now supports fileno and FILENO. + - added eg/myhttpd, a web server. + - Coro::Socket now accepts numeric ports as well as "port(number)" + syntax. + - moved some scheduling primitives into xs code. more to come. + - new simple priority system. + - implemented Coro::Event using XS, almost four times faster! + - small memory corruption problem fixed (boy that was difficult). + +0.13 Wed Aug 8 16:53:07 CEST 2001 + - new method Coro::Handle::readline. + - added eg/lwp and Coro::Handle::autoflush, to make LWP work. + (see eg/lwp on how to make LWP non-blocking). + - renamed Coro::Socket::new_inet to new. + - added Coro::Util, some utility functions. + - die/eval now works better (still get annoying (but true ;) + "Callback called exit" messages). + - Coro::Handle now supports timeout, and Coro::Socket Timeout. + - much better Coro::Socket support. + +0.12 Fri Jul 27 04:19:01 CEST 2001 + - do not use mmap if neither MAP_ANON nor MAP_ANONYMOUS is defined. + - very experimental stack sharing algorithm. not 100% safe but + should work well in practise ;) + - added Coro::RWLock. + - Coro::Specific now works. + +0.11 Tue Jul 24 22:49:21 CEST 2001 + - added specialized hack for newer and older linux versions (fast). + - renamed Coro::Event::IO to Coro::Handle. + - new module Coro::Socket. + +0.1 Tue Jul 24 01:47:53 CEST 2001 + - release candidate 3. A rather new internal structure :( + - the great renaming: Damian Conway gave me a suitable replacement + for yield. + - added Coro/libcoro, a portable coroutine implementation for C + (not even perl-dependent!!!), which can be used by Coro::State. + - renamed SAVE_DEFSV (on xs-level only) to avoid symbol clash in + perl-5.6. + - new function Coro::Event::idle. + - the idle process is now overriden + by default in Coro::Event. + - Coro::Channel now enforces the size. + - canceling events now works in all cases. + - Coro state now include $_ and $@. + - yet another bug workaround that I do not really understand :( + - new module Coro::Event::IO (very undocumented) to do + non-blocking i/o. + - performance tuning. + +0.08 Thu Jul 19 06:13:25 CEST 2001 + - release candidate 2 (new functionality). + - add Coro::State::flush function. + - transfer now supports a flags value (mostly for speed ATM). + - might compile and work in the presence of threads now. + - continuations have a saner syntax. + - no more memleaks. + +0.07 Tue Jul 17 17:40:18 CEST 2001 + - release candidate 1 ;) + - slightly nicer code. + - fixed a scheduling bug in Coro::Event. + 0.06 Tue Jul 17 04:23:24 CEST 2001 - ok, I found the showstopper - the same sub must not be re-entered in two different coroutines, otherwise => crash. I