在本周召開的GopherCon 2017上,Google Go的技術負責人Russ Cox做了關于Go的未來的主旨演講,請社區就該語言的下一個主要版本應該包含哪些內容提出建議。
Google在十年前開始發展Go語言,在5年前提供了第一個穩定版本1.0。目前的穩定版本是1.8.3,Google正在向社區開放,聽取下一個主要版本2.0應該包括哪些內容。
最近的一項研究評估,Go語言的開發者數量約為50萬。如果就編程語言向所有這些開發人員詢問他們想要什么,那么很可能得到一個很長的期望功能列表。但Google非常關心維護與現有Go代碼庫的兼容性,該代碼庫大致近似于1B LoC。雖然這表明該語言的成功,但是按照Cox的說法,它也是“Go 2的主要制約因素”。
Go 1承諾兼容性,讓開發人員放心,只要Go 1規范還存在,他們的程序將可以繼續編譯并正確運行?,F在,要設計的Go 2規范,存在破壞與1.x兼容的可能性。Cox認為需要謹慎選擇新特性。
Go 2必須帶動所有開發者[包括使用Go 1.x的開發者]。只有回報足夠豐富,我們才能要求他們放棄舊有習慣,來學習Go 2的新特性。
Go 2還必須兼顧所有現有的Go 1源代碼。 我們不能分裂Go生態系統。在混合型的項目中,用Go 2 寫的包中導入了用Go 1寫的包,或者相反的情況,這種情況必須要在多年的過渡期中正常運行。我們必須弄清楚如何做到這一點,自動化工具像go fix一定會發揮作用。
為了避免引起混亂,Google將新功能的數量限制為“兩到三個”,一定不超過五個“,”每一個變化都需要仔細的思考,規劃和工具化“。 這些功能不包括“允許使用更加口語化的標識符或添加二進制整型字面量”等輕微改變,因為“這些改變很容易實現”。 Cox談到了重大變化,例如“對錯誤處理的額外支持,或引入不可變或只讀值類型,添加某種形式的泛型或其他尚未被建議的重要主題。”
從Google的角度來看,Go 2的主要目標是“解決Go在可擴展性方面的重要不足”。Cox提到了生產期的擴展性(云環境中運行并發應用)和開發期的擴展性(大量的開發人員在一個較大的代碼庫上并行協作)。
大部分主題是介紹和解釋用于修改Go的五個步驟:
有關此過程的更多詳細信息,我們建議您閱讀博客文章Toward Go 2。有興趣為Go 2推薦新功能的用戶請參考GitHub上的關于該語言的Wiki。
查看英文原文:Google Discusses Go 2