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 )关注我们,并与我们的编辑和其他读者朋友交流。
评论