第 6 章 Go Toolset 1.23 中的更改
RHEL 在版本 1.23 中提供 Go Toolset。主要改进包括:
for-range
循环接受以下类型的迭代函数:-
func(func() bool)
-
func(func(K) bool)
func(func (K, V) bool)
调用迭代参数函数会为
for-range
循环创建迭代值。有关参考链接,请参阅 上游发行注记。
-
- Go Toolchain 可以收集使用情况和中断统计信息,以帮助 Go 团队了解 Go Toolchain 是如何使用和工作的。默认情况下,Go Telemetry 不会上传遥测数据,仅将其存储在本地。如需更多信息,请参阅 上游 Go Telemetry 文档。
-
go vet
子命令包含stdversion
分析器,它标记对在引用文件中使用的 Go 版本太新符号的引用。 -
cmd
和cgo
功能支持-ldflags
选项,来将标记传递给 C 链接器。当您使用非常大的CGO_LDFLAGS
环境变量时,go
命令会自动使用这个标志来避免argument list too long
错误。 -
trace
工具容忍部分破坏的跟踪,并尝试恢复跟踪数据。这在崩溃时很有用,因为您可以获得导致崩溃的 trace。 -
在未处理的 panic 或其他致命错误之后,运行时打印的回溯带有缩进,以区分来自第一个
goroutine
的goroutine
的堆栈追踪。 - 使用配置文件引导的优化的编译器构建时间开销降低到个位数百分比。
-
新的
-bindnow
链接器标志在构建动态链接的 ELF 二进制时启用立即函数绑定。 -
//go:linkname
链接器指令不再引用标准库中的内部符号,以及没有对其定义标记为//go:linkname
的运行时。 -
如果程序不再引用
Timer
或Ticker
,则垃圾回收会立即清理它们,即使还没有调用它们的Stop
方法。与Timer
或Ticker
关联的计时器渠道现在没有缓冲,容量为 0。这确保每次调用Reset
或Stop
方法时,在调用后不会发送或接收过时的值。 -
新的
unique
软件包为规范化值(如interning
或hash-consing
)提供了工具。 -
新的
iter
软件包提供了基本定义,以与用户定义的迭代器一起工作。 -
slices
和maps
软件包引入了几个与迭代器一起使用的新功能。 -
新的
structs
软件包为修改包含 struct 类型的属性(如内存布局)的 struct 字段提供类型。 在以下软件包中进行了次要更改:
-
archive/tar
-
crypto/tls
-
crypto/x509
-
database/sql
-
debug/elf
-
encoding/binary
-
go/ast
-
go/types
-
math/rand/v2
-
net
-
net/http
-
net/http/httptest
-
net/netips
-
path/filepath
-
reflect
-
runtime/debug
-
runtime/pprof
-
runtime/trace
-
slices
-
sync
-
sync/atomic
-
syscall
-
testing/fstest
-
text/template
-
time
-
unicode/utf16
-
如需更多信息,请参阅 上游发行注记。
Go Toolset 是一个滚动应用程序流,红帽只支持最新版本。如需更多信息,请参阅 Red Hat Enterprise Linux 应用程序流生命周期 文档。