BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

GCC 4.8发布,完成向C++的迁移

| 作者 Jeff Martin 关注 16 他的粉丝 ,译者 臧秀涛 关注 2 他的粉丝 发布于 2013年3月30日. 估计阅读时间: 3 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

GNU编译器集合(GCC)的最新版本发布,这标志着向C++的迁移已经完成。这一过程持续了多年,GCC团队指出,为了有一个可维护的代码基来吸引并留住新的项目成员,这种迁移是必要的。之所以选择C++,部分原因是它是标准化的语言,而且 "支持更干净的代码,更容易编写并保证清晰的接口……尽管这并非灵丹妙药,但相对于基于C的遗留代码,的确是种改进”。对大部分开发者来说,最终结果不过是,如果有兴趣从源代码构建GCC 4.8,则必须使用支持C++ 2003的编译器。该版本设计得更为高效,更容易更新,普通用户可以直接受益。

新的编译器特性

首先介绍一下通用的编译器改进,该版本“引入了一个新的通用优化层,既满足了快速编译和极佳调试体验的需要,又保证了合理的运行时性能”。此外,4.8包含了用于探测内存错误的AddressSanitizer,以及支持插入指令检查数据竞争的ThreadSanitizer。(ThreadSanitizer目前只能用于x86-64 GNU/Linux。)

值得注意的是,该版本还支持64位ARM(AArch64)和32位ARMv8等架构。

特定于语言的改进

完成了向C++的迁移,这并不是唯一值得赞赏的成绩,编译器在其他一些方面还有不少改进。GCC目前初步在多种架构上实现了针对GNU/Linux和Solaris等平台的Go 1.1支持。如果使用Fortran和C进行开发的话,也有一些更新值得研究一番。

C++用户会看到如下对C++11支持的改进

  • thread_local关键字
  • attribute语法
  • 对齐说明符(alignment specifier)
  • 继承构造函数
  • forward_list满足了能够感知分配器(allocator-aware)的容器这一需求

Clang 3.2相比,GCC 4.8对C++11的支持也非常不错,而且都领先于最新的Visual C++ Compiler November 2012 CTP。新增了编译选项-std=c++1y,支持对下一个主要标准(预计大约在2017年)提出的特性进行实验,这意味着应对未来C++变化的计划已经开始。

C++运行时标准库(libstdc++)对C++11有了更大的支持,改进了随机数生成器(包括新的X86处理器上的硬件支持),并加入了新的随机数分布。

查看英文原文GCC 4.8 Completes Move to C++

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT