写点什么

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

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

关注

评论

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

让 AI 帮你写代码,开发提效神器来了

阿里巴巴云原生

阿里云 AI 云原生

JMeter读取CSV文件实现参数化技术指南

霍格沃兹测试开发学社

2024-03-27:用go语言,多维费用背包。 给你一个二进制字符串数组 strs 和两个整数 m 和 n, 请你找出并返回 strs 的最大子集的长度,该子集中 最多 有 m 个 0 和 n 个

福大大架构师每日一题

福大大架构师每日一题

Jetson Xavier nx 全盘加密

一五

AI 边缘计算 jetson 全盘加密 jetson xavier nx

【干货分享】华为云多模数据库GeminiDB架构与应用实践直播问答实录

平平无奇爱好科技

无人不识又无人不迷糊的this

不在线第一只蜗牛

Java 前端 开发语言

类似trello的局域网开源的软件

爱吃小舅的鱼

项目管理 项目管理工具 Trello

28+岗位!百度安全2025届实习生招聘火热进行中

百度安全

业内首个!央广网APP率先完成鸿蒙原生应用全量版本开发,领跑鸿蒙化进程

最新动态

华为云GeminiDB发布新版本,全面支持Redis 6.2

平平无奇爱好科技

怎样让 API 快速且轻松地提取所有数据?

技术冰糖葫芦

API 接口 API 文档

工作中总结的30个常用Linux指令,实在记不住就别硬记了,看这篇就够了

快乐非自愿限量之名

Linux 运维 服务器

Golang DB连接池ErrBadConn的应用

三七互娱后端技术团队

golang MySQL

Partisia Blockchain:真正做到兼顾隐私、高性能和可拓展的公链

股市老人

适合老师使用的在线教学软件推荐!这一款千万别错过。

彭宏豪95

在线教育 在线白板 办公软件 教学 效率软件

What's new in PikiwiDB (Pika) v3.5.3 (正式版)

apache/dubbo-go

nosql redis

究竟什么样的数据库,才能承接RTA广告这个技术活!

平平无奇爱好科技

GeminiDB新特性:让Redis广告频控爱不释手的exHASH

平平无奇爱好科技

深入了解 Docker Compose:简化容器化应用部署的利器

霍格沃兹测试开发学社

小程序应用市场发展趋势分析

Onegun

小程序 小程序平台

在 ASP.NET Core 中使用 HttpClient

雄鹿 @

ASP.NET Core

堪称教学神器的5款软件,每一款都值得推荐!

彭宏豪95

效率工具 在线教育 在线白板 办公软件 在线协作

新版Redis不再“开源”,对使用者都有哪些影响?

平平无奇爱好科技

一文读懂兼顾隐私、高性能和可拓展的公链Partisia Blockchain

股市老人

中国超高清自有珠穆朗玛:双Vivid是什么?

脑极体

音视频

Partisia Blockchain:如何做到兼顾隐私、高性能和可拓展?

石头财经

移动应用开发工具及其影响

雪奈椰子

C++ 运算符全解析:从基础概念到实际应用

小万哥

程序人生 编程语言 软件工程 C/C++ 后端开发

华为云原生多模数据库GeminiDB架构与应用实践

平平无奇爱好科技

浅析KV存储之长尾时延问题,探寻行业更优解决方案!

平平无奇爱好科技

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