在经历了几个Beta版本和一个rc版本之后,Go 1.5终于正式发布了。这是一个很重要的版本,实现方面有很多变化。因为这个版本仍然遵循Go 1兼容性承诺,开发团队预计,所有的Go程序应该都可以和以前一样编译和运行。二进制和源码包已提供下载。
在实现方面,最大的变化有以下几点:
编译器和运行时是完全用Go语言编写的(还有少量汇编),实现了自举。实现中不再涉及C语言,所以构建时也就不需要C编译器了。
并发的垃圾收集器,可能的情况下,垃圾收集可以和其他goroutine并发进行,可以极大降低响应时间。
默认情况下,Go程序运行时的GOMAXPROCS会被设置为可用的核数,之前默认为1。
对internal packages的支持扩展到所有repositories,不再是仅供核心包使用。
go命令对vendoring外部依赖提供了实验性支持。
引入了go tool trace命令,支持对程序的执行做细粒度的跟踪。
这些变化背后的具体细节,感兴趣的读者可以关注Tony Bai的博客文章《Go 1.5中值得关注的几个变化》。
更多细节,可以参考发布说明。
另外,Go 1.6也会继续改进GC,具体可以参考相关文档。因为Go 1.5的开发周期较长,Go 1.6的开发周期会比正常周期短一些,代码将于11月1日冻结,预计2016年2月1日发布。
在10月15日~17日的QCon上海2015,七牛云存储CEO许式伟将分享Go语言最新特性与最佳实践,敬请关注。