精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Go 清理技術債務:將刪除部分 GODEBUG 標識!

開發 前端
從 Go 1.12 引入 ??GODEBUG?? 機制到現在,各種標志越來越多,維護成本也越來越高。今天給大家分享的是 ??GODEBUG?? 標志清理的提案,以及第一批要開刀的加密相關標志。

最近 Go 團隊提出了一個挺有意思的提案,說的是要系統性地清理 GODEBUG 標志。

圖片

從 Go 1.12 引入 GODEBUG 機制到現在,各種標志越來越多,維護成本也越來越高。

今天給大家分享的是 GODEBUG 標志清理的提案,以及第一批要開刀的加密相關標志。

咱們一起來看看 Go 核心團隊打算怎么處理這個技術債務。

背景

為什么會有 GODEBUG 這個設計和機制?

2012 年 3 月,Go 1 發布的時候,Go 團隊做了一個重要承諾:Go 1 兼容性保證

圖片

簡單來說就是,符合 Go 1 規范的程序,在后續的 Go 1.x 版本中都能正常編譯和運行。這個保證可以說是 Go 語言能穩定發展的基石(也是很多同學敢于直接升版本的壓艙石)。

但問題來了,這 13 年里,Go 團隊遇到了各種安全問題和其他需要改進的地方。雖然這些改動不違反兼容性保證,但有時候確實會影響程序的行為。

為了讓開發者能平滑過渡,GODEBUG 環境變量就應運而生了

簡單例子

舉個例子,Go 1.21 引入了 panicnil 設置:

// Go 1.20 及之前,這樣寫是可以的
func oldBehavior() {
    panic(nil)  // 不會報錯
}

// Go 1.21 開始,默認 panicnil=0
func newBehavior() {
    panic(nil)  // 運行時錯誤!
}

如果你的老代碼依賴 panic(nil) 的舊行為,只需要設置 GODEBUG=panicnil=1,代碼就能像在 Go 1.20 一樣運行。

你再等有時間了再慢慢改代碼,這就給了業務和自己一個可控制的緩沖期。也不會影響升級 Go 新版本。

所產生的問題

可以看到,這個機制確實很貼心。但隨著時間推移,問題也來了:

  • 標志越來越多了: 各種 GODEBUG 標志越積越多,有的說要永久保留,有的說過兩年就刪,還有的壓根沒說什么時候刪。
  • 維護成本高: 每個標志都代表一個分支邏輯,測試復雜度呈指數級增長。你想想,N 個標志就有 2^N 種組合,這測試怎么做?
  • 可預測性差(組合復雜度): 不同的 GODEBUG 組合可能產生完全不同的行為,這讓 Go 工具鏈的行為變得難以預測。

所以今年 Go 核心團隊終于下決心,要系統性地清理這些技術債了。

GODEBUG 現有分類

Go 團隊把現有的 GODEBUG 標志分成了四種類型。

以易到難的程序進行排序:

  • 第一類:已經移除的標志;
  • 第二類:有明確移除日期的標志;
  • 第三類:沒說永久保留,也沒給移除日期的標志;
  • 第四類:明確說了永久保留的標志

接下來我們逐步介紹。

1、已經移除的標志

這類不用管了,比如 x509sha1 就已經被刪掉了(Go 1.24 刪除的)。

但為了歷史記錄,還是會在文檔里保留它們的存在:

圖片

2、有明確移除日期的標志

這類標志處理起來比較直接。比如 gotypesalias 標志,最早可以在 Go 1.27 移除:

// Go 1.22 引入的類型別名新語法
type MyAlias = SomeType

// GODEBUG=gotypesalias=0 可以回到舊行為
// 但 Go 1.27 之后這個標志就要被刪了

處理流程是這樣的:

  • 在到期前一個版本,把標志標記為 "已廢棄";
  • 在發布說明里宣布下個版本要刪除;
  • 如果沒人強烈反對,下個版本就刪掉;
  • 如果有重要反對意見,就延期一個版本再看。

3、沒說永久保留,也沒給移除日期的標志

這類標志得先分配一個移除日期。日期至少要滿足兩個條件:

  • 距離現在至少半年(一個大版本周期);
  • 如果是兼容性標志,距離引入至少兩年;

比如某個 Go 1.23 引入的標志,最早也得 Go 1.25 才能提出移除。

4、明確說了永久保留的標志

這類最難搞,比如 netdns 標志:

// GODEBUG=netdns=go 強制使用 Go 的 DNS 解析器
// GODEBUG=netdns=cgo 強制使用 cgo 的 DNS 解析器

