原文:https://blog.golang.org/go2-next-steps
現(xiàn)狀
不出意外的話歹篓,我們將會(huì)在2019年8月發(fā)布Go 1.13版本。這是第一次對(duì)Go語言進(jìn)行很實(shí)在的改變(而不是規(guī)范性的微調(diào))揉阎,這些改變很早以前就提出來庄撮,但是一直拖延著。
為了實(shí)現(xiàn)語言的改變毙籽,我們遵照“Go 2, here we come!”
文檔中的評(píng)估流程洞斯,先從 Go 2 proposals
(Go 2提案列表) 中挑選了一小部分可行的提案。
我們希望我們最初挑選的提案相對(duì)較小坑赡,并且?guī)缀鯖]有爭議烙如,以便于更大可能性去完成這些變更。這些“變更”的提案必須向后兼容才能最小化對(duì)模塊的破壞性毅否,這些模塊允許指定Go語言版本亚铁,而不是默認(rèn)構(gòu)建方式。簡而言之螟加,作為第一輪的變革徘溢,主要還是為了迭代積累經(jīng)驗(yàn)吞琐,而不是為了解決重大問題。
在原始提案列表中進(jìn)行了修剪和擴(kuò)展的提案:
- 通用Unicode標(biāo)識(shí)符general Unicode identifiers
- 二進(jìn)制整數(shù)文字binary integer literals
- 數(shù)字文本的分隔符separators for number literals
- 有符號(hào)整數(shù)移位計(jì)數(shù)signed integer shift counts
由于我們沒有及時(shí)制定“一般的Unicode標(biāo)識(shí)符”這個(gè)提案的具體的設(shè)計(jì)文檔然爆,因此我們沒有對(duì)它進(jìn)行修整站粟。“二進(jìn)制整數(shù)文字”的提案得到了顯著擴(kuò)展曾雕,并對(duì)Go的數(shù)字文本語法進(jìn)行了全面的改革和現(xiàn)代化奴烙。我們?cè)阱e(cuò)誤檢查中添加了Go 2草案設(shè)計(jì)方案,該提案已被部分接受剖张。
經(jīng)過Go 1.13的這些初步變化之后切诀,現(xiàn)在是時(shí)候期待Go 1.14,并確定我們接下來要解決哪些問題搔弄。
Go 1.14的相關(guān)提案
不忘初心幅虑,Go語言目前的目標(biāo)與2007年相同:使軟件開發(fā)規(guī)模化肯污。然而“包版本管理”翘单、“錯(cuò)誤處理機(jī)制”和“泛型”這三大問題阻礙了Go語言的發(fā)展吨枉。
隨著Go module的支持越來越強(qiáng)大蹦渣,我們解決了包及包版本的管理,于是三大問題中就剩下了“錯(cuò)誤處理”和“泛型”貌亭。
我們一直在努力解決這兩個(gè)問題柬唯,并在去年的丹佛GopherCon上展示了草圖設(shè)計(jì)
draft designs,并一直迭代圃庭。
在錯(cuò)誤處理方面锄奢,我們發(fā)布了一個(gè)具體的、經(jīng)過重大修改和簡化的提案(下文中會(huì)提到)剧腻。
在泛型方面拘央,我們還在努力中。在今年的圣地亞哥GopherCon上發(fā)表了一篇與之相關(guān)的談話
(“Generics in Go” by Ian Lance Taylor) coming up 但是我們還沒有具體的相關(guān)提案书在。
我們也希望能繼續(xù)完成一些小改進(jìn)灰伟。針對(duì)Go1.14版本,我們挑選了以下一些提案:
#32437. 內(nèi)建的錯(cuò)誤處理函數(shù), “try” (design doc).
這是一個(gè)改進(jìn)錯(cuò)誤處理機(jī)制的具體提議儒旬。這個(gè)提議向后兼容性很弱栏账,但是我們希望通過這個(gè)提議能夠大大改善錯(cuò)誤處理的方式。這個(gè)提議已經(jīng)吸引了大量的意見反饋栈源,因此不太容易跟進(jìn)挡爵。我們建議從初始評(píng)論initial comment 開始,以便于快速了解概述甚垦,然后再閱讀詳細(xì)的設(shè)計(jì)文檔茶鹃。這個(gè)初始評(píng)論initial comment 包括幾個(gè)鏈接涣雕,這幾個(gè)鏈接是迄今為止的反饋的摘要。如果你想提交反饋前计,在提交之前胞谭,請(qǐng)遵守反饋建議(請(qǐng)參閱下面的“后續(xù)步驟”部分)
#6977. 允許嵌套接口 (design doc).
允許嵌套接口是一個(gè)老提案,并且是一個(gè)向后兼容的提案男杈。
#32479 go vet
中診斷 string(int)
轉(zhuǎn)換.
在Go語言早期丈屹,為了方便引入了 string(int)
轉(zhuǎn)換,然而這種方式很容易讓新手混淆(string(10)
轉(zhuǎn)換后是"\n"
伶棒,而不是"10"
)并且這種轉(zhuǎn)換方式在當(dāng)今unicode/utf8
包可用的情況下不合理旺垒。然而,刪除這種轉(zhuǎn)換會(huì)導(dǎo)致不向后兼容肤无,因此我們提議先使用vet
診斷錯(cuò)誤先蒋。
#32466 采用加密原則 (design doc).
這是對(duì)我們希望采用的加密庫的一組設(shè)計(jì)原則的反饋。另請(qǐng)參閱crypto/tls
中關(guān)于刪除SSLv3 支持的提議.
后續(xù)步驟
我們正在積極征求關(guān)于這些提案的反饋意見宛渐。我們特別想了解的是基于事實(shí)的證據(jù)竞漾,請(qǐng)?jiān)诜答佒姓f明為什么提案可能在實(shí)踐中不能很好地運(yùn)作,或者我們可能在設(shè)計(jì)中遺漏的問題窥翩。
如果支持提案业岁,列舉出令人信服的例子也非常有用。
另一方面寇蚊,請(qǐng)不要發(fā)布僅包含針對(duì)個(gè)人因素的問題:我們可以理解笔时,但我們無法以任何建設(shè)性的方式解決。
在發(fā)布反饋之前仗岸,請(qǐng)花點(diǎn)時(shí)間認(rèn)真閱讀詳細(xì)的設(shè)計(jì)文檔和之前的別人提出的反饋或反饋摘要允耿。特別是這些提案在經(jīng)過了長期討論后,您的關(guān)注的問題可能已在早期的評(píng)論中提出并進(jìn)行了討論扒怖。
不出意外较锡,我們計(jì)劃在Go 1.14版本中(2019年8月初)開始實(shí)施所有這些提案,以便在實(shí)踐中對(duì)它們進(jìn)行評(píng)估(實(shí)踐是檢驗(yàn)一切的真理)盗痒。根據(jù)提案評(píng)估流程蚂蕴,最終決定將在開發(fā)周期結(jié)束時(shí)(2019年11月初)完成。
感謝您幫助Go成為更好的語言积糯!