Go 1.24 釋出說明

Go 1.24 簡介

最新的 Go 版本,1.24 版本,將於 2025 年 2 月釋出,在 Go 1.23 釋出六個月後。其大部分更改在於工具鏈、執行時和庫的實現。一如既往,此版本保持了 Go 1 的相容性承諾。我們預計幾乎所有 Go 程式都將像以前一樣繼續編譯和執行。

語言變化

Go 1.24 現在完全支援泛型類型別名:類型別名可以像定義型別一樣引數化。詳情請參閱語言規範。目前,可以透過設定 GOEXPERIMENT=noaliastypeparams 來停用此特性;但 aliastypeparams 設定將在 Go 1.25 中移除。

工具

Go 命令

Go modules 現在可以使用 go.mod 中的 tool 指令來跟蹤可執行依賴。這消除了之前將工具作為空白匯入新增到通常命名為“tools.go”檔案中的變通方法。現在,go tool 命令除了 Go 分發版附帶的工具外,還可以執行這些工具。更多資訊請參閱文件

go get 的新 -tool 標誌除了新增 require 指令外,還會在當前模組中為指定包新增 tool 指令。

新的tool 元模式指代當前模組中的所有工具。可以使用 go get tool 來升級所有工具,或使用 go install tool 將它們安裝到你的 GOBIN 目錄中。

go rungo tool 的新行為建立的可執行檔案現在快取在 Go 構建快取中。這使得重複執行更快,但會增大快取。參見#69290

go buildgo install 命令現在接受一個 -json 標誌,該標誌將構建輸出和失敗以結構化 JSON 格式報告到標準輸出。有關報告格式的詳細資訊,請參見 go help buildjson

此外,go test -json 現在以 JSON 格式報告構建輸出和失敗,與測試結果 JSON 交錯。這些透過新的 Action 型別區分,但如果它們在測試整合系統中引起問題,可以使用GODEBUG 設定 gotestjsonbuildtext=1 恢復到文字構建輸出。

新的 GOAUTH 環境變數提供了一種靈活的方式來認證私有模組的獲取。更多資訊請參見 go help goauth

go build 命令現在根據版本控制系統標籤和/或提交在編譯後的二進位制檔案中設定主模組的版本。如果存在未提交的更改,將附加 +dirty 字尾。使用 -buildvcs=false 標誌可以從二進位制檔案中省略版本控制資訊。

新的GODEBUG 設定 toolchaintrace=1 可用於跟蹤 go 命令的工具鏈選擇過程。

Cgo

Cgo 支援 C 函式的新註解以提高執行時效能。#cgo noescape cFunctionName 告訴編譯器傳遞給 C 函式 cFunctionname 的記憶體不會逃逸。#cgo nocallback cFunctionName 告訴編譯器 C 函式 cFunctionName 不會回撥任何 Go 函式。更多資訊請參見cgo 文件

Cgo 當前拒絕編譯具有多個不相容宣告的 C 函式呼叫。例如,如果 f 同時宣告為 void f(int)void f(double),cgo 將報告錯誤,而不是可能為 f(0) 生成錯誤的呼叫序列。此版本的新功能是當不相容宣告出現在不同檔案中時,對此錯誤條件的檢測器更好。參見#67699

Objdump

objdump 工具現在支援在 64 位 LoongArch (GOARCH=loong64)、RISC-V (GOARCH=riscv64) 和 S390X (GOARCH=s390x) 上進行反彙編。

Vet

新的 tests 分析器報告測試包中測試、模糊測試、基準測試和示例宣告中的常見錯誤,例如格式錯誤的名稱、不正確的簽名或文件中引用的識別符號不存在的示例。其中一些錯誤可能導致測試無法執行。此分析器屬於 go test 執行的分析器子集之一。

現有的 printf 分析器現在會報告形式為 fmt.Printf(s) 的呼叫診斷,其中 s 是非常量格式字串且沒有其他引數。此類呼叫幾乎總是一個錯誤,因為 s 的值可能包含 % 符號;應使用 fmt.Print 代替。參見#60529。此檢查往往會在現有程式碼中發現問題,因此僅在語言版本(由 go.mod go 指令或 //go:build 註釋指定)至少為 Go 1.24 時應用,以避免在更新到 1.24 Go 工具鏈時導致持續整合失敗。

