编程语言发布 ,它是由 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 字段已被弃用,不再被视为主机名。
- 现在,`go` 命令允许您在 GOPROXY 环境变量中列出多个代理,代理之间用逗号或“|”符号分隔。如果列表中的第一个代理返回错误(404 或 410),则会尝试通过第二个代理建立连接,依此类推。
- 在尝试从 string(x) 转换时,如果“x”是除 rune 或 byte 之外的整数类型,则向 vet 实用程序添加警告。
- objdump 工具添加了“-gnu”标志,以支持反汇编 GNU 汇编器语法。
- 新增套餐 这使得您可以将包含时区数据的数据库集成到程序中。
- 从源代码和文档中获取 白名单/黑名单和主/从短语现在被“允许列表”、“阻止列表”、“进程”、“伪终端”、“程序”和“控制”所取代。
- 标准库进行了大量细微改进。
- 增加了对 OpenBSD 6.7 的 GOARCH=arm 和 GOARCH=arm64 模式的支持(之前仅支持 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
