“革命性”「Safe C++」扩展提案:质疑Rust、理解Rust、成为Rust?

C++ 社区公布了堪称 “革命性” 的「Safe C++」扩展提案,目标是为 C++ 添加内存安全特性

该项提案将由名为 “C++ Alliance” 的机构与工程师 Sean Baxter 合作开发,C++ Alliance 计划将「Safe C++」扩展提案提交给 ISO,以纳入 C++ 标准。

C++ Alliance(C++ 联盟)是一个旨在使 C++ 编程语言易于访问和有用的公益机构,使命是让所有希望学习和应用 C++ 编程语言的人都能掌握和使用这种语言

采用「Safe C++」扩展编写的代码示例:

#feature on safety
#include <std2.h>

int main() safe {
  std2::vector<int> vec { 11, 15, 20 };

  for(int x : vec) {
    // Ill-formed. mutate of vec invalidates iterator in ranged-for.
    if(x % 2)
      mut vec.push_back(x);

    std2::println(x);
  }
}
$ circle iterator.cxx -I ../libsafecxx/single-header/
safety: during safety checking of int main() safe
  borrow checking: iterator.cxx:10:11
        mut vec.push_back(x);
            ^
  mutable borrow of vec between its shared borrow and its use
  loan created at iterator.cxx:7:15
    for(int x : vec) {
                ^

https://github.com/cppalliance/safe-cpp/blob/master/proposal/iterator.cxx


C++ Alliance 主席兼执行董事 Vinnie Falco 在博客写道:

这次合作标志着 C++ 生态系统中的一个重要里程碑,因为确保代码安全的需求从未如此紧迫。

随着软件安全性和可靠性日益重要,开发者面临着采用更安全的编程实践的巨大压力。「Safe C++」扩展旨在通过引入防止常见内存相关错误的新特性来解决这一关键需求。

「Safe C++」扩展代表了 C++ 迈向更加安全和高效的重要一步,同时保持了语言的性能和灵活性。

“安全标准库 (Safe Standard Library)” 将是「Safe C++」扩展提案中的关键组成部分。它将为开发者提供健壮且内存安全的基本数据结构和算法的实现。

通过将这些组件集成到 C++ 标准库中,我们可以确保在编写新代码时从一开始就考虑到安全性。

过去几年来,包括谷歌和微软在内的科技巨头一直在宣传内存安全漏洞带来的问题,并推广使用除 C 和 C++ 以外不需要手动内存管理的语言。

这些消息也引起了拥有大量遗留代码的美国政府公共部门的注意,并促使白宫和美国网络安全和基础设施安全局(CISA)鼓励使用内存安全编程语言 —— Rust。

尽管有 C/C++ 开发者反驳说,只要正确遵守 ISO 标准并认真应用测试工具,就可以取得类似的结果。

就连 C++ 之父 Bjarne Stroustrup 也表示,“我们现在可以在 ISO C++ 中实现完美的类型与内存安全性。”

去年,互联网安全研究组(ISRG)联合创始人兼执行董事 Josh Aas 在接受采访时指出,虽然理论上有可能编写出内存安全的  C++ 代码,但在实际场景中并没有这样的案例,因为 C++ 并不是从一开始就设计用于内存安全的

而为了加快向内存安全编程语言的过渡,美国国防部高级研究计划局(DARPA)也启动了 TRACTOR 项目。TRACTOR 是 TRanslating All C TO Rust 的缩写,目标是基于 AI 技术开发代码转换平台,自动将旧 C 代码转换为 Rust 代码。

「Safe C++」扩展提案的诞生背景正是为了应对各种批评声音,并响应美国国家安全局(NSA)、美国网络安全与基础设施署(CISA)、白宫和 DARPA 等机构对内存安全性的需求。

本文文字及图片出自 OSC开源社区

你也许感兴趣的:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注