写点什么

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

  • 2013-03-29
  • 本文字数:846 字

    阅读完需:约 3 分钟

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

2013-03-29 04:444794
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 151.9 次阅读, 收获喜欢 35 次。

关注

评论

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

浅谈Vue开发小程序

Speedoooo

小程序 Vue 开发框架 小程序容器

资产设备信息管理系统的功能

低代码小观

资产管理 CRM 企业管理系统 CRM系统 企业设备管理

fastposter v2.7.0 发布 电商海报编辑器

物有本末

海报 fastposter 海报生成器 海报编辑器 主图编辑器

局部变量是线程安全的,原因是什么?

华为云开发者联盟

线程 高并发 变量 线程安全 局部变量

百度程序员开发避坑指南(前端篇)

百度Geek说

前端

做网工还是运维好?小白求解!

行云管家

云计算 运维 网络 IT运维

厉害!我带的实习生仅用四步就整合好SpringSecurity+JWT实现登录认证!

沉默王二

Java

TASKCTL-调度监控常见问题

敏捷调度TASKCTL

kettle 分布式任务调度 ETL任务 ETL系统

一场由TiCDC异常引发的GC不干活导致的Tikv硬盘使用问题

TiDB 社区干货传送门

王者荣耀商城异地多活架构设计

阿卷

架构实战营

恒源云(Gpushare)_啥,还不知道咋关机?技巧大放送6!

恒源云

人工智能 GPU服务器

好代码和坏代码

博文视点Broadview

"三高"Mysql - Mysql备份概览

懒时小窝

MySQL 高可用 MySQL 数据库

基于 KubeVela 的机器学习实践

阿里巴巴云原生

图文并茂|彻底搞懂零拷贝(Zero-Copy)技术

深度Linux

内存管理 Linux内核 进程管理 嵌入式开发 设备驱动

日志中台不重不丢实现浅谈

百度Geek说

后端

测试人员最佳测试管理工具

阿里云云效

阿里云 云原生 开发 测试管理 测试管理工具

如何为网站建立一个FAQ页面?

小炮

FAQ

后端开发【一大波干货知识】tcp/ip定时器与滑动窗口详解

Linux服务器开发

网络协议 TCP/IP 后端开发 Linux服务器开发 C++后台开发

CentOS8安装erlang 和 RabbitMQ

阿Q说代码

4月月更 RabbitMQ安装 erlang安装

眼见为实,看看MySQL中的隐藏列!

码农参上

MVCC MySQL 数据库 4月月更

实例解析网络编程中的另类内存泄漏

华为云开发者联盟

TCP 网络编程 网络 压力测试 内存泄漏

pip:带你认识一个 Python 开发工作流程中的重要工具

华为云开发者联盟

Python 项目管理 pip 依赖关系 包管理器

新手指南,带你启航:如何给OpenMLDB社区贡献代码

第四范式开发者社区

机器学习 数据库 开源 开源社区

vulnhub靶场解题笔记——THE PLANETS:EARTH

L0kt4r

渗透测试

多场景实现供应链可视化,小家电产业出海焕发新活力

数商云

产业数字化 供应链 供应链系统

使用混合云平台企业,怎样才能做好运维?

行云管家

私有云 混合云 多云管理 云管平台

为什么要做网站SEO优化?

源字节1号

SEO优化

活动预告 | 对话ACE:Oracle停服俄罗斯,国产数据库未来发展

OceanBase 数据库

oceanbase

实践GoF的设计模式:单例模式

华为云开发者联盟

程序设计 设计模式 单例模式 GoF 共享实例

GCC 4.8发布,完成向C++的迁移_Linux_Jeff Martin_InfoQ精选文章