XGBoost 发布政策

版本控制策略

从 XGBoost 1.0.0 开始,每个 XGBoost 版本将被标记为 [MAJOR].[FEATURE].[MAINTENANCE]

  • MAJOR: 我们保证在相同主版本号下的发布版本之间的API兼容性。我们预计一个新的MAJOR发布版本将有1年以上的开发周期。

  • 功能: 我们通过功能发布来推出新功能、改进和错误修复。功能周期的长度由功能路线图的大小决定。路线图在上一版本发布后立即确定。

  • 维护版本:维护版本仅包含错误修复。这种类型的发布仅在我们发现重大正确性或性能错误,以及用户无法顺利升级到新版本的XGBoost时才会发生。

发布版本

  1. 为发布创建一个问题,注明预计日期和预期的功能或主要修复,并置顶该问题。

  2. 如果是重大发布,请创建一个发布分支。更新发布版本。有一个辅助脚本 tests/ci_build/change_version.py

  3. 提交更改,在发布分支上创建一个 GitHub PR。将提升的版本移植到默认分支,可选地带有后缀 SNAPSHOT

  4. 在发布分支上创建一个标签,可以在GitHub上或本地进行。

  5. 在GitHub标签页上发布版本,如果标签是在GitHub上创建的,这可能在前一步骤中已经完成。

  6. 提交 pip、CRAN 和 Maven 包。

    xgboost/dev/ 中有用于自动化过程的辅助脚本。

R CRAN 包

在提交发布之前,应首先在 R-hubwin-builder 上测试包。请注意,R-hub 的 Windows 实例与 win-builder 托管的环境不完全相同。

根据 CRAN 政策:

如果运行一个包使用了多个线程/核心,它绝不能同时使用超过两个:检查农场是一个共享资源,通常会同时运行许多检查。

我们需要检查示例中使用的CPU数量。在运行 R CMD check --as-cran [1] 之前导出 _R_CHECK_EXAMPLE_TIMING_CPU_TO_ELAPSED_THRESHOLD_=2.5,并确保您使用的机器有足够的CPU核心来揭示任何潜在的政策违规。

参考文献

[1] https://stat.ethz.ch/pipermail/r-package-devel/2022q4/008610.html