写点什么

GCC 8.1 支持 C++2a 的部分特性

  • 2018-05-16
  • 本文字数:922 字

    阅读完需:约 3 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

GCC 8.1 是 GNU 编译器集的最新主版本,该版本对即将到来的 C++2a 标准的某些部分提供了实验性支持。此外,GCC 8.1 改进了性能分析驱动的优化,并把 Go 支持提升到了 1.10.1 版本。

虽然对于即将到来的 C++ 草案,有关工作尚处于起步阶段,但 GCC C++ 前台提供了两个新标识-std=c++2a-std=gnu++2a,以便启用已经预先批准的部分 C++ 新特性,其中包括指定初始化针对位域的默认成员初始化器针对预处理程序逗号省略的 VA_OPT lambda 捕获 [=, this] 简化的隐式lambda 捕获等等。要了解GCC 8 中的全部C++2a 特性,请查阅 C++ 状态页面

此外,C++ 的前台输出现在改进了诊断信息,包括改进了位置和位置范围,并提供了若干新的故障排除线索。例如,在以下情况下,编译器现在可以提供一个线索,如在定义之前使用宏,试图访问类或结构的私有字段,当旧式的转换可以用static_castconst_castreinterpret_cast替代。

GCC 8.1 显著改善了性能分析驱动的优化。这些优化使用对被检测代码的性能分析结果决定优化哪一部分代码。例如,GCC 现在默认会把面向x86 的函数分成热区和冷区。热函数的优化力度更大,GCC 会把它们放在同一个区域里,增强局部性。同样,GCC 现在能够从一个有效运行的程序中检测不执行的代码,比如,它在某一时刻触发了未定义的行为。

谈到优化,该版本还新增了循环优化,如 -floop-unroll-and-jam执行外部循环展开和内部循环融合,-floop-interchange执行嵌套循环中的循环互换,增强数据局部性。一些已有的优化器也经过了改进,包括-floop-nest-optimize-ftree-loop-distribution。所有优化器都是使用-O3标识默认启用的。

前面已经提到,Go 支持经过了改进,这得益于 Go 1.10.1 的完整实现,这是 Go 最新的官方版本。此外,其垃圾收集器现在是完全并发的了。

最后需要注意的一点是, GCC 8.1 还引入了 Armv8.4-A 架构支持,可以通过-march=armv8.4-a选项启用,可伸缩向量扩展(SVE)支持现在是作为Armv8.2-A 架构及更高版本的可选扩展。

GCC 8.1 还包含许多更有趣的变化,要了解全部细节,请查看官方的发布说明

查看英文原文 New GCC 8.1 Supports Some Features of C++2a

2018-05-16 19:002106
用户头像

发布了 1008 篇内容, 共 393.0 次阅读, 收获喜欢 345 次。

关注

评论

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

DevOps系列之 —— 持续规划与设计(三)敏捷项目管理的方法【Kanban 与 Scrum】

若尘

DevOps #DevOps 三周年连更

车企外卷:一个关于智能手机的“围城故事”

脑极体

手机 车企

达观助手AI写作下载安装教程及特色功能详解,速速收藏体验!

NLP资深玩家

一文掌握 Go 文件的读取操作

陈明勇

Go golang 文件读取 三周年连更

RabbitMQ组件介绍

穿过生命散发芬芳

RabbitMQ 三周年连更

加速文件传输协议如何工作

镭速

慌了?ChatGPT吃我的饭,还要掀我碗

引迈信息

AI 低代码 ChatGPT JNPF

一文读懂封装

断墨寻径

#java 三周年征文

论程序员的为码之“道”

酱紫的小白兔

Unity 之 转微信小游戏本地数据存储

陈言必行

Unity 三周年连更

【坚果派-坚果】获取OpenHarmony 3.2 Release源码的两种方式

坚果

HarmonyOS OpenHarmony OpenHarmony3.2 三周年连更

影驰 GeForce RTX 4070显卡正式开售!星曜 OC系列首发评测抢先看

Geek_2d6073

盘点 8 款好用的 API 接口文档管理工具

Liam

程序员 接口文档 API 接口规范 接口编写

HuggingGPT 强势来袭,LLM+ 专家模型,迈向更通用的AI

Zilliz

Zilliz Towhee ChatGPT LLM huggingface

vue3 +ts 如何安装封装axios

肥晨

Vue3 三周年连更

devops|中小公司不要做研发效能度量

laofo

DevOps 研发效能 效能度量 DevOps工具链 研发效能度量

zookeeper的节点加密方式及分布式锁实现过程

浅羽技术

三周年连更

5 分钟带你小程序入门 [实战总结分享]

程序员海军

小程序 微信小程序 前端 三周年连更

ContentProvider介绍

芯动大师

ContextClassLoader 三周年连更

一文读懂域名注册

火山引擎边缘云

证书 域名 域名服务器

危中蕴机:Oi! Network展现出的勇气和决心

股市老人

程序员如何保住自己的饭碗?| 社区征文

liuzhen007

程序员 三周年征文

一文读懂Annotation

老周聊架构

三周年连更

对话ChatGPT:Prompt是普通人“魔法”吗?

Alter

kubernetes indexer源码解析

欢乐的阿苏

golang DevOps cache 源码阅读 #Kubernetes#

不要过于吹捧ChatGPT:人工智能生成文字还有很大提升空间

石头IT视角

Go语言开发小技巧&易错点100例(三)

闫同学

Go 三周年连更

C生万物 | 反汇编深挖【函数栈帧】的创建和销毁

Fire_Shield

C语言 汇编 三周年连更 函数栈帧

MobTech ShareSDK|如何从分享到回流

MobTech袤博科技

云原生时代全链路观测体系构建

嘉为蓝鲸

全球首个完全开源的指令跟随大模型;T5到GPT-4最全盘点

OneFlow

GCC 8.1支持C++2a的部分特性_开源_Sergio De Simone_InfoQ精选文章