六個月後,Go 語言 1.24 版正式發布 轉到1.23。大多數變化都發生在工具鏈、運行時和庫的實作中。與往常一樣,該版本提供 相容性承諾 Go 1. 語言設計者期望幾乎所有的Go程式都能像以前一樣繼續編譯和運作。
語言變化
Go 1.24 現已完全支持 泛型型別別名:型別別名可以參數化為宣告的型別。詳情 語言規範。目前,可以透過設定 GOEXPERIMENT=noaliastypeparams 來停用此功能;但是,aliastypeparams 選項將在 Go 1.25 中刪除。
工具
Go 指令
Go 模組現在可以使用 go.mod 中的工具指令追蹤可執行依賴項。這樣就不再需要先前的解決方法,即在通常名為「tools.go」的檔案中將工具作為空導入新增。 go tool 指令現在除了可以運行 Go 自帶的工具之外,還可以運行這些工具。更多資訊請訪問 文件.
go get 的新 -tool 標誌除了新增 require 指令外,還會將工具指令新增到指定包的目前模組。
新 元模式工具 指當前模組中的所有工具。這可以用來透過 go get 工具更新它們全部,或透過 go install 工具將它們安裝到你的 GOBIN 目錄中。
透過 go run 和新的 go tool 行為創建的可執行檔現在快取在 Go build 快取中。由於快取增加,這使得重複啟動成為可能。 #69290.
go build 和 go 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 設定 工具鏈追蹤=1 現在可以用來追蹤 go 指令中的工具鏈選擇過程。
銅礦
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 工具現在支援在 64 位元 LoongArch(GOARCH=loong64)、RISC-V(GOARCH=riscv64)和 S390X(GOARCH=s390x)上進行反組譯。
脂肪
新的測試分析器會報告測試套件中的測試、模糊測試器、基準和範例聲明中的常見錯誤,例如格式錯誤的名稱、無效簽名或記錄不存在的識別碼的範例。其中一些錯誤可能會導致測試失敗。
現有的 printf 解析器現在報告形式 fmt.Printf(s) 的呼叫的診斷訊息,其中 s 是沒有其他參數的非常量格式字串。這樣的呼叫幾乎總是會出錯,因為 s 的值可能包含 % 字元;改用 fmt.Print。 60529。此檢查傾向於在現有程式碼中尋找內容,因此僅當語言版本(由 go.mod 檔案的 go 指令或 `//go:build` 註解指定)至少為 Go 1.24 時才應用,以避免在升級到 Go 1.24 工具鏈時導致長時間的整合中斷。
現有的 buildtag 分析器現在會在 buildtag 不正確時報告診斷訊息 舊版建置限制 進入 //go:build 指令。例如,//go:build go1.23.1 指的是點發布;而是使用 //go:build go1.23。 #64127.
現有的 copylock 分析器現在在三重「for」迴圈中宣告變數時會報告診斷,例如 for i := iter();完成(i); i = next(i) { … },包含sync.Locker,如sync.Mutex。 轉到1.22 改變了這種循環的行為,為每次迭代創建一個新變量,並複製上一次迭代中的值;這種複製對於鎖來說並不安全。 #66387.
戈卡切普羅
現在可以透過在 cmd/go 工具和 GOCACHEPROG 環境變數命名的子程序之間實作 JSON 協定的子程序來實現內部 cmd/go 二進位和測試快取機制。以前它是用於 GOEXPERIMENT。協議的詳細資訊可以參見 文件.
完成時間
在一系列代表性基準測試中,幾項運行時效能改進平均將 CPU 開銷降低了 2-3%。結果可能因應用程式不同而有所差異。這些改進包括基於 瑞典餐桌、更有效率的小物件記憶體分配,以及互斥鎖的全新內部運行時實作。
可以透過在建置時分別設定 GOEXPERIMENT=noswissmap 和 GOEXPERIMENT=nospinbitmutex 來停用新的內建映射實作和新的內部執行時間互斥鎖。
編譯器
編譯器已經禁止使用 cgo 產生的接收器類型定義新方法,但可以透過類型別名解決此限制。如果接收器直接或間接(透過類型別名)表示 cgo 產生的類型,Go 1.24 現在總是會報告錯誤。
連結器
連結器現在預設在 ELF 平台上產生 GNU 建置識別碼(ELF 條目 NT_GNU_BUILD_ID),在 macOS 上產生 UUID(Mach-O 載入指令 LC_UUID)。建置 ID 或 UUID 源自 Go 建置 ID。可以使用 -B none 連結器標誌關閉此功能,或使用 -B 0xNNNN 連結器標誌和使用者指定的十六進位值覆寫此功能。
晉升
如中所述 Go 1.22 發行說明,Go 1.24 現在需要安裝 Go 1.22.6 或更高版本。開發人員預計 Go 1.26 將需要推出 Go 1.24 或更高版本的版本。
標準函式庫
目錄限制的檔案系統訪問
新型 作業系統根目錄 提供在特定目錄內執行檔案系統操作的能力。
功能 OpenRoot 作業系統 開啟目錄並返回 作業系統根目錄。方法 作業系統根目錄 在該目錄中操作,且不允許路徑引用目錄外的位置,包括那些遵循目錄外的符號連結的路徑。 os.Root 上的方法反映了 os 套件中可用的大多數檔案系統操作,例如, 作業系統根目錄打開, os.Root.創建, os.Root.建立目錄 и 作業系統根目錄狀態.
新的基準測試功能
基準測試現在可以使用更快、更不容易出錯的方法 測試.B.循環 對類似 for b.Loop() { … } 的基準進行迭代,而不是像 for range bN 這樣的涉及 bN 的典型循環結構。
- 基準測試函數每計數只執行一次,因此昂貴的設定和清理步驟只會執行一次。
- 函數呼叫參數和結果仍然存在,從而阻止編譯器完全最佳化循環體。
改進的終結器
新功能 運行時.AddCleanup 是一種比以下更靈活、更有效率、更不容易出錯的完成機制: 運行時.SetFinalizer。 AddCleanup 將清理函數附加到對象,該函數將在對像不可用時立即運行。但是,與 SetFinalizer 不同的是,可以將多個清理附加到單個對象,可以將清理附加到內部指針,當對象形成循環時,清理通常不會導致洩漏,並且清理不會延遲它指向的對像或對象的釋放。新程式碼應該優先選擇 AddCleanup 而不是 SetFinalizer。
新的弱包
新包裝 弱 提供弱指針。
弱指標是一種低階原語,用於建立記憶體高效的結構,例如用於映射值的弱字典、用於套件未涵蓋的任何內容的規範化字典。 獨特,以及各種類型的快取。為了支援這些用例,此版本還提供了 運行時.AddCleanup и maphash.Comparable.
新的 crypto/mlkem 包
新包裝 加密/mlkem 實作ML-KEM-768和ML-KEM-1024。
ML-KEM 是一種後量子金鑰交換機制,以前稱為 Kyber,在 第 203 章.
新軟體包 crypto/hkdf、crypto/pbkdf2 和 crypto/sha3
新包裝 加密/hkdf 實作基於 HMAC 的「提取和擴充」金鑰派生函數 HKDF,定義如下: RFC 5869.
新包裝 加密/pbkdf2 實作基於密碼的金鑰派生函數 PBKDF2,定義如下 RFC 8018.
新包裝 加密/SHA3 實作 SHA-3 雜湊函數以及 SHAKE 和 cSHAKE 可擴充輸出函數,定義如下: 第 202 章.
所有三個軟體包都基於現有的 golang.org/x/crypto/… 軟體包。
符合 FIPS 140-3 標準
此版本包括 一套確保符合 FIPS 140-3 要求的新機制.
Go 加密模組是一組內部標準函式庫包,透明地用於實現 FIPS 140-3 批准的演算法。應用程式不需要進行更改即可使用已批准演算法的 Go 加密模組。
新的環境變數 GOFIPS140 可用於選擇建置中使用的 Go 加密模組的版本。新的 GODEBUG 設定 fips140 可用於在運作時啟用 FIPS 140-3 模式。
Go 1.24 包含 Go 加密模組 v1.0.0,目前正在 CMVP 認可的實驗室進行測試。
新的實驗包 testing/synctest
新的實驗包 測試/同步測試 提供對測試並發程式碼的支援。
- 功能 同步測試.運行 在一個孤立的“氣泡”中運行一組 goroutine。在封裝函數的氣泡中 時間 根據錯誤的時鐘進行操作。
- 功能 同步測試.等待 等到所有 goroutine 都被阻塞在目前氣泡中。
詳細資訊可以在包文件中找到。
synctest 套件是實驗性的,必須透過設定 GOEXPERIMENT=synctest 來啟用。該套件的 API 在未來版本中可能會發生變化。在 #67434 您可以查看更多詳細資訊並提供回饋。
圖書館的細微變化
過去
archive/zip 和 archive/tar 中的 (*Writer.AddFS) 實作現在為空目錄寫入目錄頭。
字節
包 字節 新增幾個與迭代器一起使用的函數:
- 線 傳回位元組切片中換行符號分隔的字串的迭代器。
- SplitSeq 傳回遍歷位元組切片的所有子切片的迭代器,這些子切片由分隔符號分隔。
- 序列後拆分 返回位元組切片的子切片上的迭代器,每次出現分隔符號後進行分割。
- 字段序列 傳回一個迭代器,迭代圍繞空格字元序列的位元組切片的子切片,如定義 unicode.IsSpace
- 欄位函數順序 傳回迭代器,該迭代器針對滿足謂詞的 Unicode 代碼點序列的位元組切片的子切片進行迭代。
加密/aes
傳回值 新奇弗 不再實現 NewCTR、NewGCM、NewCBCEncrypter 和 NewCBCDecrypter 方法。這些方法沒有記錄,並且不適用於所有架構。現在的意思 阻止 必須直接傳遞給適當的函數 加密/密碼。目前,crypto/cipher 仍然會在 Block 值上檢查這些方法,即使標準函式庫不再支援它們。
加密/密碼
新功能 NewGCMWithRandomNonce 回報 AEAD,它透過在 Seal 期間產生隨機數並將其加到密文前面來實現 AES-GCM。
履行 資訊,返回 新點擊率 與...一起使用 加密/aes 現在在 amd64 和 arm64 上速度快了幾倍。
新OFB, 新CFBEncrypter и 新CFB解密器 現已宣布過時。 OFB 和 CFB 模式是未經認證的,通常允許主動攻擊操縱和恢復明文。建議使用應用程式 AEAD 回報。如果未認證模式 資訊 必要時,可使用 新點擊率 回報。
加密/ecdsa
私鑰簽名 現在根據建立確定性簽名 RFC 6979,如果隨機源為零。
加密/md5
傳回值 md5文件,現在還實作了接口 編碼.binaryappender.
加密/蘭特
功能 閱讀 現在可以保證不會失敗。如果 Read 在讀取時遇到錯誤 讀者,程序將永久終止。請注意,有記錄顯示預設 Reader 總是能成功運行,因此此變更只會影響覆蓋 Reader 變數的程式。一個例外是 3.17 之前的 Linux 內核,其中預設讀取器仍會開啟 /dev/urandom 並且可能會失敗。
在 Linux 6.11 及更高版本中,Reader 現在透過 vDSO 使用 getrandom 系統呼叫。這要快幾倍,通常適用於小讀取。
現在在 OpenBSD Reader 上使用 arc4random_buf(3)。
新功能 文本 現在可以產生加密安全的隨機文字字串。
加密/RSA
產生金鑰 如果請求的金鑰長度小於 1024 位,則會傳回錯誤。如果使用的金鑰大小小於 1024 位,則所有 Sign、Verify、Encrypt 和 Decrypt 方法都會傳回錯誤。此類金鑰不安全,不應使用。 設定 GODEBUG rsa1024min=0 恢復舊行為,但 Go 開發人員建議僅在必要時且僅在測試中執行此操作,例如在測試檔案中新增行 //go:debug rsa1024min=0。新的 例子 GenerateKey 提供了一個易於使用的標準 2024 位元測試金鑰。
現在撥打電話更安全、更有效率 私鑰.預先計算 對 私鑰.驗證。在部分填充的情況下,預計算現在速度更快 預計算值,例如從 JSON 中提取密鑰時。
即使未呼叫 Validate,該套件現在也會拒絕更多無效密鑰,並且 產生金鑰 現在可以針對損壞的隨機來源傳回新的錯誤。欄位 素數 и 預先計算 結構 PrivateKey 即使缺少某些值,現在也會使用和驗證。用於解析和提取 RSA 金鑰的 crypto/x509 也發生了變化,如下所述。
SignPKCS1v15 и 驗證PKCS1v15 現在支援SHA-512/224、SHA-512/256和SHA-3。
產生金鑰 現在使用稍微不同的方法來產生私有指數(卡邁克爾函數而不是歐拉函數)。僅從素數外部重新產生密鑰的罕見應用程式可能會產生不同但相容的結果。
現在,在 wasm 上對公鑰和私鑰的操作速度提高了兩倍。
加密/SHA*
- 加密/SHA1:回傳值 sha1.New 現在還實現了介面 編碼.binaryappender.
- 加密/SHA256:回傳值 sha256.New и sha256.New224 現在還實作介面 編碼.binaryappender.
- 加密/SHA512:回傳值 sha512.New, sha512.New384, sha512.New512_224 и sha512.New512_256,現在也實作介面 編碼.binaryappender.
加密/微妙
新功能 數據獨立時間 允許使用者執行啟用了特定於架構的特性的功能,以確保某些指令不會相對於資料值的時間而改變。這可用於確保編寫的以恆定時間運行的程式碼尚未透過處理器級函數進行最佳化,以便它以可變時間運行。目前,WithDataIndependentTiming 在 arm64 上使用 PSTATE.DIT 位,在所有其他架構上不執行任何操作。 設定 GODEBUG dataindependenttiming=1 為整個 Go 程式啟用 DIT 模式。
產量 異或位元組 必須與輸入完全重疊或根本不重疊。以前,否則行為是未定義的,而現在 XORBytes 會引起恐慌。
加密/TLS
TLS 伺服器現在支援加密客戶端 Hello (ECH)。填寫欄位即可啟用該功能。 配置.加密客戶端HelloKeys.
一種新的後量子金鑰交換機制 X25519MLKEM768 現在預設支援並啟用 配置曲線偏好 為零。 設定 GODEBUG tlsmlkem=0 傳回預設值。
已刪除實驗性 X25519Kyber768Draft00 金鑰交換的支援。
密鑰交換順序現在完全由 crypto/tls 套件處理。命令 配置曲線偏好 現在被忽略,並且內容僅用於確定在填寫欄位時要包含哪些關鍵交換。
新領域 客戶端HelloInfo.擴展 列出客戶端 Hello 訊息中收到的擴充標識符清單。這對於指紋辨識 TLS 客戶端很有用。
加密/x509
設定 GODEBUG x509sha1已刪除。 認證.驗證 不再支援基於 SHA-1 的簽章。
奧德 現在實現介面 編碼.binaryappender и 編碼.TextAppender.
預設證書策略欄位已從 證書.策略標識符 上 證書.策略。解析憑證時,兩個欄位都會被填充,但在建立憑證策略時,它們將從 Certification.Policies 欄位而不是 Certification.PolicyIdentifiers 中取得。此更改可以恢復。 GODEBUG 設定 x509usepolicies=0。
建立證書 現在將在傳遞模板欄位時使用符合 RFC 5280 的方法產生序號 證書序號 nil,而不是崩潰。
證書.驗證 現在支援 RFC 5280 和 RFC 9618 中定義的策略驗證。 驗證選項.證書政策 可以設定為一組可接受的策略 物件標識符。僅傳回具有有效策略圖的憑證鏈 證書.驗證.
MarshalPKCS8私鑰 現在傳回錯誤而不是檢索無效的 RSA 金鑰。 (MarshalPKCS1私鑰 沒有錯誤返回,並且當提供無效鍵時其行為仍然未定義。
解析PKCS1PrivateKey и 解析PKCS8PrivateKey 現在使用並驗證編碼的 CRT 值,因此可以拒絕先前接受的無效 RSA 金鑰。用法 GODEBUG 設定 x509rsacrt=0 返回重新計算 CRT 值。
調試/elf
包 調試/elf 增加了對處理動態 ELF(可執行和可連結格式)檔案中的符號版本的支援。新方法 文件.動態版本 傳回 ELF 檔案中定義的動態版本清單。新方法 文件.動態版本需求 傳回此 ELF 檔案所需的、在其他 ELF 物件中定義的動態版本清單。最後,新領域 符號.HasVersion и 符號.版本索引 標明符號的版本。
編碼
兩個新介面 文字追加器 и 二進制追加器 被引入來將物件的文字或二進位表示添加到位元組切片中。這些介面提供與 文字編組器 и 二進制編組器,但它們不是每次都分配一個新的切片,而是直接將資料附加到現有的切片中。這些介面目前由已經實作 TextMarshaler 和/或 BinaryMarshaler 的標準函式庫類型實作。
編碼/json
建置時,如果結構欄位標籤中具有新的 omitzero 選項的結構欄位的值為零,則將被省略。如果欄位類型具有 IsZero() bool 方法,則它將用於確定值是否為零。否則,如果 其類型的空值。當意圖省略空值時,omitzero 欄位標籤比 omitempty 更簡潔且更不容易出錯。特別地,與 omitempty 不同,omitzero 省略零 時間.時間 價值觀,這是問題的常見根源。
如果同時指定了 omitempty 和 omitzero,則當值為空或零(或兩者)時將省略該欄位。
解析錯誤類型 現在包括內建結構以提供更詳細的錯誤訊息。
go/類型
所有公開方法對序列的 go/types 資料結構,如 Len() int 和 At(int) T,現在也具有傳回迭代器的方法,從而允許更簡單的程式碼,如下所示:
params := fn.Type.(*types.Signature).Params() for i := 0;我 < params.Len(); i++ { 使用(params.At(i)) }
關於這一點:
對於參數:=範圍fn.Signature()。
回复: 介面.嵌入類型 介面.顯式方法 接口.方法 方法集.方法 命名方法 範圍.子項 結構.字段 元組.變數 類型清單.類型 類型參數列表.類型參數 聯盟條款
哈希/*
- 哈希/adler32:回傳值 New,現在還實作了接口 編碼.binaryappender
- 哈希/crc32:回傳值 New и 新IEEE,現在也實作介面 編碼.binaryappender
- 哈希/crc64:回傳值 New,現在還實作了接口 編碼.binaryappender
- 哈希/fnv:回傳值 New32 New32a New64 New64a New128 и New128a,現在也實作介面 編碼.binaryappender
- 哈希/映射哈希:新功能 可比 и 可寫比較 可以計算任何可比較值的雜湊值。這使您可以對可以用作 Go 字典鍵的任何內容進行哈希處理。
記錄/日誌
新 丟棄處理程序 是一個永遠不會啟用並且總是丟棄其輸出的處理程序。
水平 и 水平變數 現在實現介面 編碼.TextAppender.
數學/*
- 數學/大: 浮球, 詮釋 и 鼠 現在實現介面 編碼.TextAppender.
- 數學/蘭特:棄用頂級函數調用 種子 不再具有任何效果。要恢復舊的行為,你可以使用 GODEBUG 設定 randseednop=0。更多背景資訊 優惠 67273.
- 數學/蘭德/v2: 茶茶8 и PCG 現在實現介面 編碼.binaryappender.
淨
聽康迪格 現在在支援的系統上預設使用 MPTCP(目前僅限 Linux)。
IP 現在實現介面 編碼.TextAppender.
網絡/http
限制已改變 交通 對接收到的1xx資訊做出回應以回應請求。以前,在收到超過 5 個 1xx 回應後,這將停止請求並傳回錯誤。現在,只有當所有 1xx 回應的總大小超出配置設定時才會傳回錯誤 傳輸.MaxResponseHeaderBytes.
此外,當請求具有追蹤鉤子時 淨/http/httptrace.ClientTrace.Got1xxResponse,現在答案1xx的總數沒有限制。 Got1xxResponse鉤子可以回傳錯誤來停止請求。
交通 и 伺服器 現在有一個 HTTP2 字段,允許配置 HTTP/2 協定設定。
新領域 伺服器協定 и 傳輸協定 提供一種簡單的方法來設定伺服器或客戶端使用的 HTTP 協定。
可以配置伺服器和客戶端以支援未加密的 HTTP/2 連線。
何時 伺服器協定 包含 UnencrypterHTTP2,伺服器將接受未加密連接埠上的 HTTP/2 連線。伺服器可以在同一連接埠上同時接受 HTTP/1 和未加密的 HTTP/2。
何時 傳輸協定 包含 UnencryptedHTTP2 且不包含 HTTP1,傳輸將使用未加密的 HTTP/2 作為位址 http://. 如果傳輸配置為同時使用 HTTP/1 和未加密的 HTTP/2,則它將使用 HTTP/1。
對未加密的 HTTP/2 的支援使用「具有前向學習的 HTTP/2」(RFC 9113,第 3.3 節)。不支援已棄用的標頭「Upgrade: h2c」。
淨/netip
地址, 位址連接埠 и 字首 現在實現介面 編碼.binaryappender и 編碼.TextAppender.
網址/網址
網址 現在還實現了介面 編碼.binaryappender.
作業系統/用戶
在 Windows 上 電流測試棒 現在可以在 Windows Nano Server 中使用。此實作已更新,以避免使用 Nano Server 中缺少的 NetApi32 庫中的函數。
在 Windows 上 電流測試棒, 查找 и 尋找編號 現在支援以下內建用戶服務帳戶:
- NT授權系統
- 北領地當局地方服務
- 北領地管理局網路服務
在 Windows 上 電流測試棒 當目前使用者加入較慢的網域時,速度會顯著加快,這是許多企業用戶的常見情況。新實現的效能現在以毫秒為單位,而先前的實現可能需要幾秒鐘甚至幾分鐘才能完成。
在 Windows 上 電流測試棒 當當前執行緒模仿另一個使用者時,現在會返回進程所有者使用者。此前這會回傳一個錯誤。
正則表達式
正則表達式 現在實現介面 編碼.TextAdapter.
運行
功能 根 現已棄用。在較新的環境中,您應該傾向於使用系統路徑來確定“go”二進位文件,並使用 go env GOROOT 來確定 GOROOT。
字符串
包 字符串 增加了幾個用於迭代器的函數:
- 線 傳回字串中以換行符號分隔的行的迭代器。
- SplitSeq 傳回一個迭代器,迭代所有由分隔符號分隔的字串子字串。
- 序列後拆分 傳回字串子字串的迭代器,每次出現分隔符號後進行拆分。
- 字段序列 傳回一個迭代器,迭代圍繞空格字元序列的字串子字串,如定義unicode.IsSpace
- 欄位函數順序 傳回一個迭代器,迭代滿足謂詞的 Unicode 碼點序列的字串子字串。
同步
履行 同步地圖 已經進行了更改以提高性能,特別是對於字典更改。例如,大型字典中不相交集合改變爭用的可能性較小,並且不再需要建立時間來實現低爭用字典負載。
如果您遇到任何問題,請在建置期間設定 GOEXPERIMENT=nosynchashtriemap 以恢復到舊實現,然後請 填寫問題表格.
測試
新方法 情境 и B.背景 傳回測試完成後和執行測試清理函數之前丟棄的上下文。
新方法 奇迪爾 и 奇迪爾 可用於在測試或基準測試期間變更工作目錄。
文字/模板
模板現在支援 range-over-func 和 range-over-int。
時間
時間 現在實現介面 編碼.binaryappender и 編碼.TextAppender.
連接埠數量
Linux
一如既往 宣布 根據 Go 1.23 發行說明,Go 1.24 需要 Linux 核心版本 3.2 或更高版本。
達爾文
Go 1.24 是可在 macOS 11 Big Sur 上運行的最後一個版本。 Go 1.25 將需要 macOS 12 Monterey 或更高版本。
WebAssembly
Go 程式中新增了 go:wasmexport 編譯器指令,用於將函數匯出到 WebAssembly 主機。
在 WebAssembly 系統介面預覽 1 (GOOS=wasip1 GOARCH=wasm) 中,Go 1.24 支援以下列方式建置 Go 程式 反應器/庫 透過指定建置標誌 -buildmode=c-shared。
現在允許更多類型作為 go:wasmimport 函數的參數或結果類型。特別是,bool、string、uintptr 和指向某些類型的指標是允許的(詳細資訊請參閱 文件),以及已經允許的32位元和64位元整數和浮點類型以及unsafe.Pointer。這些類型也可以作為 go:wasmexport 函數的參數或結果類型。
WebAssembly 的支援文件已從 misc/wasm 移至 lib/wasm。
初始記憶體佔用顯著減少,尤其是對於小型 WebAssembly 應用程式。
Windows
32 位元 windows/arm 連接埠(GOOS=windows GOARCH=arm)已被標記為損壞。詳情 #70705
來源: linux.org.ru
