Go 1.6 相比 Go 1.5 有哪些值得注意的改动?
本系列旨在梳理 Go 的 release notes 与发展史,来更加深入地理解 Go 语言设计的思路。
Go 1.6 值得关注的改动:
- 平台支持:新增了对
linux/mips64、linux/mips64le和android/386的实验性支持;FreeBSD 默认 C 编译器改为 clang;linux/ppc64le现支持 cgo 外部链接。 - Cgo 交互:明确了 Go 指针传递给 C 代码的规则并增加了运行时检查(可通过
GODEBUG=cgocheck=0禁用);引入了与 Go 的complex类型区分开的C.complexfloat和C.complexdouble类型。 - 编译器工具链:内部重写了语法分析器(parser);新增
-msan标志用于集成 Clang MemorySanitizer;扩展了对c-shared、shared和 位置无关可执行文件(Position Independent Executable, PIE)等构建模式的支持;再次提醒-X标志的旧语法将在 Go 1.7 中移除。 - HTTP/2 支持:
net/http包为 HTTPS 请求自动启用了 HTTP/2 支持,无需修改代码;可通过Transport.TLSNextProto(客户端)或Server.TLSNextProto(服务端)禁用。 - 运行时:增加了对
map并发误用的轻量级检测(检测到即崩溃);程序崩溃(panic)时默认仅打印当前 goroutine 的 堆栈(stack),可通过GOTRACEBACK=all或debug.SetTraceback("all")查看全部;Windows 下不再强制修改系统定时器精度;改变了-buildmode=c-archive/c-shared模式下的信号处理行为。

浙公网安备 33010602011771号