AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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

评论

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

ARTS|Week 1 第一次使用LeetCode

Puran

LeetCode ARTS活动

Dataway 整合 Swagger2,让 API 管理更顺畅

哈库纳

Spring Boot DataQL Dataway Hasor

服务化架构-状态码设计要点

图南日晟

微服务 RESTful 架构设计

金灿灿的季节 - Apache DolphinScheduler收获5位新Committer

代立冬

Vol.7 聊聊我热爱的陕西省图书馆

pyfn2030

记录 生活,随想

Vol.8 云栖小镇游记

pyfn2030

阿里云 随笔 数字化转型

避免争执

孙苏勇

职场 随笔杂谈

服务化构建-多维度的认识中台

图南日晟

软件工程 分层架构 架构设计

安装R语言编译器:

唯爱

珍藏已久的 OS 学习网站拿出来分享给大家

苹果看辽宁体育

操作系统

Rust 遇上 C/C++(二):函数传参

Coding Fatty

c c++ rust 编程语言

Eureka 实例注册状态保持 STARTING 的问题排查

张晓辉

spring Spring Cloud netflix

tput命令介绍

唯爱

【写作群星榜】5.22~5.28写作平台优秀作者&文章排名

InfoQ写作社区官方

写作平台 排行榜 热门活动

控制 Pod 内容器的启动顺序

张晓辉

Kubernetes

小谈校招offer选择

dongh11

职场 职业规划 应届毕业 心态 招聘

磁盘挂载

唯爱

只用CSS实现响应式Full-Width img 2种方法

寇云

CSS css3

Java 学习笔记(三)数据类型

杜朋

Vol.9 Web前端发展历程及前端工程化

pyfn2030

大前端

《中国互联网简史》系列笔记之P2P

dongh11

读书笔记

游戏夜读 | vim,vim,vim

game1night

解决版权难题,“豪横”字体自己做

zhoo299

设计 CG

认识数据产品经理(四 与互联网产品经理的区别)

马踏飞机747

大数据 互联网 产品经理 职业规划

深入浅出Mysql索引的那些事儿

猿人谷

MySQL 性能优化 索引

XSKY发布XMotion纳管热迁移技术,OpenStack集群迁移效率提升超10倍

XSKY星辰天合

在培训机构花了好几万学Java,当了程序员还常被鄙视,这是招谁惹谁了?

四猿外

Java 学习 程序员 个人成长

时序数据库

pydata

超简单入门MyBatis,看了就会了~

程序员的时光

mybatis

不懂送女朋友什么牌子的口红?没关系!Python 数据分析告诉你。

JackTian

Python 程序员 数据分析 python 爬虫 口红

MySQL死锁系列-常见加锁场景分析

程序员历小冰

MySQL

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