AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

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

评论

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

SAP MM 使用两个STO实现免关税跨国公司间转储

SAP虾客

重磅 | 九科信息与达梦完成产品兼容性认证,携手共建信创生态

九科Ninetech

10 个杀手级的 Python 自动化脚

千锋IT教育

MyBatis resultMap元素的用途是什么呢?

@下一站

技术 mybatis java; 11月月更

新时代冠军企业成功硬道理:人效管理与可组装式HCM SaaS

ToB行业头条

构建基于 Ingress 的全链路灰度能力

阿里巴巴云原生

阿里云 微服务 云原生w

互联网企业面试必问Spring源码?搞定Spring源码,看完这篇就够了

钟奕礼

Java java面试 java编程 程序员‘

2023 重学 Angular

PingCode研发中心

前端框架

蓝鲸研运体系在腾讯内是如何应用实践的?

嘉为蓝鲸

运维 智能运维AIOps

腾讯云原生容器服务发布三大新能力,创新自研技术助力企业降本增效

科技热闻

基于云原生技术的融合通信是如何实现的?

阿里云CloudImagine

阿里云 云通信

跟误告警说再见,Smart Metrics 帮你用算法配告警

阿里巴巴云原生

阿里云 云原生 Grafana

ModelWhale 教学实训模块,更流畅的作业编写及提交体验|ModelWhale 版本更新

ModelWhale

人工智能 机器学习 数据分析 编程建模 教学实训

springboot整合canal

@下一站

Java 程序开发 spring-boot 11月月更

嘉为科技宋蕴真:观测不止于监控,让运维不开盲盒

嘉为蓝鲸

运维 智能运维AIOps

8年程序员年初被迫毕业,前后面试30家公司,如今终于上岸

Java永远的神

程序人生 后端 java程序员 java面试 面经分享

企业想要高效运营,还需要选择瓴羊Quick BI软件

流量猫猫头

大数据

Spring MVC 和 Struts 的区别是什么?

千锋IT教育

对话Neo4j首席科学家Jim Webber:图数据库江湖5年后将尘埃落定

Neo4j 图无处不在

neo4j 图数据库 知识图谱 非关系型数据库 图技术

aPaaS是什么(aPaaS与iPaaS的区别)

优秀

aPaaS ipaas

图计算的黄金时代 知识图谱背后的数据价值

Neo4j 图无处不在

neo4j 图数据库 知识图谱 图计算 图技术

MegEngine Inference 卷积优化之 Im2col 和 winograd 优化

MegEngineBot

深度学习框架 卷积 MegEngine

三年后端开发:拿下阿里/腾讯/美团等四个大厂的Offer后,总结如下

钟奕礼

Java Java 面试 程序员‘ java 编程

SpringMVC常用注解

@下一站

软件开发 程序 Java‘’ 11月月更

精彩回顾 | 云原生系统软件的产业应用

BoCloud博云

云原生

火爆全球的“饺子皮”3D手办原来是这样做的!关键时刻少不了远程控制软件!

RayLink远程工具

远程控制软件 远程办公软件 远控软件 远程桌面连接 RayLink

在结构效率不变情况下的降本增效

PMO实践

数字化转型 数字化 数智化 11月月更

10月&11月书单

图灵社区

书单推荐

关于不法分子冒用我司名义虚假招聘的严正声明

嘉为蓝鲸

Lattice - 面向高可扩展的业务框架

原力在线

架构 中台 插件 lattice 业务平台分离

阿里云洛神云网络集中式网关丨技术解读与产品实践

云布道师

云网络

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