Go團隊公佈關於Go 2下一步的計劃
Go 2又有進展了,近日Go團隊在博客公佈了關於Go 2下一步的計劃。根據此前的報導,所謂的Go 2並非一個單獨的重大更新版本,而是通過“增量(incremental)更新”的方式以逐漸抵達”Go 2.0″,所以期間的版本都能看到Go 2的影子。
當前狀態
Go 團隊表示正準備推出Go 1.13,有望在今年8 月初發布。經歷長時間的開發後,這會是首個包括對語言特性進行具體更改的重要版本,而不僅僅是針對規範的小調整。
為了實現這些變化,Go團隊從一小系列可行的提案開始,這些提案很大一部分來自GitHub中被標記為提案的 issue列表。此文講述過關於提案新的評估流程,團隊希望所選擇的提案對語言的改動較小,而且幾乎沒有爭議,這樣是為了保證經歷完全程後,最終能實現這些提案。另外,提案引起的變更必須向後兼容,以實現最小的破壞性。
總而言之,初始階段的變更不是為了解決重大問題,更多的是希望Go 社區重新活躍起來,並從新的流程中汲取經驗。
對於原始的提案列表—— 通用Unicode標識符、二進制整數字面量(binary integer literals)、用於數字字面量的分隔符和 signed integer shift counts,官方表示已採納部分並對它們進行了修改。如關於二進製字面量的提案,團隊已對其進行了顯著的擴展,並對Go的數字字面量語法進行全面和現代化的改進。
Go 團隊還將錯誤處理(error inspection) 添加到了Go 2 的草案設計提案中,該提案已被部分接受。
在Go 1.13 中,我們將能看到這些變化,不過官方表示現在關注的重點是Go 1.14,並確定接下來要解決的問題。
關於Go 1.14 的提案
Go團隊表示當前對Go語言的目標依舊和2007年的一致:成為一門使軟件開發更具伸縮性的語言。在這條路上,改進Go伸縮性的三大難題包括:包/版本管理、錯誤處理以及泛型。
不過隨著對Go module 的支持日益強大,團隊正在努力解決對包/版本管理支持的問題。所以現在主要剩下錯誤處理和泛型的問題亟需解決。
團隊一直在研究和它們相關的問題,並在去年的GopherCon大會上提出了設計草案。自那時起,團隊就一直在迭代和改進這些設計。對於錯誤處理,他們發布了一個詳細的、經過重大修改和簡化的草案。對於泛型,團隊表示已取得進展,今年還在GopherCon上進行了一場名為“Generics in Go”的演講(Ian Lance Taylor作為演講者),不過尚未達到具體的提案階段。
團隊希望給Go 語言帶去一些小的改進,所以為Go 1.14 選擇了以下這些提案:
- #32437 添加內置的Go錯誤檢查函數,”try” ( design doc )
- #6977 允許嵌入重疊的接口(overlapping interfaces) ( design doc )
- #32479 在
go vet
中對string(int)
轉換進行診斷 - #32466 採用加密準則( design doc )
下一步
團隊正在積極徵求對這些提案的反饋意見。他們希望看到用戶在基於事實的情況下,解釋為什麼提案可能在實踐中不能很好地運作,或者指出團隊在設計中欠缺考慮的問題等。對於僅包含個人意見的評論,團隊表示可以承認它們,但無法以任何建設性的方式來解決這些問題。
最後,如果沒有充分的理由阻止這些提案進入試驗階段,團隊將會在Go 1.14 的開發週期(2019年8月初開始)中實現它們,以便在實踐中對其進行評估。根據提案評估流程,Go 1.14 預計將在開發週期結束時(2019年11月初)完成。