GNU Compiler Collection 9.1今天发布,D语言前端加入,而后端现在是人们期待已久的Radeon GCN GPU目标(虽然目前的形式并不太有用),Intel Cascadelake支持,最初的AMD Zen 2,C-SKY CPU支持,OpenRISC CPU支持以及这个庞大的开源编译器中的许多其他功能。
GCC 9.1今天上午发布,作为GCC 9系列的第一个稳定版本。 GCC 9很容易成为多年来最激动人心的GCC编译器更新之一,并带有许多新功能和改进。在过去一年密切关注其发展之后,现在很高兴看到GCC 9.1出现在那里。 GCC 9已经在Fedora 30,Clear Linux和其他Linux发行版中找到,应该在下一个发布周期中开始使用这个大型编译器更新(或者希望很快就会在滚动发布平台上使用)。
在GCC 9中发现的众多变化包括:
- D编程语言前端终于在GCC中主流化了!现在从GCC 9开始就有了D支持。
- 最初的AMD GCN后端已经合并,目标是Radeon Fiji /Vega GPU,尽管实际的OpenMP/OpenACC卸载和其他功能还没有到位。对于GCC 9,AMD GCN目标只能处理单线程独立程序,这些程序显然对GPU没有多大用处。
- 最初的AMD Zen 2处理器支持(-march=znver2)虽然Znver2代码尚未完全针对这些下一代AMD Ryzen和EPYC处理器在几个月内首次亮相。
- 最初支持Arm Neoverse N1处理器以及其他现有的AArch64 Cortex处理器。
- 通过 -march=cascadelake标志初始支持带有AVX-512 VNNI(DL BOOST)的Intel Cascadelake服务器处理器。
- 为32位处理器引入了C-SKY处理器支持。在过去的一年中,C-SKY支持已经进入Linux内核和其他领域。
- OpenRISC处理器支持也在重写后合并,以满足FSF版权分配要求,因为代码贡献使得Berkeley律师最初对原始的OpenRISC端口不满意。
- 对OpenMP 5.0的初始支持。
- 几乎完全支持OpenACC 2.5规范。
- 实时修补的新选项,有助于确保生成的代码能够很好地适应实时Linux内核修补的语义。
- 更好的Bash自动完成支持。
- 各种诊断改进以及将诊断/错误转储为JSON格式的选项。
- C ++ 2A的实验支持通过"-std=c++2a"开关公开,可用于下一版C++,可能称为C++ 20。在C++标准库侧(libstdc++)和其他位上也有工作,而对于C++ 17,则是初始并行算法实现。
- 沿着类似的路线,还有对C2X的实验性支持,作为下一个C语言版本,并通过 -std=c2x开关公开。
- 现在处理异步I/O和其他功能,GCC中的Fortran支持也得到了改进。
- 程序间优化(IPO),配置文件驱动的优化,链接时优化(LTO)以及各种其他优化,以确保更好地生成代码。
那些想要构建这个大型编译器更新的人可以在gcc.gnu.org找到它。