Go v1.23.0 发布,Go v1.21 EOL
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『转发』吧,感谢!ღ( ´・ᴗ・` )~
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




