首页
/ LLVM项目发布流程完全指南

LLVM项目发布流程完全指南

2025-07-07 03:33:30作者:贡沫苏Truman

前言

作为LLVM项目的核心维护者,我深知一个高质量的编译器发布对开发者社区的重要性。本文将详细介绍LLVM项目的完整发布流程,包括主版本和补丁版本的发布规范,帮助开发者理解LLVM项目的版本管理机制。

发布周期概述

LLVM项目采用时间基准的发布计划,具有以下特点:

  1. 主版本发布:每6个月发布一次主要版本
  2. 补丁版本发布:在主版本之间根据需要发布补丁版本

补丁版本的发布决策基于以下因素:

  • 稳定分支中存在大量bug修复
  • 发现影响大量用户的关键bug

详细发布流程

1. 代码冻结与分支创建

在发布前需要完成以下准备工作:

  1. 确定代码冻结和分支创建日期(距上次冻结6个月)
  2. 向LLVM社区公布发布计划
  3. 更新项目网站信息

2. 创建发布分支

创建发布分支的具体步骤:

  1. 提前通知开发者即将分支,避免提交可能破坏构建的大改动
  2. 验证当前主干代码状态(检查持续集成结果)
  3. 使用release_XY命名规则创建分支(X为主版本号,Y为次版本号)
  4. 使用utils/release/tag.sh脚本标记发布

3. 版本号更新

分支创建后需要更新版本号:

  1. 将发布分支中的版本号从"X.Ysvn"更新为"X.Y"
  2. 将主干版本号更新为"X.Y+1svn"
  3. 更新Bugzilla中所有组件的版本号

4. 发布候选版本测试

发布过程包含多轮测试:

第一轮测试(7-10天)

  • 修复所有发现的回归问题
  • 完成所有计划功能
  • 未完成的功能将被移除或禁用

第二轮测试

  • 仅修复关键bug
  • 如果发现问题需要第三轮测试

补丁版本的测试流程会适当简化,如果没有发现关键问题,可能不需要额外测试轮次。

发布质量标准

LLVM发布的准入门槛非常严格:

  1. 正确性:相比前一版本无功能退化
  2. 性能:无明显性能退化(轻微退化可酌情考虑)
  3. 测试覆盖率
    • 通过所有支持子项目的测试(make check-all
    • 测试套件无回归问题

测试流程规范

官方测试

由专门的发布测试团队负责:

  1. 测试各架构的候选版本
  2. 生成并上传官方二进制文件
  3. 执行最低必要的测试验证

社区测试

鼓励社区开发者参与以下测试:

  1. 使用预编译的Clang二进制文件构建LLVM并运行测试
  2. 从源代码构建整个工具链并运行完整测试
  3. 使用候选版本构建大型项目(如Chromium、Firefox)
  4. 在自己的项目中使用候选版本,检查兼容性和性能

问题报告与修复

发现回归问题的处理流程:

  1. 在Bugzilla中创建优先级为"release blocker"的问题
  2. 创建一个[Meta]问题跟踪所有阻塞发布的问题
  3. 无法重现的问题应降低优先级

补丁合并规则

发布分支的补丁管理有严格规定:

  1. 第一轮测试期间

    • 允许合并修复回归的小型低风险补丁
    • 代码所有者需谨慎审核
  2. 后续测试轮次

    • 仅允许合并修复关键回归的补丁
  3. 补丁版本发布

    • 必须保持API和ABI兼容性
    • 仅接受bug修复

最终发布阶段

文档更新

  1. 更新发布说明(新功能、bug修复、已知问题)
  2. 更新入门指南(版本号、系统要求)

标记最终版本

使用tag.sh脚本标记最终发布版本:

$ ./tag.sh -release X.Y.Z -final

网站更新

发布前必须更新项目网站:

  1. 创建新版本目录(X.Y)
  2. 提交源代码和二进制文件
  3. 更新文档和许可证文件
  4. 更新下载页面和发布索引
  5. 更新主页指向新版本

发布公告

最后通过邮件列表正式宣布发布,包括:

  • 相关文档链接
  • 下载页面
  • 已修复的问题列表

通过这套严格的发布流程,LLVM项目确保了每个版本的高质量和稳定性,为开发者社区提供了可靠的编译器工具链。

登录后查看全文
热门项目推荐