C++社区最近提出了一个名为“SafeC++Extensions”的革命性提案,目的是为C++语言增加内存安全特性,以减少开发者和外界对C++内存安全的担忧。
这个提案由C++联盟和工程师SeanBaxter合作开发,计划提交给ISO以期纳入C++标准。C++联盟是一个致力于使C++语言更易用和实用的公益机构,其使命是让所有希望学习和应用C++编程语言的人都能掌握和使用这种语言。
SafeC++Extensions提案的关键组成部分是“SafeStandardLibrary”,它将为开发者提供健壮且内存安全的基本数据结构和算法的实现。提案的目标是推进一个包含严格安全性子集的C++超集,使得在此安全上下文中编写的C++代码能够展现出与Rust代码相同的安全保障。C++联盟主席兼执行董事VinnieFalco表示,这次合作标志着C++生态系统中的一个重要里程碑,因为确保代码安全的需求从未如此紧迫。
此外,提案还提到了大量关键基础设施依赖于用C和C++编写的软件,而这些语言的内存安全性较低,使得这些系统更易受到敌对势力的利用。SafeC++开发者将被禁止编写可能导致未定义行为、危及生命周期安全、类型安全或线程安全的操作。
这一提案的提出,是对当前C++内存安全问题的直接回应,也是对美国国家安全局(NSA)、美国网络安全与基础设施署(CISA)、白宫和DARPA等机构对内存安全性需求的响应。
“SafeC++Extensions”主要内容包括:
自动内存管理:引入自动垃圾回收机制,减轻开发者手动管理内存的负担。
更安全的字符串处理:提供更安全的字符串操作方法,避免缓冲区溢出等问题。
智能指针增强:改进现有的智能指针功能,使其更加安全和易于使用。
类型安全:增强类型系统,以帮助捕获更多潜在的类型错误。
边界检查:增加数组和其他容器的边界检查功能,以防止越界访问。