写点什么

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:004194

评论

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

疫情放开,户外全彩LED屏发展趋势

Dylan

LED display LED显示屏 户外LED显示屏

【web 开发基础】PHP 中的预定义数组详解续集 (48)

迷彩

post GET 文件上传 PHP基础 预定义数组

一文告诉你如何选择低代码供应商?

YonBuilder低代码开发平台

超详细图文保姆级教程:App开发新手入门(三)

YonBuilder低代码开发平台

超详细图文保姆级教程:App开发新手入门(四)

YonBuilder低代码开发平台

华为云桌面,如何让云上办公变得高效、安全?

i生活i科技

企业想要智慧化办公,首选华为云桌面Workspace!

科技怪授

【架构设计】你的类足够“专一”吗

JAVA旭阳

Java 架构

spaa 22

黄敏

数据库原理及MySQL应用 | 约束

TiAmo

主键约束 数据库· 12月月更

如何使用YonBuilder进行报表分析?

YonBuilder低代码开发平台

启科QuSaaS真随机数解决方案与Amazon Braket结合实践

启科量子开发者官方号

人工智能 量子计算 随机数

华为云桌面,助你畅享高清视觉体验!

科技怪授

银行如何快速落地营销数字化?

中关村科金

人工智能 大数据 AI 数字化转型 数字化

优化器核心技术—Join Reorder

KaiwuDB

Web入门开发【四】

小院里的霍大侠

Web 编程开发 初学者 入门实战

一文读懂什么是低代码开发?

YonBuilder低代码开发平台

云原生媒体基础设施为华为云桌面护航

科技怪授

手把手教你玩转 Excel 数据透视表

葡萄城技术团队

数据分析 Excel 数据可视化 数据透视表 可视化数据

YonBuilder移动开发 AVM框架 封装虚拟数字键盘组件

YonBuilder低代码开发平台

内存多维数据分析引擎

元年技术洞察

大数据 数据中台 数字化转型 多维数据库

数据可视化图表系列解析——饼图

Data 探险实验室

数据分析 可视化 数据可视化 可视化数据 可视化工具

【IntelliJ IDEA】连接https报错问题: E230001: Server SSL certificate verification failed:

No8g攻城狮

svn IDEA

YonBuilder应用构建教程之移动端基础配置

YonBuilder低代码开发平台

YonBuilder移动开发平台 AVM框架 封装身份证号码虚拟输入键盘组件

YonBuilder低代码开发平台

无代码优缺点及发展前景

间隔

统信软件高级工程师:关于云原生技术在容器方面的应用介绍 | 龙蜥技术

OpenAnolis小助手

云原生 容器技术 龙蜥大讲堂 统信软件 开源领域

SDK更新不了问题解决

芯动大师

android hosts SDK 教程

HTTP请求首部字段

穿过生命散发芬芳

HTTP 12月月更

2022-12-25:etcd可以完全替代zookeeper,原因是k8s用的etcd,不用担心不成熟。请问etcd部署在k3s中,yaml如何写?

福大大架构师每日一题

云原生 k8s etcd k3s 福大大

AI 2022:浪潮奔涌,百舸争流

Baihai IDP

人工智能 AI 年终总结 AI 2022

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