[.com速译]作为Go语言的最新发布候选版本,Go1.8提供了对HTTP2Push的支持,同时还包含了更新的编译器后端用于提高代码效率。作为谷歌开源语言的下一个版本,Go1.8正逐渐走向通用阶段,其当前的发布候选版本已经对编译和HTTP进行了相关改进。1.8最终版将于今年2月正式发布。根据草稿说明,此候选版本包括对编译器后端的更新以提高代码效率。后端最初随64位x86系统的Go1.7一起发布,基于静态单一赋值(SSA)形式,旨在生成更高效的代码,并作为优化平台,例如消除边界检查。它目前适用于所有架构。“根据我们的基准测试,新后端能够在32位ARM系统上将CPU时间减少20%到30%,”该说明指出。“对于已经在Go1.7中使用SSA后端的64位x86系统,这种CPU占用空间减少了0%到10%。其他架构的性能提升可能更接近32位ARM系统的数字。”Go1.8还引入了一个新的编译器前端作为未来性能增强的基础,同时还通过消除“停止所有处理”堆栈重新扫描来减少垃圾收集暂停。根据发行说明,新版本还引入了对HTTP2Push的支持,其中net/http包可以基于处理程序发送HTTP/2服务器推送,服务器将响应HTTP请求。另外,hTTP服务器的关闭也可以通过Server/Shutdown和Server.Close方法的配合,以更“优雅”的方式完成。1.8版本支持Linux上的Mips32位架构,并为Server.Shutdown、database/sql和.net.resover等包提供更多上下文支持。Go的排序包还添加了一个方便的函数Slice,用于对给定的less函数片段进行排序。“在大多数情况下,这意味着不需要编写新的排序类型。”Go1.8中的运行时和工具都支持竞争互斥配置,它提供了互斥机制。本次升级的大部分变化集中在工具链、运行时和库级别。“对语言规范进行了两项微波更改,”发行说明指出。“与往常一样,该版本保持了对Go1的兼容性承诺,我们预计几乎所有的Go程序都将继续兼容并正常运行。”此外,新版本可以将值从一种类型转换为另一种类型,而忽略其Go标签。此外,语言规范现在只需要支持最多16位浮点常数指数。原标题:Go1.8goesforefficiencyandconvenience原作者:PaulKrill
