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 |
|---|---|
| Licenses | BSD Revised |
| Operating Systems | POSIX |
| Implementation | C C++ Perl |
Recent releases


Changes: Destroying the default loop now works reliably and a problem causing busy-waiting when embedding an empty event loop into another has been fixed. Multiple timers becoming ready at the same time will now be invoked in the order of their timeouts (as opposed to the opposite order). The event loop can now be suspended, which is useful for interactive programs.


Changes: This release probes for CLOCK_REALTIME support at runtime instead of only at compile time, so libev compiled on a newer system has a greater chance of running on an older system. Also, an uninitialized variable has been fixed that could cause failure during event loop creation on Windows systems.


Changes: This release mainly disables the use of kqueue and poll on OS X again. Their use was erroneously enabled in 3.51, but these functions are notoriously broken on OS X. The select backend in fd_set mode has seen some bugfixes, and will actually compile now on platforms that need the fd_set mode (such as QNX). Apart from these changes, a number of minor bugfixes and improvements have been implemented.


Changes: This release fixes a major bug in inotify support that could cause libev to freeze on hash collisions. A number of minor bugs in inotify support have been fixed as well. On Mac OS X, libev now falls back to select, as 10.5 has broken poll too. embed watchers now automatically stop and restart themselves if the embedding loop is forked, and as usual, the documentation has been tweaked and improved.


Changes: There have been no bugfixes in this release. The only major change is that inotify is now used even on older kernels that are known to be buggy, but only as a hint. Also, libev now has a small list of "known to be good" filesystems where inotify is known to work, and will use inotify as a hint only on other filesystems (such as NFS). The documentation has been updated regarding the dangers of using stat watchers on networked file systems.