成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Go 負(fù)責(zé)人說(shuō)以后不會(huì)有 Go2 了

開(kāi)發(fā) 前端
整體上 rsc 對(duì)破壞 Go1 兼容性做了很長(zhǎng)時(shí)間規(guī)劃的回溯和規(guī)劃,釋出了一大堆手段,例如:GODEBUG、go.mod 版本約束等。

大家好,我是煎魚(yú)。

最近 Go 核心團(tuán)隊(duì)負(fù)責(zé)人 @Russ Cox(下稱:rsc)專門寫了一篇文章《Backward Compatibility, Go 1.21, and Go 2[1]》為 Go 這門編程語(yǔ)言的 Go1 兼容性增強(qiáng)和 Go2 的情況說(shuō)明做詮釋和宣傳。

今天希望能夠幫助你獲悉 Go 未來(lái)的規(guī)劃、方向以及 rsc 的思考。

Go1 破壞兼容性的往事

新增結(jié)構(gòu)體字段

第一個(gè)案例,比較經(jīng)典。在 Go1 的時(shí)候,這段代碼是可以正常運(yùn)行的。如下演示代碼:

package main

import "net"

var myAddr = &net.TCPAddr{
    net.IPv4(18, 26, 4, 9),
    80,
}

但在 Go1.1,這段代碼就跑不起來(lái)。必須要改成如下代碼:

var myAddr = &net.TCPAddr{
    IP:   net.IPv4(18, 26, 4, 9),
    Port: 80,
}

因?yàn)樵诋?dāng)時(shí)的新版本中,對(duì) net.TCPAddr 新增了 Zone 字段。原先的未聲明值對(duì)應(yīng)字段的方式就會(huì)出現(xiàn)一些問(wèn)題。

后續(xù)在新版本的規(guī)范中,官方直接對(duì)標(biāo)準(zhǔn)庫(kù)提交的代碼增加了要求,賦值時(shí)必須聲明字段名。以此避免該問(wèn)題的產(chǎn)生。

改進(jìn)排序/壓縮的算法實(shí)現(xiàn)

第二個(gè)案例,Go1.6 時(shí),官方修改了 Sort 的排序?qū)崿F(xiàn),使得運(yùn)行速度提高了 10% 左右。以下是演示代碼,將根據(jù)名稱長(zhǎng)度對(duì)顏色列表進(jìn)行排序并輸出結(jié)果:

colors := strings.Fields(
    `black white red orange yellow green blue indigo violet`)
sort.Sort(ByLen(colors))
fmt.Println(colors)

一切聽(tīng)起來(lái)是那么的美好。

真實(shí)世界是改變排序算法通常會(huì)改變相等元素的排序方式。導(dǎo)致了 Go1.5 和 Go1.6 所輸出的結(jié)果不一致:

Go 1.5:  [red blue green white black yellow orange indigo violet]
Go 1.6:  [red blue white green black orange yellow indigo violet]

按照順序排序后,結(jié)果集的差異點(diǎn)在于:

  • Go1.5 返回 green, white, black。
  • Go1.6 返回 white, green, black。

如果說(shuō)程序依賴了結(jié)果集的輸出順序,這將是一個(gè)影響不小的兼容性破壞。

第三個(gè)案例,類似的還有在 Go1.8 中,官方改進(jìn)了 compress/flate 的算法,達(dá)到了在 CPU 和 Memory 沒(méi)有什么明顯變化下,壓縮后的結(jié)果集更小了。聽(tīng)起來(lái)是個(gè)很好的成果。

但實(shí)際上自己內(nèi)部卻翻車了,因?yàn)?Google 內(nèi)部有一個(gè)需要可重現(xiàn)歸檔構(gòu)建的項(xiàng)目,依賴了原有的算法。最后自己 fork 了一份來(lái)解決。

Go1.21 起增強(qiáng)兼容性(GODEBUG)

從上面的部分破壞兼容性示例來(lái)看,可以知道 Go 官方也不是刻意破壞的。但又存在必然要修改的各種原因和考量。

為此在 Go1.21 起,正式輸出了 GODEBUG 的機(jī)制,相當(dāng)于是開(kāi)了個(gè)官方 “后門” 了。將其作為破壞性變更后的門把手。

允許設(shè)置 GODEBUG,來(lái)開(kāi)關(guān)新功能特性。例如以下選項(xiàng):

  • GODEBUG=asyncpreemptoff=1:禁用基于信號(hào)的 Goroutine 搶占,這偶爾會(huì)發(fā)現(xiàn)操作系統(tǒng)的錯(cuò)誤。
  • GODEBUG=cgocheck=0:禁用運(yùn)行時(shí)的 CGO 指針檢查。
  • GODEBUG=cpu.<extension>=off:在運(yùn)行時(shí)禁止使用某個(gè)特定的 CPU 擴(kuò)展。

也會(huì)根據(jù)根據(jù) go.mod 中的 Go 版本號(hào)來(lái)設(shè)置對(duì)應(yīng) GODEBUG,以提供版本所約定的 Go1 兼容性保障策略。