現有的 buildtag 分析器現在會在 //go:build 指令中存在無效的 Go 主版本構建約束時報告診斷。例如,//go:build go1.23.1 指的是次要版本;應使用 //go:build go1.23 代替。參見#64127

現有的 copylock 分析器現在會在 3 段式“for”迴圈(例如 for i := iter(); done(i); i = next(i) { ... })中宣告的變數包含 sync.Locker(例如 sync.Mutex)時報告診斷。Go 1.22 更改了這些迴圈的行為,為每次迭代建立一個新變數,並複製前一次迭代的值;此複製操作對於鎖而言是不安全的。參見#66387

GOCACHEPROG

cmd/go 內部的二進位制和測試快取機制現在可以由實現 cmd/go 工具與 GOCACHEPROG 環境變數指定的子程序之間 JSON 協議的子程序來實現。這之前是一個 GOEXPERIMENT 特性。有關協議詳情,請參見文件

執行時

執行時的一些效能改進使 CPU 開銷在代表性基準測試套件上平均降低了 2-3%。結果可能因應用程式而異。這些改進包括基於 Swiss Tables 的新內建 map 實現,更高效的小物件記憶體分配,以及新的執行時內部互斥鎖實現。

新的內建 map 實現和新的執行時內部互斥鎖可以在構建時分別透過設定 GOEXPERIMENT=noswissmapGOEXPERIMENT=nospinbitmutex 來停用。

編譯器

編譯器之前已經禁止為 cgo 生成的接收者型別定義新方法,但可以透過別名型別繞過該限制。Go 1.24 現在始終會報告錯誤,如果接收者直接或間接(透過別名型別)表示 cgo 生成的型別。

連結器

連結器現在預設在 ELF 平臺生成 GNU 構建 ID(ELF NT_GNU_BUILD_ID note),並在 macOS 上生成 UUID(Mach-O LC_UUID load command)。構建 ID 或 UUID 源自 Go 構建 ID。可以使用 -B none 連結器標誌停用,或使用 -B 0xNNNN 連結器標誌並指定使用者十六進位制值來覆蓋。

自舉

Go 1.22 釋出說明所述,Go 1.24 現在需要 Go 1.22.6 或更高版本才能進行自舉。我們預計 Go 1.26 將需要 Go 1.24 或更高版本的次要版本進行自舉。

標準庫

目錄限制的檔案系統訪問

新的 os.Root 型別提供了在特定目錄內執行檔案系統操作的能力。

os.OpenRoot 函式開啟一個目錄並返回一個 os.Rootos.Root 上的方法在目錄內操作,並且不允許引用目錄外部位置的路徑,包括那些跟隨符號連結出目錄的路徑。os.Root 上的方法映象了 os 包中大多數檔案系統操作,例如 os.Root.Openos.Root.Createos.Root.Mkdiros.Root.Stat

新的基準測試函式

基準測試現在可以使用更快且不易出錯的 testing.B.Loop 方法來執行基準測試迭代,例如 for b.Loop() { ... },取代通常涉及 b.N 的迴圈結構,例如 for range b.N。這提供了兩個顯著的優勢

改進的終結器

新的 runtime.AddCleanup 函式是一種終結機制,它比 runtime.SetFinalizer 更靈活、更高效且不易出錯。AddCleanup 將一個清理函式附加到物件上,當該物件不再可達時,清理函式將執行。然而,與 SetFinalizer 不同,單個物件可以附加多個清理函式,清理函式可以附加到內部指標,當物件形成迴圈時,清理函式通常不會導致記憶體洩漏,並且清理函式不會延遲釋放物件或其指向的物件。新程式碼應優先使用 AddCleanup 而非 SetFinalizer

新的 weak 包

新的 weak 包提供了弱指標。

弱指標是一種低階原語,用於建立記憶體高效的結構,例如用於關聯值的弱對映、用於包 unique 未涵蓋的任何內容的規範化對映,以及各種型別的快取。為了支援這些用例,此版本還提供了 runtime.AddCleanupmaphash.Comparable

新的 crypto/mlkem 包

新的 crypto/mlkem 包實現了 ML-KEM-768 和 ML-KEM-1024。

ML-KEM 是一種後量子金鑰交換機制,之前稱為 Kyber,並在 FIPS 203 中指定。

新的 crypto/hkdf、crypto/pbkdf2 和 crypto/sha3 包

新的 crypto/hkdf 包實現了基於 HMAC 的提取-擴充套件金鑰派生函式 HKDF,定義於 RFC 5869

