[简体中文]
Babylon
Babylon is a foundational library designed to support high-performance C++ server-side development. It provides a wide array of core components focusing on memory and parallelism management. This library is widely applied in scenarios with stringent performance requirements, such as search and recommendation engines, autonomous driving, etc.
Core Features
- Efficient application-level memory pool mechanism
- Compatible with and extends the std::pmr::memory_resource mechanism.
- Integrates and enhances the google::protobuf::Arena mechanism.
- Provides capacity reservation, cleanup, and reconstruction mechanisms when object pools are used in conjunction with memory pools.
- Modular parallel computing framework
- A high-performance automatic parallel framework based on lock-free DAG deduction.
- Provides a dataflow management scheme derived naturally from the execution flow, ensuring safe data race management in complex computation graph scenarios.
- Micro-pipeline parallel mechanism offering enhanced parallel capabilities.
- Core components for parallel development
- Wait-free concurrent-safe containers (vector/queue/hash_table/…).
- Traversable thread-local storage development framework.
- Extensible synchronization primitives supporting both threads and coroutines (future/mutex/…).
- Foundational tools for application/framework construction
- IOC component development framework.
- C++ object serialization framework.
- Zero-copy/zero-allocation asynchronous logging framework.
Build and Usage
- OS: Linux
- CPU: x86-64/aarch64
- COMPILER: gcc/clang
Bazel
Babylon uses Bazel for build management and bzlmod for dependency management. Given the ongoing transition of the Bazel ecosystem towards bzlmod, Babylon also compatible with the workspace dependency management mode.
CMake
Babylon also supports building with CMake and allows dependency management through find_package, add_subdirectory, or FetchContent.
Module Documentation
Design Philosophy (chinese version only)
How to Contribute
If you encounter any issues or need new features, feel free to create an issue.
If you can solve an issue, you’re welcome to submit a PR.
Before sending a PR, please ensure corresponding test cases are included.
Appreciation