Go 博客

Go 1.7 发布

Chris Broadfoot
2016 年 8 月 15 日

今天,我们很高兴地宣布 Go 1.7 发布。您可以从下载页面获取它。此版本中有一些重大变化:针对IBM z 系统上的 Linux(s390x)的移植、编译器改进、添加了context包,以及对分层测试和基准测试的支持。

一个基于静态单赋值形式 (SSA) 的新编译器后端已在过去一年中开发。通过以 SSA 形式表示程序,编译器可以更容易地执行高级优化。这个新的后端生成更紧凑、更高效的代码,其中包括诸如边界检查消除公共子表达式消除之类的优化。我们在基准测试中观察到 5-35% 的加速。目前,新的后端仅适用于 64 位 x86 平台(“amd64”),但我们计划在将来的版本中将更多架构后端转换为 SSA。

编译器前端使用新的、更紧凑的导出数据格式,并更有效地处理导入声明。虽然这些跨编译器工具链的变化大多是不可见的,但用户已经观察到编译时间显着加快,二进制文件大小减少了 20-30%。

由于垃圾收集器速度加快以及标准库中的优化,程序应该运行得更快一些。具有许多空闲 goroutine 的程序将比 Go 1.6 中体验到更短的垃圾收集暂停。

在过去的几年里,golang.org/x/net/context包已被证明对许多 Go 应用程序至关重要。上下文在与网络、基础设施和微服务相关的应用程序(例如KubernetesDocker)中得到了很好的应用。它们使启用取消、超时和传递请求范围数据变得容易。为了在标准库中使用上下文并鼓励更广泛地使用,该包已从x/net存储库移动到标准库作为context包。对上下文的支持已添加到netnet/httpos/exec包中。有关上下文的更多信息,请参阅包文档和 Go 博客文章Go 并发模式:上下文

Go 1.5 引入了对“vendor” 目录的实验性支持,通过 GO15VENDOREXPERIMENT 环境变量启用。Go 1.6 默认启用了此行为,在 Go 1.7 中,此开关已删除,并且始终启用“vendor”行为。

Go 1.7 包含更多新增功能、改进和修复。在Go 1.7 发行说明中查找完整的更改集以及上述内容的详细信息。

最后,Go 团队想感谢所有为本次发布做出贡献的人。170 人为本次发布做出了贡献,其中包括 140 人来自 Go 社区。这些贡献范围从编译器和链接器的更改到标准库、文档和代码审查。我们欢迎贡献;如果您想参与进来,请查看贡献指南

下一篇文章:更小的 Go 1.7 二进制文件
上一篇文章:Go 1.6 发布
博客索引