Google 关于 Go 2 的讨论

在本周召开的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规范还存在,他们的程序将可以继续编译并正确运行。现在,要设计的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的五个步骤:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券