写点什么

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

评论

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

Compressor for Mac(视频转码编辑工具)

Geek贝

融云 AI 机器人上线,独家直连 AI 平台,加速落地创新探索

融云 RongCloud

科学智能赋能空间科学研究(4):中国空间站空间科学实验的未来展望

ModelWhale

科学智能 AI4S 空间科学

Spring Boot 启动优化实践

vivo互联网技术

Java 性能优化 后端 spring-boot SpringBoot启动流程

京东图片搜索接口抓取指南,搜索相似商品

tbapi

京东图片搜索接口 京东拍立淘接口 京东图片搜索API 京东图片API 京东商品搜索接口

CADintosh X for Mac 技术图形、工程图纸、流程图等

Rose

Blu-ray Player Pro Mac 支持播放完整的蓝光菜单,蓝光光盘,ISO镜像

Rose

开发实践,通过融云 IM + Dify 实现 AI 机器人

融云 RongCloud

Turbo Boost Switcher Pro for mac(cpu温度监测工具)

Geek贝

me2025媒体编码Media Encoder 2025系统要求及安装包下载-mac/win

Rose

Mac 3D影视特效渲染SideFX Houdini 安装包含注册机及激活补丁

Rose

chemdraw2023激活码 附详细安装教程

Rose

客户案例 | 某大型综合性券商借助白鲸开源产品打造全链路智能调度与数据集成平台

白鲸开源

DataOps 证券行业 白鲸开源 WhaleStudio WhaleScheduler

智慧政协系统(源码+文档+讲解+演示)

深圳亥时科技

Mac天气预报组件 Weather Widget Live 随时了解天气!

Rose

京东店铺所有商品接口,搜索整店商品

tbapi

京东数据接口 京东店铺所有商品接口 京东店铺商品采集 京东店铺数据采集

Navicat Data Modeler Ess for Mac(数据库建模与设计工具)中文版

Geek贝

Mac吉他贝斯效果器 Native Instruments Guitar Rig 7 Pro新功能详解

Rose

视频转换编辑压缩和下载工具VideoProc Converter AI 中文版-mac/win

Rose

中昊芯英董事长兼CEO杨龚轶凡入选“2025 年度浙江省青年科技型企业家”榜单

科技热闻

mac鼠标键盘记录工具Mouse and Keyboard Recorder

Rose

NocoBase 本周更新汇总:支持扫码填充数据

NocoBase

开源 低代码 零代码 无代码 版本更新

企业太小没钱做等保2.0怎么办?

等保测评

AppGallery Connect(AGC)总体流程

小赵学鸿蒙

商务 AppGallery Connect 鸿蒙开发​​工具

Movist Pro mac高清视频播放器,不会卡顿或滞后

Rose

AI教育大模型及其应用

北京木奇移动技术有限公司

AI教育 AI技术开发 软件外包公司

用好 JUnit 5 的高级特性:提升单测效率和质量

xiaoxi666

Java 单元测试 JUnit 测试 单元测试 junit5

App Uninstaller for Mac(mac软件卸载工具)

Geek贝

如何实现空间分布变化的材料设置 --- 2

思茂信息

cst CST软件 CST Studio Suite

哪些行业必须做等保

等保测评

mac虚拟光驱工具 Daemon Tools 中文激活版

Rose

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