写点什么

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

评论

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

MacCleaner Pro for Mac(系统综合清理软件)v3.3.5永久激活版

小玖_苹果Mac软件

通过云主机调用API,一键训练部署商品问答模型

华为云开发者联盟

云主机 华为云ModelArts API 接口 AI 大底座

DriveDx for mac(mac磁盘健康检测和监控工具)v1.12.1激活版

小玖_苹果Mac软件

coconutBattery Plus for Mac(电池质量检测工具)4.0.0 直装版

小玖_苹果Mac软件

After Effects 2020 for Mac(ae 2020 大师版)中文版

Mac相关知识分享

BetterTouchTool for Mac(mac触控板增强神器)

Mac相关知识分享

去中心化应用程序(DApps),读完这篇就够了!

chainwiseweb3

区块链 智能合约 安全审计 dapps 链上开发

这家语音 AI 公司新融资 2700 万美元,并预测了 2025 年语音技术趋势

声网

MacCleaner Pro for Mac(系统综合清理软件)v3.3.5永久激活版

小玖_苹果Mac软件

Permute 3 for mac(全能媒体格式转换器)中文版

Mac相关知识分享

探索智慧实践,洞见AI未来!星宸科技2024开发者大会暨产品发布会成功举办

科技热闻

VMware Fusion Pro 13 for Mac(VM虚拟机)中文版

Mac相关知识分享

JVM简介—1.Java内存区域

不在线第一只蜗牛

Java JVM

4K Video Downloader Plus Pro for Mac(4K视频下载器)v1.10.3激活版

小玖_苹果Mac软件

怎么制作关系图?10个关系图模板案例盘点!

职场工具箱

效率工具 职场 办公软件 绘图软件 实体-关系图

小红书笔记详情API接口的开发、应用与收益

科普小能手

数据挖掘 小红书 API 接口 API 测试 小红书笔记接口

比SaaS更具性价比,火山引擎云数仓ByteHouse上新“云托管”模式

字节跳动数据平台

一个Redis分布式锁的实现引发的思考

架构师之道

redis

【论文速读】| 利用人工智能修复 OSS-Fuzz 中的安全漏洞

云起无垠

Minitab Express for Mac(数据分析统计软件)v1.5.0激活版

iMac小白

用Python让两组数据纵向排序

快乐非自愿限量之名

Python

Termius for mac(终端模拟器/SSH/SFTP客户端)v9.8.7激活版

小玖_苹果Mac软件

软件格局在变,谁能扛起国产替代的大旗?

禅道项目管理

信创 企业转型 项目管理软件 国产软件 国产化替代

基于云原生数据仓库 ByConity众测

四月君

ByConity ByConity ELT

Clicker for Netflix Mac(奈飞客户端)v2.13.0激活版

小玖_苹果Mac软件

vector magic for Mac(好用的矢量图形转换软件)v1.2.0免激活版

小玖_苹果Mac软件

BOE(京东方)绿色低碳显示生态交流会成功举办 共筑行业绿色未来

爱极客侠

1毛钱买4070试玩《黑神话·悟空》!满血光追开启猿神之战!

小喵子

云电脑 云游戏 ToDesk云电脑 云电竞

Paste for Mac(剪切板历史管理工具)中文版

Mac相关知识分享

Lightroom Classic 2021 for mac(LRC中文版)

Mac相关知识分享

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