/** * @mainpage * * @section libusual libusual * * libusual is utility library. * * Unlike APR or GLIB which create their own API world, libusual * tries to use standardized API's whenever possible. * * Goals for portability APIs: * - Follow modern POSIX, BSD, glibc. Make the APIs available everywhere. * - If compat is impossible, allow the user code to compile - eg. UNIX * sockets on win32. * - Assume cooparating user: * - libusual needs to implement only API that are used and useful. No need try to provide full POSIX. * - user code survives gracefully when libusual provides less functionality. * * Goals for new APIs: * - Simple, clear API * - Simple, clear implementation. * - It is preferable to have simple code which can be copied and modified * for some special case than complex code that tries to handle * everything at once. * * @section antimake Antimake build system. * * Build system demos and docs. * * @section modules Module list. * *
Compat includes | |
---|---|
| Base C environment |
| ctype compat |
| Command line argument processing |
| Error handling for command-line tools |
| Async DNS lookup |
| Pthreads compat |
| Signal compat |
| Socket compat and helper functions |
| String compat and helper functions |
| Time compat and helper functions |
| fnmatch compat |
Data Structures | |
| Binary Tree |
| Crit-Bit Tree |
| Hash table |
| Binary heap |
| Double-linked list |
| Memory buffer |
Minimal dict | |
| Double-linked list for shared mem |
| List with stats |
| Refcounted strings |
Data Processing | |
| Bit arithmetic |
| Byte processing |
| Config parser |
| Endianess conversion |
| Misc arithmetic |
| POSIX regex compat |
| PostgreSQL data formats |
| Low-level UTF8 handling |
Non-cryptographic hashing | |
| CRC32 |
| Jenkins' lookup3 hash |
| Siphash |
| In-memory hashing |
| Jenkins' SpookyHash for 64-bit CPUs |
| XXHash for 32-bit CPUs |
Cryptography | |
| Cryptographically Secure Randomness |
| Common API for cryptographic message digests |
| HMAC with digest |
| MD5 hash |
| SHA1 hash |
| SHA256/224 hashes |
| SHA512/384 hashes |
| SHA3/SHAKE hashes |
| Keccak sponge API |
| PRNG based on Keccak |
Memory Allocation | |
| Context Allocator framework |
| Extra allocators |
| Simple append-only memory pool |
| Slab allocator for same-size objects |
OS support | |
| libevent compat |
| Process daemonization |
| Various file I/O tools |
| Logging framework for daemons |
| Async Postgres connection framework |
| Safety wrappers around OS I/O |