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

Reply via email to