Go 1.19 正式发布!

2022年8月2日 236点热度 0人点赞 0条评论
点击关注

8 月 2 号,Go 团队发布了 Go 1.19,可以通过访问下载页面[1]获得该版本。

Go 1.19 改进并改进了 Go 1.18[2] , Go 1.19 的泛型开发集中在解决社区向我们报告的微妙问题和极端情况,以及重要的性能改进(某些泛型程序高达 20%)。

文档注释现在支持链接、列表和更清晰的标题语法[3]。此更改有助于用户编写更清晰、更易于导航的文档注释,尤其是在具有大型 API 的包中。作为此更改的一部分,gofmt现在重新格式化文档注释以将标准格式应用于这些功能的使用。有关所有详细信息,请参阅“ Go Doc Comments[4] ”。

Go 的内存模型[5]现在明确定义了sync/atomic 包[6]的行为。之前发生关系的正式定义已被修改,以与 C、C++、Java、JavaScript、Rust 和 Swift 使用的内存模型保持一致。现有程序不受影响。随着内存模型的更新, sync/atomic 包中还有新的类型[7],例如atomic.Int64[8]atomic.Pointer[T][9],以便更容易使用原子值。

出于安全原因[10], os/exec 包不再尊重 PATH 查找中的相对路径。有关详细信息,请参阅软件包文档[11]golang.org/x/sys/execabs[12]的现有用途可以在仅使用 Go 1.19 或更高版本构建的程序中移回 os/exec。

垃圾收集器增加了对软内存限制的支持,在新的垃圾收集指南[13]中有详细讨论。该限制对于优化 Go 程序以在具有专用内存量的容器中尽可能高效地运行特别有用。

unix当目标操作系统 ( GOOS) 是任何类 Unix 系统时,新的构建约束得到满足。今天,类 Unix 意味着 Go 的所有目标操作系统,除了jsplan9windowszos.

最后,Go 1.19 包括各种性能和实现改进,包括动态调整初始 goroutine 堆栈以减少堆栈复制、在大多数 Unix 系统上自动使用附加文件描述符、在 x86-64 和 ARM64 上用于大型 switch 语句的跳转表,支持 ARM64 上的调试器注入函数调用,RISC-V 上的寄存器 ABI 支持,以及在龙芯 64 位架构 LoongArch ( GOARCH=loong64) 上运行的 Linux 的实验性支持。

Reference

[1]

下载页面: https://go.dev/dl/

[2]

Go 1.18: https://go.dev/blog/go1.18

[3]

链接、列表和更清晰的标题语法: https://go.dev/doc/comment

[4]

Go Doc Comments: https://go.dev/doc/comment

[5]

Go 的内存模型: https://go.dev/ref/mem

[6]

sync/atomic 包: https://go.dev/pkg/sync/atomic/

[7]

sync/atomic 包中还有新的类型: https://go.dev/doc/go1.19#atomic_types

[8]

atomic.Int64: https://go.dev/pkg/sync/atomic/#Int64

[9]

atomic.Pointer[T]: https://go.dev/pkg/sync/atomic/#Pointer

[10]

安全原因: https://go.dev/blog/path-security

[11]

软件包文档: https://go.dev/pkg/os/exec/#hdr-Executables_in_the_current_directory

[12]

golang.org/x/sys/execabs: https://pkg.go.dev/golang.org/x/sys/execabs

[13]

新的垃圾收集指南: https://go.dev/doc/gc-guide#Memory_limit

78300Go 1.19 正式发布!

这个人很懒,什么都没留下

文章评论