在经历了几个 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 语言最新特性与最佳实践,敬请关注。
评论