Go 1.19正式发布,某些泛型程序性能改进高达 20%

2022年8月4日 198点热度 0人点赞 0条评论
暑期会议报名(即将截止)


1.【8月5-7日·昆明】Python机器学习、强化学习课程高级研修班

2.8月7-8日·昆明】第11届高等学校计算机程序设计课程论坛——课程思政+ “双一流”背景下的程序设计

点击上方文字,查看会议报名详情





 

出品 | OSC开源社区(ID:oschina2013)


Go 1.19 现已发布,可以通过访问下载页面(https://go.dev/dl/)获得该版本。"它的大部分变化是在工具链、运行时和库的实现方面。一如既往,该版本保持了 Go 1 的兼容性承诺。我们期望几乎所有的 Go 程序都能像以前一样继续编译和运行"。该版本包括一些内存模型的调整,LoongArch port,文档评论机制的改进等。
图片
具体更新内容如下:


  • Go 1.19 完善并改进了 Go 1.18 。开发团队将 Go 1.19 的泛型开发集中在解决社区报告的一些细微问题和极端情况,以及重要的性能改进(某些泛型程序性能改进高达 20%)。

  • 文档注释现在支持链接、列表和更清晰的标题语法。此更改有助于用户编写更清晰、更容易浏览的文档注释,尤其是在具有大型 API 的包中。作为此更改的一部分,gofmt 现在重新格式化文档注释以将标准格式应用于这些功能的使用。有关所有详细信息,可参阅 “ Go Doc Comments”(https://go.dev/doc/comment)。

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

  • 出于安全原因, os/exec 包不再遵循 PATH 查找中的相对路径。有关详细信息,可参阅 package documentation(https://go.dev/pkg/os/exec/#hdr-Executables_in_the_current_directory。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

图片

78580Go 1.19正式发布,某些泛型程序性能改进高达 20%

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

文章评论