8月2日 Go语言1.19正式发布,具体更新如下:
Go 1.19完善并改进了Go 1.18。我们将Go 1.19泛型开发的重点放在解决社区向我们报告的微妙问题和极端案例,以及重要的性能改进(一些泛型程序的性能提高了20%)。文档注释现在支持链接、列表和更清晰的标题语法。这一变化有助于用户编写更清晰、更可导航的文档注释,尤其是在具有大型API的包中。作为此更改的一部分,gofmt现在重新格式化文档注释,以将标准格式应用于这些功能的使用。Go的内存模型现在明确定义了sync/atomic包的行为。happens-before关系的形式化定义已经修改,以与C、C++、Java、JavaScript、Rust和Swift使用的内存模型保持一致。现有程序不受影响。随着内存模型的更新,sync/atomic包中也出现了新的类型,例如atomic.Int64 和 atomic.Pointer[T],使atomic values更容易使用。出于安全原因,os/exec包在路径查找中不再考虑相对路径。有关详细信息,请参阅软件包文档。golang.org/x/sys/execabs 的现有用途可以在仅使用 Go 1.19 或更高版本构建的程序中移回 os/exec。垃圾收集器增加了对软内存限制的支持,在新的垃圾收集指南中有详细讨论。该限制对于优化 Go 程序以在具有专用内存量的容器中尽可能高效地运行特别有用。当目标操作系统(GOOS)是任何类 Unix 系统时,新的构建约束 unix 就得到满足。如今,类 Unix 是指所有 Go 的目标操作系统,除了 js、plan9、windows 和 zos。此外,Go 1.19 还包括了各种性能和实现改进,包括动态调整初始 goroutine 堆栈以减少堆栈复制、在大多数 Unix 系统上自动使用附加文件描述符、在 x86-64 和 ARM64 上用于大型 switch 语句的跳转表,支持 ARM64 上的调试器注入函数调用,RISC-V 上的 register ABI 支持,以及在龙芯 64 位架构 LoongArch ( GOARCH=loong64) 上运行的 Linux 的实验性支持。原文链接:
https://go.dev/blog/go1.19
原文地址:https://www.toutiao.com/article/7127453792735756837/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。