版本与发布说明

你正在读的版本

项目跟踪三个版本域,且它们刻意分开:

域

所在位置

当前值

原生库

include/fincore/version.hpp(version_major/minor/patch)

0.1.0

Python 参考固定版本

include/fincore/version.hpp(pinned_version_*)

0.5.2.dev0

文档站点

docs/site/conf.py(version/release)

0.1.0

fincore::version_string 是原生版本常量。注意 fincore::version() 刻意返回固定的 Python 版本,而不是原生版本 —— 它存在是为了让消费者元数据检查能对照冻结的 oracle。若要在运行时取库版本,请读 fincore::version_string。

当前状态

0.1.0 已于 2026-10-26 打上 v0.1.0 标签,取自 CI 在 Windows、macOS 与 Ubuntu 上全部通过的提交;说明见 GitHub Release。master 是发布分支,每次推送都会重建文档站点,因此站点上的“latest”与仓库 master 是同一棵树。

可以放心构建的部分:

  • include/fincore 下的公共头文件,在 API 清单中逐符号记录。

  • CMake 包契约(fincore::fincore,可选 implot 组件)。

  • 报表文档模式与 artifact bundle 形状。

  • 错误分类及其结构化字段。

仍可能在没有弃用周期的情况下变化的部分,因为 0.x 不承诺兼容:

  • 内部的 fincore::detail 辅助函数,它们在公共接口之外。

  • 可选的扩展与绘图适配器。

  • diagnostics 映射里的诊断字段名。

本周期的变更记录

按领域记录而不是按提交;链接的记录携带证据。

库与正确性

  • 覆盖核心数据、指标、风险、组合、因子、归因、优化、报表、运行时与模拟模块的原生 C++23 接口。

  • 1092 个 C++ 测试,包括 oracle 对比与消费者构建检查。

  • 已记录的失败模型:结构性问题抛异常,无定义的统计量返回 NaN,拟合报告状态而不是一个看似合理的数字。

文档

  • 一套双语文档站点(英文与简体中文),每页都有语言切换;中文构建是完整翻译,不是占位。

  • 每个公共符号都有说明;少数经审阅的豁免(三条 Subclassed by 列表、两个多行字符串常量、缺少 @param 的函数)记录在迭代 10 的豁免文件里,而不是藏在构建中。

  • 教程、配方集、任务指南、迁移映射与故障排查,都基于生成参考的同一批头文件。

工具与证据

  • check_comment_only.py 证明注释轮只改了注释。

  • check_built_site.py 检查两种语言构建的断链、机器路径与未翻译目录,并在缺少一种构建时拒绝运行。

  • write_sitemap.py 从部署的产物推导 sitemap。

  • 成对基准框架,正确性由摘要门控,并记录 INCONCLUSIVE 结果。

线上状态见发布说明,有日期的验收证据见 docs/iterations/ 下的迭代记录。

下一个发布如何切出

  1. 同时更新 version.hpp 与 docs/site/conf.py,然后运行完整门禁(ctest、两种严格 Sphinx 构建、站点检查器)。

  2. 在通过的那个提交上打 v<version> 标签并推送标签。

  3. 确认文档站点已从该标签的树重建,并把部署地址记录到发布页。

  4. 依据迭代记录撰写发布说明,而不是凭记忆。

v0.1.0 正是按这个顺序完成的;标签指向 ci 在三个平台全绿的那个提交。