阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

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:001905
用户头像

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

关注

评论

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

一文掌握GaussDB(DWS) SQL进阶技能:全文检索

华为云开发者联盟

sql 全文检索 华为云 GaussDB(DWS) 字段

节能降耗——搭建绿色IDC能耗与管控系统

一只数据鲸鱼

物联网 数据中心 数据可视化 IDC 机房管理

无人驾驶平台,让IT没有难做的测试

鲸品堂

方法论 无人驾驶

2021年企业需要了解的和云计算相关的6大趋势

浪潮云

云计算

统一元数据,数据湖Catalog让大数据存算分离不再是问题

华为云开发者联盟

大数据 元数据 存算分离 华为云MRS 数据湖Catalog

【LeetCode】笨阶乘Java题解

Albert

算法 LeetCode 4月日更

一周信创舆情观察(3.22~3.28)

统小信uos

需求分析是什么?

Simon

架构实战营

有道云笔记新版编辑器架构设计(下)

有道技术团队

架构 大前端

Rust从0到1-所有权-概念介绍

rust 所有权

INTERSPEECH2020 语音情感分析论文之我见

华为云开发者联盟

数据处理 模型 音频 语言情感分析 INTERSPEECH2020

阿里云:城市大脑数据智能解决方案

不脱发的程序猿

大数据 阿里云 城市大脑 数据智能解决方案 4月日更

年纪轻轻,为什么要搞中间件开发?“路怎么走,让你们自己挑”

小傅哥

Java 分布式 小傅哥 中间件 架构设计

EGG NETWORK阿凡提以“自由匿名竞价”流通市场EFTalk

币圈那点事

零代码实现一对一表关系和无限主子表级联保存

crudapi

API crud crudapi 主子表 多对多

FloydHub 2020年最佳机器学习书籍之一《可解释机器学习》中文版来啦!

博文视点Broadview

华为帐号服务学习笔记(一):什么是HMS,什么是华为帐号服务

Coding狙击

android HMS

微众银行区块链开源基于Rust的Wasm合约语言框架Liquid

Patract

智能合约 rust polkadot Patract Wasm

RTC技术干货 | 音频质量评价体系那些事

拍乐云Pano

音视频 WebRTC RTC 3A算法 音频

RUOYI 框架教程 12| 若依视图解决多表查询,就是这么简单!

Java_若依框架教程

Java 技术 Ruoyi 框架 若依

ZooKeeper 会话的秘密

HelloGitHub

Java zookeeper ZooKeeper原理 zk

华为帐号服务学习笔记(二):OAuth2.0协议详解

Coding狙击

android 华为 OAuth 2.0 HMS

有了人工智能技术,告警管理会发生什么变化?

睿象云

人工智能 事件管理

Java-技术专题-Synchronized锁的分析

洛神灬殇

Java synchronized

Apache Flink Meetup · 上海站,超强数据湖干货等你!

Apache Flink

flink 数据湖 iceberg

面试官:什么是死锁?怎么排查死锁?怎么避免死锁?

小林coding

多线程 操作系统 死锁

AIOps 让「事件管理」变得更加智能

睿象云

AIOPS 告警管理

Uniswap v3揭开真面目NA公链(Nirvana)NAC公链表示不服

区块链第一资讯

LiteOS内核源码分析:任务栈信息

华为云开发者联盟

LiteOS 任务栈 栈指针 LOS_StackInfo LOS_Task

答题拿奖两不误:华为云知乎金牌答题官,就是你!

华为云开发者联盟

程序员 华为云 知乎答题 答案 金牌答题官

gorm源码阅读之callback

werben

Go 语言 gorm

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