精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产精品色在线| 美日韩中文字幕| 一区二区三区产品免费精品久久75| 亚洲一区亚洲二区| 欧美不卡视频在线观看| 国产一区二区三区不卡视频网站| 91成人影院| 国产电影精品久久禁18| 538国产精品一区二区免费视频| 国产精品815.cc红桃| 99热这里有精品| 欧美日韩美女在线| 亚洲日本理论电影| 日本免费网站在线观看| 日韩黄色免费网站| 欧美大片在线免费观看| 日本少妇高潮喷水xxxxxxx| 亚洲永久精品一区| 色综合狠狠操| 亚洲国产精品久久久久久| 久久婷婷国产91天堂综合精品| 3d玉蒲团在线观看| 国产午夜精品久久| 国产精品美女xx| 亚洲怡红院av| 免费视频一区| 欧美精品videosex性欧美| 超薄肉色丝袜一二三| 一本一道久久a久久| 欧美在线制服丝袜| 国产素人在线观看| 日本三级韩国三级欧美三级| 久久亚洲精品国产精品紫薇| 国产传媒一区二区三区| 欧美图片自拍偷拍| 手机在线免费av| 国产精品无人区| 国产精品三区四区| 精品人妻aV中文字幕乱码色欲 | 青草视频在线观看视频| 国产黄色免费大片| 青青草视频一区| 日韩av片免费在线观看| aaa人片在线| 亚洲日本久久| 欧美黑人狂野猛交老妇| 暗呦丨小u女国产精品| 日本道不卡免费一区| 亚洲精品视频久久| 亚洲天堂视频一区| 亚洲第一二三区| 亚洲精品电影网在线观看| 2018国产精品| 欧美日韩视频免费看| 亚洲va中文字幕| 毛片在线播放视频| 国产极品在线观看| 欧美午夜精品久久久久久浪潮 | 欧美久久婷婷综合色| 色婷婷狠狠18| 素人一区二区三区| 欧美日本一区二区| 亚洲综合伊人久久| 一本一道久久a久久| 欧美一区二区人人喊爽| 操人视频免费看| 日韩亚洲精品在线观看| 精品国产髙清在线看国产毛片| 国产免费一区二区视频| 人人澡人人添人人爽一区二区| 亚洲美女淫视频| 视频一区二区视频| 日韩欧美一起| 精品久久久久久久久久ntr影视| 久久久亚洲精品无码| 性xxxxfreexxxxx欧美丶| 色播五月激情综合网| 三级a在线观看| 亚洲91精品在线| 中文字幕免费观看| 经典三级在线一区| 国产精品对白一区二区三区| 亚洲av成人无码网天堂| 国产欧美日韩在线| 99精品一区二区三区的区别| 日韩经典av| 欧美丝袜美女中出在线| 一本色道久久亚洲综合精品蜜桃| 国产欧美88| 欧美精品一区二| 91l九色lporny| 天天综合久久| 91精品国产九九九久久久亚洲| 亚洲影院在线播放| 精品在线一区二区三区| 国产91精品入口17c| 囯产精品一品二区三区| 国产日韩视频一区二区三区| 日韩不卡视频一区二区| 浪潮色综合久久天堂| 欧美一区二区视频在线观看| 亚洲av无码一区二区三区网址 | 中文字幕一区在线播放| 精品一区二区三区免费| 久久66热这里只有精品| 老司机精品视频在线观看6| 午夜日韩在线观看| 国产又黄又猛的视频| 日韩欧美四区| 欧美久久精品午夜青青大伊人| 久久亚洲天堂网| 国产一区二区三区av电影| 久久精品日韩| 欧美理论电影| 制服丝袜在线91| 能免费看av的网站| 亚洲视频中文| 国产这里只有精品| 精品视频二区| 五月婷婷激情综合网| 五月天国产视频| 日韩国产在线| 日本成熟性欧美| 天堂在线视频免费| 高清在线不卡av| 艳色歌舞团一区二区三区| 中文字幕乱码中文乱码51精品| 日韩网站在线看片你懂的| 欧美成人另类视频| 亚洲男女自偷自拍| 黑人中文字幕一区二区三区| 午夜在线激情影院| 91精品国产入口| 欧美福利在线视频| 青青国产91久久久久久| 久久亚洲免费| 深夜av在线| 亚洲国产成人精品久久| 国产亚洲欧美精品久久久久久| 久久99国产精品麻豆| 亚洲欧美日韩精品久久久| 美女免费久久| 欧美日韩一级二级| 国产精品www爽爽爽| 日韩在线a电影| 日本在线免费观看一区| 欧美色999| 亚洲视频自拍偷拍| 91在线视频免费播放| 久久蜜桃一区二区| 热久久精品国产| 久久av超碰| 国产福利成人在线| 成人av电影观看| 欧美日韩精品久久久| 久久久免费看片| 久久精品国产网站| 亚洲综合欧美日韩| 国产色99精品9i| 色综合91久久精品中文字幕 | 国产视频精品久久久| 国产精品久久久久久99| 久久午夜免费电影| 日本人视频jizz页码69| 91亚洲国产成人久久精品| 欧美精品999| 天堂网www中文在线| 一本一道波多野结衣一区二区| 精品国产av无码| 毛片不卡一区二区| 欧美 另类 交| 99re8这里有精品热视频8在线| 亚洲欧洲黄色网| 糖心vlog精品一区二区| 中文字幕一区不卡| 漂亮人妻被中出中文字幕| 曰本一区二区三区视频| 国产精品无码专区在线观看| 成人影院在线观看| 亚洲爱爱爱爱爱| 天天干天天操天天操| 亚洲婷婷在线视频| 久久久久亚洲AV成人无码国产| 裸体一区二区| 精品一区二区三区国产| 丝袜美腿一区| xxav国产精品美女主播| 欧美一级特黄aaaaaa大片在线观看| 午夜伦欧美伦电影理论片| 欧美做受高潮6| 国内不卡的二区三区中文字幕| 成人免费播放器| 成人免费91| 97精品视频在线| 午夜免费福利在线观看| 精品久久人人做人人爰| 国产午夜无码视频在线观看| 亚洲欧美另类在线| 喷水视频在线观看| 精品一区二区三区在线视频| 精品丰满人妻无套内射| 日本久久精品| 国产一区二区免费电影| 欧美美女福利视频| 91av在线国产| 成人免费观看视频大全| 亚洲精品福利在线观看| 91精品国产色综合久久不8| 国产色综合一区| 午夜性福利视频| 青青草成人在线观看| 青青青青草视频| 羞羞答答成人影院www| 欧美日韩喷水| jizz国产精品| 91免费的视频在线播放| 欧美18—19sex性hd| 欧美劲爆第一页| 国产精品刘玥久久一区| 在线观看国产精品日韩av| 天天综合网天天综合| 日韩一区二区三免费高清| 国产乱码在线观看| 欧美性生交xxxxxdddd| 日韩免费一二三区| 亚洲日本护士毛茸茸| 91社区视频在线观看| 2023国产精品| 日本少妇xxxx| 国产91精品久久久久久久网曝门 | 久久久国产精品成人免费| 一区二区在线观看av| 国产乱子轮xxx农村| 国产欧美精品区一区二区三区 | 久久av中文| 韩日午夜在线资源一区二区| 日韩视频在线直播| 91影院未满十八岁禁止入内| 精品国产鲁一鲁****| 成人精品视频在线| 久久久久伊人| 成人中文字幕+乱码+中文字幕| 高清av一区二区三区| 国产精品日日摸夜夜添夜夜av| av日韩国产| 97热精品视频官网| 妞干网免费在线视频| 91sa在线看| 成人直播视频| 国产精品成人在线| 精品视频三区| 国产亚洲精品久久久| 人妻熟人中文字幕一区二区| 88xx成人免费观看视频库 | 男人的天堂免费| 国产一本一道久久香蕉| 久久精品一二三四| 国产精品主播直播| 日韩精品――色哟哟| 国产91高潮流白浆在线麻豆| 国产白袜脚足j棉袜在线观看| www..com久久爱| avav在线播放| 尤物精品在线| 欧美成人高潮一二区在线看| 国产亚洲一区在线| 中文字幕免费在线不卡| 91精品蜜臀一区二区三区在线| 男人天堂成人网| 激情欧美亚洲| 热久久精品国产| 久久99精品久久久| 亚洲AV无码久久精品国产一区| 盗摄精品av一区二区三区| 韩国无码一区二区三区精品| 国产亚洲欧美激情| 午夜爽爽爽男女免费观看| 一区二区三区加勒比av| 日韩电影中文字幕在线观看| 亚洲精品无码久久久| 日韩国产高清污视频在线观看| 国产中文字幕在线| 久久不射电影网| 三级在线看中文字幕完整版| 国产精品揄拍500视频| 综合欧美亚洲| 日本不卡一区二区三区在线观看| 午夜激情久久| 欧美 国产 综合| 精品亚洲成a人| 久久人妻少妇嫩草av无码专区 | 快she精品国产999| 中国 免费 av| 亚洲成人资源| 亚洲一级免费观看| 成人美女视频在线看| 亚洲成人黄色av| 亚洲综合色在线| 中国a一片一级一片| 精品捆绑美女sm三区| 91在线视频免费看| 91国内产香蕉| 精品中文字幕一区二区三区| 欧美精品一区在线| 欧美日韩网站| 日韩精品免费一区| 日韩电影免费一区| 中文字幕免费在线播放| 中文字幕亚洲不卡| 午夜精品一区二| 亚洲精品mp4| 香蕉久久aⅴ一区二区三区| 国产精品视频自在线| 西野翔中文久久精品字幕| av影院在线播放| 久久99国产精品久久99果冻传媒| 久久久久久久久久久国产精品| 一区二区日韩av| 国产精品系列视频| 日韩一级片网址| 在线日本中文字幕| 国产成人一区二| 日韩美女毛片| 99精品人妻少妇一区二区| 国产精品99久久久久久宅男| 国产在视频线精品视频| 一本一道综合狠狠老| 天天色棕合合合合合合合| 欧美成人黄色小视频| www.99在线| 成人午夜视频福利| 日韩一区二区三区四区在线| 亚洲综合视频网| 91片黄在线观看喷潮| 中文字幕在线视频日韩| 看黄网站在线观看| 国产精品扒开腿爽爽爽视频| 久久夜色精品国产噜噜av小说| 国产经典久久久| 国产麻豆91精品| 91九色丨porny丨极品女神| 欧美日韩午夜在线| 尤物网址在线观看| 国产精品第100页| 啪啪亚洲精品| 黄色免费网址大全| 欧美国产精品v| 亚洲无码精品国产| xvideos亚洲| 高清一区二区三区av| 日本女人高潮视频| 国产成人午夜电影网| 在线观看成人毛片| 日韩欧美高清一区| 天天射,天天干| 欧美亚洲成人xxx| 视频一区中文| 中文字幕永久视频| 18成人在线观看| 国产chinasex对白videos麻豆| 欧美精品一区三区| 蜜桃久久久久| 四虎永久在线精品无码视频| 国产欧美精品一区| 国产精品女同一区二区| 久久福利视频导航| 国产香蕉精品| 国产综合免费视频| 日本一区二区成人| 国产精品一区二区免费视频| 色综合色综合久久综合频道88| 一二三区视频在线观看| 国产亚洲欧美日韩日本| 一级特黄aaa| 欧美激情手机在线视频 | 欧美色999| 在线观看日本一区| 国产黄色精品网站| 日操夜操天天操| 亚洲视频在线观看| 狂野欧美xxxx韩国少妇| 可以看毛片的网址| 国产欧美一区在线| 99国产精品一区二区三区| 久久久这里只有精品视频| 猛男gaygay欧美视频| 国产视频1区2区3区| 一区二区三区国产豹纹内裤在线| 日韩欧美在线观看一区二区| 日韩三级成人av网| 香蕉免费一区二区三区在线观看| 日本网站免费在线观看| 日韩一区在线看| 手机在线不卡av| 国产欧美一区二区三区在线看| 好看的亚洲午夜视频在线| 国产毛片久久久久久久| 日韩一区二区在线观看| 精品成人av| 黄色大片中文字幕|