GCC4.8发布,完成向C++的迁移

来源:互联网 发布:物理化学就业知乎 编辑:程序博客网 时间:2024/05/15 18:39

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++

原创粉丝点击