新的 crypto/pbkdf2 包實現了基於密碼的金鑰派生函式 PBKDF2,定義於 RFC 8018

新的 crypto/sha3 包實現了 SHA-3 雜湊函式以及 SHAKE 和 cSHAKE 可擴充套件輸出函式,定義於 FIPS 202

這三個包都基於現有的 golang.org/x/crypto/... 包。

符合 FIPS 140-3

此版本包含一套新的機制以促進符合 FIPS 140-3

Go 加密模組是一組內部標準庫包,用於透明地實現 FIPS 140-3 批准的演算法。應用程式無需更改即可使用 Go 加密模組來實現批准的演算法。

新的 GOFIPS140 環境變數可用於選擇構建中使用的 Go 加密模組版本。新的 fips140 GODEBUG 設定 可用於在執行時啟用 FIPS 140-3 模式。

Go 1.24 包含 Go 加密模組版本 v1.0.0,該版本目前正在 CMVP 認可的實驗室進行測試。

新的實驗性 testing/synctest 包

新的實驗性 testing/synctest 包提供了對測試併發程式碼的支援。

更多詳情請參閱包文件。

synctest 包是實驗性的,必須在構建時透過設定 GOEXPERIMENT=synctest 來啟用。此包的 API 在未來版本中可能會發生變化。有關更多資訊並提供反饋,請參閱問題 #67434

庫的次要更改

archive

archive/ziparchive/tar 中的 (*Writer).AddFS 實現現在會為包含空目錄寫入目錄頭。

bytes

bytes 包添加了幾個使用迭代器工作的函式

crypto/aes

NewCipher 返回的值不再實現 NewCTRNewGCMNewCBCEncrypterNewCBCDecrypter 方法。這些方法沒有文件記錄,並且並非在所有架構上都可用。相反,Block 值應直接傳遞給相關的 crypto/cipher 函式。目前,即使標準庫不再使用這些方法,crypto/cipher 仍然會檢查 Block 值上是否存在這些方法。

crypto/cipher

新的 NewGCMWithRandomNonce 函式返回一個 AEAD,它透過在 Seal 期間生成隨機 nonce 並將其新增到密文字首來實現 AES-GCM。

當與 crypto/aes 一起使用時,由 NewCTR 返回的 Stream 實現在 amd64 和 arm64 上現在快了幾倍。

NewOFBNewCFBEncrypterNewCFBDecrypter 現在已棄用。OFB 和 CFB 模式未經過認證,這通常會使主動攻擊者能夠操縱和恢復明文。建議應用程式改用 AEAD 模式。如果需要未經認證的 Stream 模式,請改用 NewCTR

crypto/ecdsa

如果隨機源為 nil,PrivateKey.Sign 現在根據 RFC 6979 生成確定性簽名。

crypto/md5

md5.New 返回的值現在也實現了 encoding.BinaryAppender 介面。

crypto/rand

Read 函式現在保證不會失敗。它將始終返回 nil 作為 error 結果。如果 Read 在從 Reader 讀取時遇到錯誤,程式將不可恢復地崩潰。請注意,預設 Reader 使用的平臺 API 文件說明它們總是成功,因此此更改應該隻影響覆蓋 Reader 變數的程式。一個例外是 3.17 版本之前的 Linux 核心,其中預設的 Reader 仍然開啟 /dev/urandom 並且可能失敗。

在 Linux 6.11 及更高版本上,Reader 現在透過 vDSO 使用 getrandom 系統呼叫。這速度快了幾倍,特別是對於小量讀取。

在 OpenBSD 上,Reader 現在使用 arc4random_buf(3)

新的 Text 函式可用於生成加密安全的隨機文字字串。

crypto/rsa

GenerateKey 現在在請求小於 1024 位金鑰時返回錯誤。所有 Sign、Verify、Encrypt 和 Decrypt 方法在使用小於 1024 位金鑰時現在都會返回錯誤。此類金鑰不安全,不應使用。GODEBUG 設定 rsa1024min=0 可以恢復舊的行為,但我們建議僅在必要時並在測試中使用,例如在測試檔案中新增 //go:debug rsa1024min=0 行。新的 GenerateKey 示例 提供了一個易於使用的標準 2048 位測試金鑰。

