Go 1.4 Beta 1 发布,12 月发布正式版本

阅读数:1399 2014 年 11 月 6 日

话题:语言 & 开发架构Go

Go 语言是由 Google 开发的一个开源项目,目的之一是为了提高开发人员的编程效率。近日,在 Go 1.3.3 发布一个月之后,Go 官方宣布 Go 1.4 Beta 1 版本发布。此版本在支持向后兼容的前提下重点多编译器和运行时进行了改进,并实现了不同架构处理器的支持等。值得关注的改进内容如下:

1、运行时

对运行时做了重大的改进,如垃圾收集器、并发处理、接口管理、maps 方法、slices 方法、字符串等使用 Go 语言进行了重写(原来大部分使用 C 语言编写),使得垃圾收集器可以扫描运行时的程序栈,以获得变量的精确信息,从而提高了垃圾收集器的精确性。垃圾收集器的精确性得到了提高,将不会存在非活跃引用对象而不被垃圾回收的情况了,从而减少了堆的大小(相对上一版本减少了 10%-30%)。程序栈不再进行分割,剔除了“hot split”问题,在不影响性能的情况下,连续栈的使用减少了栈的初始化大小,已从 8192 字节减少到了 2048 字节。另外,还修复了 1.3 版本中无效指针引起的运行时崩溃问题。

2、操作系统和服务器架构

支持运行 Android 系统的 ARM 处理器;支持运行 Plan9 系统的 AMD64 处理器;支持 Native Client (NaCl) ARM 处理器。

3、标准 lib

修复了 bufio.Scanner 包中 SplitFunc 方法的生成空 token 的 Bug;新的 go.sys 包替代了 syscall 包;重写了 encoding.gob 包,剔除了不安全的操作;net.http 包中的 Request 新增了 BasicAuth 方法;compress 包新增了 Reset 方法。另外,还对 crypto.tls、reflect、runtime 等包进行了改进。

除了以上主要的改进外,该版本还包括新增了用来生成构建时的源代码的“go generate”命令、为 Go 命令引入了定义“内部”包的新机制、对汇编语言实现的功能进行了优化等一些改进措施。

目前,该版本已提供下载。更多关于 Go 1.4 Beta 1 版本的更新内容请查看其发行说明。另外,根据 Go 的版本发布计划路线图,Go 1.4 最终版本计划于今年 12 月 1 日发布;Go 1.5 计划于 2015 年 6 月份发布,旨在减少垃圾收集器的延迟,从而使得 Go 语言更加能够满足广大用户对响应时间要求比较高的系统;Go 1.6 计划于 2015 年 12 月发布,该版本将会加入指针碰撞分配和分代复制收集技术。


感谢郭蕾对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。