在經過三個月的公開測試後,Go語言1.3釋出了。相對於1.2,新版本在語言方面沒有變化,主要帶來了效能提升,支援在原生客戶端下執行命令列程式,以及其他一些增強。
最有趣的一些效能和實現上的變化:
- Go語言執行時的棧從分段記憶體模型改成了連續記憶體模型
- 垃圾回收更快了:使用併發的清理演算法,這種演算法能更好地並行處理垃圾回收,具有更大的記憶體頁;垃圾回收帶來的停頓時間下降了50-70%。現在也已經可以精確地檢視棧上的變數值了
- 執行時庫更高效地處理defer語句
- 競爭檢測器速度提升了40%
- Regexp(正規表示式的軟體包)現在有了一個新的執行引擎,它使用one-pass演算法,能更快地執行特定的簡單的表示式
- sync.Pool:一種新的型別,對於可能被系統回收記憶體的快取,這種型別提供了高效的實現機制
- 對小型map資料型別(不超過8個元素)的迭代不再以固定的順序進行,這麼做是為了防止開發人員寫的程式碼依賴於迭代順序,因為這種程式碼只有在特定的系統上才能正常工作
還有一些工具方面的改進:
- godoc現在可以對它索引的程式碼進行靜態分析
- 用Go語言重寫了misc/benchcmp(效能測試工具)
- 重構了編譯器和連結器,指令選擇階段被移到了編譯器中,這樣做能加速大型專案的增量編譯時間
- gc工具鏈現在支援在英特爾的32位和64位體系結構上使用原生客戶端(NaCI)執行沙箱。注意Go 1.3產生的二進位制檔案還是不能在Google Chrome中直接執行
還修復了crypto/tls的一個安全問題。
你可以從發行說明中獲得所有更新的更多資訊。