Go 1.8再升級,效率性與便捷性成關注重點
譯文【51CTO.com快譯】作為Go語言的***候選發布版,Go 1.8提供HTTP2 Push支持能夠,同時亦包含一套經過更新的編譯器后端用以提升代碼效率。
作為谷歌開源語言的下一版本,Go 1.8正逐步走向通用階段,其目前的候選發行版對編譯及HTTP進行了相關改進。1.8最終版本將于今年2月正式發布。
根據草案說明,此次候選發行版對編譯器后端進行更新以提升代碼效率。這套最初隨Go 1.7發布且面向64位x86系統的后端基于靜態單一指派(簡稱SSA)形式,旨在生成效率更高的代碼并作為平臺實現邊界檢查消除等優化效果。其目前已經可用于全部架構。
“根據我們的基準測試,新后端能夠在32位ARM系統上將CPU時間降低20%到30%,”這份說明指出。“對于已經在Go 1.7中使用SSA后端的64位x86系統,這一CPU資源占用量削減在0%到10%之間。其它架構的性能提升可能更接近于32位ARM系統上的數字。”
Go 1.8版本還引入了一套新的編譯器前端,以作為未來性能增強的實現基礎,其同時亦可通過消除“停止所有處理”堆棧重掃描縮短垃圾收集暫停時間。
根據此次發布說明,新版本還引入了HTTP2 Push支持,其中net/http軟件包能夠立足處理程序發送HTTP/2服務器推送,并由該服務器響應HTTP請求。另外,hTTP服務器關閉亦可通過Server/Shutdown以及Server.Close方法相配合以更為“優雅”的方式完成。
1.8版本支持Linux上的Mips 32位架構,且可為Server.Shutdown、database/sql以及.net.resover等軟件包提供更多上下文支持。Go的排序包還增加了一項便捷的函數,即Slice,用于對給定less函數片段進行排序。“在大多數情況下,這意味著不再需要寫入一條新的排序類型。”Go 1.8中的運行時與工具皆支持爭用互斥鎖配置,即可提供互斥鎖機制。
此次升級的大部分變更集中在工具鏈、運行時以及庫層面。“語言規范中出現了兩項微波的變更,”版本說明指出。“與往常一樣,此版本保持了對Go 1的兼容性承諾,我們預計幾乎全部Go程序皆可繼續得到兼容及正常運行。”另外,新版本還可將一項值由一種類型轉換為另一種,且忽略其Go標簽。再有,該語言規范現在僅要求支持***16位浮點常量指數。
原文標題:Go 1.8 goes for efficiency and convenience
原文作者:Paul Krill
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】