Go Wiki:标准库和工具链风险变更指南

在处理风险变更时请务必小心。提醒:

如果变更可能导致难以诊断的故障(例如,对 runtime、GC、编译器、链接器、TLS、其他低级组件的变更,或需要在生产工作负载下进行充分测试的复杂变更),或者如果变更需要多个难以回滚的 CLs(例如,大型 CLs 或 CLs 堆栈),则该变更具有风险。

如果你计划进行可能存在风险的变更,请执行以下操作

  1. 除非整个变更绝对容易回滚,否则请使用一个布尔标志保护新的代码路径,该标志以 go125 为前缀,可用于快速切换回旧实现。例如,它可以是一个简单的布尔常量:const go125UseEvenBetterLinker = true。这些标志必须能够被找到,方法是简单地 grep 字符串 go125。这样我们就可以不遗漏地找到它们,并且在进入 Go 1.26 周期时可以清理它们。
  2. 请考虑如何回答以下与你的变更相关的问题
    • 你计划进行的变更风险有多大?
    • 你如何知道它是否按预期工作?
    • 为了确信它按预期工作,它需要在生产环境中进行多少测试?
    • 应在何时做出保留/回滚的决定?
  3. 在 Go 1.25 里程碑中创建一个跟踪议题,并带有 release-blocker 标签。该议题将用于跟踪功能的进展,并为 Go 1.25 做出最终决定。

此内容是 Go Wiki 的一部分。