TinyGo 0.42 发布:panic 终于可以 recover 了
来源: tinygo.org — 2026-09-01
概述
TinyGo 0.42 补上了它与大 Go 之间最老的一道鸿沟之一:运行时 panic 现在可以通过 defer/recover 捕获。此前的版本里,空指针解引用或除零意味着程序直接终止,如今 nil 解引用、除零、越界切片与 map 访问、channel panic 都能用熟悉的 defer+recover 处理,Windows 上还加了向量异常处理器,riscv64 也支持 recover。随之而来的是 testing 包对 Goexit、SkipNow、FailNow 的支持,让 t.Skip 与 t.Fatal 行为正确,解锁了大量标准库测试。此外它还支持 Go 1.27 与泛型方法、迁移到 LLVM 22,并新增了一个极简 UEFI target——你可以用 Go 写程序编译成 UEFI 应用,在操作系统启动前运行。ESP32 系列也得到大补:中断向量表、定时器告警、GPIO SetInterrupt、ADC 驱动、flash XIP、WiFi 支持,以及 ESP32-C3/S3 的蓝牙。
核心要点
运行时 panic 现可用 defer/recover 捕获,nil 解引用、除零、越界访问、channel panic 都不再直接杀死程序
Windows 通过向量异常处理器实现同样的恢复机制,riscv64 也支持 recover
testing 包支持 Goexit、SkipNow、FailNow,让 t.Skip 与 t.Fatal 行为正确,解锁大量标准库测试
新增极简 UEFI target,可用 Go 写程序编译成 UEFI 应用在操作系统启动前运行
ESP32 系列新增中断向量表、ADC 驱动、flash XIP、WiFi 与 C3/S3 蓝牙支持
金句
Before this release, a nil pointer dereference or a divide by zero in a TinyGo program was the end of the story. That is no longer the case.(在这个版本之前,一次空指针或除零就是 TinyGo 程序的终点——如今不再如此。)
👍 0
点赞
👎 0
沉底
返回 Lobsters 首页