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"
- #6977 允许嵌入重叠的接口(overlapping interfaces)
- #32479 在 go vet 中对 string(int) 转换进行诊断
- #32466 采用加密准则
下一步
团队正在积极征求对这些提案的反馈意见. 他们希望看到用户在基于事实的情况下, 解释为什么提案可能在实践中不能很好地运作, 或者指出团队在设计中欠缺考虑的问题等. 对于仅包含个人意见的评论, 团队表示可以承认它们, 但无法以任何建设性的方式来解决这些问题.
最后, 如果没有充分的理由阻止这些提案进入试验阶段, 团队将会在 Go 1.14 的开发周期 (2019 年 8 月初开始) 中实现它们, 以便在实践中对其进行评估. 根据提案评估流程, Go 1.14 预计将在开发周期结束时 (2019 年 11 月初) 完成.
开源中国征稿啦!
开源中国 www.oschina.NET 是目前备受关注, 具有强大影响力的开源技术社区, 拥有超过 400 万的开源技术精英. 我们传播开源的理念, 推广开源项目, 为 IT 开发者提供一个发现, 使用, 并交流开源技术的平台.
来源: http://www.tuicool.com/articles/Bv6vu2m