admin管理员组

文章数量:1439464

Go 1.6 相比 Go 1.5 有哪些值得注意的改动?

本系列旨在梳理 Go 的 release notes 与发展史,来更加深入地理解 Go 语言设计的思路。

/doc/go1.6

Go 1.6 值得关注的改动:

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

本文标签: Go 16 相比 Go 15 有哪些值得注意的改动