Skip to content

Latest commit

 

History

History
91 lines (64 loc) · 4.96 KB

README.en.md

File metadata and controls

91 lines (64 loc) · 4.96 KB

[简体中文]

Babylon

CI Coverage Status

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

Supported Platforms and Compilers

  • 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

Comate PowerSource Initiative Logo