Кроссплатформенные библиотеки классов C++ для сетевых приложений: HTTP, сети, базы данных, XML/JSON и логирование.
idealvin/coost
Лёгкая базовая библиотека на C++: корутины в стиле goroutine, сетевые компоненты, логирование, разбор флагов, JSON, модульное тестирование и бенчмарки.
- Звёзды
- 4,225
- Форки
- 593
- Открытые issues
- 0
- Последний коммит
- 27 дней назад
Что это?
coost — базовая библиотека на C++, которая объединяет в одной зависимости инфраструктурные компоненты, обычно нужные C++-сервису. Поддерживаются Linux, macOS, Windows и FreeBSD, а также процессоры x86, x64, ARM и ARM64.
В библиотеке есть корутины в стиле Go, которые по умолчанию планируются между потоками и используют общие стеки, чтобы сократить расход памяти. На их основе построены API сокетов с корутинами, обёртка для TCP-сервера и клиента и простой RPC-фреймворк на базе JSON. Также в библиотеку входят логгер, выводящий стек вызовов при сбоях, парсер флагов командной строки и конфигурационных файлов, тип JSON с fluent-интерфейсом, фреймворк для модульного тестирования и фреймворк для бенчмарков.
Код организован следующим образом: заголовочные файлы находятся в include/, исходники — в src/ и компилируются в libco, а тесты — в unitest/. Для сборки проект рекомендует xmake, также поддерживается CMake. Требуется компилятор C++17.
Ключевые возможности
- 01Корутины в стиле Go, планируемые между потоками и использующие общие стеки для снижения расхода памяти.
- 02API сокетов с корутинами, обёртка для TCP-сервера и клиента с поддержкой IPv6, а также RPC-фреймворк на базе JSON.
- 03Логгер, выводящий стек вызовов при сбоях и поддерживающий runtime-проверки утверждений.
- 04Разбор флагов командной строки и конфигурационных файлов, включая псевдонимы и автоматическую генерацию конфигурации.
- 05Встроенный тип JSON с fluent-интерфейсом, а также фреймворки для модульного тестирования и бенчмарков.
Сценарии использования
- Разработка высокопроизводительных сетевых сервисов на C++ с корутинами, без обилия кода с колбэками.
- Добавление в приложения на C++ быстрого логирования с обработкой сбоев.
- Разбор флагов командной строки и конфигурационных файлов в инструментах на C++.
- Замена набора отдельных базовых библиотек одной зависимостью.
Быстрый старт
- 1
Установите систему сборки xmake со страницы проекта
- 2
В корневом каталоге coost соберите libco
xmake - 3
Соберите программу модульного тестирования
xmake b unitest - 4
Запустите все модульные тесты
xmake r unitest
Что важно знать
- Требуется компилятор с поддержкой C++17.
- Часть включённого кода взята из других проектов и может распространяться по другим лицензиям.
В подборках
Темы
Частые вопросы
- Что такое coost?
- Лёгкая базовая библиотека на C++: корутины в стиле goroutine, сетевые компоненты, логирование, разбор флагов, JSON, модульное тестирование и бенчмарки. coost — базовая библиотека на C++, которая объединяет в одной зависимости инфраструктурные компоненты, обычно нужные C++-сервису. Поддерживаются Linux, macOS, Windows и FreeBSD, а также процессоры x86, x64, ARM и ARM64.
- coost можно использовать бесплатно? Какая у него лицензия?
- coost распространяется с открытым исходным кодом под лицензией Other. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- coost всё ещё поддерживается?
- Активно поддерживается. Последний коммит в coost — 28 сент. 2026 г..
- Для чего можно использовать coost?
- Разработка высокопроизводительных сетевых сервисов на C++ с корутинами, без обилия кода с колбэками. Добавление в приложения на C++ быстрого логирования с обработкой сбоев. Разбор флагов командной строки и конфигурационных файлов в инструментах на C++. Замена набора отдельных базовых библиотек одной зависимостью.
- Как установить coost?
- Установите систему сборки xmake со страницы проекта В корневом каталоге coost соберите libco: xmake Соберите программу модульного тестирования: xmake b unitest Запустите все модульные тесты: xmake r unitest
- Где скачать coost?
- Исходный код и инструкции по установке — на GitHub: https://github.com/idealvin/coost
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
C++11-фреймворк для параллельных вычислений и асинхронной работы с сетью, используемый в серверных сервисах Sogou для построения DAG-сценариев задач.
Структурированный логгер для Go, совместимый по API с log и поддерживающий плагины форматирования и хуки; находится в режиме поддержки.
Быстрая библиотека логирования для Go со структурированными записями, уровнями логирования и двумя API: Logger без аллокаций и более гибким SugaredLogger.
JSON-логгер для Go с нулевым числом аллокаций, цепочечным API, уровнями и семплированием логов, а также опциональным выводом в CBOR.
Консольная программа для просмотра логов: преобразует JSON и logfmt в удобный для чтения формат, поддерживает фильтрацию, сортировку и слежение за обновлениями.