我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Go1.15更新了哪些功能

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Go1.15更新了哪些功能

这篇文章主要介绍了Go1.15更新了哪些功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Go1.15更新了哪些功能文章都会有所收获,下面我们一起来看看吧。

1、新的链接器

此版本 Go 可减少链接器资源的使用(时间和内存)并提高代码的健壮性/可维护性。对于在 amd64 架构上运行的基于 ELF 的操作系统(LinuxFreeBSDNetBSDOpenBSDDragonflyS olaris),代表性的大型 Go 程序集的链接速度提高 20%,平均所需内存减少 30%。其他体系结构/OS 组合的改进。改进链接程序性能的关键因素是新设计的目标文件格式,以及内部阶段的改进以提高并发性(例如,将重定位并行应用于符号)。Go 1.15 中的目标文件比其 1.14 等价文件稍大。这些更改是对 Go 链接器进行现代化改造的多版本项目的一部分,这意味着将来的版本中有望对链接器进行其他改进。现在,链接器在 linux/amd64linux/arm64 上默认为 -buildmode=pie 的内部链接模式,因此这些配置不再需要 C 链接器。

2、编译器改进,包括略微小了些的二进制文件

unsafe 的安全规则允许在调用某些函数时将 unsafe.Pointer 转换为 uintptr。以前,在某些情况下,编译器允许进行多个链式转换(例如 syscall.Syscall(…,uintptr(uintptr(ptr)),…))。编译器现在只需要一次转换。使用多次转换的代码应进行更新以满足安全规则。

Go 1.14 相比,Go 1.15 通过消除某些类型的 GC 元数据和更积极地消除了未使用的类型元数据,与 Go 1.14 相比将典型的二进制大小减少了大约 5%。该工具链现在通过将函数与 32 字节边界对齐并填充跳转指令来缓解 GOARCH=amd64 上的 Intel CPU 勘误 SKX102。尽管此填充增加了二进制大小,但这远远超出了上述二进制大小改进所弥补的范围。

Go 1.15 向编译器和汇编器都添加了 -spectre 标志,以允许启用 Spectre 缓解措施。这些几乎是绝对不需要的,主要是作为“纵深防御”机制提供的。有关详细信息,请参见 Spectre Wiki页面。

现在,编译器将拒绝 //go: compiler 指令,这些指令对其所使用的声明无意义,并出现“放错位置的编译器指令”错误。此类错误使用的指令以前已被破坏,但编译器无声地忽略了它们。

现在,编译器的 -json 优化日志记录报告大(>= 128 字节)副本,并包含转义分析决策的说明。

3、内嵌 tzdata(时区数据)

增加了一个新包:time/tzdata,当系统找不到时区数据时(比如 Windows 等),通过导入这个包,在程序中内嵌时区数据,也可以通过编译时传递 -tags timetzdata 来实现同样的效果。

4、增加 testing.TB.TempDir

测试生成临时文件挺常见的,这个为了更好的解决此问题。

5、增加 testing.T.Deadline

context 引入 testing 包。

6、关于 Ports 部分

darwin/386darwin/arm 不再支持;riscv64 变得更好;linux/arm64 现在作为第一类 port 支持。

7、API 的变动

  1. net/url.URL RawFragmentEscapedFragment

  2. net/url.URL.Redacted

time.Ticker.Reset,我们知道 Timer 是有 Reset 的,这次为 Ticker 也增加

  1. regexp.Regexp.SubexpIndex

  1. sync.Map.LoadAndDelete

  1. crypto/tls.Dialer.DialContext还有其他一些 API 变动,不一一列举。

8、工具链

  1. 增加 go env GOMODCACHE:https://github.com/golang/go/issues/34527;

  1. opt-in fallbacks in GOPROXY:https://github.com/golang/go/issues/37367;

  1. vet:warn about string(int)detect impossible interface assertions:https://github.com/golang/go/issues/32479 和 https://github.com/golang/go/issues/4483;

  1. println 允许打印两个值。println(twoValues())

  1. panic:显示可打印的值而不是地址。比如:

type MyString stringpanic(MyString("hello"))

现在打印:

panic: (main.MyString) (0x48aa00,0x4c0840)

期望打印:

panic: main.MyString("hello")

可读性会好很多。

9、性能

  1. amd64 上更好的写屏蔽;

  1. Linux 上,forkAndExec 使用 dup3

  1. sha512 算法速度提升 15%;

  1. ReadMemStats 延迟降低 95%;

  1. 关闭状态的 channel 接收速度提升 99%;

  1. 将小的 int 值转为 interface{} 不额外分配内存。

