专注于 Golang 相关文章和资料的开源项目 go-home ,欢迎关注!
Go 1.25 版本带来了标准库的多项重要更新,包括新的并发测试包、实验性的 JSON v2 实现,以及多个核心库的性能优化和功能增强。
重要新增包
testing/synctest - 并发测试支持
新的 testing/synctest
包为并发代码测试提供了强大支持。这个包的核心特性是创建一个隔离的"时间气泡"环境:
Test
函数:在隔离环境中运行测试,时间被虚拟化Wait
函数:等待当前气泡中的所有 goroutine 阻塞- 虚拟时钟:当所有 goroutine 都被阻塞时,时钟会瞬间向前移动
这个包从 Go 1.24 的实验性功能正式转为稳定版本。
encoding/json/v2 - 实验性 JSON 实现
通过设置 GOEXPERIMENT=jsonv2
环境变量,可以启用新的 JSON 实现:
encoding/json/v2
:对原有 JSON 包的重大修订encoding/json/jsontext
:提供底层 JSON 语法处理- 性能提升:解码速度显著提高,编码性能与现有实现持平
核心库更新
crypto 加密包系列
新增接口和函数:
MessageSigner
接口:允许签名者自行哈希待签名消息SignMessage
函数:智能选择使用 MessageSigner 或普通 Signer
ECDSA 改进:
- 新增
ParseRawPrivateKey
和ParseUncompressedPublicKey
函数 PrivateKey.Bytes
和PublicKey.Bytes
方法实现底层编码- FIPS 140-3 模式下签名速度提升 4 倍
Ed25519 优化:
- FIPS 140-3 模式下签名速度提升 5 倍
TLS 安全增强:
- 新增
ConnectionState.CurveID
字段,暴露密钥交换机制 - TLS 1.2 握手中禁用 SHA-1 签名算法
- FIPS 140-3 模式下,TLS 1.2 强制要求扩展主密钥
- 服务器现在优先选择最高支持的协议版本
hash 哈希接口
两个重要的新接口:
XOF
接口:支持"可扩展输出函数"Cloner
接口:允许哈希返回其状态的副本
所有标准库的 Hash 实现现在都实现了 Cloner
接口。
io/fs 文件系统
新增 ReadLinkFS
接口,用于读取文件系统中的符号链接。
testing 测试框架
属性支持:
T.Attr()
、B.Attr()
和F.Attr()
方法:发送测试属性Output()
方法:提供io.Writer
用于测试输出
行为变更:
AllocsPerRun
在并行测试运行时会触发 panic
网络和系统相关
net 网络包
LookupMX
现在返回看起来像有效 IP 地址的 DNS 名称- Windows 上
ListenMulticastUDP
支持 IPv6 地址 - Windows 上改进了文件/网络连接转换
os 操作系统接口
Windows 改进:
NewFile
支持异步 I/O 打开的句柄
Root 类型增强:
DirFS
和Root.FS
实现ReadLinkFS
- 新增多个方法:
Chmod
、Chown
、Lchown
、Link
、Mkdir
、Readlink
、Remove
、RemoveAll
、Rename
、Symlink
运行时和并发
runtime 运行时
- 清理函数现在并发并行执行
- 新增
GODEBUG
设置帮助发现终结器问题 - 新增
SetDefaultGOMAXPROCS
函数
sync 同步原语
新增 WaitGroup.Go
方法,简化 goroutine 管理:
go
// 旧写法
wg.Add(1)
go func() {
defer wg.Done()
// 执行任务
}()
// 新写法
wg.Go(func() {
// 执行任务
})
其他重要更新
reflect 反射
新增 TypeAssert
函数,可以直接将 Value
转换为 Go 值。
regexp/syntax 正则表达式
- 扩展字符类语法支持
- 字符类的大小写不敏感名称查找
log/slog 结构化日志
GroupAttrs
从 Attr 切片创建组属性Record
新增Source
方法返回源代码位置
unicode Unicode 支持
新增类别别名和额外的 Unicode 类别支持。
time 时间处理
ParseDuration
现在接受多个连续的符号前缀。
text/template 模板
新增 Template.Block
方法用于自定义嵌套块的行为。
性能变化
- SHA-1、SHA-256 和 SHA-512 在没有 AVX2 指令的 amd64 上速度变慢
- 新的 JSON v2 实现在多数场景下性能显著提升
- FIPS 140-3 模式下 ECDSA 和 Ed25519 签名速度大幅提升
总结
Go 1.25 的标准库更新重点关注了并发测试支持、加密性能优化、网络和文件系统功能增强。特别是新的 testing/synctest
包和实验性的 JSON v2 实现,为 Go 开发者提供了更强大的工具。这些更新体现了 Go 团队对性能、安全性和开发体验的持续改进。