It's been a while since I announced EV, and in the meantime, not only has EV proven itself in a lot of apps, the module family around it grew considerably.
With version 2.0, EV gained support for multiple event loops and embed watchers (a bit scarcely documented), so one can now use e.g. kqueue for sockets only and poll for overall event polling. A number of new modules are now available, separately from the main EV distro: - EV::ADNS This is an interface to libadns, an asynchronous dns resolver library, that replaces EV::DNS which was removed from EV. It is written in C and is a nice example on how to access EV from the C level, and how to effectively integrate foreign event loop users (such as libadns). - Net::SNMP::EV This is an adaptor that makes non-blocking Net::SNMP requests run as part of the EV event loop. It is written fully in Perl and has no public interface, just loading it makes Net::SNMP requests use EV. This is a nice example on how to integrate a foreign event loop user using perl only. - EV::Glib This integrates the default glib maincontext into EV. That means that watchers registered via Glib (e.g. in gtk+ programs) are handled together with EV watchers. This doesn't make glib any faster (it's easily the slowest event loop I have seen), but it allows you to integrate glib/gtk+ programs into EV-based programs. - Glib::EV This is the opposite of EV::Glib - it uses EV as the polling backend for Glib. This, too, doesn't make glib any more efficient (its usually a bit less efficient with epoll for example), but allows one to use EV and EV watchers in glib/gtk+ programs (i.e. the main loop that runs is the glib one, while with EV::Glib the main loop would be the EV one). If one has a lot of IO watchers or timers, then using this module might result in a drastic performance increase over glib (the "lot of" comes from the fact that epoll cannot efficiently emulate poll, but in practise this can already pay off when watching two or more file descriptors). - AnyEvent::Impl::EV and AnyEvent::Impl::CoroEV AnyEvent has had EV support for quite some time, thought I'd mention this. - Coro::EV, Coro::Util When Coro detects that EV is used, it will use Coro::EV to efficiently hook into the event loop for non-blocking socket access. Likewise, Coro::Util will take advantage of EV::ADNS if available, when resolving dns domains. Most of these were written to satisfy my most immediate personal and company needs, which explains the weird coverage. Hope it is useful to somebody else, too. -- The choice of a Deliantra, the free code+content MORPG -----==- _GNU_ http://www.deliantra.net ----==-- _ generation ---==---(_)__ __ ____ __ Marc Lehmann --==---/ / _ \/ // /\ \/ / [EMAIL PROTECTED] -=====/_/_//_/\_,_/ /_/\_\