現在在呼叫 PrivateKey.Validate 之前呼叫 PrivateKey.Precompute 是安全且更高效的。在存在部分填充的 PrecomputedValues 時(例如從 JSON 反序列化金鑰時),Precompute 現在更快。

現在,即使未呼叫 Validate,該包也會拒絕更多無效金鑰,並且 GenerateKey 對於損壞的隨機源可能會返回新的錯誤。PrivateKeyPrimesPrecomputed 欄位現在即使缺少某些值也會被使用和驗證。另請參見下文描述crypto/x509 對 RSA 金鑰解析和序列化的更改。

SignPKCS1v15VerifyPKCS1v15 現在支援 SHA-512/224、SHA-512/256 和 SHA-3。

GenerateKey 現在使用稍微不同的方法生成私有指數(Carmichael 的 totient 而非 Euler 的 totient)。極少數僅從素因數外部重新生成金鑰的應用程式可能會產生不同但相容的結果。

在 wasm 上,公鑰和私鑰操作現在快了兩倍。

crypto/sha1

sha1.New 返回的值現在也實現了 encoding.BinaryAppender 介面。

crypto/sha256

sha256.Newsha256.New224 返回的值現在也實現了 encoding.BinaryAppender 介面。

crypto/sha512

sha512.Newsha512.New384sha512.New512_224sha512.New512_256 返回的值現在也實現了 encoding.BinaryAppender 介面。

crypto/subtle

新的 WithDataIndependentTiming 函式允許使用者啟用特定架構的特性來執行函式,這些特性保證特定指令在資料值計時上是不變的。這可以用於確保設計為恆定時間執行的程式碼不會被 CPU 級別的特性最佳化而導致在可變時間內執行。目前,WithDataIndependentTiming 在 arm64 上使用 PSTATE.DIT 位,並在所有其他架構上是一個無操作。GODEBUG 設定 dataindependenttiming=1 為整個 Go 程式啟用 DIT 模式。

XORBytes 的輸出必須與輸入完全重疊或完全不重疊。之前,其行為未定義,現在 XORBytes 將會 panic。

crypto/tls

TLS 伺服器現在支援 Encrypted Client Hello (ECH)。透過填充 Config.EncryptedClientHelloKeys 欄位可以啟用此特性。

新的後量子 X25519MLKEM768 金鑰交換機制現在受到支援,並且當 Config.CurvePreferences 為 nil 時預設啟用。GODEBUG 設定 tlsmlkem=0 可以恢復預設行為。這在處理無法正確處理大記錄從而導致握手期間超時的有 bug 的 TLS 伺服器時可能有用(參見 TLS post-quantum TL;DR fail)。

已移除對實驗性 X25519Kyber768Draft00 金鑰交換的支援。

金鑰交換排序現在完全由 crypto/tls 包處理。Config.CurvePreferences 的順序現在被忽略,其內容僅用於確定在填充該欄位時啟用哪些金鑰交換。

新的 ClientHelloInfo.Extensions 欄位列出了在 Client Hello 訊息中接收到的擴充套件的 ID。這對於指紋識別 TLS 客戶端可能有用。

crypto/x509

x509sha1 GODEBUG 設定 已被移除。Certificate.Verify 不再支援基於 SHA-1 的簽名。

OID 現在實現了 encoding.BinaryAppenderencoding.TextAppender 介面。

預設證書策略欄位已從 Certificate.PolicyIdentifiers 更改為 Certificate.Policies。解析證書時,兩個欄位都將填充,但在建立證書時,策略將從 Certificate.Policies 欄位獲取,而不是從 Certificate.PolicyIdentifiers 欄位獲取。此更改可以使用 GODEBUG 設定 x509usepolicies=0 恢復。

CreateCertificate 現在在傳遞一個帶有 nil Certificate.SerialNumber 欄位的模板時,將使用符合 RFC 5280 的方法生成序列號,而不是失敗。

Certificate.Verify 現在支援策略驗證,如 RFC 5280 和 RFC 9618 中所定義。新的 VerifyOptions.CertificatePolicies 欄位可以設定為一組可接受的策略 OIDs。只有具有有效策略圖的證書鏈才會從 Certificate.Verify 返回。

MarshalPKCS8PrivateKey 現在返回錯誤,而不是序列化無效的 RSA 金鑰。(MarshalPKCS1PrivateKey 沒有錯誤返回值,並且在提供無效金鑰時的行為仍然未定義。)

