技术栈与选型
Hahaha 项目在设计之初就明确了“教育优先”与“性能平衡”的目标,因此在技术选型上非常克制且现代。
核心语言:C++23
我们选择了最新的 C++23 标准。
- 为什么要这么新? C++23 引入了增强的模板元编程能力(Concepts)、
std::stacktrace等特性,能更优雅地表达张量运算并辅助调试。 - 教育意义:展示现代 C++ 如何解决高性能计算中的复杂性,避免 C 风格代码的堆砌。
构建系统:Meson + Ninja
项目采用 Meson 构建系统:
- 可读性:
meson.build文件逻辑清晰,极大降低了贡献者理解构建流程的门槛。 - 速度:Ninja 后端提供极快的增量编译体验。
核心依赖 (Extern Libs)
项目尽量减少重型依赖,仅引入以下关键组件:
- GoogleTest (GTest):确保每一个数学算子都有完备的单元测试。
- ImGui + GLFW:用于
MLVisualizer,提供实时的训练曲线和参数分布展示。 - CUDA 13.0 (预留):为后期 GPU 加速预留架构接口。
基础设施
- Docker/Devcontainer:提供标准化的 C++23 编译环境。
- clang-format/clang-tidy:通过
format.sh等脚本强制执行代码风格。