--- Coro/Changes 2008/11/17 07:19:31 1.426 +++ Coro/Changes 2008/11/19 10:44:41 1.439 @@ -6,24 +6,31 @@ but very lacking in others (higher level ipc)). TODO: testcancel -TODO: aio -TODO: Coro::Semaphore -TODO: trow disturbs cleanup path inside pp_slf? -TODO: throw special-case in transfer? +TODO: guard as SLF - to avoid deadlocks. + - avoid deadlock in Coro::Channel if maxsize == 1 (Richard Hundt). + 5.0 - NEW ARCHITECTURE: use the latest 4.x version if you experience stability issues. - bump API version to 7 - all dependents must be recompiled. + - removed timed_* functions - they were not being used anyways + and should be replaced by a more generic mechanism - + and were annoying to support anyways :) + - removed SemaphoreSet's waiter method - use sem instead. - Coro::Semaphore->adjust didn't correctly wake up enough waiters. - async_pool did free a scalar value twice ("Attempt to unreference..."). - fix a longstanding bug where calling terminate on a coro that was waiting for a semaphore that was just becoming available would cause a deadlock (semaphore would get into a state where - it was available but waiters were waiting(. - - avoid deadlock in Coro::Channel if maxsize == 1 (Richard Hundt). + it was available but waiters were still blocked). + - calling throw on a coroutine that is waiting for a semaphore will + no longer make it acquire the semaphore (and thus leak a count). - perl's process emulation is now not even theoretically supported anymore. + - new functions Coro::rouse_cb and Coro::rouse_wait. + - new function Coro::Semaphore::wait. + - use named constants in Coro::Channel (Richard Hundt). - directly patch the entersub opcode calling SLF functions (cede, transfer and so on). this does speed up context switching, but more importanly, it frees us from the hardcoded behaviour of @@ -36,16 +43,24 @@ it possible to implement schedule-like-functions in XS. - use new SLF interface to massively speed up Coro::EV by roughly a factor of two. - - removed timed_down and timed_guard functions - they were not being - used anyways and should be replaced by a more generic mechanism - - and were annoying to support anyways :) - used new SLF interface to massively speed up Coro::Semaphore by a factor of three. - used new SLF interface to speed up Coro::AIO by roughly a factor of four and reduce its memory usage considerably. + - implement Coro::SemaphoreSet purely in terms of Coro::Semaphore, + for a nice speedup and vastly more correct behaviour. Also implement + a new method "sem" to get at the underlying semaphore object. + - implement Coro::Channel in terms of Coro::Semaphore, for a moderate + (in comparison) 20-40% speedup. + - used new SLF interface to reimplement Coro::Signal gaining + some unknown (because I was too lazy), but certain, speedup, and also + making signals reliable for the first time. - forgot to include Coro/libcoro/README in the dist for all these years. - work around a freebsd pthreads bug (manual testcancel is required as pthread_cond_wait isn't a cancellation point on freebsd). + - use new rouse functions to speed up and simplify Coro::BDB. + - make "prefer perl native functions" work with threaded perls. + - (libcoro) lots of minor cleanups and portability improvements. 4.913 Sat Nov 15 07:58:28 CET 2008 - async_pool did free a scalar value twice