xref: /libev/README (revision 93823e6c)
1e3a38431SPaul Bohmlibev is a high-performance event loop/event model with lots of features.
2e3a38431SPaul Bohm(see benchmark at http://libev.schmorp.de/bench.html)
3e3a38431SPaul Bohm
4e3a38431SPaul Bohm
5e3a38431SPaul BohmABOUT
6e3a38431SPaul Bohm
7e3a38431SPaul Bohm   Homepage: http://software.schmorp.de/pkg/libev
8e3a38431SPaul Bohm   Mailinglist: [email protected]
9e3a38431SPaul Bohm                http://lists.schmorp.de/cgi-bin/mailman/listinfo/libev
10e3a38431SPaul Bohm   Library Documentation: http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod
11e3a38431SPaul Bohm
12e3a38431SPaul Bohm   Libev is modelled (very losely) after libevent and the Event perl
13e3a38431SPaul Bohm   module, but is faster, scales better and is more correct, and also more
14e3a38431SPaul Bohm   featureful. And also smaller. Yay.
15e3a38431SPaul Bohm
16e3a38431SPaul Bohm   Some of the specialties of libev not commonly found elsewhere are:
17e3a38431SPaul Bohm
18e3a38431SPaul Bohm   - extensive and detailed, readable documentation (not doxygen garbage).
19e3a38431SPaul Bohm   - fully supports fork, can detect fork in various ways and automatically
20e3a38431SPaul Bohm     re-arms kernel mechanisms that do not support fork.
21e3a38431SPaul Bohm   - highly optimised select, poll, epoll, kqueue and event ports backends.
22e3a38431SPaul Bohm   - filesystem object (path) watching (with optional linux inotify support).
23e3a38431SPaul Bohm   - wallclock-based times (using absolute time, cron-like).
24e3a38431SPaul Bohm   - relative timers/timeouts (handle time jumps).
25e3a38431SPaul Bohm   - fast intra-thread communication between multiple
26e3a38431SPaul Bohm     event loops (with optional fast linux eventfd backend).
27*93823e6cSPaul Bohm   - extremely easy to embed (fully documented, no dependencies,
28*93823e6cSPaul Bohm     autoconf supported but optional).
29*93823e6cSPaul Bohm   - very small codebase, no bloated library, simple code.
30e3a38431SPaul Bohm   - fully extensible by being able to plug into the event loop,
31e3a38431SPaul Bohm     integrate other event loops, integrate other event loop users.
32e3a38431SPaul Bohm   - very little memory use (small watchers, small event loop data).
33e3a38431SPaul Bohm   - optional C++ interface allowing method and function callbacks
34e3a38431SPaul Bohm     at no extra memory or runtime overhead.
35e3a38431SPaul Bohm   - optional Perl interface with similar characteristics (capable
36*93823e6cSPaul Bohm     of running Glib/Gtk2 on libev).
37e3a38431SPaul Bohm   - support for other languages (multiple C++ interfaces, D, Ruby,
38e3a38431SPaul Bohm     Python) available from third-parties.
39e3a38431SPaul Bohm
40*93823e6cSPaul Bohm   Examples of programs that embed libev: the EV perl module, node.js,
41*93823e6cSPaul Bohm   auditd, rxvt-unicode, gvpe (GNU Virtual Private Ethernet), the
42*93823e6cSPaul Bohm   Deliantra MMORPG server (http://www.deliantra.net/), Rubinius (a
43*93823e6cSPaul Bohm   next-generation Ruby VM), the Ebb web server, the Rev event toolkit.
44e3a38431SPaul Bohm
45e3a38431SPaul Bohm
46e3a38431SPaul BohmCONTRIBUTORS
47e3a38431SPaul Bohm
48e3a38431SPaul Bohm   libev was written and designed by Marc Lehmann and Emanuele Giaquinta.
49e3a38431SPaul Bohm
50e3a38431SPaul Bohm   The following people sent in patches or made other noteworthy
51e3a38431SPaul Bohm   contributions to the design (for minor patches, see the Changes
52e3a38431SPaul Bohm   file. If I forgot to include you, please shout at me, it was an
53e3a38431SPaul Bohm   accident):
54e3a38431SPaul Bohm
55e3a38431SPaul Bohm   W.C.A. Wijngaards
56e3a38431SPaul Bohm   Christopher Layne
57e3a38431SPaul Bohm   Chris Brody
58e3a38431SPaul Bohm
59