ParsePKCS1PrivateKeyParsePKCS8PrivateKey 現在使用並驗證編碼的 CRT 值,因此可能會拒絕之前接受的無效 RSA 金鑰。使用 GODEBUG 設定 x509rsacrt=0 可以恢復到重新計算 CRT 值。

debug/elf

debug/elf 包增加了對處理動態 ELF (Executable and Linkable Format) 檔案中符號版本的支援。新的 File.DynamicVersions 方法返回 ELF 檔案中定義的動態版本列表。新的 File.DynamicVersionNeeds 方法返回此 ELF 檔案所需的、在其他 ELF 物件中定義的動態版本列表。最後,新的 Symbol.HasVersionSymbol.VersionIndex 欄位指示符號的版本。

encoding

引入了兩個新介面,TextAppenderBinaryAppender,用於將物件的文字或二進位制表示附加到位元組切片。這些介面提供了與 TextMarshalerBinaryMarshaler 相同的功能,但它們直接將資料附加到現有切片,而不是每次都分配一個新切片。標準庫中已實現 TextMarshaler 和/或 BinaryMarshaler 的型別現在也實現了這些介面。

encoding/json

序列化時,結構體欄位標籤中帶有新選項 omitzero 的欄位,如果其值為零,將被省略。如果欄位型別有 IsZero() bool 方法,將使用該方法來確定值是否為零。否則,如果值是其型別的零值,則值為零。當目的是省略零值時,omitzero 欄位標籤比 omitempty 更清晰且不易出錯。特別是,與 omitempty 不同,omitzero 會省略零值的 time.Time 值,這是一個常見的痛點。

如果同時指定了 omitemptyomitzero,則當值為空或零(或兩者都是)時,該欄位將被省略。

UnmarshalTypeError.Field 現在包含嵌入結構體,以提供更詳細的錯誤訊息。

go/types

所有使用一對方法(例如 Len() intAt(int) T)暴露序列的 go/types 資料結構現在也具有返回迭代器的方法,使您可以簡化如下程式碼

params := fn.Type.(*types.Signature).Params()
for i := 0; i < params.Len(); i++ {
   use(params.At(i))
}

為這樣

for param := range fn.Signature().Params().Variables() {
   use(param)
}

這些方法包括:Interface.EmbeddedTypes, Interface.ExplicitMethods, Interface.Methods, MethodSet.Methods, Named.Methods, Scope.Children, Struct.Fields, Tuple.Variables, TypeList.Types, TypeParamList.TypeParams, Union.Terms

hash/adler32

New 返回的值現在也實現了 encoding.BinaryAppender 介面。

hash/crc32

NewNewIEEE 返回的值現在也實現了 encoding.BinaryAppender 介面。

hash/crc64

New 返回的值現在也實現了 encoding.BinaryAppender 介面。

hash/fnv

New32New32aNew64New64aNew128New128a 返回的值現在也實現了 encoding.BinaryAppender 介面。

hash/maphash

新的 ComparableWriteComparable 函式可以計算任何可比較值的雜湊值。這使得對任何可以用作 Go map 鍵的值進行雜湊成為可能。

log/slog

新的 DiscardHandler 是一個永遠不會被啟用並總是丟棄其輸出的處理器。

LevelLevelVar 現在實現了 encoding.TextAppender 介面。

math/big

FloatIntRat 現在實現了 encoding.TextAppender 介面。

math/rand

對已棄用的頂層 Seed 函式的呼叫不再有任何效果。要恢復舊的行為,請使用 GODEBUG 設定 randseednop=0。更多背景資訊請參閱 提案 #67273

math/rand/v2

ChaCha8PCG 現在實現了 encoding.BinaryAppender 介面。

net

ListenConfig 現在預設在支援 MPTCP 的系統上使用它(目前僅限 Linux)。

IP 現在實現了 encoding.TextAppender 介面。

net/http

Transport 對作為請求響應接收到的 1xx 資訊響應的限制已發生變化。它之前在收到超過 5 個 1xx 響應後會中止請求並返回錯誤。現在,如果所有 1xx 響應的總大小超過 Transport.MaxResponseHeaderBytes 配置設定,它會返回錯誤。

此外,當請求具有 net/http/httptrace.ClientTrace.Got1xxResponse 跟蹤鉤子時,現在對 1xx 響應的總數沒有限制。Got1xxResponse 鉤子可以返回錯誤以中止請求。

