ae (almost everything) is an auxiliary general-purpose D library. It is used by forum.dlang.org, Digger, the D documentation auto-tester, and most of my D projects in general.
Among many things, it implements an asynchronous event loop, several network protocols, and various utility code to complement the D standard library (Phobos).
The library's Git repository reached a nice round number of commits the other day, which might as well be an occasion to make this announcement, in case someone finds something useful for their D adventures here. Please see the README document for an overview of what can be found in the library.
What's new in ae?
Notable additions within the last 1000 commits:
ae.net.httpcan now be used to accept HTTP requests and send replies not just over plain HTTP(S)-over-TCP, but also using CGI, FastCGI or SCGI over a variety of transports.
ae.net.ssl.opensslnow passes most badssl.com tests.
ae.sys.file.listDiris a fast and flexible directory iterator. It sacrifices providing results as a range to instead gain allowing to decide on-the-spot when to recurse. The speed gains come from avoiding
statcalls by taking advantage of the
dirent.d_typefield, and allowing applications to avoid GC allocations when querying directory entry names.
ae.utils.mapsetis a data structure which allows holding and performing operations on very large sets of maps. Applications include fully exploring program states for all possible inputs, e.g. for fuzzing.
ae.utils.meta.tuplerangecontains constructs for iterating and chaining together operations on range-like constructs which operate on heterogeneous types. The standard D range interface does not provide this, so an internal iteration API is used instead. You may recall me mentioning
ae.utils.meta.chainduring a DConf talk -
ae.utils.graphics.libpngbridges libpng and
ae.utils.graphics.image, allowing decoding arbitrary PNGs into the user-defined
Imagetype. Because the
Imagecolor type is set at compile-time, the module configures
libpngto decode the PNG into the
Image's color type. The exhaustingly thorough test suite even identified some bugs in libpng itself.
ae.utils.soundis a package to generate, load, and save simple audio samples. Waveforms can be generated as D ranges (using e.g.
std.algorithm) and then mixed / played / saved. The included space shooter demo game pewpew uses this package to generate and play procedural sound effects.
Thanks for reading!