Go 编程语言 1.13 发布

由...所提交 编程语言发布 去1.13,它是由 Google 在社区参与下开发的,作为一种混合解决方案,结合了编译语言的高性能和脚本语言的优点,例如易于编写代码、开发速度和错误保护。 项目代码 分发者 在 BSD 许可下。

Go 的语法基于熟悉的 C 语言元素,并借鉴了一些 Python 语言。 语言相当简洁,但代码很容易阅读和理解。 Go 代码被编译成独立的二进制可执行文件,无需使用虚拟机即可本地运行(分析、调试和其他运行时问题检测子系统集成为 运行时组件),它可以让您获得与 C 程序相当的性能。

该项目最初开发时着眼于多线程编程和多核系统上的高效运行,包括提供用于组织并行计算和并行执行方法之间交互的操作员级手段。 该语言还提供针对过度分配的内存块的内置保护,并提供使用垃圾收集器的能力。

创新Go 1.13 版本中引入:

  • crypto/tls 包默认启用协议支持 TLS 1.3的。 添加了新包“crypto/ed25519”,支持 Ed25519 数字签名;
  • 添加了对新数字文字前缀的支持,以定义二进制数(例如 0b101)、八进制(0o377)、虚数(2.71828i)和十六进制浮点(0x1p-1021),并能够使用“_”字符在视觉上分隔数字大量 (1_000_000);
  • 取消了在移位操作中仅使用无符号计数器的限制,这避免了在使用“←”和“←”运算符之前不必要地转换为 uint 类型;
  • 添加了对 Illumos 平台 (GOOS=illumos) 的支持。 保证了与Android 10平台的兼容性,提高了对FreeBSD(11.2)和macOS(10.11“El Capitan”)最低版本的要求。
  • 继续开发新的模块系统,可以作为GOPATH的替代品。 与之前在 Go 1.13 中宣布的计划相反,该系统默认情况下未启用,需要通过 GO111MODULE=on 变量或使用自动应用模块的上下文来激活。 新的模块系统具有集成的版本控制支持、包交付功能和改进的依赖关系管理。 使用模块,开发人员不再局限于在 GOPATH 树中工作,可以显式定义版本化依赖项,并创建可重复的构建。

    与之前的版本不同,当运行 go 命令时当前工作目录或父目录中存在 go.mod 文件时,包括当它位于 GOPATH/src 目录中时,新系统的自动应用程序现在可以工作。 添加了新的环境变量:GOPRIVATE,定义可公开访问的模块的路径;GOSUMDB,指定 go.sum 文件中未列出的模块的校验和数据库的访问参数;

  • 默认情况下,“go”命令加载模块并使用 Google 维护的模块镜像和校验和数据库(proxy.golang.org、sum.golang.org 和 index.golang.org)检查其完整性;
  • 对仅二进制包的支持已停止;以“//go:binary-only-package”模式构建包现在会导致错误;
  • 在“go get”命令中添加了对“@patch”后缀的支持,表示模块应更新到最新的维护版本,但不更改当前的主要或次要版本;
  • 从源代码控制系统检索模块时,“go”命令现在对版本字符串执行额外检查,尝试将伪版本号与存储库中的元数据进行匹配;
  • 添加了支持 错误检查 (错误包装)通过创建允许使用标准错误处理程序的包装器。 例如, 错误 “e”可以通过提供一种方法来包裹错误“w” 开卷,返回“w”。 程序中存在错误“e”和“w”,并且根据错误“w”做出决策,但“e”为“w”提供了额外的上下文或对其进行了不同的解释;
  • 运行时组件的性能已得到优化(已注意到速度提高了高达 30%),并且已实现更积极地将内存返回给操作系统(以前,内存会在五分钟或更长时间后返回,但现在会立即返回)减少堆大小后)。

来源: opennet.ru

添加评论