Go團隊在釋出1.11版本後6個月,釋出了Go 1.12,這個版本沒有新增語言功能,但是加入了TLS 1.3,並改進了模組支援,為即將在Go 1.13成為預設做準備,另外還支援Windows Arm系統,同時也改進了macOS和iOS向前相容性。

Go 1.12加入了對TLS 1.3的支援,開發者可以在GODEBUG環境變數中增加tls13=1啟用,而官方預告,TLS 1.3在Go 1.13將會預設啟用。除了在ConnectionState中的TLSUnique以及重新協商功能外,所有的TLS 1.2功能都可以在TLS 1.3中使用,並獲得相同或更好的安全性和效能。

雖然TLS 1.3向後相容以前的版本,但是部分老舊系統可能無法正確執行,像是RSA憑證金鑰太小不安全,就無法和TLS 1.3一起使用。TLS 1.3密碼套件無法配置,官方提到,所有密碼套件的支援都是安全的。

另外,目前不支援早期資料(Early Data,0-RTT模式),而且當客戶端送出早期資料,Go 1.12伺服器也不支援略過意料之外的早期資料,因為在TLS 1.3 0-RTT模式,客戶端會留存伺服器支援0-RTT的狀態,因此Go 1.12伺服器所在的負載平衡池,不能有部分伺服器支援0-RTT。當客戶端要轉換網域,從一個支援0-RTT的伺服器轉到Go 1.12伺服器上,則必須在切換前禁用0-RTT,以保持運作不中斷。

在模組支援方面,當GO111MODULE選項設為啟用時,Go命令現在支援在模組目錄之外的模組感知操作,不過,前提是這些操作不需要解析相對於當前目錄的導入路徑,或也不需要明確地編輯go.mod檔案。下載和解壓縮模組的Go命令,現在可以安全的同時使用。

go.mod檔案現在會指示該模組使用的語言版本,如果沒有存在當前版本,系統則轉而使用Go 1.12,當模組指定的語言版本比工具鏈的還要新,則Go命令會直接嘗試建置,除非建置失敗才會發出通知。


Advertisement

更多 iThome相關內容