如果對(duì)這塊感興趣,可以查看《加大力度!Go 將會(huì)增強(qiáng) Go1 向后兼容性》,有完整的增強(qiáng)兼容性的規(guī)范說(shuō)明。

Go2 的情況和規(guī)劃

Go 官方(via @rsc)正式回答了之前畫的餅,也就是什么時(shí)候可以看到 Go2 的規(guī)范推出,打破 Go1 程序?

答案是永遠(yuǎn)不會(huì)。從與過(guò)去決裂、不再編譯舊程序的意義上來(lái)說(shuō),Go 2 永遠(yuǎn)不會(huì)出現(xiàn)。從 Go 在 2017 年開(kāi)始對(duì) Go 1 進(jìn)行重大修訂的意義上來(lái)說(shuō),Go 2 已經(jīng)發(fā)生了。

簡(jiǎn)而言之,透露出來(lái)的意思是:硬要說(shuō)的話,Go2 已經(jīng)套殼 Go1 上市了。

在未來(lái)規(guī)劃上,不會(huì)出現(xiàn)破壞 Go1 程序的 Go2。工作方向會(huì)往將加倍努力保證兼容性的基礎(chǔ)上,開(kāi)展新工作。

總結(jié)

整體上 rsc 對(duì)破壞 Go1 兼容性做了很長(zhǎng)時(shí)間規(guī)劃的回溯和規(guī)劃,釋出了一大堆手段,例如:GODEBUG、go.mod 版本約束等。

從而引導(dǎo)了 Go2 直接可以借殼上的方向,也更好兌現(xiàn)了 Go1 兼容性保障的規(guī)范承諾。單從這方面來(lái)講,還是非常的深思熟慮的。

也可能會(huì)有同學(xué)說(shuō),看 Go 現(xiàn)在這樣,說(shuō)不定下次就變了。這可能比較難,其實(shí) rsc 才上任做團(tuán)隊(duì)負(fù)責(zé)人沒(méi)幾年,工作履歷上和其他幾位骨干大佬在 Google 已經(jīng)有非常長(zhǎng)年的在職經(jīng)驗(yàn)了。

圖片圖片

我目測(cè)一時(shí)半會(huì)是不會(huì)變的了。

想變,得等 Go 核心團(tuán)隊(duì)這一班子換了才有可能了。阻力也會(huì)很多,因?yàn)樯鐓^(qū)人多,一般會(huì)比較注重規(guī)范。

責(zé)任編輯:武曉燕 來(lái)源: 腦子進(jìn)煎魚(yú)了
相關(guān)推薦

2023-01-27 23:14:26

Go2兼容性Go1

2022-07-25 19:48:47

Go

2024-08-26 08:55:19

2020-12-10 10:20:32

CentOS 8RHELLinux

2012-12-13 11:12:24

戴爾

2009-04-17 15:24:20

人生撤銷耍賴

2022-09-05 08:55:15

Go2提案語(yǔ)法

2009-07-16 08:19:46

魔獸網(wǎng)易

2015-11-16 10:16:56

技術(shù)蛻變創(chuàng)業(yè)

2014-05-21 16:04:38

面試面試規(guī)則

2022-07-19 14:23:47

谷歌GO

2020-12-08 06:21:51

Go2語(yǔ)言Go1

2013-04-19 09:17:28

Internet2大數(shù)據(jù)SDN

2013-04-23 11:32:32

Internet2大數(shù)據(jù)SDN

2013-08-22 10:37:59

2015-06-17 15:54:42

2012-03-11 15:35:53

Android

2009-03-05 09:27:31

2011-09-26 10:38:11

Windows Ser開(kāi)發(fā)

2013-04-17 10:56:10

ONFOpenDayligh標(biāo)準(zhǔn)協(xié)議
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产伦精品一区二区三区照片91 | 婷婷色成人 | 你懂的av| 美女福利网站 | 成人av色| 91精品国产91久久综合桃花 | 亚洲欧洲成人av每日更新 | 伊人成人免费视频 | 91久久北条麻妃一区二区三区 | 午夜影院操 | 久久国产欧美日韩精品 | 能看的av| 99精品视频一区二区三区 | 国产一区二区影院 | 亚洲精品白浆高清久久久久久 | 成人日b视频| 精品一区二区三区免费毛片 | 国产毛片久久久久久久久春天 | 中文区中文字幕免费看 | 免费网站国产 | sese视频在线观看 | 色桃网| 国产欧美一区二区三区另类精品 | 在线视频99| 伊人春色在线观看 | 国产玖玖 | 九九热国产精品视频 | 午夜寂寞福利视频 | 欧美一级在线观看 | av一二三区| 在线观看www高清视频 | 国产精品观看 | 粉嫩一区二区三区四区公司1 | 成人av一区二区三区 | 久久99一区二区 | 日日操操| 色www精品视频在线观看 | 91在线一区 | 日本久久网 | 三区在线 | 国产美女精品 |