写点什么

GCC 5.1 正式发布

  • 2015-04-27
  • 本文字数:1108 字

    阅读完需:约 4 分钟

GNU 项目组近期宣布正式发布GCC 5.1。GCC 5 的第一个主要版本增加了许多新特性和改进,例如:改进对C++11/14 的支持,libstdc++ 库默认使用全新ABI,一个机器码即时编译嵌入库。

GCC 5.1 中引入的最重要的变化:

  • ANSI 批准的 C 标准 gnu89 太过于古老,新版本中采用 gnu11 作为默认的 C 编译器。
  • 在其它方面,C++ 运行时引入一个新的 ABI,默认启用并且使用兼容 C++11 的 std::string 和 std::list 类代替现有的类。这个改动不影响已有代码,开发者无须为此重构它们,使用第三方库的开发者如果想要使用老版本 ABI,则需要使用 -D_GLIBCXX_USE_CXX11_ABI=0 这个 flag。新的 libstdc++ 库提供了双重 ABI ,这意味着使用老版本 GCC 构建的代码能够在最新的 libstdc++ 库中运行。库和插件的提供者可以选择支持同样的双重 ABI 概念,以此免去开发者们的重构之忧。
  • 更好地支持 C++11 和 C++14:libstdc++ 现在完全支持 C++11 并为 C++14 提供实验性支持。此外,G++ 支持许多 C++14 的特性,例如:变量模板、非静态数据成员初始化集合,确定大小的内存销毁函数等。
  • GCC 5 提供一个可选的,Go 1.4.2 的完整实现。
  • GCC 5 能够将自身构建为共享库 libgccjit,然后作为即时编译器嵌入到机器码中。这一选择仍是实验性的并且“尚不推荐应用于实际产品中”,但是它的确给我们带来诸多有趣的可能性,例如在Python 中自定义一门语言,然后为它构建一个机器码编译器。通过查阅官方GCC 5.1 发行版无法判断应用于 GCC 运行时库的许可例外是否同样可以应用于 libgccjit。如果你的最终产品和分发的程序链接了 GCC 运行时库,没有运行时库例外意味着你的产品和程序必须在 GCC 的许可(GPL3)下发布。
  • 最后,GCC 5.1 增加了许多优化,例如:相同函数统一使用一个新的相同代码折叠(ICF)路径;检测只赋值却未使用的变量并优化;改进了内存使用以及链接时间;改进了注册配置等。你可以获取更完整的改动概况以了解更多细节。

GCC 主要的竞争者是 LLVM,现在发布到 3.6 版本。Phoronix运行了一系列的基准测试来比较GCC 5 预发布版与LLVM 3.5,他们发现二者在绝大多数测试中的表现非常相似,只在几个测试中不太一样,例如:C-Ray 多线程ray-tracer 测试中,GCC 的性能领先;LLVM 的Clang 在编译时胜于GCC。这么看来,两款编译器间最大的差异大概就是不同的许可模式了,GCC 基于GPL3 的许可,而LLVM 基于一种更像是MIT/BSD 的许可。

查看英文原文: GCC 5.1 is Out


感谢夏雪对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-04-27 07:014472
用户头像

发布了 63 篇内容, 共 135.9 次阅读, 收获喜欢 38 次。

关注

评论

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

Go HTTP Server 基于OpenTelemetry 使用Jaeger - 代码实操

非晓为骁

Go Docker Trace Jaeger OpenTelemetry

喜讯!openGauss社区入选2021年 “科创中国”榜单

如何使用OKR管理团队?

优秀

hexo+github搭建个人博客前期部署工作

静Yu

Hexo

云计算及国内主流云厂商概述

穿过生命散发芬芳

3月月更

OceanBase 社区版 运维管控平台 OCP 功能解读

OceanBase 数据库

OCP oceanbase OceanBase 开源 OceanBase 社区版

盲盒风潮过后,中国收藏玩具市场该何去何从?

易观分析

盲盒 潮玩

数字化时代下,智能运维全栈监控解决方案及案例盘点

云智慧AIOps社区

运维 解决方案 场景应用 自动化运维 运维安全

如何进行数据挖掘?

郑州埃文科技

数据挖掘 数据库

APICloud平台使用融云模块实现音视频通话实践经验总结分享

YonBuilder低代码开发平台

前端开发 APP开发 APICloud 融云 跨端开发

被冰封的 Bug:Fishhook Crash 修复纪实

声网

Dev for Dev fishhook

ICASSP 2022 | 前沿音视频成果分享:基于可变形卷积的压缩视频质量增强网络

阿里云CloudImagine

阿里云 计算机视觉 音视频 视频编码 视频云

企业知识管理的目标是什么?

小炮

打造优质的车联网体验,仍需注意数据安全保护

FinClip

移动域全链路可观测架构和关键技术

阿里巴巴终端技术

架构 App 移动端 体验优化

Gitlab-ci 替代 webhook 触发Jenkins job

网易云信

gitlab

如何从头到脚彻底解决一个MySQL Bug?华为云数据库高级专家带你看

华为云数据库小助手

bug GaussDB 华为云数据库 GaussDB(for MySQL)

企业内PAAS建设的经验与教训

Crazy

中间件 PaaS 经验 云原生应用

openGauss社区成立ReleaseManagement SIG

低代码实现探索(三十七)业务的流程,开发的框架

零道云-混合式低代码平台

【直播回顾】OpenHarmony知识赋能第四期直播——标准系统HDF开发

OpenHarmony开发者

直播 HDF OpenHarmony

【51单片机】室友用一把王者时间,学会了去使用数码管

謓泽

3月月更

实用机器学习笔记二十五:超参数优化

打工人!

学习笔记 超参数调优 机器学习算法 3月月更

JavaScript深入理解之闭包

锋享前端

大数据培训:Hadoop和MPP有什么区别

@零度

hadoop MPP 大数据开发

向工程腐化开炮 | Java代码治理

阿里巴巴终端技术

Java android JVM 代码治理

java培训:SpringBoot高频面试考点分享

@零度

JAVA开发 springboot

Jaeger docker部署实操

非晓为骁

Docker Jaeger Go 语言 http client

基于WEB快速开发平台的轻量ERP

雯雯写代码

ERP 快速开发平台

中国AI的下一站:从两会高地奔涌向产业河谷

脑极体

WebRTC 简单入门

ZEGO即构

WebRTC 动手实践 音视频开发 即构科技

GCC 5.1正式发布_DevOps & 平台工程_Sergio De Simone_InfoQ精选文章