Startle is a library of useful and efficient algorithms and facilities for developing C programs.
Library features include:
- Low overhead in-memory structured logging: deferred string formatting, indented with context, stored to a ring buffer, minimal overhead allowing use in release builds
- Macros: for common tasks such as iteration, bit/flag operations, intrusive lists
- Dispatch macros: Simulate overloaded functions for variable arguments
- Error handling
- Algorithms: Quicksort, binary search, string segments, simple mmap'ing, integer log, hash set
- Zero space overhead map: O(log(n)) insertion, O(log(n)^2) lookup, O(log(n)) in-place conversion to a sorted array for O(log(n)) lookup afterwards.
Makefile features include:
- Automatic dependency handling
- Integration with
makeheaders
to automatically generate and update headers for .c files - Simple code generation: Collect macro-like annotations into lists for x-macros
- Used for: Unit tests, handling commands and flags
Documentation can be found here.
See the example program to get started.
Startle was originally developed as part of PoprC.