2019年2月25日,Go编程语言团队发布Go 1.12。其中一些亮点包括对TLS 1.3的选择支持,改进的模块支持(准备成为Go 1.13中的默认设置),支持windows/arm和改进的macOS和iOS向前兼容性。
![154b629b1bbe0d819a0bbcf966d53e90.png](https://i-blog.csdnimg.cn/blog_migrate/9683d6a999972fbb4e10476b8490e125.jpeg)
Go 1.12在RFC 8446crypto/tls规定的包中添加了对TLS 1.3的选择支持。可以通过将值添加到环境变量来启用它。它将在Go 1.13中默认启用。
当GO111MODULE设置为时on,该go命令现在支持模块目录之外的模块感知操作,前提是这些操作不需要解析相对于当前目录的导入路径或显式编辑go.mod文件。命令,例如go get, go list和 go mod download表现为如果与最初为空的需求的模块中。在此模式下,go env GOMOD报告系统的空设备(/dev/null或NUL)。go下载和解压缩模块的命令现在可以安全地同时调用。模块cache(GOPATH/pkg/mod)必须驻留在支持文件锁定的文件系统中。
在系统兼容性方面:Go 1.12是FreeBSD 10.x支持的最后一个版本,已经达到使用寿命,Go 1.13将需要FreeBSD 11.2+或FreeBSD 12.0+;Go的新windows/arm端口支持在32位ARM芯片上运行Go on Windows 10 IoT Core,例如Raspberry Pi 3;Go现在支持POWER8体系架构(aix/ppc64)上的AIX 7.2及更高版本;Go 1.12是将在macOS 10.10 Yosemite上运行的最后一个版本,Go 1.13将需要macOS 10.11 El Capitan或更高版本。
在运行方面,Go 1.12提高了扫描的性能。这会在垃圾回收后立即减少分配延迟。Go运行时现在更积极地将内存释放回操作系统,特别是响应无法重用现有堆空间的大型分配。
还有,Go 1.12是最后一个支持二进制包的版本。