Libev is a high-performance event loop for C (with optional and separate interfaces for C++ and Perl), featuring support for I/O, timers (relative and absolute, cron-like ones), signals, process status changes, and other types of events. It has both a fast native API and libevent emulation to support programs written using the libevent API. Differences to libevent include higher speed, simpler design, more features, less memory usage, embedability, and no arbitrary limits. libev supports epoll, kqueue, Solaris event ports, poll, and select.
|Tags||Software Development Libraries Application Frameworks Perl Modules Networking|
|Implementation||C C++ Perl|
Release Notes: This release works around epoll problems with /dev/random and other devices, officially supports polling files with all backends, works around a bunch of eventport-related kernel bugs in Solaris, and implements interfaces so that multithreaded programs can do their own custom signal handling.
Release Notes: This release concentrates on bugfixes and API changes, not on major features. Apart from making many function names more logical (while providing backward compatibility to libev 3.x), there are improvements in the documentation, a better minimal mechanism (you can now have a full event library with epoll in 5kb of code). The majority of changes, however, are small to medium bugfixes in the core, the epoll, poll, and ports backend as well as many compatibility fixes and bug workarounds for systems as dead as AIX, kernel backends as broken as epoll, and PITAs as painful as Darwin and Windows.
Release Notes: This release fixes a larger number of minor portability issues and bugs. It also disables signalfd usage by default, as too much software is broken and gets confused by blocked signals (e.g. glib's threadpool). On the feature side, ev_stat watchers now guarantee a difference between previous and current stats, libev will take advantage of inotify_init1 if available, idle watchers can now be disabled when embedding, and the C++ API now has an ev::timer->remaining () method.
Release Notes: This release fixes a bug caused by ev_default_destroy not properly freeing all resources. It also contains a lot of changes to the signal handling. Most notably, it is now allowed to start signal watchers in any loop, given that they do not bind on the same signal. On GNU/Linux systems, libev will now take avdantage of signalfd functionality if available, and will also use thread-safe variants of the epoll_create/signalfd and eventfd syscalls, when available.
Release Notes: This release most notably adds hooking functionality to make it easier to share event loops between multiple threads. It fixes a bug in ev_unloop and multiple threads, improves timing precision under Windows, and improves the documentation in many areas. The recursion depth and the remaining time for a timeout can now be queried, the io_collect_interval interpretation has changed slightly, there is now a reduced API option, and a number of minor bugs w.r.t. configuration have been fixed.