Go 1.21发布!

go,发布 · 浏览次数 : 222

小编点评

## Go 1.21 新版本发布 **Go 1.21 版本已发布,您可以通过访问下载页面来获取。** **主要功能:** * 基于配置文件的 PGO 优化,可广泛使用 PGO 功能。 * 支持向后和向前的语言兼容性。 * 新增 `min`, `max` 和 `clear` 内置函数。 * 对泛型函数的类型推断进行了多项改进。 * 规范描述类型推断。 * 新增 `LoopvarExperiment` 帮助测试循环变量捕获。 * 新的 `log/slog` 包用于结构化日志。 * 新增 `slices` 包,支持任何元素类型的切片操作。 * 新增 `maps` 包,支持任何键或元素类型的映射操作。 * 新增 `cmp` 包,带有新的有序值比较工具。 * 性能改进: * 支持 PGO,构建 Go 程序速度提升 2-4%。 * 启用 WASI 端口,预览 1(GOOS=wasip1,GOARCH=wasm)。 * 优化垃圾收集器,尾部延迟降低 40%。 **其他更新:** * 支持 Go 1.21 版本的标准库。 * 新的 `runtime/trace` 帮助收集 CPU 跟踪。 * `go:wasmimport` 指令用于从 Wasm 主机导入函数。 **感谢所有参与 Go 1.21 发布的贡献者。**

正文

原文在这里

由Eli Bendersky, on behalf of the Go team 发布于 8 August 2023

Go团队今天非常高兴地发布了Go 1.21版本,你可以通过访问下载页面来获取。

Go 1.21充满了新功能和改进。以下是一些值得注意的变化;完整的列表,请参阅发布说明

工具改进

  • 我们在1.20版本预览的基于配置文件的优化(PGO)特性现在已经可以广泛使用了!如果在主包的目录中存在名为default.pgo的文件,go命令将使用它来启用PGO构建。更多详情请查看PGO文档。我们已经在一系列Go程序上测量了PGO的影响,看到了2-7%的性能提升。
  • go工具现在支持向后向前的语言兼容性。

语言变化

  • 新的内置函数:min,maxclear
  • 对泛型函数的类型推断进行了多项改进。规范中对类型推断的描述已经被扩展和明确化。
  • 在Go的未来版本中,我们计划解决Go编程中最常见的问题之一:循环变量捕获。Go 1.21带来了这个特性的预览,你可以在你的代码中使用环境变量来启用它。更多详情请查看LoopvarExperiment wiki页面。

标准库添加

  • 新的log/slog包,用于结构化日志。
  • 新的slices包,用于对任何元素类型的切片进行常见操作。这包括比sort包更快、更符合人体工程学的排序函数。
  • 新的maps包,用于对任何键或元素类型的映射进行常见操作。
  • 新的cmp包,带有新的有序值比较工具。

性能改进

除了启用PGO时的性能改进外,

  • Go编译器本身已经在1.21版本中启用了PGO,因此它构建Go程序的速度提高了2-4%,具体取决于主机架构。
  • 由于对垃圾收集器的调优,一些应用可能会看到尾部延迟降低了高达40%。
  • 使用runtime/trace收集跟踪现在在amd64和arm64上的CPU成本大大降低。

新的WASI端口:

  • Go 1.21添加了一个实验性的WebAssembly系统接口(WASI)的端口,预览1(GOOS=wasip1,GOARCH=wasm)。
  • 为了便于编写更通用的WebAssembly(Wasm)代码,编译器还支持了一个新的用于从Wasm主机导入函数的指令:go:wasmimport

感谢所有通过编写代码、提交错误、分享反馈和测试发布候选版本的人对这个版本的贡献。你们的努力帮助确保Go 1.21尽可能稳定。如果你发现任何问题,请提交一个问题

享受Go 1.21吧!


孟斯特

声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
author: mengbin
blog: mengbin
github: mengbin92
cnblogs: 恋水无意


与Go 1.21发布!相似的内容:

Go 1.21发布!

原文在[这里](https://go.dev/blog/go1.21)。 > 由Eli Bendersky, on behalf of the Go team 发布于 8 August 2023 Go团队今天非常高兴地发布了Go 1.21版本,你可以通过访问[下载页面](https://go.dev

PGO in Go 1.21

原文在这里。 由 Michael Pratt 发布于 2023年9月5日 在2023年早些时候,Go 1.20发布了供用户测试的概要版本的基于性能分析的优化(PGO)。经过解决预览版已知的限制,并得益于社区反馈和贡献的进一步改进,Go 1.21中的PGO支持已经准备好供一般生产使用!请查阅性能分析优

Go 1.22 中的 For 循环

原文在这里。 由 David Chase and Russ Cox 发布于2023年9月19日 Go 1.21 版本包含了对 for 循环作用域的预览更改,我们计划在 Go 1.22 中发布此更改,以消除其中一种最常见的 Go 错误。 问题 如果你写过一定量的 Go 代码,你可能犯过一个错误,即在迭

WASI support in Go

原文在这里。 由 Johan Brandhorst-Satzkorn, Julien Fabre, Damian Gryski, Evan Phoenix, and Achille Roussel 发布于 2023年9月13日 Go 1.21添加了一个新的端口,通过新的GOOS值wasip1来定位W

slices in Go 1.21

Go 1.21中新增的 slices包中提供了很多与切片相关的函数,适用于任意类型的切片。 本文内容来自官方文档 BinarySearch 函数签名如下: func BinarySearch[S ~[]E, E cmp.Ordered](x S, target E) (int, bool) Bina

go 1.21:cmp

## 标准库 `cmp` 原文在[这里](https://pkg.go.dev/cmp) go 1.21 新增 `cmp` 包提供了与有序变脸比较相关的类型和函数。 ### Ordered 定义如下: ```go type Ordered interface { ~int | ~int8 | ~in

golang开发 gorilla websocket的使用

很多APP都需要主动向用户推送消息,这就需要用到长连接的服务,即我们通常提到的websocket,同样也是使用socket服务,通信协议是基本类似的,在go中用的最多的、也是最简单的socket服务就是gorilla/websocket,它有21.1K的star,足以说明它的受欢迎程度, 它的git

go高并发之路——go语言如何解决并发问题

一、选择GO的原因 作为一个后端开发,日常工作中接触最多的两门语言就是PHP和GO了。无可否认,PHP确实是最好的语言(手动狗头哈哈),写起来真的很舒爽,没有任何心智负担,字符串和整型压根就不用区分,开发速度真的是比GO快很多。现在工作中也还是有一些老项目在使用PHP,但21年之后的新项目基本上就都

2023-04-26-微信安全模式下消息解析

在微信公众号的使用过程中,为了提高信息传输的安全性,可以在服务器配置中将消息加解密模式指定为安全模式。 启用安全模式后,公众号主动调用API的情况并不会受影响,只有被动回复用户的消息时才需要对消息进行加解密。 官方提供了5种开发语言的示例代码,参照官方给的C++示例代码,本文给出go语言的解密实现:

Go 单元测试基本介绍

目录引入一、单元测试基本介绍1.1 什么是单元测试?1.2 如何写好单元测试1.3 单元测试的优点1.4 单元测试的设计原则二、Go语言测试2.1 Go单元测试概要2.2 Go单元测试基本规范2.3 一个简单例子2.3.1 使用Goland 生成测试文件2.3.2 运行单元测试2.3.3 完善测试用