限时领|《AI 百问百答》专栏课+实体书(包邮)! 了解详情
写点什么

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

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

关注

评论

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

字节前端必会面试题

夏天的味道123

JavaScript 前端

软件测试 | 测试开发 | 测试人生 | 毕业2年,拒绝独角兽入职名企大厂涨薪10万+,这个95后小姐姐好飒

测吧(北京)科技有限公司

测试人生

「九章云极DataCanvas」完成C+轮融资,用云中云战略引领数据智能基础软件升级

九章云极DataCanvas

机器学习 数据智能

LeetCode-316. 去除重复字母&&1081.不同字符的最小子序列(Java实现)

bug菌

9月日更 Leet Code 9月月更

干货|APP自动化Android特殊控件Toast识别

霍格沃兹测试开发学社

同频共振数据时代,AntDB数据库与永洪科技完成产品互认证

亚信AntDB数据库

数据库 AntDB 国产数据库 AntDB数据库

企业如何规划SRM供应商协同平台?实现最佳应用价值

数商云

数字化转型 企业数字化

热点直播 | 财务共享中心数字化转型,推动央企构建一流财务管理体系

望繁信科技

直播 技术干货

百度工程师教你玩转设计模式(工厂模式)

百度Geek说

Java 设计模式 企业号九月金秋榜

【JS】两种实现-懒加载的方式-附无限滚动案例

Sam9029

JavaScript 前端 懒加载 9月月更

云渲染为设计行业带来哪些福利?

3DCAT实时渲染

跟我一起学mybatis

楠羽

mybatis 笔记 9月月更

TDengine 如何进行 SQL 写入?官方最全教程来了

TDengine

数据库 时序数据库 企业号九月金秋榜

软件测试 | 测试开发 | MockServer 服务框架设计

测吧(北京)科技有限公司

MockServer

LG稳居高地再布新棋 顺应需求领跑高端家电市场布局新生态

极客天地

DevSecOps 落地三部曲|小孩子才做选择,极狐GitLab 安全、高效全都要

极狐GitLab

DevOps 运维 安全 DevSecOps 极狐GitLab

基于threejs中秋佳节之际带你遨游星空🌃

南城FE

前端 中秋 three.js

干货| app自动化测试之Andriod微信小程序的自动化测试

霍格沃兹测试开发学社

手把手教你如何进行拆解竞品

产品海豚湾

产品经理 需求分析 竞品分析 9月月更 市场调研

WAIC|九章云极DataCanvas公司携因果学习技术成果精彩亮相!

九章云极DataCanvas

人工智能 开源 因果学习

LeetCode-448. 找到所有数组中消失的数字(Java)

bug菌

9月日更 Leet Code 9月月更

软件测试 | 测试开发 | 专项测试技术初识Hook

测吧(北京)科技有限公司

测试

【中秋特辑】嫦娥妹妹,你别着急~

阿里巴巴云原生

阿里云 RocketMQ 云原生 消息队列

CeresDB 技术架构简介

TRaaS

#开源项目

软件测试 | 测试开发 | 测试人生 | 从传统行业到名企大厂,薪资翻倍,我做到了

测吧(北京)科技有限公司

面试

软件测试 | 测试开发 | 测试人生 | 年薪50w+ 并入职名企大厂,这是双非学历小哥哥给自己30岁的礼物

测吧(北京)科技有限公司

测试人生

中移链DDC-SDK技术对接全流程(二)

BSN研习社

区块链、

软件测试 | 测试开发 | 测试人生 | 疫情之下,1个月内涨薪50%拿下亿级流量金融上市公司新 offer,我柠檬了~

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 测试人生 | 拿到多个 offer 从了一线互联网公司并涨薪70%,90后小哥哥免费分享面试经验~

测吧(北京)科技有限公司

测试人生

软件测试 | 测试开发 | 测试人生 | 从外行到外包,从手工测试到知名互联大厂测开 这个90后小姐姐是怎么腾飞的?

测吧(北京)科技有限公司

测试人生

软件测试 | 测试开发 | 项目倒排,跟工期不足say byebye~

测吧(北京)科技有限公司

测试人生

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