libmime is a MIME parser in the same vein as Expat, the stream-oriented XML parser. As input is fed to the parser, events are generated which an application can catch by registering event handlers. Such events include the Unix From_ line, start of entity, end of entity, entity boundary, header, end of headers, and body. libmime supports MIME message editing through a delta mechanism. Edit contexts are instantiated and changes applied to specific contexts. Edit contexts can then be expressed in standard unified diff format which, when applied to the input source stream, will result in the new message.
libevnet provides a suite of interfaces useful in network applications. The API includes a buffered I/O interface, connect(2) and accept(2) analogues, a fully featured DNS lookup package, thread pools, and transparent OpenSSL integration. Using libevent as the poll-select-epoll-kqueue-/dev/poll event loop, all interfaces express the traditional Unix non-blocking I/O paradigm for the construction of high-performance applications.
Zoned manages BerkeleyDB zone databases using the BDB Replication Base API. It manages all node communication and eases the difficulties that BerkeleyDB replication imposes (such as making sure that all zone changes go straight to the master node for transaction processing). It requires the BIND9 DLZ BDBHPT driver.
dns.c is a recursive, re-entrant, non-blocking DNS resolver in a single .c file. It features a record-agnostic API, restartable record iterators, and smart queries which recursively follow out-of-bailiwick NS, MX, and SRV host references. It works just as well as a stub resolver, too. It also includes spf.c, a non-blocking SPF resolver with no threading, no forking, and no run-time dependencies.
libnostd is a compatibility library for common, non-standard BSD, GNU, and Win32 APIs. No additional compilation is required; it has header-based macro and static inline definitions. It includes transparent cross-platform support for arc4random(), arc4random_buf(), strlcpy(), strlcat(), err.h, sys/param.h, sys/queue.h, sys/tree.h, sys/time.h, stdatomic.h (ISO C1x proposal), strdupa(), strndupa(), and strnlen().
delegate.c implements an abstract function pointer by capturing a user-specified callback signature -- delegate() -- and exposing it through a simple interface -- invoke(). It provides something loosely approximating lambda expressions; or even more analogous, C# delegates. It includes a wrapper to support libevent callbacks to functions not matching the required libevent callback signature.
cqueues is a comprehensive event and networking library for Lua 5.2 and LuaJIT using modern Unix O(1) polling facilities. It includes libraries for buffered socket I/O, SSL/TLS sockets, DNS querying, signal handling, threading, file change notification, and X.509 key management. It natively supports Linux, *BSD, OS X, and Solaris systems without third-party dependencies, and is interoperable with any event loop that accepts plain descriptors, or is usable standalone.
Re: bug report page?
> Hi, I tried your lib and I found a
> problem on linux at line 947 in
> socket.c, there is no ap_strdup
> anywhere in the lib or it's dependency
> libs. It runs if I comment it out. Is
> this a win32 function? Also there is no
> Makefile for the regress test scripts. I
> realize this is beta, just reporting.
You need to install the latest libarena snapshot. I added some short-hand macros to <arena/util.h> after 0.3.1 was released.
Feel free to e-mail me privately or on the mailing-list. libevnet itself is pretty stable, it's just the build system which is out of shape.