在微软 Visual C++ 编译器团队工作了 22 年后,ISO C++ 标准委员会主席 Herb Sutter 宣布离开微软,加入 Citadel Securities 担任技术研究员,负责技术战略和培训工作。
与此同时,他在 C++ 社区的角色保持不变,将继续担任 ISO C++ 标准委员会主席 (ISO C++ standards committee)、标准 C++ 基金会 (Standard C++ Foundation) 主席,并继续投入大量时间在 C++ 的标准化和发展上。
Sutter 认为,2024 年对 C++ 来说是至关重要的一年。因为自 2024 年起,ISO 委员会首次在 C++ 标准草案中采用(或即将采用)针对“反射”和“安全性” (reflection and safety) 的重大改进,这是一个重大转折点。
“我在 CppCon 的演讲中曾说过,C++ 的下一个十年将由面向“反射”和“安全性”的改进主导,而 C++26 确实有望成为自 C++11 开启新纪元以来最具影响力的版本;
这对 C++ 来说是一个激动人心的时刻,我计划继续花大量时间为 C++26 及以后的版本做贡献。”
Sutter 称,上一个里程碑式的版本 C++ 11 让 C++ 成为了现代编程语言——正如 C++ 之父 Bjarne Stroustrup 所说:
C++11 感觉像是一种全新的语言,开启了以 auto
和 lambda 表达式、标准安全智能指针、range-for
和 move 语义,以及constexpr
编译时代码为特色的 “现代” C++ 风格。
从 2011 年至今,我们通过 C++14/17/20/23 进行了完善和构建。在这十年间,“现代C++” 基本上意味着“从 C++11 开始的 C++”,因为 C++11 在 C++ 的工作方式和感觉上带来了如此大的改变。
而“C++26 正在为再次实现这一目标奠定基础”:
我们下一个“现代C++”的重要时代将以默认安全性和对基于反射的生成编译时库的一流支持为特征。
C++ 版本按发布年份命名,并遵循 3 年一个版本周期。
去年 6 月,Sutter 公布了 C++26 的时间表。相较于 Sutter 对于 C++ 稳步发展的热情,业内对于新语言的呼声却越来越高。美国网络安全和基础设施安全局 (CISA) 和联邦调查局 (FBI) 最新发布了一份《Product Security Bad Practices》指南,旨在警示软件开发商在整个产品开发过程中优先考虑安全性、规避不良实践;其中还再次提及了使用 C/C++ 等 “内存不安全” 的编程语言风险性。
该文件主要面向开发用于支持关键基础设施或 NCF 的软件产品和服务(包括内部部署软件、云服务和软件即服务 (SaaS))的软件制造商。
CISA、FBI 将不良实践具体划分为三大类:
- 产品属性:描述软件产品可观察的、与安全相关的质量。
- 组织流程和政策:描述软件制造商为确保其安全方法的高透明度而采取的措施。
文件指出,在有现成的内存安全替代语言可供替代的情况下,使用内存不安全语言(如 C 或 C++)开发服务于关键基础设施或国家控制框架的新产品线是危险的,会显着增加国家风险安全、国家经济安全、国家公共卫生和安全。对于以内存不安全语言编写的现有产品,如果在 2026 年 1 月 1 日之前没有发布内存安全路线图,那将是非常危险的,会显着增加对国家安全、国家经济安全以及国家公共健康和安全的风险。
内存安全路线图应概述开发商的优先方法,以消除优先代码组件(例如,面向网络的代码或处理加密操作等敏感功能的代码)中的内存安全漏洞。
开发商应证明内存安全路线图将导致开发商产品中内存安全漏洞的显着、优先减少,并证明他们正在做出合理的努力来遵循内存安全路线图。这不适用于已宣布支持终止日期早于 2030 年 1 月 1 日的产品。
建议采取的措施:软件开发商应以系统地防止内存安全漏洞引入的方式构建产品,例如使用内存安全语言或防止内存安全漏洞的硬件功能。
此外,软件开发商应在 2026 年 1 月 1 日之前发布内存安全路线图。
一些其他不良实践具体还包括:
相关来源
https://herbsutter.com/2024/11/
延伸阅读
谷歌开源替代C++的编程语言:Carbon