Go 1.6 正式发布

未匹配的标注

本文为官方 Go Blog 的中文翻译,详见 翻译说明

Andrew Gerrand
2016 年 2 月 17 日

今天我们发布了 Go 版本 1.6, 这是 Go 的第七个主要稳定版本. 您可以立即从 下载页面 上获取它. 尽管六个月前 Go 1.5 的发布 包含了重大的实现更改, 但此版本更具增量性.

最重大的变化是对 net/http 程序包 中的 HTTP/2 的支持. HTTP/2 是一种新协议, 是 HTTP 的后续协议, 已经被浏览器供应商和主要网站广泛采用. 在 Go 1.6 中, 使用 HTTPS 时, 服务器和客户端均默认启用对HTTP/2 的支持 (golang.org/doc/go1.6#http2), 带来 好处, 适用于各种 Go 项目, 例如流行的 Caddy Web 服务器.

模板包学习了一些新技巧, 它们支持 在模板操作周围修剪空格 产生更干净的模板输出, 并引入了 {{block}} 操作, 可用于创建基于其他模板的模板. 新模板示例程序 演示了这些新功能.

Go 1.5 引入了 实验支持, 用于由环境变量启用的 "vender" 目录. 在 Go 1.6 中, 此功能现已 默认启用. 包含未按照新功能使用的名为 "vendor" 的目录的源树将需要进行更改, 以防止构建中断 (最简单的解决方法是重命名目录).

运行时增加了轻量, 尽力而为的检测并发滥用地图的功能. 与往常一样, 如果一个协程正在写入 map, 则其他协程不应同时读取或写入 map. 如果运行时检测到这种情况, 它将打印诊断并使程序崩溃. 找出更多有关该问题的最佳方法是在 竞态检测器 下运行该方法, 它将更可靠地识别并提供更多详细信息.

运行时也改变了打印程序结束恐慌的方式. 现在, 它仅打印紧急恐慌例程的堆栈, 而不是所有现有的例程. 可以使用 GOTRACEBACK 环境变量或通过调用 debug.SetTraceback 函数.

cgo 的用户应注意对 Go 和 C 代码之间共享指针的规则的重大更改. 这些规则旨在确保此类 C 代码可以与 Go 的垃圾回收器共存并在程序执行期间进行检查, 因此可能需要更改代码以避免崩溃. 有关详细信息, 可参阅 发行说明 cgo 文档.

编译器, 链接器和 go 命令具有类似于 -race 的新 -msan 标志, 并且仅在 linux/amd64 上可用, 该标志可与 [Clang MemorySanitizer](http: //clang.llvm.org/docs/MemorySanitizer.html). 这对于测试包含可疑 C 或 C++ 代码的程序很有用. 在使用新的指针规则测试 cgo 代码时, 您可能想尝试一下.

使用 Go 1.6 构建的 Go 程序的性能仍然与使用 Go 1.5 构建的程序相似. 垃圾回收的暂停时间甚至比 Go 1.5 少, 但是对于使用大量内存的程序而言, 这尤其明显. 关于编译器工具链的性能, 构建时间应类似于 Go 1.5.

sort.Sort 中的算法经过改进后运行速度提高了约10%, 但是这种更改可能会破坏期望相同但可区分元素的特定顺序的程序. 此类程序应改进其 Less 方法以指示所需的顺序, 或使用 sort.Stable 将输入顺序保留为相等的值.

而且, 当然, 还有更多的增加, 改进和修复. 您可以在全面的 发行说明 中找到所有这些内容.

为了庆祝发布, 全球各地的 Go 用户组 于 2 月 17 日举行了发布聚会. 在接下来的 24 小时内, Go贡献者将在线上在golang subreddit 上主持问答会议. 如果您对项目, 版本或总体上有疑问, 请 加入讨论.

感谢为发布做出贡献的所有人. 动起来吧.

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/go-blog/go1.6/6...

译文地址:https://learnku.com/docs/go-blog/go1.6/6...

上一篇 下一篇
Summer
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~