Golang 1.24 相关内容:
- 首次发布候选版本:Golang 团队发布了 Golang 1.24 的首个发布候选版本,Upsun 在其热点路径的所有方面广泛使用 Golang,尤其用于整个基础设施中的 HTTP 请求路由。
- 性能提升:有 2 - 3%的全面性能提升,由“基于瑞士表的新内置映射实现、小对象的更高效内存分配以及新的运行时内部互斥实现”驱动;还有两个新的 cgo 指令(
noescape
和nocallback
),有可能在某些情况下减少从 Go 调用 C 代码的开销。 - 弱指针实现:Go 1.24 包含了弱指针的实现,
weak.Pointer[T]
类似于atomic.Pointer[T]
,有Value() *T
方法,这与 Go 1.23 中引入的unique
包一起,有可能改善实际 Go 应用中的内存使用情况。 - 后量子密码学:
crypto/tls
包引入了对后量子密码学的支持,标准库现在包括 ML-KEM,这是一种抗量子攻击的密钥交换机制。 crypto/tls
中的加密客户端问候(ECH):ECH 的目标是解决 TLS 中的长期隐私差距,客户端首次飞行时使用通过 DNS-over-HTTPS 获取的公钥进行加密。encoding/json
的改进:通过新的omitzero
标签,encoding/json
对零值有了更好的支持,omitempty
标签的定义与语言中的零值标准定义不一致,新标签可指定类型为零值的字段应从序列化中省略。go.mod
中的新tool
指令:添加了新的tool
指令,可指定构建工具的依赖,无需在项目中使用空的tools.go
文件。testing
包中的上下文支持:*testing.T
和*testing.B
类型现在有Context() context.Context
方法,在调用Cleanup
函数之前取消上下文,可使测试更干净。- 用于测试并发代码的新
testing/synctest
包:仍处于实验阶段,可定义协程“气泡”并提供假时钟,便于测试时间敏感的并发代码。 - 其他改进:有改进的终结器支持、新的
encoding.TextAppender
和encoding.BinaryAppender
接口、加密安全的随机文本字符串等。
参考信息:
- Go 1.24 Release Notes,包含各部分的详细信息及参考链接。
- on Discord,可讨论喜欢的部分。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。