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]
-=====/_/_//_/\_,_/ /_/\_\