Go v1.23.0 于 2024-08-13 发布,依据 Go 语言发版策略,这意味着 Go v1.21 已结束支持,建议使用 Go 语言的程式升级新版本,以获取更高的性能和更强的安全性。
Go 1.23.0
以下是 Go 1.23.0 的主要变更和改进:
1. 语言:
-
将 Go 1.22 中的 “range-over-func” 实验性功能纳入语言规范。 -
支持泛型类型别名的预览特性。
2. Go 命令:
-
Go 工具链现在可以收集使用情况和故障统计数据,即 Go 遥测(Telemetry)。 -
go env -changed
命令打印与默认值不同的设置。 -
go mod tidy -diff
命令打印必要的修改作为统一 diff 而不是修改文件。 -
go list -m -json
命令现在包括新的 Sum 和 GoModSum 字段。
3. Vet 工具:
-
包括 stdversion
分析器,标记对在引用文件中生效的 Go 版本中不存在的符号的引用。
4. Cgo 工具:
-
支持 -ldflags
标志,将标志传递给 C 链接器。
5. Trace 工具:
-
改善了对部分损坏的 trace 的容忍度。
6. 运行时:
-
未处理的 panic 或其他严重错误之后的 traceback 现在将错误消息的第二行及之后缩进。
7. 编译器:
-
显著减少了使用 PGO 构建时的开销。 -
编译器现在可以重叠在函数的不同区域访问的局部变量的栈帧槽,减少了 Go 应用程序的栈使用。
8. 链接器:
-
不再允许使用 //go:linkname
指令引用标准库中未标记//go:linkname
的内部符号。
9. 标准类库:
-
对 time.Timer
和time.Ticker
的实现进行了两项重大更改。详细内容参见 NewTimer -
新增 unique
包,提供规范值的功能。 -
新增 iter
包,提供用户定义的迭代器基本定义。 -
新增 structs
包,提供修改包含 struct 类型属性的类型。
10. 其他库:
-
包括 crypto/tls
、database/sql
、debug/elf
、encoding/binary
、go/ast
、go/types
、math/rand/v2
、net
、os
、path/filepath
、reflect
、runtime/debug
、runtime/pprof
、runtime/trace
、sync
、syscall
、testing/fstest
、text/template
、time
、unicode/utf16
等多个包的更新。
11. 平台:
-
不再支持 macOS 10.15 Catalina,Go 1.23 需要 macOS 11 Big Sur 或更高版本。 -
添加了对 OpenBSD 在 64 位 RISC-V 上的实验性支持。 -
新增 GOARM64
和GORISCV64
环境变量,分别用于指定 ARM64 架构的最小目标版本和 RISC-V 用户模式应用程序配置文件。
需要注意的是,
对于 Linux 系统,Go 1.23 是最后一个支持 Linux 内核版本 2.6.32 的版本。Go 1.24 将需要 3.17 或更高版本。但如果内核已修补支持 getrandom 系统调用,则将支持运行在 3.10 或更高版本的系统。
这意味着,从 Go 1.24 开始将不再支持部分 RHEL 6 和部分 RHEL 7,推荐使用 RHEL 8.10 或 9.4 操作系统。
详细内容参见文档:
https://go.dev/doc/go1.23
🌻 往期精彩 ▼
-
[Oracle] -
[MySQL] -
[TiDB] -
[PG]
-- / END / --
👉 这里可以找到我
如果这篇文章为你带来了灵感或启发,就请帮忙点『赞』or『在看』or『转发』吧,感谢!ღ( ´・ᴗ・` )~
本文由 mdnice 多平台发布