在连续两年被内存安全问题所困扰后,C++社区发布了一项提案,旨在帮助开发者编写更少漏洞的代码。这项名为Safe C++ Extensions的提案,意在解决C++这一易受攻击编程语言的致命弱点——确保代码不包含内存安全漏洞的挑战。
开发者Sean Baxter(Circle编译器的创建者)和Christian Mazakas(来自C++联盟)承认,尽管Rust是唯一流行的没有垃圾回收且提供严格内存安全的系统级编程语言,但将C++代码迁移到Rust存在问题。他们在提案中解释道,"Rust缺乏函数重载、模板、继承和异常,而C++缺乏特征、重新定位和借用检查。这些差异在两种语言的互操作中造成了阻隔和不匹配。大多数代码生成器的互语言绑定无法用一种语言的特性来表示另一种语言的特性。"
尽管DARPA正在努力开发更好的自动化C++到Rust的转换工具,Baxter和Mazakas认为,告诉资深的C++开发者学习Rust并不是一个解决方案。Baxter解释说,Safe C++项目增加了确保内存安全的新技术支持,不仅仅是最佳实践的重复。"Safe C++防止用户编写不健全的代码,这包括更加智能的编译时,如借用检查以防止使用后释放的错误和初始化分析以确保类型安全。"
Baxter表示,用不同的编程语言重写一个项目成本很高,因此这里的目标是通过以较低的成本提供与Rust相同的健全性保证,使内存安全更容易获得。他解释道,"有了Safe C++,现有代码像往常一样继续工作,开发者可以更有控制性地逐步选择安全性。"
Baxter说,下一步涉及行业更广泛的参与,以帮助实现Safe C++项目。"基础已经打下,我们有出色的借用检查和初始化分析,这些是健全性保证的基础。"他说,"下一步是全面审视C++的所有特性,并为它们指定内存安全版本。这是一项巨大的努力,但鉴于减少C++安全漏洞的重要性,这是值得付出的努力。"
Safe C++ Extensions提案的推出是C++社区对当前编程语言安全形势的一次重要回应。随着软件系统变得越来越复杂,内存安全问题已经成为软件开发中不可忽视的一环。尽管Rust等新兴语言提供了内存安全的特性,但对于大量现存的C++代码库来说,迁移到新语言并非易事。Safe C++提案旨在为C++开发者提供一个在原有语言基础上增强内存安全特性的方案,这显然是对C++生态系统的一次重要补充。
然而,这一提案的实施和推广仍面临挑战。需要行业更广泛的参与和合作,以确保Safe C++项目能够覆盖C++的所有特性,并为它们提供内存安全版本。此外,教育和培训开发者使用这些新特性,以及在实际项目中应用Safe C++,也是推广这一提案的关键。
热门跟贴