Go 博客

Go 1.2 发布

Andrew Gerrand
2013 年 12 月 1 日

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

您可以从 惯常位置 下载二进制发行版,或者如果您希望 从源代码编译,您应该使用 releasego1.2 标签。

这个新版本是在 5 月份 Go 1.1 发布后近七个月发布的,比 1.1 和 1.0 之间的 14 个月要短得多。我们预计未来主要版本之间会有类似的间隔。

Go 1.2 包括几个较小的语言更改、对语言实现和工具的若干改进、一些性能改进以及对标准库的许多添加和(向后兼容的)更改。

请阅读 发行说明 以获取所有详细信息,因为某些更改可能会影响现有(有缺陷)程序的行为。以下是发行说明的重点。

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

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

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

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

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

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

感谢所有帮助使这次发布成为可能的人,从提交错误报告的许多用户到 116 (!) 位贡献者,他们提交了对核心代码的 1600 多次更改:你们的帮助对项目至关重要。谢谢!

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

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