Go 1.14专注于运行时,编译器

Go 1.14是谷歌开发的用于创建Docker,Kubernetes,Istio和其他云原生计算项目的下一代开源编程语言的下一版本,目前处于测试阶段,预计将于2月正式发布。 即将进行的Go升级改善了运行时和编译器。根据发行说明,1.14版也是最后一个支持32位Apple平台的版本。 通过Go运行时的改进,与直接调用deferred函数相比,大多数defer用例的性能得到了提高,几乎不产生任何开销。因此,现在可以将defer用于对性能要求很高的代码,而无需担心开销。 改进的Go运行时还使goroutines可以异步抢占。这意味着没有函数调用的循环不再可能使调度程序死锁或显着延迟垃圾回收。除Windows / arm,darwin / arm,js / wasm和plan9 / *以外的所有平台均支持此功能。 抢占式实现的结果之一是,Linux和MacOS上的Go 1.14程序将比早期版本接收更多的信号。使用诸如syscall或golang.org/x/sys/unix之类的软件包的程序将看到更多较慢的系统调用失败,并出现EINTR错误。这些程序将必须以某种方式处理这些错误,最有可能的方法是循环尝试再次调用系统。 此外,页面分配器效率更高,并且在GOMAXPROCS值较高时,导致较少的锁争用。这将是最显着的,因为对于并行且以高速率完成的大型分配,较低的延迟和较高的吞吐量。 同时,Go编译器将-d = checkptr添加为编译时选项,用于检查Go代码是否遵守不安全规范。指针安全规则是动态的。而且,编译器现在可以使用-json标志发出机器可读的关键优化日志,包括内联和消除边界检查。现在,详细的转义分析诊断将再次起作用,并且为编译器插入的模糊测试提供了实验支持。 Go 1.14中的其他更改和改进包括: 可以从golang.org下载Go 1.14。
Yorumlar
Yorum Gönder