Portable, stand-alone C libraries and data structures. (C99)
Each folder is stand-alone and contains a single .h .c pair.
There is no build, copy .h .c files you want.
Although I use on Linux mostly, CI runs on
OS : Linux, MacOS, FreeBSD and Windows Compilers : GCC, Clang, MSVC Arch : x64, aarch64, armv6, armv7, ppc64le, s390x Sanitizers : valgrind and clang/gcc sanitizers(address, undefined, thread)
| Library | Description |
|---|---|
| array | Generic array/vector |
| buffer | Buffer for encoding/decoding variables, best fit for protocol/serialization implementations |
| condition | Condition wrapper for Posix and Windows |
| crc32 | Crc32c, uses crc32c CPU instruction if available |
| heap | Min heap which can be used as max heap/priority queue as well |
| ini | Ini parser |
| linked list | Intrusive linked list |
| logger | Logger |
| map | A high performance open addressing hashmap |
| memory map | Mmap wrapper for Posix and Windows |
| mutex | Mutex wrapper for Posix and Windows |
| option | Cmdline argument parser. Very basic one |
| perf | Benchmark utility to get performance counters info via perf_event_open() |
| queue | Generic queue which can be used as dequeue/stack/list as well |
| sc | Utility functions |
| signal | Signal safe snprintf & Signal handler (handling CTRL+C, printing backtrace on crash etc) |
| socket | Pipe / tcp sockets(also unix domain sockets) /Epoll/Kqueue/WSAPoll for Posix and Windows |
| string | Length prefixed, null terminated C strings. |
| thread | Thread wrapper for Posix and Windows. |
| time | Time and sleep functions for Posix and Windows |
| timer | Hashed timing wheel implementation with fast poll / cancel ops |
| uri | A basic uri parser |