面向网络应用的跨平台 C++ 类库,涵盖 HTTP、网络通信、数据库、XML/JSON 和日志等常用功能。
idealvin/coost
一个轻量的 C++ 基础库,集成 goroutine 风格协程、网络、日志、命令行参数、JSON、单元测试与基准测试。
- Star
- 4,225
- Fork
- 593
- 未关闭 Issue
- 0
- 最近提交
- 27天前
这是什么?
coost 是一个 C++ 基础库,把 C++ 服务常用的基础组件打包在一个依赖中。它支持 Linux、macOS、Windows、FreeBSD,以及 x86、x64、ARM、ARM64 等 CPU 架构。
库内提供类似 Golang goroutine 的协程,默认按 CPU 核心数在多线程上调度,并通过共享栈降低内存占用。基于协程的 socket API、TCP 服务端与客户端封装,以及基于 JSON 序列化的简单 RPC 框架都建立在其上。此外还包括程序崩溃时可打印调用栈的日志组件、命令行与配置文件解析的 flag 模块、链式接口的 JSON 类型、单元测试框架和基准测试框架。
头文件位于 include/,源码编译为 libco,测试代码位于 unitest/。项目推荐使用 xmake 构建,也支持 CMake,编译需要支持 C++17 的编译器。
核心功能
- 01类 goroutine 的协程,多线程调度,共享栈降低内存占用。
- 02基于协程的 socket API、支持 IPv6 的 TCP 封装,以及基于 JSON 的 RPC 框架。
- 03日志组件,程序崩溃时打印调用栈,并支持运行时断言。
- 04命令行参数与配置文件解析,支持别名和自动生成配置文件。
- 05内置链式接口的 JSON 类型,并提供单元测试与基准测试框架。
适用场景
- 在 C++ 中用协程编写高性能网络服务,避免大量回调代码。
- 为 C++ 应用添加高性能且能在崩溃时输出调用栈的日志。
- 在 C++ 工具中解析命令行参数和配置文件。
- 用单一依赖替代多个独立的 C++ 基础库。
快速上手
- 1
从 xmake 项目页面安装 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 等 CPU 架构。
- coost 可以免费使用吗?用的什么许可证?
- coost 以 Other 许可证开源。用于商业产品前,请先确认许可证条款。
- coost 还在维护吗?
- 活跃维护中。coost 最近一次提交是在 2026年9月28日。
- coost 适合用来做什么?
- 在 C++ 中用协程编写高性能网络服务,避免大量回调代码。 为 C++ 应用添加高性能且能在崩溃时输出调用栈的日志。 在 C++ 工具中解析命令行参数和配置文件。 用单一依赖替代多个独立的 C++ 基础库。
- coost 怎么安装和运行?
- 从 xmake 项目页面安装 xmake 构建工具 在 coost 根目录下构建 libco: xmake 构建单元测试程序: xmake b unitest 运行所有单元测试用例: xmake r unitest
- 在哪里获取 coost?
- 源代码和安装说明在 GitHub 上:https://github.com/idealvin/coost
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
搜狗开源的 C++ 并行计算与异步网络框架,用于构建基于 DAG 的任务流。
Go 语言的结构化日志库,与标准库 log 接口兼容,支持可插拔的格式化器和钩子,目前处于维护模式。
Go 语言的高性能结构化分级日志库,兼具零分配的 Logger 与更灵活的 SugaredLogger。
Go 语言的零内存分配 JSON 日志库,采用链式 API,支持分级与采样日志。
一款命令行日志查看工具,可将 JSON 和 logfmt 日志转换为易读格式,并支持过滤、排序与实时跟踪。