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.Timertime.Ticker 的实现进行了两项重大更改。详细内容参见 NewTimer
  • 新增 unique 包,提供规范值的功能。
  • 新增 iter 包,提供用户定义的迭代器基本定义。
  • 新增 structs 包,提供修改包含 struct 类型属性的类型。

10. 其他库:

  • 包括 crypto/tlsdatabase/sqldebug/elfencoding/binarygo/astgo/typesmath/rand/v2netospath/filepathreflectruntime/debugruntime/pprofruntime/tracesyncsyscalltesting/fstesttext/templatetimeunicode/utf16 等多个包的更新。

11. 平台:

  • 不再支持 macOS 10.15 Catalina,Go 1.23 需要 macOS 11 Big Sur 或更高版本。
  • 添加了对 OpenBSD 在 64 位 RISC-V 上的实验性支持。
  • 新增 GOARM64GORISCV64 环境变量,分别用于指定 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


🌻 往期精彩 ▼


-- / END / --

👉 这里可以找到我

如果这篇文章为你带来了灵感或启发,就请帮忙点『』or『在看』or『转发』吧,感谢!ღ( ´・ᴗ・` )~

本文由 mdnice 多平台发布

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值