Go Wiki:標準庫和工具鏈風險變更指南
在處理風險變更時,請務必格外小心。在此提醒:
如果一項變更可能導致難以診斷的故障(例如,對執行時、GC、編譯器、連結器、TLS、其他底層元件的變更,或需要生產負載下長時間執行才能發現的複雜變更),或者如果該變更需要大量的、難以回滾的 CL(例如,大型 CL 或一系列 CL),那麼該變更就是有風險的。
如果您計劃進行一項可能有風險的變更,請按以下步驟操作:
- 除非整個變更都絕對微不足道,否則請使用一個以
go126
為字首的布林標誌來保護新的程式碼路徑,該標誌可用於快速切換回舊的實現。它可以是一個簡單的布林常量,例如const go126UseEvenBetterLinker = true
。此類標誌必須能夠透過簡單地 grep 字串go126
來找到。這樣我們就可以找到它們,而不會遺漏任何一個,並且可以在 Go 1.27 週期來臨時清理它們。 - 考慮您將如何回答有關您變更的以下問題:
- 您計劃進行的變更有多大的風險?
- 您將如何知道它是否按預期工作?
- 您需要多少生產測試才能確信它按預期工作?
- 應該何時做出保留/回滾的決定?
- 在 Go 1.26 里程碑中建立一個跟蹤問題,並新增 release-blocker 標籤。此問題將用於跟蹤該功能的進展,併為 Go 1.26 做出最終決定。
此內容是 Go Wiki 的一部分。