【51CTO.com快译】作为Go语言的最新候选发布版,Go 1.8提供HTTP2 Push支持能够,同时亦包含一套经过更新的编译器后端用以提升代码效率。
作为谷歌开源语言的下一版本,Go 1.8正逐步走向通用阶段,其目前的候选发行版对编译及HTTP进行了相关改进。1.8最终版本将于今年2月正式发布。
根据草案说明,此次候选发行版对编译器后端进行更新以提升代码效率。这套最初随Go 1.7发布且面向64位x86系统的后端基于静态单一指派(简称SSA)形式,旨在生成效率更高的代码并作为平台实现边界检查消除等优化效果。其目前已经可用于全部架构。
“根据我们的基准测试,新后端能够在32位ARM系统上将CPU时间降低20%到30%,”这份说明指出。“对于已经在Go 1.7中使用SSA后端的64位x86系统,这一CPU资源占用量削减在0%到10%之间。其它架构的性能提升可能更接近于32位ARM系统上的数字。”
Go 1.8版本还引入了一套新的编译器前端,以作为未来性能增强的实现基础,其同时亦可通过消除“停止所有处理”堆栈重扫描缩短垃圾收集暂停时间。
根据此次发布说明,新版本还引入了HTTP2 Push支持,其中net/http软件包能够立足处理程序发送HTTP/2服务器推送,并由该服务器响应HTTP请求。另外,hTTP服务器关闭亦可通过Server/Shutdown以及Server.Close方法相配合以更为“优雅”的方式完成。
1.8版本支持Linux上的Mips 32位架构,且可为Server.Shutdown、database/sql以及.net.resover等软件包提供更多上下文支持。Go的排序包还增加了一项便捷的函数,即Slice,用于对给定less函数片段进行排序。“在大多数情况下,这意味着不再需要写入一条新的排序类型。”Go 1.8中的运行时与工具皆支持争用互斥锁配置,即可提供互斥锁机制。
此次升级的大部分变更集中在工具链、运行时以及库层面。“语言规范中出现了两项微波的变更,”版本说明指出。“与往常一样,此版本保持了对Go 1的兼容性承诺,我们预计几乎全部Go程序皆可继续得到兼容及正常运行。”另外,新版本还可将一项值由一种类型转换为另一种,且忽略其Go标签。再有,该语言规范现在仅要求支持最高16位浮点常量指数。
原文标题: Go 1.8 goes for efficiency and convenience
原文作者: Paul Krill
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】
原文 http://news.51cto.com/art/201701/528144.htm