42

迈向Go 2的下一步

 4 years ago
source link: https://www.tuicool.com/articles/Bv6vu2m
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Go 2 又有进展了,近日 Go 团队在博客公布了关于 Go 2 下一步的计划。 根据此前的报道,Go 2 并非一个单独的重大更新版本,而是通过“增量(incremental)更新”的方式以逐渐抵达 "Go 2.0",所以期间的版本都能看到 Go 2 的影子。

JNfMz2y.jpg!web

当前状态

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"

  • #6977 允许嵌入重叠的接口(overlapping interfaces)

  • #32479 在 go vet 中对 string(int) 转换进行诊断

  • #32466 采用加密准则

下一步

团队正在积极征求对这些提案的反馈意见。 他们希望看到用户在基于事实的情况下,解释为什么提案可能在实践中不能很好地运作,或者指出团队在设计中欠缺考虑的问题等。 对于仅包含个人意见的评论,团队表示可以承认它们,但无法以任何建设性的方式来解决这些问题。

最后,如果没有充分的理由阻止这些提案进入试验阶段,团队将会在 Go 1.14 的开发周期(2019年8月初开始)中实现它们,以便在实践中对其进行评估。 根据提案评估流程,Go 1.14 预计将在开发周期结束时(2019年11月初)完成。

开源中国征稿啦!

开源中国 www.oschina.net 是目前备受关注、具有强大影响力的开源技术社区,拥有超过 400 万的开源技术精英。我们传播开源的理念,推广开源项目,为 IT 开发者提供一个发现、使用、并交流开源技术的平台。

现在我们开始对外征稿啦!如果你有优秀的技术文章想要分享,热点的行业资讯需要报道等等,欢迎联系开源中国进行投稿。 投稿详情及联系方式请参见: 我要投稿

i2AFZvM.gif


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK