Babylon是一个用于支持C++高性能服务端开发的基础库,从内存和并行管理角度提供了大量的基础组件。广泛应用在对性能有严苛要求的场景,典型例如搜索推荐引擎,自动驾驶车载计算等场景
- 高效的应用级内存池机制
- 兼容并扩展了std::pmr::memory_resource机制
- 整合并增强了google::protobuf::Arena机制
- 在对象池结合内存池使用的情况下提供了保留容量清理和重建的机制
- 组件式并行计算框架
- 基于无锁DAG推导的高性能自动组件并行框架
- 依照执行流天然生成数据流管理方案,复杂计算图场景下提供安全的数据竞争管理
- 微流水线并行机制,提供上限更好的并行化能力
- 并行开发基础组件
- wait-free级别的并发安全容器(vector/queue/hash_table/...)
- 可遍历的线程缓存开发框架
- 可扩展支持线程/协程的同步原语(future/mutex/...)
- 应用/框架搭建基础工具
- IOC组件开发框架
- C++对象序列化框架
- 零拷贝/零分配异步日志框架
- OS: Linux
- CPU: x86-64/aarch64
- COMPILER: gcc/clang
Babylon使用Bazel进行构建并使用bzlmod进行依赖管理,考虑到目前Bazel生态整体处于bzlmod的转换周期,Babylon也依然兼容workspace依赖管理模式
Babylon也支持使用CMake进行构建,并支持通过find_package、add_subdirectory或FetchContent进行依赖引入
- Depend with cmake use FetchContent
- Depend with cmake use find_package
- Depend with cmake use add_subdirectory
- :any
- :anyflow
- :application_context
- :concurrent
- :coroutine
- :executor
- :future
- :logging
- :reusable
- :serialization
- :time
- Protobuf arenastring patch
- Typical usage with brpc
- use :future with bthread: example/use-with-bthread
- use :reusable_memory_resource for rpc server: example/use-arena-with-brpc
- use :concurrent_counter implement bvar: example/use-counter-with-bvar
如果你遇到问题或需要新功能,欢迎创建issue。
如果你可以解决某个issue, 欢迎发送PR。
发送PR前请确认有对应的单测代码。