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

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.