- Coro - the only real threads in perl
- Coro::AIO - truly asynchronous file and directory I/O
- Coro::AnyEvent - integrate threads into AnyEvent
- Coro::BDB - truly asynchronous bdb access
- Coro::Channel - message queues
- Coro::Debug - various functions that help debugging Coro programs
- Coro::EV - do events the coro-way, with EV
- Coro::Event - do events the coro-way, with Event
- Coro::Handle - non-blocking I/O with a blocking interface.
- Coro::LWP - make LWP non-blocking - as much as possible
- Coro::MakeMaker - MakeMaker glue for the XS-level Coro API
- Coro::RWLock - reader/write locks
- Coro::Select - a (slow but coro-aware) replacement for CORE::select
- Coro::Semaphore - counting semaphores
- Coro::SemaphoreSet - efficient set of counting semaphores
- Coro::Signal - thread signals (binary semaphores)
- Coro::Socket - non-blocking socket-I/O
- Coro::Specific - manage coroutine-specific variables.
- Coro::State - first class continuations
- Coro::Storable - offer a more fine-grained Storable interface
- Coro::Timer - timers and timeouts, independent of any event loop
- Coro::Util - various utility functions.
Changes for version 6.36
- semaphores would not clear the destroy hook when interrupted by ->throw, causing segfaults or worse.
- ->throw on a thread waiting for a semaphore did not acquire the semaphore, but also didn't wake up other waiters, possibly causing a deadlock.
- "FATAL: $Coro::IDLE blocked itself" will now use Carp::confess to report a full stacktrace, which should help find out where the actual call is.
- "atomically" destroy data in slf_destroy, because it is the right thing to do, just in case.
- disable ecb.h libm dependency, to compile on ancient systems or under adverse conditions.