為什么 Go1.16.1 發(fā)布的第二天又發(fā)布 1.16.2?
閱讀本文大概需要 xx 分鐘。
大家好,我是站長(zhǎng) polarisxu。
當(dāng)我在 Go 語(yǔ)言中文網(wǎng)公眾號(hào)發(fā)布 Go1.16.1 發(fā)布的消息時(shí)。有人留言說(shuō):我已經(jīng)用上 1.16.2 了。我趕緊去確認(rèn)了下,發(fā)現(xiàn)是真的:(對(duì)應(yīng)北京時(shí)間分別是 3 月 11 日和 3 月 12 日)

這樣的發(fā)布,多少會(huì)讓人覺得版本發(fā)布太草率了。。。
但從 Go Team 的風(fēng)格看,不至于做這樣草率的事情,于是我深究了一下,找到了這么做的原因(至少我認(rèn)為是這個(gè)原因)。
在 golang-announce 郵件組,官方在 3 月 6 日發(fā)布了一個(gè)預(yù)發(fā)布通知:

據(jù)此找到了 Go 的安全策略:https://docs.studygolang.com/security(提供一個(gè)國(guó)內(nèi)可以訪問版本)。
該策略詳細(xì)描述了如何反饋安全漏洞,Go 官方會(huì)如何處理。其中有一點(diǎn):
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.
首先,通過(guò) golang-announce 郵件組通知用戶將要發(fā)布一個(gè)安全修復(fù)版本,以便用戶有時(shí)間提前準(zhǔn)備。一般 3 個(gè)工作日后,會(huì)發(fā)布一個(gè)修復(fù)安全問題的版本。
如期的,在 3 月 10 日(北京時(shí)間 3 月 11 日)發(fā)布了 Go1.16.1 和 Go1.15.9。在這個(gè)發(fā)布通知中,有這么一句:
The upcoming minor releases of Go 1.16.2 and 1.15.10 will also include the fixes above.
也就是說(shuō),1.16.1 發(fā)布后,馬上要發(fā)布 1.16.2 了。
總結(jié)一下:針對(duì)安全問題,Go 專門有一套處理、發(fā)布流程。而這次計(jì)劃要發(fā)布 Go 1.16 后的一個(gè)小版本時(shí),臨時(shí)有安全問題插入,因此發(fā)布了一個(gè)修復(fù)安全的版本 1.16.1,而之前幾乎普通 Bug 修復(fù)的版本改為 1.16.2。
可見連著發(fā)布兩個(gè)版本并非草率,反而說(shuō)明 Go 在嚴(yán)格遵循相關(guān)約定。點(diǎn)贊!
歡迎關(guān)注我
