Nick announced the release of Libevent-2.0.7-rc today. Here is an excerpt from his email:
Thanks to everybody who reported and fixed bugs in Libevent 2.0.6-rc,
Libevent 2.0.7-rc should be much more stable and portable, especially
for people using IOCP, Windows, rate-limiting, or threads.
There are also numerous small bugfixes thoughout the codebase (though
still not, alas, in the http stuff).
For a complete list of changes, just see the ChangeLog included with
the source distribution.
You can download source code of libevent releases from monkey.org
Libevent 2.0.4-alpha is now available for download:
The complete change list is available here
Some of the feature improvements include:
- bufferevents can now be rate limited
- http connections can now resolve host names asynchronously
- a facility for lock debugging
- arc4random() for evdns
However, we (that means mostly Nick) have also made a large number of bug fixes and stability improvements across many platforms. Many thanks to everyone who helped by providing bug reports and patches including Brodie Thiesfield, Dagobert Michelsen, Evan Jones, Joachim Bauch, Pavel Plesov, Roman Puls, Sebastian Hahn, William Ahern, Yasuoka Masahiko and Zhuang Yuyao.
In a separate email, Nick also provided a much more verbose description
of what all changed.
It has been a while since the last alpha release of libevent-2.0. Yesterday, we released 2.0.3-alpha which can be downloaded from
Please, give it a spin and let us know if you run into any problems. There have been a lot of changes since the last release, mostly due to Nick's hard work. Here are just some highlights, the ChangeLog contains the full story:
- SSL/TLS support on bufferevents, using the OpenSSL library
- Improved searching on evbuffer objects
- Improved support for Windows
- More efficient memory allocation for event_bases that use epoll
- Improved thread-safety
- The IOCP bufferevent backend is now exposed on Windows; many thanks to Christopher Davis for his work.
Many thanks to everyone who helped with patches and bug reports including Rocco Carbone, Brodie Thiesfield, Caitlin Mercer, David Reiss, Alexander Pronchenkov, Jacek Masiulaniec, Ka-Hing Cheung, Christopher Davis, Ferenc Szalai, and Ryan Phillips.
Edited to fix the link.
We just released a new stable version of Libevent
that fixes the following problems:
- If the kernel tells us that there are a negative number of bytes to read from a socket, do not believe it. Fixes bug 2841177; found by Alexander Pronchenkov.
- Do not allocate the maximum event queue and fd array for the epoll backend at startup. Instead, start out accepting 32 events at a time, and double the queue's size when it seems that the OS is generating events faster than we're requesting them. Saves up to 512K per epoll-based event_base. Resolves bug 2839240.
- Fix compilation on Android, which forgot to define fd_mask in its sys/select.h
- Do not drop data from evbuffer when out of memory; reported by Jacek Masiulaniec
- Rename our replacement compat/sys/_time.h header to avoid build a conflict on HPUX; reported by Kathryn Hogg.
- Build kqueue.c correctly on GNU/kFreeBSD platforms. Patch pulled upstream from Debian.
- Fix a problem with excessive memory allocation when using multiple event priorities.
- When running set[ug]id, don't check the environment. Based on a patch from OpenBSD.
A new alpha release of libevent 2.0 is on its way, too. Thanks to everyone who submitted patches and bug reports.
The source code is available at http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz
. Don't forget to verify the signature
Nick just announced two new libevent releases. Here is his summary.
You can find the source in the usual place:
This is a bugfix-only release, and some of the bugs were kind of nasty. I'd recommend that you upgrade, especially if you are writing code that uses epoll or evdns.
Changes in 1.4.12-stable:
- Try to contain degree of failure when running on a win32 version so heavily firewalled that we can't fake a socketpair.
- Fix an obscure timing-dependent, allocator-dependent crash in the evdns code.
- Use _VA_ARGS_ syntax for varargs macros in event_rpcgen when compiler is not GCC.
- Activate fd events in a pseudorandom order with O(N) backends, so that we don't systematically favor low fds (select) or earlier-added fds (poll, win32).
- Fix another pair of fencepost bugs in epoll.c. [Patch from Adam Langley.]
- Do not break evdns connections to nameservers when our IP changes.
- Set truncated flag correctly in evdns server replies.
- Disable strict aliasing with GCC: our code is not compliant with it.
The first alpha release in the long-promised Libevent 2.0 series is finally out. You can download Libevent 2.0.2-alpha from:
This is an alpha release. Libevent 2.0 is not finished. There will be bugs, and we make no promises about the stability of any APIs introduced in the 2.0.x-alpha releases. When you find bugs, please let us know.
Libevent 2.0 is intended to be backward compatible with the Libevent 1.4 APIs[*]. Any program that worked with Libevent 1.4 should still work with Libevent 2.0, unless we screwed up. Please test your programs when you have a chance, so that if we did
screw up, we can notice soon.
[*] Unless you were messing around with the internals of internal structures.
This release adds many new features to the previous alpha release, and fixes many bugs. See the ChangeLog for full details. Highlights include:
- evdns is now threadsafe, with locking support
- There's an evconnlistener type that you can use to abstract cross-platform differences in accepting connections.
- The evbuffer interface (and therefore bufferevents) now supports zero-copy much better.
- About a zillion fixes for tricky bugs in the new Libevent 2.0.1-alpha code.
Special thanks to everybody who helped find bugs and improve the code, especially James Mansion, Zack Weinberg, and Joachim Bauch.
This release contains a number of small bug fixes:
- 32-bit compilation has been fixed
- 32-bit policies are no longer created as Linux64 with running on a 64-bit system
The source code can be downloaded here