國內多個庫被 rsc 釘上 Go 恥辱柱。。。

大家好,我是煎魚。

這還是比較突然的,下午正努力打工。國內社區羣裏突然就鬧騰起來了。

仔細一看,原來是 Go 核心團隊負責人 rsc,又冷不丁搞大招 😅。他直接把國內好幾個知名庫給直接釘上了 Go 源碼庫的恥辱柱上了。

如下圖所示:

相關的源碼地址:src/runtime/malloc.go[1],直接寫在註釋裏了。

誘發這個事情的原由是:因爲和新版本 Go1.23 不兼容,最新的版本不允許 //go:linkname 指向內部符號,包括 runtime 包。rsc 在相關 issues 中直言這些包過度使用 //go:linkname,對此不是很滿意。

本次負責相關的同學在測試 go 1.23rc1Homebrew/homebrew-core#175310 時,發現了以上提到的庫的報錯。

直接關聯提出多個 issues,表示 Go 1.23 不再允許 //go:linkname * runtime.* 的鏈接指令,要求儘快整改:

這波操作,感覺 rsc 還是很猛的。有種突然被糊了一臉的感覺。直接把你標註上核心代碼裏,倒逼你的排期要你馬上整改。

但是我深入進去看了下相關回復,rsc 又比較 “友好”。似乎又沒那麼急:

rsc:“bytedance/sonic 被廣泛使用,我們希望在不做改動的情況下保持其正常工作,當然我們也很樂意看到將來這些鏈接名稱被清理掉。我們嘗試列出 bytedance/sonic 需要的所有符號。但看起來我們可能漏掉了幾個?如果您能確定我們漏掉了哪一組名稱,並在 golang/go 中提出問題,我將不勝感激。謝謝!”

依我看,大可不必這麼着急。Go 核心團隊可以耐心些,多留點修改時間給大家的。適應和測試新版本也是需要時間的。(說好的 Go1 兼容性保障呢。。。)

推薦閱讀

  • 10 個提高生產力的 Go 小技巧
  • 爲什麼 Go 不學 Rust 用 ? 做錯誤處理?
  • Go 未來方向:標準庫 v2 改進的指導原則
參考資料
[1]

src/runtime/malloc.go: https://github.com/golang/go/blob/master/src/runtime/malloc.go#L969C1-L980C27


關注和加煎魚微信,

一手消息和知識,拉你進技術交流羣👇



你好,我是煎魚,出版過 Go 暢銷書《Go 語言編程之旅》,再到獲得 GOP(Go 領域最有觀點專家)榮譽,點擊藍字查看我的出書之路

日常分享高質量文章,輸出 Go 面試、工作經驗、架構設計,加微信拉讀者交流羣,和大家交流!


原創不易 點贊支持