写点什么

Go 1.12 发布:改进了运行时性能以及模块支持

  • 2019-03-27
  • 本文字数:987 字

    阅读完需:约 3 分钟

Go 1.12发布:改进了运行时性能以及模块支持

Go最新版本1.12于近日发布,该版本并没有改动语法规范,它主要对运行时性能、编译工具链以及模块系统等进行了优化。另外,它还为 TLS 1.3 提供了 opt-in 支持,同时改进了对 MacOS 和 iOS 等系统的支持。


Go 1.12 最大的更新亮点是改进了 Go 运行时对内存分配和释放的处理方式。更具体地说,当堆内存中存在大量存活单元的时候,它能更好地提升垃圾回收中扫除(Sweep)阶段的性能,该阶段需要从头到尾扫描整个内存空间,以确定要释放的内存块。这也减少了内存回收后马上再分配的时间延迟;而且,垃圾回收器在释放内存时也表现得更具侵略性,从整体上减小了程序所占用的内存。特别是当申请内存不能在堆中直接分配的时候,会被强制执行这种释放行为。


其他对 Go 运行时的改进包括:优化了定时器和最后期限(Deadline)相关的代码,可以更快地处理网络连接时的最后期限问题;支持通过设置环境变量 cpu.extension=off 来禁用可选 CPU 指令集的扩展;提高了程序内存配置文件的准确性,尤其是在程序从堆中申请了很多大块内存的时候。


Go 1.12 对模块的支持也做了一些改进。模块系统最初在 Go 1.11 版本中被引入,该系统与传统的 GOPATH 方法并存。 为了简化两者之间的切换,Go 1.11 引入了环境变量 GO111MODULE,以及一个默认的 auto(自动)模式,当 Go 命令在 gopath/src 以外的目录树中运行并且其根目录中包含 Go.mod 文件时,该自动模式会尝试使用模块系统。 Go 1.12 更进一步,即使根目录中不存在 Go.mod 文件,它也允许一些 Go 命令按照模块模式运行。 此外,Go 1.12 也引入了很多针对模块系统实现的修补。


如上所述,Go 编译工具链也得到了改进,包括更积极的使用内联函数;新增了标志变量-lang,以实现对不同语言版本的配置;更好的调试信息;以及针对 Go 和汇编函数不同的调用约定,在 ABI 层实现的一个潜在重大变更


Go 1.12 还引入了对 TLS 1.3 的支持,可以通过设置 GODEBUG 环境变量 tls13=1 来启用它。TLS 1.3 向下兼容了 1.2 版本中除 TLSUnique 以外的所有特性,并为这些特性提供了更好的安全性和性能。 但是,一些 TLS 1.3 特性仍处在开发过程中,如密码套件的可配置性等。TLS 1.3 将在 Go 1.13 中默认启用。


最后,Go 新版本提高了对 macOS、iOS、AIX 和 Windows/ARM 等系统的兼容性支持。


关于 Go 1.12 的更多信息,请参阅官方发布日志


查看英文原文Go 1.12 Improves Runtime Performance and Module Support


2019-03-27 08:003964

评论

发布
暂无评论
发现更多内容

win版Turbo Studio(虚拟封装软件) v24.6.3 激活版

iMac小白

win版Moho Pro(二维卡通动画制作软件) v14.2中文激活版

iMac小白

win版Radiant Photo(照片编辑美化软件) v1.3.1特别版

iMac小白

Web端渗透测试初探

FunTester

使用 Spring 实现控制反转和依赖注入

不在线第一只蜗牛

Java spring

win版Affinity Publisher 2(逆天排版神器)v2.5.3中文直装版

iMac小白

数仓还是湖仓?专家圆桌深度解析

StarRocks

win版VovSoft Domain Checker(域名批量检测工具) v8.9 激活版

iMac小白

win版Typora (轻量级 Markdown 编辑器) v1.9.4 激活版

iMac小白

35个Redis企业级性能优化点与解决方案

快乐非自愿限量之名

数据库 redis 性能优化

MoneyPrinterPlus:AI自动短视频生成工具-微软云配置详解

程序那些事

工具 AIGC

win版Affinity Photo(图像处理软件) v2.5.2直装激活版

iMac小白

win版Directory Opus(文件管理器) v13.7 (x64) 专业版

iMac小白

没有采用框架的LeSS导入

ShineScrum捷行

大规模敏捷LeSS 吕毅老师 LeSS认证实践者

超级App构建小程序生态的方式

Geek_2305a8

22.5万奖金池丨Higress AI 网关编程挑战赛启动

阿里巴巴云原生

阿里云 云原生 Higress

比特币生态系统的现状与流动性提升的新路径

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

淘宝/天猫拍立淘API返回值解析:taobao.item_search_img实战操作指南

技术冰糖葫芦

api 网关 API Explorer api 货币化 API 文档

win版O&O DiskImage Professional/Server(系统备份软件) v19.1.150 注册版

iMac小白

程序员"计算机之子"的职场反思

博文视点Broadview

以创新赋能引领鸿蒙应用开发,凡泰极客亮相华为HDC2024

FinClip

深入浅出Python沙箱越狱:原理、方法与防范

我再BUG界嘎嘎乱杀

Python 后端 开发语言 沙箱越狱

如何在短时间内交付高质量软件?

伤感汤姆布利柏

系列 二 从GPT到"通义千问":国内外大模型技术演进与产业图谱解析

松子(李博源)

产业链 大模型 AIGC

win版Serif Affinity Designer(矢量图处理工具) v2.5.2直装版

iMac小白

Go 1.12发布:改进了运行时性能以及模块支持_编程语言_Sergio De Simone_InfoQ精选文章