國內多個庫被 rsc 釘上 Go 恥辱柱。。。
大家好,我是煎魚。
這還是比較突然的,下午正努力打工。國內社區羣裏突然就鬧騰起來了。
仔細一看,原來是 Go 核心團隊負責人 rsc,又冷不丁搞大招 😅。他直接把國內好幾個知名庫給直接釘上了 Go 源碼庫的恥辱柱上了。
如下圖所示:
![](https://img1.headline01.com/images/fc/2c/fc2ce03c3f25b10a8ce292b5c6930f69b08d9d11.jpg?wx_fmt=jpeg&from=appmsg)
相關的源碼地址:src/runtime/malloc.go[1],直接寫在註釋裏了。
誘發這個事情的原由是:因爲和新版本 Go1.23 不兼容,最新的版本不允許 //go:linkname
指向內部符號,包括 runtime 包。rsc 在相關 issues 中直言這些包過度使用 //go:linkname
,對此不是很滿意。
本次負責相關的同學在測試 go 1.23rc1
的 Homebrew/homebrew-core#175310
時,發現了以上提到的庫的報錯。
![](https://img1.headline01.com/images/56/dd/56dd3bb336c150f6ab3ae88e40bc0d7c347f1475.jpg?wx_fmt=jpeg&from=appmsg)
直接關聯提出多個 issues,表示 Go 1.23 不再允許 //go:linkname * runtime.*
的鏈接指令,要求儘快整改:
![](https://img1.headline01.com/images/c3/64/c364a2a8489a5dfd912bf93c0b04cb9693926b6c.jpg?wx_fmt=jpeg&from=appmsg)
這波操作,感覺 rsc 還是很猛的。有種突然被糊了一臉的感覺。直接把你標註上核心代碼裏,倒逼你的排期要你馬上整改。
但是我深入進去看了下相關回復,rsc 又比較 “友好”。似乎又沒那麼急:
![](https://img1.headline01.com/images/15/01/1501840c9befd833718b05b0877082bb5aada296.jpg?wx_fmt=jpeg&from=appmsg)
rsc:“bytedance/sonic 被廣泛使用,我們希望在不做改動的情況下保持其正常工作,當然我們也很樂意看到將來這些鏈接名稱被清理掉。我們嘗試列出 bytedance/sonic 需要的所有符號。但看起來我們可能漏掉了幾個?如果您能確定我們漏掉了哪一組名稱,並在 golang/go 中提出問題,我將不勝感激。謝謝!”
依我看,大可不必這麼着急。Go 核心團隊可以耐心些,多留點修改時間給大家的。適應和測試新版本也是需要時間的。(說好的 Go1 兼容性保障呢。。。)
推薦閱讀
10 個提高生產力的 Go 小技巧 爲什麼 Go 不學 Rust 用 ? 做錯誤處理? Go 未來方向:標準庫 v2 改進的指導原則
src/runtime/malloc.go: https://github.com/golang/go/blob/master/src/runtime/malloc.go#L969C1-L980C27
關注和加煎魚微信,
一手消息和知識,拉你進技術交流羣👇
![](https://img1.headline01.com/images/06/72/0672d790e939d003c6c73b2c06be4aeff0afa237.jpg?wx_fmt=png)
你好,我是煎魚,出版過 Go 暢銷書《Go 語言編程之旅》,再到獲得 GOP(Go 領域最有觀點專家)榮譽,點擊藍字查看我的出書之路。
日常分享高質量文章,輸出 Go 面試、工作經驗、架構設計,加微信拉讀者交流羣,和大家交流!
原創不易 點贊支持