import "net"

func main() {
    // 不同的 netdns 設置會影響域名解析行為
    addrs, err := net.LookupHost("example.com")
    // ...
}

這類標志要刪除,必須提交一個詳細的提案,說明為什么要刪、什么時候刪、怎么減少影響。提案通過后,才能按第二類標志的流程走。

新提案:移除早期版本的 GODEBUG

本次提案《proposal: policy for removing GODEBUG flags[1]》里給出了具體的技術方案和處理思路。

圖片

API 變更

首先計劃要在 godebug.Setting 里加入標志狀態的標識:

type FlagStatus int

const (
    Active FlagStatus = iota      // 正常使用
    Deprecated                     // 已廢棄
    Removed                        // 已移除
)

func (*Setting) Status() FlagStatus {
    // 返回當前標志的狀態
}

或者也可以用兩個方法:

func (*Setting) Deprecated() bool {
    // 標志是否已廢棄
}

func (*Setting) Removed() bool {
    // 標志是否已移除
}

這樣工具就能檢測到廢棄的標志了。

標記為廢棄

當一個標志被標記為廢棄后,各種工具都會給出警告:

// go.mod 文件里設置廢棄標志
godebug panicnil=1  // 構建工具會警告

// 測試代碼里設置廢棄標志
func TestSomething(t *testing.T) {
    t.Setenv("GODEBUG", "panicnil=1")  // 測試會報錯
}

更進一步,可能會引入一個新的 GODEBUG 標志 deprecatedgodebug

// GODEBUG=deprecatedgodebug=0 表示不允許設置任何廢棄標志
// 如果設置了廢棄標志,程序會 panic

func main() {
    os.Setenv("GODEBUG", "panicnil=1")  // 直接 panic!
}

這對復雜系統特別有用,可以確保不會誤用廢棄的標志。

移除標志

標志被移除后,代碼里會把相關實現都刪掉。但考慮到外部的代碼可能還在用,所以將會支持:

  • 設置成默認值:程序正常運行,只是忽略這個設置
  • 設置成非默認值:直接報致命錯誤
// 假設 panicnil 已經被移除,默認值是 0

// GODEBUG=panicnil=0  -> 正常運行,忽略設置
// GODEBUG=panicnil=1  -> 致命錯誤!

為了避免標志名被重復使用,所有的標志(包括已刪除的)都會保留在 internal/godebugs/table.go 里,這個可以通過程序驗證。

首批清理:加密相關標志

接下來我們看看第一批要清理的標志,這也是政策落地的首個實踐案例。

Go 安全團隊的 Filippo Valsorda 提出了 issue #75316,準備在 Go 1.27 移除一批加密相關的 GODEBUG 標志。

圖片

這些標志都是在 Go 1.22 和 Go 1.23 引入的,到 Go 1.27 時已經滿足至少保留兩年的要求。

擬移除的標志清單

一共有 6 個標志在清理名單上。

  1. tlsunsafeekm(Go 1.22 引入)
  2. tlsrsakex(Go 1.22 引入)
  3. tls10server(Go 1.22 引入)
  4. tls3des(Go 1.23 引入)
  5. x509keypairleaf(Go 1.23 引入)
  6. x509negativeserial(Go 1.23 引入)

感興趣的同學,或者有用到的可以自行查看上面的 issues 獲取進一步的信息和原因。

清理時間線

按照新的策略,這些標志的清理流程是這樣的:

1.Go 1.26:在發布說明里預告 Go 1.27 會移除這些標志

2.Go 1.26 到 Go 1.27 期間:開發者有半年時間反饋意見

3.Go 1.27:如果沒有強烈反對,正式移除這些標志

可以看到,這次清理主要針對的是已經被業界淘汰的不安全加密算法和協議。

Go 安全團隊的態度很明確:安全優先,不能為了兼容性而保留已知的安全風險。

總結

這個提案的核心思想很明確:有計劃地清理 GODEBUG 的技術債務,同時盡量減少對開發者的影響。

整個機制設計得挺周全的:

  • 分類清晰,處理方式因類施策。
  • 有明確的時間線和流程。
  • 給開發者足夠的緩沖期。
  • 保留歷史記錄避免標志名重復使用。

Go 核心團隊似乎在小心翼翼地平衡兼容性和技術債務的處理。同時也需要好好關注 Go1 向前和前后的兼容性保障承諾。

參考資料

[1] proposal: policy for removing GODEBUG flags: https://github.com/golang/go/issues/76163

