写点什么

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

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

关注

评论

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

BOE(京东方)北京京东方医院主体结构开工 打造医工融合创新典范

爱极客侠

如何防止Instagram IP被限制?

Ogcloud

海外社媒运营 海外社媒营销 ins运营 海外社媒推广

云主机安装Redis,基于CodeArts模拟电商平台秒杀抢购

华为云开发者联盟

缓存 redis' 键值数据库 CodeArts

The Past, Present and Future of Apache Flink

Apache Flink

大数据 flink 实时计算

GitHub下载破千万!这份Java大厂面试指南,竟是阿里面试官上传的

Summer

Java 程序员 面试 架构师 大厂

“硬”核存储,等你来“盘”!

天翼云开发者社区

云计算 存储 硬盘

万众瞩目!这里开“展”!

天翼云开发者社区

云计算 AI

设备间无缝互联,开启智能“对话”新时代

HarmonyOS SDK

harmoyos

谷歌发布 Android XR 集成 Gemini 语音对话;Voice Agent 平台 Vapi 获 2000 万美元融资

声网

Kubernetes 可观测最佳实践

观测云

Kubernetes

拼多多根据ID取商品详情原数据API接口的开发应用与收益

科普小能手

电商 API 接口 API 测试 pinduoduo API 拼多多数据

TON游戏现状一览:区块链与Telegram的完美融合

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

如何做区块链破局的模式:区块链如何破局

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 交易所开发代币开发

中昊芯英荣登甲子光年2024中国AI算力领域最具商业潜力榜

科技热闻

微前端到底应该怎么学?

不在线第一只蜗牛

前端 微前端

IoTDB 常见问题 Q&A 第二期

Apache IoTDB

crossover安装exe后无法打开怎么办?CrossOver安装成功但打不开

阿拉灯神丁

容器 应用程序配置 苹果软件精选 CrossOver Mac下载 CrossOver 24

CCF-CV企业交流会—走进合合信息顺利举办,打造大模型时代的可信AI

合合技术团队

人工智能 信息安全 图像安全

FORCE 原动力大会|火山引擎边缘云亮点干货先知晓!

火山引擎边缘云

龙蜥社区落地开源生态发展合作倡议,构建开放兼容的操作系统生态

OpenAnolis小助手

操作系统 龙蜥社区 OpenAnolis

hbdk-model-verifier、hbdk-sim 和 hbdk-hbm-attach 工具使用教程

地平线开发者

自动驾驶 算法 算法工具链 地平线征程5

荣誉墙,上新!

天翼云开发者社区

云计算 网络安全

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