Портативные автономные библиотеки C и структуры данных. (С99)
Каждая папка является автономной и содержит одну пару заголовок/источник. Нет
создайте для библиотек, просто скопируйте нужные файлы.
например, если вам нужен регистратор, скопируйте sc_log.h и sc_log.c в свой проект.
В Linux имеется 100% покрытие филиалов, и CI работает на
ОС: Linux, MacOS, FreeBSD и Windows. Компиляторы: GCC, Clang, MSVC. Arch: x64, aarch64, Armv6 (32 бит), Armv7 (32 бит), ppc64le, s390x (с прямым порядком байтов), riscv64. Дезинфицирующие средства: дезинфицирующие средства valgrind и clang/gcc (адрес, неопределенный, поток)
Библиотека | Описание |
---|---|
множество | Общий массив/вектор |
буфер | Буфер для переменных кодирования/декодирования, лучше всего подходит для реализаций протокола/сериализации. |
состояние | Обертка условий для Posix и Windows |
crc32 | Crc32c, использует инструкцию процессора crc32c, если она доступна. |
куча | Минимальная куча, которую также можно использовать как максимальную кучу/очередь с приоритетом. |
ini | INI-парсер |
связанный список | Навязчивый связанный список |
лесоруб | Регистратор |
карта | Высокопроизводительная хеш-карта с открытой адресацией |
карта памяти | Обертка Mmap для Posix и Windows |
мьютекс | Обертка Mutex для Posix и Windows |
вариант | Анализатор аргументов командной строки. Очень простой |
перформанс | Утилита тестирования производительности для получения информации о счетчиках производительности через perf_event_open() |
очередь | Общая очередь, которую также можно использовать как удаление из очереди/стек/список. |
СК | Вспомогательные функции |
сигнал | Безопасный для сигналов snprintf и обработчик сигналов (обработка CTRL+C, печать обратной трассировки при сбое и т. д.) |
розетка | Сокеты Pipe / TCP (также сокеты домена Unix) /Epoll/Kqueue/WSAPoll для Posix и Windows |
нить | Строки C с префиксом длины, завершающиеся нулем. |
нить | Обертка потоков для Posix и Windows. |
время | Функции времени и сна для Posix и Windows |
таймер | Реализация хешированного колеса синхронизации с быстрыми операциями опроса/отмены |
ури | Базовый парсер URI |
Это лучше, чем библиотека X?
Я часто использую эти библиотеки для высокопроизводительных серверных приложений. Также,
Мне важен читаемый и простой в отладке код. Таким образом, эти библиотеки показывают
мой вкус (компромиссы) в отношении производительности/дизайна API/читабельности. Вы можете или можете
не нравится.
Почему бы вам не изменить API здесь, в X, чтобы его было проще использовать?
Отправьте запрос на включение, пожалуйста, но убедитесь, что вы не вводите неопределенное значение
поведение. Можно предоставить лучшие API, особенно для универсальных библиотек,
если вас не волнует неопределенное поведение. Я стараюсь этого избегать.
Каков наиболее эффективный способ использования этих библиотек?
Как и любой другой код. Добавьте в свой проект в качестве исходных файлов и в идеале используйте
-О3 -флто+ПГО. Однако для вашего варианта использования это может не иметь никакого значения.
Используется ли библиотека X в каком-либо продукте?
Некоторые библиотеки используются в производстве, но, пожалуйста, всегда проверяйте сами.
Есть ли релиз?
Пожалуйста, используйте ветку master. Это считается стабильным.
Будете ли вы поддерживать стабильность API?
Пожалуйста, не ждите стабильного API. Эти библиотеки довольно
небольшие (большинство из них содержат менее нескольких сотен строк кода), и в идеале вы
должны прочитать код, понять, что он делает, и адаптировать его к вашим
потребности. Поэтому не следует обновлять библиотеки вслепую. Я ожидаю, что ты справишься
любые возможные различия API легко. При этом я сделаю все возможное, чтобы сохранить
API стабильный.