++ed by:

78 PAUSE users
66 non-PAUSE users.

Author image Marc A. Lehmann


AnyEvent::Impl::EventLib - AnyEvent adaptor for Event::Lib


   use AnyEvent;
   use Event::Lib;
   # this module gets loaded automatically as required


This module provides transparent support for AnyEvent. You don't have to do anything to make Event work with AnyEvent except by loading Event::Lib before creating the first AnyEvent watcher.

The Event::Lib module suffers from the same limitations and bugs as libevent, most notably it kills already-installed watchers on a file descriptor and it is unable to support fork. These are not fatal issues, but Event::Lib itself has many additional bugs such as taking references to file handles and callbacks instead of making a copy, causing memory corruption and random crashes. Only Tk rivals it in its brokenness.

This adaptor module employs the same workaround around the watcher problem as Tk and should therefore be avoided. (This was done for simplicity, one could in theory work around the problems with lower overhead by managing our own watchers).

Event::Lib also leaks file handles and memory and tends to just exit on problems.

It also doesn't work around the Windows bug of not signalling TCP connection failures.

Event::Lib does not support idle watchers. They could be emulated using low-priority timers but as the priority range (and availability) is not queryable nor guaranteed, and the default priority is likely the lowest one, this module cannot use them.

Avoid Event::Lib if you can.


AnyEvent, Event::Lib.


 Marc Lehmann <schmorp@schmorp.de>