Я тут запилил небольшую библиотеку для Plain C:
https://github.com/KivApple/CEssentials
Что в себе содержит:
- Утилиты работы с динамическими строками
- Обобщённый вектор (на макросах)
- Обобщённая хеш-таблица (на макросах) с open adressing и quadratic probing
Обобщённые структуры данных реализованы типобезопасным образом (макросы порождают static inline функции под нужный тип данных, соответственно, у компилятора есть информация о типах).
Я открыт к критике как по поводу самого содержимого, так и его упаковки (насколько хорош подход, который выбрал именно я для реализации обобщённого программирования в C).
Библиотека распространяется под лицензией MIT и обладает исчерпывающей документацией.
UPD: Переписал в snake_case стиле, плюс перевёл полностью на макросы вместо порождения макросами кучи специализированных функций, потому что оказалось, что на практике глобальное пространство имён быстро засоряется, а других в plain C не завезли.
UPD2: Написал статью по устройству хеш-таблицы из библиотеки: https://habr.com/ru/post/704724/