Skip to content
/ epoch Public

Epoch is a deterministic, low-latency actor/channel runtime built around epoch-driven processing, with consistent behavior across C++/Java/.NET/Go/Node/Python. Designed for game and finance scenarios where reproducibility and tight control over ordering matter.

License

Notifications You must be signed in to change notification settings

cuihairu/epoch

Repository files navigation

Epoch

基于 Aeron 的高性能 Actor / Channel Runtime,面向游戏与金融场景,强调确定性、可复现、低延迟抖动和高可推理性。

设计哲学

  • 时间为第一公民 (Epoch-driven)
  • Actor 状态封闭、顺序执行
  • Channel 提供确定性消息传递
  • ECS(Entity-Component-System)用于 CPU 热路径优化

核心概念(简版)

  • Epoch: 明确的逻辑时间区间,消息按 Epoch 分类与处理
  • Actor: 固定线程、Epoch 内顺序执行,状态在边界可见
  • Channel: 消息入队,不立即触发执行;结合 Epoch 保持确定性
  • ECS: 数据布局优化 CPU cache,支撑批处理更新

适用边界(摘要)

  • 适合:单分区/单写权威逻辑、帧同步/强实时对抗、顺序状态机类撮合与风控
  • 不适合:通用分布式 Actor 平台、跨分区全局强序、强依赖外部非确定性

支持语言

Language Version Build Coverage
C++ C++17 build-cpp codecov
Java Java 17 build-java codecov
.NET .NET 8.0 build-dotnet codecov
Go Go 1.24 build-go codecov
Node.js Node.js 22 build-node codecov
Python Python 3.12 build-python codecov

Nightly 构建

每次主分支更新与每日定时会生成 nightly 产物,统一发布在 GitHub Releases: https://github.com/cuihairu/epoch/releases/tag/nightly

产物示例(按语言):

  • native: epoch-native-<os>.tar.gz (包含 epoch_aeron + 头文件)
  • C++: epoch-cpp-<os>.tar.gz (包含 libepoch_cpp.a/epoch_cpp.lib + headers)
  • Java: epoch-java.tar.gz (jar)
  • .NET: epoch-dotnet.tar.gz (nupkg)
  • Go: epoch-go-<os>-<arch>.tar.gz (静态库)
  • Node.js: epoch-node.tar.gz (npm pack)
  • Python: epoch-python.tar.gz (sdist + wheel)

文档

  • 概念与设计:docs/guide/concepts.md
  • 行为与一致性:docs/guide/behavior.md
  • 协议与传输:docs/guide/protocol.md
  • 语言实现:docs/guide/languages.md
  • 设计文档(完整):docs/guide/epoch-actor-design.md
  • 站点文档(VuePress v2):docs/

本地预览

corepack enable
pnpm install
pnpm run docs:dev

Aeron 原生库

./native/build.sh

非 Java 语言默认从 native/build 加载 epoch_aeron,或通过 EPOCH_AERON_LIBRARY 指定路径。

About

Epoch is a deterministic, low-latency actor/channel runtime built around epoch-driven processing, with consistent behavior across C++/Java/.NET/Go/Node/Python. Designed for game and finance scenarios where reproducibility and tight control over ordering matter.

Resources

License

Stars

Watchers

Forks

Packages

No packages published