基于 C++17 的精简版本,移除了一些依赖三方库的功能。
- 编译器: gcc, clang, msvc, 需支持 C++17;
- 不支持 cmake,需使用 xmake 构建;
- 不支持 vcpkg、conan;
- 不支持动态库;
- 不支持32位系统;
- flag
- flag 增加 3 种属性: 默认、命令行、隐藏,定义flag可在注释开头加
@c
,@h
指定属性,也可通过flag::set_attr
设置属性; - 命令行中用法统一为
-xx value
,不支持-xx=value
; - 优化
-help
帮助信息显示,coost 内部 flag 与用户定义 flag 分开显示; - coost 内部 flag 仅在用户使用了相关功能时才显示,如用户包含了
co/log.h
,则-help
会显示 coost 日志组件定义的 flag; - coost 内部 flag 注释支持中英双语,默认显示中文,可用
co::mls::set_lang_eng()
设置为英文;
- flag 增加 3 种属性: 默认、命令行、隐藏,定义flag可在注释开头加
- log
- 抛弃旧版本打印日志的宏,使用
log::info
,log::warn
等打印日志,如log::info("hello ", 23);
; - mac、windows不支持 stack trace,linux 可使用
xmake f --with_backtrace=true
配置 stack trace; - 不支持旧版本的
TLOG
; - 使用 math 库中的
log()
函数时,需加上::
限定符,如::log(32)
,以免与 coostlog
命名空间冲突;
- 抛弃旧版本打印日志的宏,使用
- benchmark
- 优化基准测试定义,形式上与
unitest
中定义单元测试保持一致,参考test/bm.cc
;
- 优化基准测试定义,形式上与
- 协程
- 不支持 hook;
- 协程数量限制:单线程协程数 < 16m, 协程总数 < 2g;
- 对于同一个 socket,不支持一个协程读,另一个协程同时写;
- 协程锁重命名为
co::cutex
; - 不支持 channel,无用累赘;
- 增加 work-stealing 机制;
xmake f --co_debug_log=true
可打印协程内部的调度日志;
- 终端输出
- 增加
co::cout
, 用法:co::cout("hello ", 23, co::endl)
;
- 增加
- time
- 时间相关功能移到命名空间
time
中,如time::sleep(10);
; - 使用 C 标准库的
time()
函数时,需加上::
限定符,如::time(0);
;
- 时间相关功能移到命名空间
- 其他
- 删除
unlikely
宏,未来可能与C++20
的unlikely
属性冲突,增加if_unlikely
宏; - 删除 HTTP、SSL 相关功能;
- 删除