@Rays
2018-02-21T11:52:33.000000Z
字数 775
阅读 1707
语言开发
Go
摘要: Go最新的1.10版并未在语言层面做出任何重大变更,而是在工具链、Go运行时和标准库上做了一系列的改进。
作者: Sergio De Simone
正文:
Go最新的1.10版并未在语言层面做出任何重大变更,而是在工具链、Go运行时和标准库上做了一系列的改进。
Go 1.10中的一个重大改进是缓存了构建结果,同时可以更好地检测过期软件包。具体而言,Go不再依赖于文件的修改时间去判断该文件是否需要做重编译,而是根据文件的内容、构建标志以及存储在编译后软件包中的元数据做出重编译的决策。这样,没有必要再指定原先用于强制重构建的“-a”标识。缓存构建包意在进一步优化构建时间,特别是当开发人员在一组构建标识或源代码版本和分支之间来回切换时。
与缓存构建类似,现在go test
命令也对成功测试的结果做缓存。一旦go test
检测到当前测试的可执行文件和命令行参数与上一次运行测试中所使用的匹配,那么命令将只输出缓存的测试结果。
通过允许嵌套调用LockOSThread和UnlockOSThread,Go 1.10运行时已可安全操作Linux命名空间。这意味着Goroutines现在可用于容器,排除了一些影响先前Go版本的障碍。
此外,通过在更长时间跨度上使用更小部分的CPU,Go运行时改进了垃圾回收的分配延迟,同时不会对整体CPU消耗产生影响。
还应指出的是,Go的性能受益于垃圾回收的改进、标准库的优化,以及更好的代码生成。
根据Go团队的说法,主版本号如预期一样并没有发生变化,Go 1.10可与大部分使用先前1.x版本编译的程序保持兼容。
在Go 1.10中还引入了大量的改进,在此无法一一列举。完整细节可查看官方的发行说明。