Go 1.21 首個 RC 已發(fā)布。
雖然這是 Go 1.21 的第一個 RC,但它的版本號卻是go1.21rc2。因為開發(fā)團隊在為 RC1 打上 tag 后就發(fā)現(xiàn)了一個 bug,所以他們馬上基于該版本進行了修復(fù)并發(fā)布更新。
Go 1.21 主要變化包括:提升性能、改進工具鏈和添加新的標(biāo)準(zhǔn)庫,以及語言方面的變更。
其中值得關(guān)注的一大更新是——在 1.20 中處于預(yù)覽階段的啟用配置文件引導(dǎo)優(yōu)化 (PGO) 功能現(xiàn)已正式 GA。
Profile-guided optimization (PGO) 是計算機編程中的一種編譯器優(yōu)化技術(shù),翻譯過來是使用配置文件引導(dǎo)的優(yōu)化。
PGO 也被稱為:
Profile-directedfeedback (PDF)
Feedback-directed optimization (FDO)
它的原理是編譯器使用程序的運行時 profiling 信息,生成更高質(zhì)量的代碼,從而提高程序的性能。
PGO 作為一項通用的編譯器優(yōu)化技術(shù),不局限于某一門語言。比如Rust 編譯器也在探索使用 PGO,微軟則采用LTO+PGO 來優(yōu)化 Linux 內(nèi)核。
在 Go 語言中,最初關(guān)于 PGO 的提案是建議向 Go GC 工具鏈增加對配置文件引導(dǎo)優(yōu)化 (PGO) 的支持,以便工具鏈能根據(jù)運行時信息執(zhí)行特定于應(yīng)用程序和工作負載的優(yōu)化。
對于剛剛發(fā)布的 Go 1.21,根據(jù) Go 團隊的介紹,如果主軟件包目錄中存在名為default.pgo的文件,go命令將使用它來啟用 PGO 構(gòu)建。
他們還測試了 PGO 對多種 Go 程序的影響,發(fā)現(xiàn)性能提高了 2-7%。
此外,Go 編譯器本身已經(jīng)在 1.21 中啟用 PGO 進行了重建,因此它構(gòu)建 Go 程序的速度也提高了 2-4%,不過這具體取決于主機架構(gòu)。
Go 1.21 其他變化:
語言變更
添加新的內(nèi)置函數(shù):min, max 和 clear
對泛型函數(shù)的類型推斷進行了多項改進,包括擴展和解釋清楚規(guī)范中類型推斷的描述
在未來版本中,開發(fā)團隊計劃解決 Go 編程中最常見的問題之一:循環(huán)變量捕獲 (loop variable capture)。Go 1.21 附帶了此功能的預(yù)覽版,目前可以使用環(huán)境變量在代碼中啟用該功能。
添加新的標(biāo)準(zhǔn)庫
log/slog 包:用于結(jié)構(gòu)化日志記錄
slices 包:增用于對任何元素類型的切片進行常見操作,這個包比 sort 包更快、更符合人體工程學(xué)
maps 包:用于對任何類型 key-value 進行常見操作
cmp 包:用于比較有序值 (ordered values)
優(yōu)化性能
除了啟用 PGO 時的性能改進之外:
Go 編譯器本身已經(jīng)在 1.21 中啟用 PGO 進行了重建,因此它構(gòu)建 Go 程序的速度提高了 2-4%,具體取決于主機架構(gòu)
由于垃圾收集器的調(diào)整,某些應(yīng)用程序的尾部延遲可能會減少高達 40%
現(xiàn)在使用runtime/trace收集跟蹤在 amd64 和 arm64 上產(chǎn)生的 CPU 開銷要小得多
支持 WASI
Go 1.21 已實驗性支持WebAssembly System Interface (WASI), Preview 1 (GOOS=wasip1,GOARCH=wasm)。
為了方便編寫更通用的 WebAssembly (WASM) 代碼,編譯器還支持從 WASM 主機導(dǎo)入函數(shù)的新指令:go:wasmimport。
提到 WebAssembly,剛好本周六 (7.1)舉辦的「源創(chuàng)會」有一個和它相關(guān)的演講分享。
演講主題:Moonbit 編程語言平臺簡介
主題內(nèi)容:Moonbit 是由張宏波老師帶領(lǐng)的基礎(chǔ)軟件中心團隊開發(fā)的一個專為云計算、邊緣計算設(shè)計的編程語言平臺,這個項目包括了面向 WebAssembly 生態(tài)設(shè)計的一款應(yīng)用型編程語言及其相關(guān)完整的配套工具鏈。
本次演講主要介紹這個項目動機背景、宏觀方向上的設(shè)計考量,以及目前的進展,并且會有現(xiàn)場 demo 進行一些編程語言特性的演示。
嘉賓介紹:張鈺,粵港澳大灣區(qū)數(shù)字經(jīng)濟研究院開發(fā)工程師,Moonbit 平臺核心開發(fā)人員,編程語言理論愛好者
是的,我們正式重啟了和大家闊別已久的「源創(chuàng)會」——2023 年首場于本周六(7.1)在深圳舉辦,誠邀各位 oscer 們前來赴約。
-
編譯器
+關(guān)注
關(guān)注
1文章
1617瀏覽量
49016 -
go語言
+關(guān)注
關(guān)注
1文章
158瀏覽量
9016
原文標(biāo)題:Go 1.21的PGO正式GA,性能提升,更快更猛!
文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論