slot deposit pulsa slot mahjong slot gacor slot gacor slot gacor resmi slot gacor 2025 slot gacor terpercaya slot gacor 2025 slot gacor hari ini slot gacor hari ini slot gacor hari ini
Go 1.20 正式发布
17611538698
webmaster@21cto.com

Go 1.20 正式发布

资讯 0 1164 2023-02-05 12:48:16

图片

导读:Go 1.20正式发布,看看有什么新鲜的。

继 Go 1.19 发布六个月之后,Go 1.20 现已正式发布。该版本的大部分更改都集中在在工具链、运行时和库的实现中。

新版本下载地址:https://go.dev/dl/

图片

Go 1.20 还添加了对 RISC-V 上的 FreeBSD (GOOS=freebsd, GOARCH=riscv64) 的实验性支持。

Go 1.20 在语法方面包含了 4 项变化:

  • Go 1.7 增加了从 slice (切片)到数组指针转换的功能,Go 1.20 对该功能进行了扩展 —— 可直接从 slice 转换成数组。比如给定一个 slicex,[4]byte(x) 可以写成 *(*[4]byte)(x)。

  • 标准库 unsafe 包定义了 3 个新函数:SliceData,String 和 StringData。与 Go 1.17 的 Slice 一起,这些函数现在提供了构建和解构 slice 和字符串值的完整功能,而不依赖于它们的精确表示。

  • Go 语言规范进行了更新,定义结构体变量的值每次只比较一个字段,字段比较的顺序和字段在结构体里定义的顺序保持一致。一旦某个字段的值比较出现不一致,就会马上停止比较。

  • Comparable 类型(例如普通接口 ordinary interfaces)现在可以满足 comparable 约束,即便类型实参 (type argument) 不是严格可比较类型。

一些其他更新内容还包括:

  • $GOROOT/pkg 目录不再存储标准存档的预编译包存档,以减少 Go 发行版的大小。

  • go 命令现在定义架构功能 build flags,如 amd64.V2,以允许根据特定 CPU 架构功能的存在或不存在来选择包实现文件。这对于 x86_64 微架构特性级别的工作来说是个好消息。

  • go build 和 go install 以及其他与构建相关的命令现在支持 “-cover” flag,用于启用带有 code coverage instrumentation 的构建。

  • 由于在垃圾收集器上的工作,内存开销减少和 CPU 性能提高高达 2%。

  • 对 Profile Guided Optimizations (PGO) 的预览支持。

  • 在 Linux 上,linker 现在在链接时为 glibc 或 musl 选择动态解释器。

  • 一个新的 crypto/ecdh 包,为 NIST curves 和 Curve25519 上的 Elliptic Curve Diffie-Hellman 密钥交换提供明确支持。

在此版本中,Go开发团队称对编译器和垃圾收集的改进将 CPU 性能提高了 2%,并减少了内存开销。 

Go 团队还报告说构建速度提高了大约 10%,使它们回到了 Go 1.17 中的水平。 

虽然,目前 Go 1.20 在从源代码构建时必须从 Go 1.17.13 或更高版本引导,但该团队计划在未来的版本中每年将引导工具链向上移动一次,每年一次。

另一件需要开发者注意的事情是,Go 1.21 将不再支持旧版操作系统,例如 Windows 7、8、Server 2008 和 Server 2012、macOS 10.13 High Sierra 和 10.14 Mojave。


编译:万能的大雄

评论