关于“Go1.15更新了哪些功能”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Go1.15更新了哪些功能”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Go1.15更新了哪些功能

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Go1.15更新了哪些功能

这篇文章主要介绍了Go1.15更新了哪些功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Go1.15更新了哪些功能文章都会有所收获,下面我们一起来看看吧。1、新的链接器此版本 Go 可减少链接器资源的使用(时
2023-06-27

win101903更新了哪些功能

这篇文章主要讲解了“win101903更新了哪些功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“win101903更新了哪些功能”吧!win10 19H1更新内容如下: 1、内置应用可以卸
2023-07-01

win1122h2更新了哪些功能

本篇内容介绍了“win1122h2更新了哪些功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!win1122h3值得更新吗:答:win112
2023-02-01

Laravel9.47更新了哪些功能

这篇文章主要介绍“Laravel9.47更新了哪些功能”,在日常操作中,相信很多人在Laravel9.47更新了哪些功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Laravel9.47更新了哪些功能”的疑
2023-07-05

Vue3.0版本更新了哪些功能

这篇“Vue3.0版本更新了哪些功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue3.0版本更新了哪些功能”文章吧。进
2023-06-27

win101909版本更新了哪些功能

这篇文章主要讲解了“win101909版本更新了哪些功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“win101909版本更新了哪些功能”吧! 一、更新特征: 1.日历直接增加事情 在Wi
2023-07-01

windows1019587版本更新了哪些功能

这篇文章主要介绍“windows1019587版本更新了哪些功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“windows1019587版本更新了哪些功能”文章能帮助大家解决问题。windows1
2023-07-01

CodeRush新版本v20.1.6更新了哪些功能

这篇文章主要介绍了CodeRush新版本v20.1.6更新了哪些功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇CodeRush新版本v20.1.6更新了哪些功能文章都会有所收获,下面我们一起来看看吧。Cod
2023-06-27

WebStorm发布2021.3更新了哪些新功能

这篇文章主要讲解了“WebStorm发布2021.3更新了哪些新功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“WebStorm发布2021.3更新了哪些新功能”吧!新功能和改进分为以下几
2023-06-21

Windows11 Dev Build 25120更新了哪些功能

本篇内容主要讲解“Windows11 Dev Build 25120更新了哪些功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Windows11 Dev Build 25120更新了哪些功能”
2023-04-21

JavaScript最新版本更新到了哪些功能

这篇“JavaScript最新版本更新到了哪些功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JavaScript最新版本
2023-07-04

Java开源O2OA V4.3355更新了哪些功能

这篇文章主要介绍“Java开源O2OA V4.3355更新了哪些功能”,在日常操作中,相信很多人在Java开源O2OA V4.3355更新了哪些功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java开源O
2023-06-04

windows1019041搜索功能更新了哪些内容

这篇文章主要介绍“windows1019041搜索功能更新了哪些内容”,在日常操作中,相信很多人在windows1019041搜索功能更新了哪些内容问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”windows
2023-07-01

ADO.NET3.5新增了哪些功能

本篇内容介绍了“ADO.NET3.5新增了哪些功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!ADO.NET3.5的新增重要方法:新增了L
2023-06-17

win10 mobile年度更新预览版14327新增了哪些功能? 更新内容汇总

Win10移动版一周年更新预览版14327已经发布,微软发布了该版本的更新内容。本次更新主要新增Messaging Everywhere功能,可以允许用户在Windowsjs10电脑上直接收发手机短信。 Skype 网络电话 v8.87.0
2023-05-20

Win10创意者更新快速预览版16273新增了哪些功能?

今天微软推送了Win10秋季创意者更新16273 pc快速预览版,这个版本新增了哪些功能?带来哪些变android化?请看下文详细介绍。在本次的Win10 PC秋季创意者更新16273快速预览版中,微软继续加入了新的功能,包括My Peop
2023-05-22

Ubuntu One新更新增加了什么功能

小编给大家分享一下Ubuntu One新更新增加了什么功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!据著名网站OMGUBUNTU消息,在Ubuntu11.04
2023-06-16

Keepfast新版本 v0.6.2修复了哪些功能

这篇文章主要介绍“Keepfast新版本 v0.6.2修复了哪些功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Keepfast新版本 v0.6.2修复了哪些功能”文章能帮助大家解决问题。Keep
2023-06-27

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录