Go 编程语言 1.15 发布

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

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

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

创新Go 1.15 版本中引入:

  • 链接器的工作得到了显着的改进,无论是在提高运行速度和减少内存消耗方面,还是在简化代码维护的方向上。 在使用 ELF 可执行文件格式的操作系统(Linux、FreeBSD、NetBSD、OpenBSD、Dragonfly、Solaris)上进行测试时,一组典型的大型 Go 应用程序的构建速度提高了 20%,并且内存消耗平均减少了 30%。 通过切换到新的目标文件格式并重新设计内部阶段以提高工作并行化水平,可以提高生产率。 现在,在 linux/amd64 和 linux/arm64 系统上默认使用“-buildmode=pie”中的本机链接器,不再需要使用 C 链接器。
  • 在运行时,小对象在具有大量 CPU 核心的系统上的分布得到了显着改善,并降低了延迟。 如果出现故障,将显示数字和字符串类型的值,而不是显示地址。 当向 Go 应用程序发送 SIGSEGV、SIGBUS 和 SIGFPE 信号时,在没有 os/signal.Notify 处理程序的情况下,应用程序将退出并显示堆栈跟踪输出(以前的行为是不可预测的)。
  • 编译器经过优化,通过停止包含垃圾收集器的某些元数据以及更积极地清理未使用的元数据,将生成的可执行文件的大小平均减少 5%。
  • “-spectre”标志已添加到编译器和汇编器中,以防止 Spectre 类攻击(对于大多数程序来说,这不是必需的;启用该选项仅适用于 一些非常具体的案例).
  • 在 X.509 证书中,CommonName 字段已被弃用,如果主题备用名称字段丢失,则该字段不再被视为主机名。
  • GOPROXY 环境变量中的“go”命令现在可以列出多个代理,以逗号或“|”分隔。 如果列表中的第一个代理返回错误(404 或 410),则将尝试通过第二个代理进行联系,依此类推。
  • vet 实用程序添加了一条警告,如果“x”是除 rune 或 byte 之外的整数类型,则尝试从 string(x) 进行转换。
  • “-gnu”标志已添加到 objdump 实用程序中以支持反汇编 GNU 汇编器语法。
  • 添加了新包 时间/时区数据,它允许您将包含时区数据的数据库集成到程序中。
  • 来自源文本和文档 已删除 短语白名单/黑名单和主/从,现在被“白名单”、“黑名单”、“进程”、“pty”、“进程”和“控制”取代。
  • 对标准库进行了大量的小改进。
  • 在 GOARCH=arm 和 GOARCH=arm6.7 模式下添加了对 OpenBSD 64 的支持(之前仅支持 GOARCH=386 和 GOARCH=amd64)。
  • 64 位 RISC-V 平台(GOOS=linux、GOARCH=riscv64)的开发仍在继续。
  • 对于 32 位 x86 系统,下一版本将提高最低系统要求 - 仅继续支持具有 SSE2 的处理器。 要在 GOARCH=386 模式下构建,您至少需要 Intel Pentium 4(2000 年发布)或 AMD Opteron/Athlon 64(2003 年发布)。

来源: opennet.ru

添加评论