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