Go 编程语言 1.14 发布

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

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

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

创新Go 1.14 版本中引入:

  • “go”命令中的新模块系统已声明可供一般使用,默认启用,并建议用于依赖项管理而不是 GOPATH。 新的模块系统具有集成的版本控制支持、包交付功能和改进的依赖关系管理。 使用模块,开发人员不再局限于在 GOPATH 树中工作,可以显式定义版本化依赖项,并创建可重复的构建。
  • 添加者 支持使用一组重叠的方法嵌入接口。 内置接口中的方法现在可以与现有接口中的方法具有相同的名称和签名。 显式声明的方法仍然像以前一样唯一。
  • “defer”表达式的性能得到了改进,使其几乎与直接调用延迟函数一样快,从而允许在性能敏感的代码中执行延迟函数。
  • 提供了协程 (goroutines) 的异步抢占 - 不包含函数调用的循环现在可能会导致调度程序死锁或延迟垃圾收集的开始。
  • 内存页面分配系统的效率得到了提高,并且现在具有较大 GOMAXPROCS 值的配置中的锁争用明显减少。 其结果是减少了延迟并提高了吞吐量,同时集中分配了大块内存。
  • 锁定已得到优化,并且运行 time.After、time.Tick、net.Conn.SetDeadline 函数中使用的内部计时器时上下文切换的数量已减少。
  • 在 go 命令中,如果根目录中有供应商目录,则默认启用“-mod=vendor”标志,用于传递与特定供应商相关的外部依赖项。 添加了单独的“-mod=mod”标志以从模块缓存而不是从“vendor”目录加载模块。 如果 go.mod 文件是只读的,并且没有顶级“vendor”目录,则默认设置“-mod=readonly”标志。 添加了“-modfile=file”标志来指定替代的 go.mod 文件,而不是模块根目录中的文件。
  • 新增 GOINSECURE 环境变量,设置后 go 命令不需要使用 HTTPS,直接加载模块时会跳过证书检查。
  • 编译器添加了默认启用的“-d=checkptr”标志,以检查代码是否符合安全使用 unsafe.Pointer 的规则。
  • 交货中包含一个新包裹 哈希/映射哈希 使用非加密哈希函数为任意字节序列或字符串创建哈希表。
  • 添加了对 Linux 上 64 位 RISC-V 平台的实验性支持。
  • 添加了对 64 位 ARM 系统上的 FreeBSD 的支持。

来源: opennet.ru

添加评论