Go 部落格

Go 1.7 釋出

Chris Broadfoot
2016 年 8 月 15 日

今天我們很高興地宣佈 Go 1.7 的釋出。您可以從下載頁面獲取。本次釋出包含幾項重大更新:支援IBM z Systems 上的 Linux (s390x) 移植、編譯器改進、新增context 包,以及對分層測試和基準測試的支援。

過去一年來,我們一直在開發一個基於靜態單賦值 (SSA) 形式的新編譯器後端。透過將程式表示為 SSA 形式,編譯器可以更輕鬆地執行高階最佳化。這個新後端生成了更緊湊、更高效的程式碼,包括邊界檢查消除公共子表示式消除等最佳化。我們在基準測試中觀察到效能提升了 5-35%。目前,新後端僅適用於 64 位 x86 平臺 (“amd64”),但我們計劃在未來的版本中將更多架構後端轉換為 SSA。

編譯器前端使用了一種新的、更緊湊的匯出資料格式,並更有效地處理匯入宣告。雖然編譯器工具鏈的這些更改在很大程度上是不可見的,但使用者已經觀察到編譯時間顯著加快,二進位制檔案大小減小了高達 20-30%。

由於垃圾回收器和標準庫最佳化的速度提升,程式執行速度會略有加快。擁有大量空閒 goroutine 的程式將比 Go 1.6 中的垃圾回收暫停時間更短。

在過去的幾年裡,golang.org/x/net/context 包已證明對許多 Go 應用程式至關重要。Context 在與網路、基礎設施和微服務相關的應用程式(如KubernetesDocker)中得到了有效的利用。它們可以輕鬆地實現取消、超時和傳遞請求作用域的資料。為了在標準庫中使用 Context 並鼓勵更廣泛的應用,該包已從x/net 儲存庫移至標準庫,成為context 包。已向netnet/httpos/exec 包添加了對 Context 的支援。有關 Context 的更多資訊,請參閱包文件和 Go 部落格文章Go 併發模式:Context

Go 1.5 引入了對“vendor”目錄的實驗性支援,透過 GO15VENDOREXPERIMENT 環境變數啟用。Go 1.6 預設啟用了此行為,而在 Go 1.7 中,此開關已被移除,並且“vendor”行為始終啟用。

Go 1.7 包含更多新增、改進和修復。完整的更改集以及上述詳細資訊,請參閱Go 1.7 發行說明

最後,Go 團隊想感謝所有為此次釋出做出貢獻的人。共有 170 人為此次釋出做出了貢獻,其中包括來自 Go 社群的 140 人。這些貢獻範圍廣泛,包括對編譯器和連結器的更改、標準庫、文件以及程式碼審查。我們歡迎貢獻;如果您想參與其中,請檢視貢獻指南

下一篇文章:更小的 Go 1.7 二進位制檔案
上一篇文章:Go 1.6 釋出
部落格索引