Support & Info
Bug Tracking: Bugs & FeaturesMailing List: Info
Git Repository: github (sourceforge - deprecated)
License: 3-clause BSD
IRC: #libevent on OFTC
Happy Hacking
You can make Libevent developers happy by reducing our wishlists!Nick's list – Niels's list
libevent is meant to replace the event loop found in event driven network servers. An application just needs to call event_dispatch() and then add or remove events dynamically without having to change the event loop.
Currently, libevent supports /dev/poll , kqueue(2) , event ports , POSIX select(2), Windows select(), poll(2), and epoll(4) . The internal event mechanism is completely independent of the exposed event API, and a simple update of libevent can provide new functionality without having to redesign the applications. As a result, Libevent allows for portable application development and provides the most scalable event notification mechanism available on an operating system. Libevent can also be used for multi-threaded applications, either by isolating each event_base so that only a single thread accesses it, or by locked access to a single shared event_base. Libevent should compile on Linux, *BSD, Mac OS X, Solaris, Windows, and more.
Libevent additionally provides a sophisticated framework for buffered network IO, with support for sockets, filters, rate-limiting, SSL, zero-copy file transmission, and IOCP. Libevent includes support for several useful protocols, including DNS, HTTP, and a minimal RPC framework.
More information about event notification mechanisms for network servers can be found on Dan Kegel's "The C10K problem" web page.
A mailing list for libevent is now available. Libevent is maintained by Nick Mathewson, Azat Khuzhin and Niels Provos.
Documentation
Book: Programming with Libevent.Reference: 1.4.x-stable 2.0.x-stable 2.1.x-stable master
ABI/API compatibility report: releases master
What's new in: 2.0.x-stable 2.1.x-alpha.
Download–Stable releases
These are the ones you probably want for software development, unless you like to track the latest development versions and report bugs in them.
- libevent-2.1.12-stable.tar.gz [GPG Sig] ChangeLog
PR
Released 2020年07月05日 - libevent-2.1.11-stable.tar.gz [GPG Sig] ChangeLog
Released 2019年08月01日 (ABI changed) - libevent-2.1.10-stable.tar.gz [GPG Sig] ChangeLog
Released 2019年05月26日 -
libevent-2.1.8-stable.tar.gz [GPG Sig] ChangeLog
Released 2017年01月22日- Changelog to follow
-
libevent-2.0.22-stable.tar.gz [GPG Sig] ChangeLog
Released 2014年01月05日- Changelog to follow
-
libevent-2.0.21-stable.tar.gz [GPG Sig] ChangeLog
Released 2012年11月18日- Several SSL correctness and performance fixes.
- Build fixes for mingw64
- Avoid a few resource leaks
- and more...
-
libevent-2.0.20-stable.tar.gz [GPG Sig] ChangeLog
Released 2012年08月23日- Fix a crash on windows.
- Make event_pending() threadsafe.
- Another SSL callback behavior fixes
- Avoid an evdns segfault (Greg Hazel)
- and more...
-
libevent-1.4.15-stable.tar.gz ChangeLog
Released 2015年01月05日- Changelog to follow
-
libevent-1.4.14b-stable.tar.gz [GPG Sig] ChangeLog
Released 2010年06月07日- Backport evbuffer_readln()
- Fix a crash when reading badly formatted resolve.conf (Yasuoka Masahiko)
- Make evutil_make_socket_nonblocking() leave any other flags alone (Jardel Weyrich)
- Adjusted fcntl() retval comparison on evutil_make_socket_nonblocking() (Jardel Weyrich)
- Re-add event_siglcb; some old code _was_ still using it. :(
- Make Libevent 1.4 build on win32 with Unicode enabled. (Brodie Thiesfield)
- Distribute nmake makefile for 1.4
- Define _REENTRANT as needed on Solaris, elsewhere (6cbea13)
- Other bugfixes for http, memory management, and cleanup.
Download release candidates
This is a release candidate. If you find any bugs, please let us know!
-
libevent-2.1.7-rc.tar.gz ChangeLog
Released 2016年11月05日- Changelog to follow.
Download–Alpha releases
This is alpha code. If you find any bugs, please let us know!
- libevent-2.2.1-alpha-dev.tar.gz [GPG Sig] ChangeLog
Released 2023年05月21日 - libevent-2.1.9-beta.tar.gz [GPG Sig] ChangeLog
Released 2019年02月10日 - libevent-2.0.23-beta.tar.gz [GPG Sig] ChangeLog
Released 2019年01月20日 -
libevent-2.1.6-beta.tar.gz ChangeLog
Released 2016年08月27日- Changelog to follow.
-
libevent-2.1.5-beta.tar.gz [GPG Sig] ChangeLog
Released 2015年01月05日- Changelog to follow.
-
libevent-2.1.4-alpha.tar.gz [GPG Sig] ChangeLog
Released 2014年03月21日- Several new utility APIs in libevent core, bufferevents, and evhttp.
- Detect closes early with EPOLLRDHUP.
- (Optional) support for buildint with cmake.
- Bugfixes too numerous to mention.
- and much more...
-
libevent-2.1.3-alpha.tar.gz [GPG Sig] ChangeLog
Released 2013年05月01日- New finalization API with fix for bufferevent deadlock issue.
- New evdns and evhttp option.
- Several new unit tests.
- Bugfixes and portability fixes and build fixes too numerous to mention.
- and much more...
-
libevent-2.1.2-alpha.tar.gz [GPG Sig] ChangeLog
Released 2012年11月18日- Various new functions in the core, evbuffer, and bufferevent APIs
- Even more backends can now use portable monotonic timers.
- Updated autotools build infrastructure for faster builds.
- More reliable unit tests
- Internal event-callback interface now refactored for flexibility and performance
- Faster notification with kqueue, faster/more precise timers on Linux
- Numerous small performance improvements and data structure tweaks throughout the codebase
- Various bugfixes against 2.1.1-alpha
- and much more...
-
libevent-2.1.1-alpha.tar.gz [GPG Sig] ChangeLog
Released 2012年04月03日- First alpha release in the 2.1.x series.
- Useful features for controlling the event loop and avoiding priority inversion
- New debugging features.
- New evbuffer functionality, including an improved sendfile/mmap wrapper, the ability to add one evbuffer to another, and more ways to avoid needless copies.
- Numerous small performance improvements and data structure tweaks throughout the codebase.
- and much more...
Older Releases
Libevent has been released under a 3-clause BSD license. Information on public git access.
Benchmark
Performance comparison using different event notification mechansims in Libevent. We declare interest in a large number of connections of which most are cold and only a few are active.Programs using libevent
The usefulness of libevent API is demonstrated by the following applications:- Chromium – Google's open-source web browser (uses Libevent)
- Memcached – a high-performance, distributed memory object caching system
- Transmission – a fast, easy, and free BitTorrent client
- NTP – the network time protocol that makes your clock right (uses Libevent in SNTP)
- tmux – A clean, modern, BSD-licensed terminal multiplexer, similar to GNU screen
- Tor – an anonymous Internet communication system.
- libevhtp – A fast and flexible replacement for libevent's http client/server API
- Prosody – A Jabber/XMPP server written in Lua
- PgBouncer – Lightweight connection pooler for PostgreSQL
- redsocks – a simple transparent TCP -> Socks5/HTTPS proxy daemon.
- Vomit – Voice Over Misconfigured Internet Telephones
- Crawl – A Small and Efficient HTTP Crawler
- Libio – an input/output abstraction library
- Honeyd – a virtual honeynet daemon – can be used to fight Internet worms.
- Fragroute – an IDS testing tool
- Nylon – nested proxy server
- Disconcert – a Distributed Computing Framework for Loosely-Coupled Workstations.
- Trickle – a lightweight userspace bandwidth shaper.
- watchcatd – software watchdog designed to take actions not as drastic as the usual solutions, which reset the machine.
- ScanSSH – a fast SSH server and open proxy scanner.
- Nttlscan – a network topology scanner for Honeyd.
- NetChat – a combination of netcat and ppp's chat.
- Io – a small programming language; uses libevent for network communication.
- Systrace – a system call sandbox.
- SpyBye – detect malware on web pages.
- GreenSQL – an SQL database firewall.
- dnsscan – a fast scanner for identifying open recursive dns resolvers
- Kargo Event – a PHP extension for libevent.
- Scytale – a database encryption tool.
- Coturn – Free open source implementation of TURN and STUN Server.