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 操作系统。
详细内容参见文档:
🌻 往期精彩 ▼
[Oracle]
[MySQL]
[TiDB]
[PG]
- [[RL9] Rocky Linux 9.4 搭载 PG 16.1](https://mp.weixin.qq.com/s/-LYgMoaktYXZ1UG5V5neow)
- 即将告别PG 12,建议升级到PG 16.3版本
- 后 EL 7 时代,PG 16 如何在 CentOS 7 上运行
-- / END / --
👉 这里可以找到我
如果这篇文章为你带来了灵感或启发,就请帮忙点『赞』or『在看』or『转发』吧,感谢!ღ( ´・ᴗ・` )~
本文由mdnice多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。