Go 部落格

Go 1.2 釋出

Andrew Gerrand
2013 年 12 月 1 日

我們很高興地宣佈 Go 1.2 的釋出,這是 Go 程式語言的最新穩定版本。

您可以從常規位置下載二進位制分發版,如果您更喜歡從原始碼編譯,則應使用 releasego1.2 標籤。

此次新版本釋出距離 Go 1.1 於 5 月釋出已近七個月,比 1.1 和 1.0 之間的 14 個月縮短了許多。我們預計未來主要版本之間的時間間隔將大致相當。

Go 1.2 包含了一些小的語言更改、對語言實現和工具的若干改進、一些效能提升,以及對標準庫的許多新增(向後相容的)更改。

請閱讀釋出說明瞭解所有詳細資訊,因為某些更改可能會影響現有(有 bug 的)程式的行為。以下是本次釋出的亮點。

新的三索引切片語法增加了指定容量和長度的能力。這允許程式設計師傳遞一個切片值,該值只能訪問底層陣列的有限部分,這項技術以前需要使用 unsafe 包。

工具鏈的一個主要新功能是能夠計算和顯示測試覆蓋率結果。有關詳細資訊,請參閱go testcover 工具文件。本週晚些時候,我們將釋出一篇詳細討論此新功能的文章。

Goroutine 現在是搶佔式排程的,排程器會在進入函式時偶爾被呼叫。這可以防止忙碌的 goroutine 使同一執行緒上的其他 goroutine 餓死。

goroutine 預設堆疊大小的增加應該可以提高某些程式的效能。(舊大小傾向於在效能關鍵部分引入昂貴的堆疊段切換。)另一方面,對堆疊大小作業系統執行緒數量的新限制應該可以防止行為不當的程式耗盡計算機的所有資源。(可以使用runtime/debug中的新函式來調整這些限制。)

最後,在對標準庫的許多更改中,重要的更改包括新的encodingPrintf 格式字串中的索引引數,以及對模板包的一些便捷的補充

作為此次釋出的一部分,Go Playground 已更新至 Go 1.2。這也會影響使用 Playground 的服務,例如Go Tour和本部落格。此次更新還增加了在沙箱中執行執行緒以及使用 osnetunsafe 包的能力,使其更接近真實的 Go 環境。

感謝所有為此次釋出做出貢獻的人,從提交錯誤報告的眾多使用者到提交了超過 1600 項核心更改的 116 (!) 位貢獻者:您的幫助對本專案是無價的。謝謝!

這篇博文是Go Advent Calendar的第一篇,該日曆是 Gopher Academy 從 12 月 1 日到 25 日每天釋出的一系列文章。

下一篇文章:Cover 故事
上一篇文章:Go 中的文字規範化
部落格索引