責任編輯:武曉燕 來源: 腦子進煎魚了
相關推薦

2022-05-30 10:09:27

技術債

2025-11-06 01:11:00

GODEBUGGo語言

2024-08-16 07:13:37

2019-10-24 10:04:33

技術債務開發軟件

2025-01-10 11:07:28

2023-08-22 08:52:14

Go零值標識符

2021-05-10 16:43:40

貨幣基金經濟

2021-10-26 10:12:04

技術債務軟件開發應用程序

2023-04-18 10:27:15

CIO技術債務

2022-02-11 09:00:00

技術債務數據工具

2023-05-15 07:06:36

2024-09-30 13:14:01

2023-04-14 15:07:05

架構開發自動化工具

2012-09-13 10:40:30

技術債務管理項目管理

2025-05-06 06:40:16

2021-08-04 09:00:00

云原生云計算債務

2021-06-29 13:51:45

技術債務安全風險首席信息安全官

2023-03-26 00:41:36

2022-04-19 10:23:59

技術債務IT解決方案

2025-07-29 07:27:24

點贊
收藏

51CTO技術棧公眾號

风间由美中文字幕在线看视频国产欧美| 老熟妇高潮一区二区高清视频| 欧美久久综合网| 884aa四虎影成人精品一区| 男人天堂成人网| 香蕉视频网站在线| 麻豆成人av在线| 国语自产在线不卡| 欧美巨胸大乳hitomi| 一本色道69色精品综合久久| 欧美日韩中文在线| 一区二区三视频| 天堂中文在线资| 麻豆91在线观看| 91精品国产91久久久| 91免费在线看片| 美女呻吟一区| 91精品国产综合久久久久久 | 97视频在线播放| 强迫凌虐淫辱の牝奴在线观看| 国产成人精品123区免费视频| 亚洲免费观看高清完整版在线观看熊 | 日本成人在线不卡| jizz亚洲| 91小视频在线观看| 超碰97国产在线| 中文字幕人妻色偷偷久久| 亚洲黄色av| 久久99久久99精品免观看粉嫩| 中文字幕第二区| 五月天亚洲色图| 精品国产一区二区三区四区四| 三上悠亚在线一区二区| 涩涩涩视频在线观看| 亚洲综合999| 一级全黄肉体裸体全过程| 电影av一区| 26uuu欧美| 国产一区在线免费| 日本高清视频网站| 成人av电影免费在线播放| 日韩av片子| 日韩国产精品视频| 五月天婷婷影视| 福利一区视频| 欧美色精品天天在线观看视频| 男人操女人免费软件| av在线最新| 亚洲午夜精品在线| 国产色一区二区三区| 国产丝袜精品丝袜| 亚洲丶国产丶欧美一区二区三区| 日本一级黄视频| 中文在线观看免费| 怡红院av一区二区三区| 免费人成自慰网站| 色是在线视频| 色婷婷综合在线| 国产三级日本三级在线播放| 韩国精品主播一区二区在线观看 | 欧美三级一级片| sm捆绑调教国产免费网站在线观看| 亚洲线精品一区二区三区| 国产一线二线三线女| 国产调教在线| 日本韩国精品一区二区在线观看| www.99在线| 国产精品中文| 日韩欧美的一区| 2一3sex性hd| 欧美黄色录像| 国产亚洲欧美aaaa| 成年人二级毛片| 亚洲最新色图| 91国偷自产一区二区三区的观看方式| 欧美黑人一区二区| 免费观看日韩av| 97se视频在线观看| 亚洲欧美日韩免费| 中文字幕一区二区三区色视频| 三年中文高清在线观看第6集| 亚洲小说区图片| 精品欧美aⅴ在线网站| 亚洲综合在线网站| 久久精品一级| 亚洲精品小视频在线观看| 亚洲综合第一区| 亚洲一级一区| 国产精品久久久久久久久久久久久久 | 正在播放一区二区| 国产精品无码专区| 日韩欧美三级| 国语自产精品视频在线看| 波多野结衣一区二区三区在线| 国产在线精品一区在线观看麻豆| 国产伦精品一区二区三区免 | 久久免费视频网| 欧美成人精品网站| 国产suv精品一区二区三区| 欧美污视频久久久| 午夜激情在线| 欧美日韩中文字幕精品| 国产激情第一页| 欧美成人激情| 55夜色66夜色国产精品视频| 国产免费高清av| 国产欧美一区在线| 成人在线观看你懂的| 亚洲一区二区三区久久久| 日韩精品免费一线在线观看| 欧美激情图片小说| 日韩av一区二| 欧美精品欧美精品| 国产经典三级在线| 欧美精品vⅰdeose4hd| 色婷婷在线影院| 亚洲国产电影| 91福利视频导航| 午夜伦全在线观看| 在线视频观看一区| 国产三级视频网站| 亚洲午夜视频| 91在线短视频| 超碰在线caoporn| 欧美无砖砖区免费| av女人的天堂| 午夜亚洲影视| 国产综合色一区二区三区| 18videosex性欧美麻豆| 欧美男女性生活在线直播观看| av女人的天堂| 久久九九99| 麻豆传媒一区二区| 国产h片在线观看| 精品国产污网站| 久久婷婷一区二区| 国产精品综合一区二区| 青青草原网站在线观看| 综合久草视频| 久久精品国产欧美激情| 97人妻精品一区二区三区动漫 | 国产一级理论片| 国产高清不卡二三区| 国产又粗又大又爽的视频| 亚洲伦理网站| 欧美老肥婆性猛交视频| 国产成a人亚洲精v品无码| 亚洲人成网站影音先锋播放| 中文字幕一区二区在线观看视频| 久久精品免费一区二区三区| 成人免费福利在线| jizzjizz亚洲| 欧美刺激脚交jootjob| 青青草原在线免费观看视频| 国产成人av资源| 久久久久99精品成人片| 加勒比久久高清| 欧美一区二区三区艳史| 国产系列电影在线播放网址| 欧美性大战久久久久久久| 一区二区三区在线播放视频| 国产综合色产在线精品| 国产xxxx振车| 日韩高清三区| 国产精品欧美风情| 黄a在线观看| 欧美精品一区二区三区蜜桃 | 欧美日韩在线精品一区二区三区激情 | 日韩免费电影在线观看| 国产suv精品一区二区| 淫片在线观看| 日韩精品资源二区在线| 久久免费激情视频| 国产精品视频你懂的| 午夜激情视频网| 亚洲精品乱码久久久久久蜜桃麻豆| 精品国产乱码久久久久| 成人福利片在线| 精品中文字幕在线观看| 午夜av免费观看| 欧美视频在线一区二区三区 | 先锋a资源在线看亚洲| 亚洲国产精品视频一区| av动漫精品一区二区| 国产91精品最新在线播放| 黄色在线免费网站| 亚洲激情电影中文字幕| 最近中文字幕免费在线观看| 一区二区三区四区国产精品| 老牛影视av老牛影视av| 国产一区二区日韩精品| 欧美网站免费观看| 小小影院久久| 欧美一级日本a级v片| 日韩成人视屏| 国产成人亚洲综合| sm在线播放| 久久综合亚洲社区| 九色在线免费| 日韩精品一区二区三区蜜臀 | 亚洲精品乱码久久久久久蜜桃91| 日韩精品一区二区三区中文 | www国产黄色| 亚洲精品一二三区区别| 欧美久久综合性欧美| 日韩一级淫片| 国产有码在线一区二区视频| 天堂8中文在线最新版在线| 久久综合五月天| 98在线视频| 亚洲免费人成在线视频观看| 亚洲狼人综合网| 欧美日韩aaa| 久久久久久不卡| 亚洲h在线观看| 全网免费在线播放视频入口| 国产日韩欧美麻豆| 三叶草欧洲码在线| 福利电影一区二区| 黄色三级视频在线播放| 美腿丝袜亚洲色图| 成人精品视频一区二区| 国产日韩精品视频一区二区三区| www.99riav| 久久久久久免费视频| 水蜜桃一区二区三区| 亚洲最好看的视频| 久久99久久99精品蜜柚传媒| 哺乳挤奶一区二区三区免费看| 91麻豆精品秘密入口| 四虎精品在线观看| 国产一区视频在线播放| 国产激情久久| 国产精品人人做人人爽| 欧洲成人一区| 国产精品免费久久久久影院| 亚洲伦乱视频| 国产第一区电影| 国产经典一区| 国产精品一二三视频| av亚洲一区| 国产日韩专区在线| 四虎国产精品免费久久5151| 国产日韩精品在线播放| 日韩深夜福利网站| 成人av在线天堂| 欧洲一区在线| 福利视频久久| 国产精品一线| 久久国产精品久久精品国产| 亚洲精品**不卡在线播he| 日韩精品一线二线三线| 日韩久久视频| 欧美 国产 精品| 欧美日韩网站| www.av片| 日韩精品高清不卡| 无限资源日本好片| 国产剧情在线观看一区二区| 亚洲av无码一区东京热久久| 99久久久久久| www.av天天| 中文字幕一区免费在线观看| 青青草激情视频| 污片在线观看一区二区| av片免费观看| 制服.丝袜.亚洲.中文.综合| 后进极品白嫩翘臀在线视频| 亚洲精选在线观看| av电影在线观看| 欧美精品在线免费观看| aa视频在线观看| 国产成人一区二区| 久久久久久爱| 欧美二级三级| 99久久亚洲精品蜜臀| 欧美精品久久久久久久自慰 | 国产精品久久久久99| 精品视频一区二区三区在线观看| 国产免费一区二区三区| 国产精品一区高清| 91传媒免费视频| 先锋影音久久久| 成人黄色一级大片| 99精品欧美一区二区蜜桃免费 | 欧美另类视频| 蜜臀av午夜一区二区三区| 精品一区二区三区免费毛片爱| 动漫美女无遮挡免费| 国产精品天美传媒| 国产精品免费av一区二区| 欧美唯美清纯偷拍| 欧美熟女一区二区| 最好看的2019年中文视频| 波多野结衣在线播放| 国产精品一区电影| 欧美中文一区| 久久久久亚洲av无码专区喷水| 一本色道久久综合一区| 污污视频在线免费| 国产视频一区二区三区在线观看| 91精品国产高清一区二区三蜜臀| 色狠狠色噜噜噜综合网| 亚洲精品国产片| 日韩在线观看网站| 欧美成人资源| 国产欧美日韩综合一区在线观看 | 91九色在线观看视频| 国产成人免费在线观看不卡| 亚洲黄色网址大全| 欧美性猛交xxxx黑人猛交| 亚洲美女综合网| 日韩一区二区福利| 伊人久久高清| 久久av免费观看| 伊人成人网在线看| 欧美人与性动交α欧美精品| 欧美韩日一区二区三区| 伊人中文字幕在线观看| 亚洲国产精品一区二区久| aa在线视频| 成人性生交大片免费观看嘿嘿视频| 精品国产精品| 无遮挡又爽又刺激的视频| 岛国精品在线播放| 九九九在线视频| 欧美一卡二卡在线| 国产在线69| 91免费国产网站| 久久久久久免费视频| 做a视频在线观看| 中文字幕在线一区二区三区| 五月天中文字幕| 伊人久久综合97精品| 免费观看成人性生生活片| 快播亚洲色图| 国产模特精品视频久久久久| 黄色污在线观看| 午夜电影一区二区| 天天摸天天碰天天爽天天弄| 韩国19禁主播vip福利视频| 丁香5月婷婷久久| 欧美一区二区视频在线播放| 国产99久久精品| www.youjizz.com亚洲| 亚洲成av人乱码色午夜| 国产黄大片在线观看| 久久精品国产精品国产精品污 | 午夜亚洲一区| 69视频在线观看免费| 欧美午夜精品一区二区三区 | 国产一区网站| 能看的毛片网站| 国产精品久久久久影院亚瑟| 国产精品国产三级国产aⅴ| 久久99精品久久久久久噜噜| 麻豆一区一区三区四区| 成年人黄色片视频| 欧美激情在线观看视频免费| 91美女精品网站| 欧美激情免费在线| 日韩在线麻豆| 精品日韩久久久| 亚洲色图制服诱惑| 亚洲精品久久久久久无码色欲四季 | 亚洲乱亚洲乱妇无码| www.26天天久久天堂| 在线观看免费黄色片| 99麻豆久久久国产精品免费| 天天干天天操天天爱| 最新中文字幕亚洲| av成人资源| 性生交免费视频| 一区二区三区四区蜜桃 | 久久国产精品亚洲| 国产精品sss在线观看av| 久久精品一区二| 亚洲人成在线播放网站岛国| 天天色综合av| 国产在线不卡精品| 亚洲激情自拍| 国产午夜精品久久久久久久久| 精品久久免费看| 福利一区二区| 亚洲中文字幕无码av永久| 欧美国产丝袜视频| 成人免费视频国产免费麻豆| 日韩av电影在线网| 欧美久久综合| 欧美乱大交做爰xxxⅹ小说| 亚洲第一精品自拍| 日韩一级特黄| 欧美亚洲另类色图| 玉足女爽爽91| 97视频在线观看网站| 精品久久久久久一区| 精油按摩中文字幕久久| 日韩毛片一区二区三区| 蜜臀久久99精品久久久久久宅男 | 欧美亚洲tv|