Go 博客

Go 1.2 发布

Andrew Gerrand
2013 年 12 月 1 日

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

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

这个新版本距离 Go 1.1 在五月发布仅约七个月,这比 1.1 和 1.0 之间的 14 个月短得多。我们预计未来主要版本之间会有相似的间隔。

Go 1.2 包括一些小的语言变化、对语言实现和工具的几项改进、一些性能提升以及标准库的许多新增功能和(向后兼容的)更改。

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

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

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

Goroutines 现在是抢占式调度的,即调度器在函数入口处偶尔被调用。这可以防止繁忙的 goroutines 饿死同一线程上的其他 goroutines。

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

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

作为版本发布的一部分,Go Playground 已更新到 Go 1.2。这也影响使用 Playground 的服务,例如Go 之旅和本博客。此次更新还增加了在沙箱内使用线程以及 osnetunsafe 包的能力,使其更像一个真实的 Go 环境。

感谢所有为促成此次发布提供帮助的人们,从提交错误报告的众多用户到为核心项目提交了 1600 多处更改的 116 位(!)贡献者:你们的帮助对项目来说是无价的。谢谢你们!

这篇博文是Go Advent Calendar 系列文章的第一篇,该系列文章由Gopher Academy 于 12 月 1 日至 25 日每日发布。

下一篇文章:封面故事
上一篇文章:Go 中的文本规范化
博客目录