Go 博客

Go 1.2 发布

Andrew Gerrand
2013 年 12 月 1 日

我们很高兴地宣布 Go 1.2 的发布,这是 Go 编程语言的最新稳定版本。

您可以从常规位置下载二进制分发版,如果您更喜欢从源代码编译,则应使用 releasego1.2 标签。

此次新版本发布距离 Go 1.1 于 5 月发布已近七个月,比 1.1 和 1.0 之间的 14 个月缩短了许多。我们预计未来主要版本之间的时间间隔将大致相当。

Go 1.2 包含了一些小的语言更改、对语言实现和工具的若干改进、一些性能提升,以及对标准库的许多新增(向后兼容的)更改。

请阅读发布说明了解所有详细信息,因为某些更改可能会影响现有(有 bug 的)程序的行为。以下是本次发布的亮点。

新的三索引切片语法增加了指定容量和长度的能力。这允许程序员传递一个切片值,该值只能访问底层数组的有限部分,这项技术以前需要使用 unsafe 包。

工具链的一个主要新功能是能够计算和显示测试覆盖率结果。有关详细信息,请参阅go testcover 工具文档。本周晚些时候,我们将发布一篇详细讨论此新功能的文章。

Goroutine 现在是抢占式调度的,调度器会在进入函数时偶尔被调用。这可以防止忙碌的 goroutine 使同一线程上的其他 goroutine 饿死。

goroutine 默认堆栈大小的增加应该可以提高某些程序的性能。(旧大小倾向于在性能关键部分引入昂贵的堆栈段切换。)另一方面,对堆栈大小操作系统线程数量的新限制应该可以防止行为不当的程序耗尽计算机的所有资源。(可以使用runtime/debug中的新函数来调整这些限制。)

最后,在对标准库的许多更改中,重要的更改包括新的encodingPrintf 格式字符串中的索引参数,以及对模板包的一些便捷的补充

作为此次发布的一部分,Go Playground 已更新至 Go 1.2。这也会影响使用 Playground 的服务,例如Go Tour和本博客。此次更新还增加了在沙箱中运行线程以及使用 osnetunsafe 包的能力,使其更接近真实的 Go 环境。

感谢所有为此次发布做出贡献的人,从提交错误报告的众多用户到提交了超过 1600 项核心更改的 116 (!) 位贡献者:您的帮助对本项目是无价的。谢谢!

这篇博文是Go Advent Calendar的第一篇,该日历是 Gopher Academy 从 12 月 1 日到 25 日每天发布的一系列文章。

下一篇文章:Cover 故事
上一篇文章:Go 中的文本规范化
博客索引