go编译源码-Go 1.18 即将推出! 支持子类、性能优化...

《聊聊IT》是机械工业出版社旗下的IT专业信息与服务平台,致力于帮助读者在广阔的IT领域掌握更专业、实用的知识和技能,快速提升职场竞争力。点击红陌陌关注我们迅速地!

转载自 | OSC开源社区(ID:oschina2013)

文字|

Go 1.17 发布七个月后,Go 1.18 来了! Go 1.18 是一个包含大量新功能的版本go编译源码,包括语言本身(泛型)有史以来最大的变化、工具链实现、运行时和库更改以及性能改进。

与往常一样,这个版本保持了 Go 1 的兼容性承诺:几乎所有 Go 程序都继续像以前一样编译和运行。 让我们来看看新版本的一些主要功能:

通用的

以下是 Go 1.18 中对泛型最显着的更改的列表:

有三个实验包使用可能有用的基类go编译源码,它们位于 x/exp 存储库中; 但它们的 API 并不包含在 Go 1 兼容性承诺中:

当前的类库实现具有以下已知限制:

泛型代表了 Go 生态系统的巨大变化。 虽然支持该库的几个核心工具已经正式更新,但仍有大量工作要做。 其余的工具、文档和库需要一些时间才能跟上这种语言的变化。 另外,官方公告中有一段话:

(虽然子类做了,但是很可能有bug,不建议在生产中使用)

模糊测试

编译器错误修复 端口 AMD64

Go 1.18引入了新的GOAMD64环境变量,该变量在编译时选择AMD64架构的最低目标版本。 允许的值为v1、v2、v3或v4,默认为v1。

RISC-V

Linux 上的 64 位 RISC-V 架构(linux/riscv64 端口)现在支持 c-archive 和 c-shared 构建模式。

Linux

Go 1.18 需要 Linux 内核版本 2.6.32 或更高版本。

视窗

windows/arm和windows/arm64端支持非协作占用,有望解决调用Win32函数时遇到的一些会长时间阻塞的细微bug。

iOS系统

Go 1.18 现在需要 iOS 上的 iOS 12 或更高版本(ios/arm64 端口)以及在基于 AMD64 的 macOS(ios/amd64 端口)上运行的 iOS 模拟器; 对早期版本的支持已停止。

自由BSD

Go 1.18 是支持 FreeBSD 11.x 的最后一个版本,Go 1.19 需要 FreeBSD 12.2+ 或 FreeBSD 13.0+。

性能改进

由于 Go1.17 中的寄存器 ABI 调用约定已扩展到 RM64 / Apple M1 / PowerPC 64 架构,因此 Go1.18 对这些架构的 CPU 性能提升了高达 20%。

Go 1.18 版本还包含许多其他更新,完整列表可以在发布公告中找到。