TransportServer 現在具有 HTTP2 欄位,允許配置 HTTP/2 協議設定。

新的 Server.ProtocolsTransport.Protocols 欄位提供了一種簡單的方法來配置伺服器或客戶端使用的 HTTP 協議。

伺服器和客戶端可以配置為支援未加密的 HTTP/2 連線。

Server.Protocols 包含 UnencryptedHTTP2 時,伺服器將在未加密的埠上接受 HTTP/2 連線。伺服器可以在同一埠上接受 HTTP/1 和未加密的 HTTP/2。

Transport.Protocols 包含 UnencryptedHTTP2 且不包含 HTTP1 時,傳輸將對 http:// URL 使用未加密的 HTTP/2。如果傳輸配置為同時使用 HTTP/1 和未加密的 HTTP/2,它將使用 HTTP/1。

未加密的 HTTP/2 支援使用“事先知道的 HTTP/2”(RFC 9113,第 3.3 節)。不支援已棄用的“Upgrade: h2c”頭部。

net/netip

AddrAddrPortPrefix 現在實現了 encoding.BinaryAppenderencoding.TextAppender 介面。

net/url

URL 現在也實現了 encoding.BinaryAppender 介面。

os/user

在 Windows 上,Current 現在可以在 Windows Nano Server 中使用。實現已更新,以避免使用 NetApi32 庫中的函式,該庫在 Nano Server 中不可用。

在 Windows 上,CurrentLookupLookupId 現在支援以下內建服務使用者帳戶:

在 Windows 上,噹噹前使用者加入了一個慢速域(這對於許多公司使用者來說是常見情況)時,Current 的速度有了顯著提升。新的實現效能現在在毫秒級別,而之前的實現可能需要幾秒甚至幾分鐘才能完成。

在 Windows 上,噹噹前執行緒正在模擬另一個使用者時,Current 現在返回程序所有者的使用者。之前它會返回錯誤。

regexp

Regexp 現在實現了 encoding.TextAppender 介面。

runtime

GOROOT 函式現已棄用。在新程式碼中,推薦使用系統路徑查詢“go”二進位制檔案,並使用 go env GOROOT 來查詢其 GOROOT。

strings

strings 包添加了幾個與迭代器配合使用的函式:

sync

sync.Map 的實現已更改,提高了效能,尤其是在 map 修改方面。例如,對不相交鍵集的修改在大 map 上不太可能發生競爭,並且從 map 中獲取低競爭負載不再需要任何預熱時間。

如果您遇到任何問題,請在構建時設定 GOEXPERIMENT=nosynchashtriemap 以切換回舊的實現,並請提交問題

testing

新的 T.ContextB.Context 方法返回一個上下文,該上下文在測試完成後且在測試清理函式執行之前被取消。

新的 T.ChdirB.Chdir 方法可用於在測試或基準測試期間更改工作目錄。

text/template

模板現在支援 range-over-func 和 range-over-int。

time

Time 現在實現了 encoding.BinaryAppenderencoding.TextAppender 介面。

移植

Linux

正如 Go 1.23 版本說明中宣佈的,Go 1.24 需要 Linux 核心版本 3.2 或更高版本。

Darwin

Go 1.24 是最後一個可以在 macOS 11 Big Sur 上執行的版本。Go 1.25 將需要 macOS 12 Monterey 或更高版本。

WebAssembly

添加了 go:wasmexport 編譯器指令,用於 Go 程式將函式匯出到 WebAssembly 主機。

在 WebAssembly System Interface Preview 1 (GOOS=wasip1 GOARCH=wasm) 上,Go 1.24 支援透過指定 -buildmode=c-shared 構建標誌,將 Go 程式構建為 reactor/library

現在允許更多型別作為 go:wasmimport 函式的引數或結果型別。具體來說,允許使用 boolstringuintptr 和某些型別的指標(詳細資訊請參閱文件),以及已允許的 32 位和 64 位整數和浮點型別以及 unsafe.Pointer。這些型別也允許作為 go:wasmexport 函式的引數或結果型別。

WebAssembly 的支援檔案已從 misc/wasm 移至 lib/wasm

初始記憶體大小顯著減小,尤其是對於小型 WebAssembly 應用程式。

Windows

32 位 windows/arm 移植 (GOOS=windows GOARCH=arm) 已被標記為損壞。詳細資訊請參閱問題 #70705