Go 1.27.1 发布,HTTP/2 原生迁入 net/http,quic-go 0.62 支持 RFC 9218
相关地址:go.dev · github.com/quic-go/quic-go · tinygo.org
版本发布
Go 1.27.1 修复了 cgo、编译器、运行时、go fix 命令,以及 database/sql、debug/elf、encoding/json、net/http、os、simd、simd/archsimd 等包的问题。
Go 1.26.8 修复了 cgo、编译器、运行时,以及 debug/elf 和 os 包的问题。
goroutineleak profile
Go 1.27 新增了 goroutineleak profile,用来定位那些永久阻塞在 channel 或同步原语上的 goroutine,生产环境中也可以使用。它复用了垃圾回收的可达性追踪,精度相当高。对一个 Go 特性来说不太寻常的是,它最初源自一篇学术论文,Vlad 是第一作者。
encoding/json/v2 基准
有一份对 Go 1.27 的 JSON 包(包括 encoding/json/v2)做的快速基准测试:使用 v2 时反序列化更快,但 Daniel 发现对结构体切片做序列化反而慢了 1.5 倍,这与发布说明中的性能说法相悖。
HTTP/2 原生搬进 net/http 的漫长努力
把 HTTP/2 原生移入 net/http 这项长期工程已被 Damien Neil 标记为「已完成」,x/net/http2 则走向弃用。
TinyGo 0.42
TinyGo 0.42 里 recover 可用了,Go 还能启动你的电脑。这个面向微控制器与 WebAssembly 的 Go 编译器加入了几项能力:如今它能像标准 Go 那样从运行时 panic(比如空指针解引用)中 recover;带来了 Go 1.27 支持;并且加入了早期形态的 UEFI 目标,让 Go 代码能在操作系统启动之前就跑起来。见 tinygo.org。
AWS Lambda Go 库
AWS 官方用于编写 Go 语言 Lambda 函数的库改进了 Go 1.27 兼容性,现在要求 Go 1.26+。
quic-go 0.62
纯 Go 实现的 QUIC 与 HTTP/3,现已支持 RFC 9218 流优先级。项目地址:github.com/quic-go/quic-go。