Changes for version 3.0 - 2006-12-03

  • 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.

Modules

coroutine process abstraction
truly asynchronous file and directrory I/O
message queues
non-blocking io with a blocking interface.
make LWP non-blocking - as much as possible
MakeMaker glue for the C-level Coro API
reader/write locks
a (slow but coro-aware) replacement for CORE::select
non-binary semaphores
hash of semaphores.
coroutine signals (binary semaphores)
non-blocking socket-io
manage coroutine-specific variables.
create and manage simple coroutines
various utility functions.
do events the coro-way

Provides

in Coro/Handle.pm
in Coro/LWP.pm