Go 1.4发布:支持Android,改进垃圾收集器

在Go 1.3发布6个月之后,Google宣布发布Go 1.4。Go 1.4正式支持Android原生开发,不过这方面的工作还处于繁重的开发之中。该版本还改进了垃圾收集器,语言方面也有少许变化。

InfoQ数月前曾报道过,Google的工程师正在为支持用Go语言开发原生Android应用而努力。随着Go 1.4的发布,向Android进行实验性移植的草案已经成为现实,Google的Go团队的工程师Andrew Gerrand介绍说,“仅使用Go代码编写简单的Android应用已经成为可能”。

对Android的支持是通过golang.org/x/mobile库实现的,其中包括用于生成语言绑定的包(支持从Java调用Go代码),还有用于创建一个完整的原生应用的包,再就是一些例子,以及到OpenGL的绑定。

值得一提的是,Google的计划并非是基于Go 提供完整的Android NDK,而只是支持用Go编写Android 应用的一部分。发布说明中提到:

提供的接口主要针对的是游戏。我们期望的是应用在整个屏幕上绘制(通过OpenGL,参见go.mobile/gl包),不会暴露平台屏幕管理基础设施的任何信息。在Android上,这意味着一个原生应用等价于iOS上一个单独的Activity(特别是NativeActivity) ,一个单独的UIWindow。触屏事件也可以通过这个包获得。当Android支持脱离预览版状态后,Android NDK支持的所有API都将通过一个Go包暴露出来。

此外,Andrew还提到:

在这一阶段,支持库仍然是刚刚起步,还处于繁重的开发之中。早期的使用者应该会遇到不少问题,我们也欢迎社区参与进来。

Go 1.4在改进垃圾收集器方面也做了很多工作,为将在后面的版本中唱主角的完全并发的收集器打下了基础。此外,现在的栈在必要时会重新分配,以保证连续性,并消除众所周知的“热栈分割(hot stack split)”问题。

工具方面也有改进,go 命令现在支持构建时生成源代码。Andrew提到,利用该特性,可用使用新的stringer工具为类型常量自动生成String方法。

最后,Go 1.4还对语言做了一些修改,它们是:

  • 新的for-range循环形式,支持用

代替

更多细节,请参考发布说明。

 

查看英文原文:New Go 1.4 Adds Support for Android, Improves Garbage Collection

你可能感兴趣的:(Go 1.4发布:支持Android,改进垃圾收集器)