Repolode
idealvin

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. 1

    Установите систему сборки xmake со страницы проекта

  2. 2

    В корневом каталоге coost соберите libco

    xmake
  3. 3

    Соберите программу модульного тестирования

    xmake b unitest
  4. 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 обновляется ежедневно.

Похожие проекты