为什么 Go1.16.1 发布的第二天又发布 1.16.2?
阅读本文大概需要 xx 分钟。
大家好,我是站长 polarisxu。
当我在 Go 语言中文网公众号发布 Go1.16.1 发布的消息时。有人留言说:我已经用上 1.16.2 了。我赶紧去确认了下,发现是真的:(对应北京时间分别是 3 月 11 日和 3 月 12 日)
这样的发布,多少会让人觉得版本发布太草率了。。。
但从 Go Team 的风格看,不至于做这样草率的事情,于是我深究了一下,找到了这么做的原因(至少我认为是这个原因)。
在 golang-announce 邮件组,官方在 3 月 6 日发布了一个预发布通知:
据此找到了 Go 的安全策略:https://docs.studygolang.com/security(提供一个国内可以访问版本)。
该策略详细描述了如何反馈安全漏洞,Go 官方会如何处理。其中有一点:
A notification is sent to the golang-announce mailing list to give users time to prepare their systems for the update.
Three working days following this notification, the fixes are applied to the public repository and a new Go release is issued.
首先,通过 golang-announce 邮件组通知用户将要发布一个安全修复版本,以便用户有时间提前准备。一般 3 个工作日后,会发布一个修复安全问题的版本。
如期的,在 3 月 10 日(北京时间 3 月 11 日)发布了 Go1.16.1 和 Go1.15.9。在这个发布通知中,有这么一句:
The upcoming minor releases of Go 1.16.2 and 1.15.10 will also include the fixes above.
也就是说,1.16.1 发布后,马上要发布 1.16.2 了。
总结一下:针对安全问题,Go 专门有一套处理、发布流程。而这次计划要发布 Go 1.16 后的一个小版本时,临时有安全问题插入,因此发布了一个修复安全的版本 1.16.1,而之前几乎普通 Bug 修复的版本改为 1.16.2。
可见连着发布两个版本并非草率,反而说明 Go 在严格遵循相关约定。点赞!
欢迎关注我