Go 1.12中值得关注的几个变化
内容提要
Go 1.12版本于2月末发布,新增了go modules机制和对WebAssembly的支持,保持与Go 1的兼容性,并增加了对aix/ppc64和windows/arm的支持。优化了go modules的使用,简化了包获取过程,引入了go指示字段。Go 1.12是最后一个支持binary-only package的版本,运行时和标准库进行了小幅优化,增加了对TLS 1.3的支持。
关键要点
-
Go 1.12版本于2月末发布,新增了go modules机制和对WebAssembly的支持。
-
Go 1.12保持与Go 1的兼容性,并增加了对aix/ppc64和windows/arm的支持。
-
Go 1.12是最后一个支持binary-only package的版本,后续版本将不再支持。
-
Go 1.12对go modules的使用进行了优化,简化了包获取过程。
-
Go 1.12增加了go指示字段,用于指示模块所使用的Go版本。
-
运行时和标准库进行了小幅优化,增加了对TLS 1.3的支持,但默认不开启。
-
Go安装包中移除了go tour,预计将有更多非核心功能被移除以减小安装包体积。
-
在Go 1.12中,build cache成为必需,无法关闭。
延伸解读
Go 1.12的兼容性与可移植性
Go 1.12版本继续保持与Go 1的兼容性,确保旧代码能够顺利编译和运行。这对于维护遗留系统至关重要。同时,新增对aix/ppc64和windows/arm的支持,进一步提升了Go语言的可移植性,开发者可以在更多平台上使用Go进行开发。
Go Modules的优化与使用
Go 1.12对Go Modules进行了显著优化,简化了包获取过程,开发者在使用时不再需要显式创建go.mod文件。这一变化降低了使用门槛,提升了开发效率,尤其是在非GOPATH路径下的项目中,能够更方便地管理依赖。
对binary-only package的支持终止
Go 1.12是最后一个支持binary-only package的版本,未来版本将不再提供此功能。这意味着开发者需要考虑源码的分发问题,尤其是在商业环境中,可能需要寻找其他解决方案,如使用插件或共享库,以确保安全性和兼容性。
Build Cache的强制使用
在Go 1.12中,build cache成为必需,无法关闭。这一变化旨在提高编译效率,但也可能对某些开发者造成困扰,特别是那些习惯于关闭此功能的用户。因此,开发者需要适应这一新机制,以确保顺利编译和构建项目。
延伸问答
Go 1.12版本有哪些新特性?
Go 1.12版本新增了go modules机制和对WebAssembly的支持,同时保持与Go 1的兼容性。
Go 1.12如何优化了go modules的使用?
Go 1.12优化了go modules的使用,简化了包获取过程,并支持并发下载和解压操作。
Go 1.12对旧系统的支持情况如何?
Go 1.12是最后一个支持macOS 10.10和FreeBSD 10.x的版本,逐渐放弃对一些老版本系统的支持。
Go 1.12中对binary-only package的支持有什么变化?
Go 1.12是最后一个支持binary-only package的版本,后续版本将不再支持此功能。
Go 1.12中TLS 1.3的支持情况如何?
Go 1.12增加了对TLS 1.3的支持,但默认不开启,预计在Go 1.13中将成为默认开启功能。
Go 1.12中build cache的变化是什么?
在Go 1.12中,build cache成为必需,无法关闭,之前的GOCACHE=off设置将不再有效。