问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

“革命性”「Safe C++」扩展提案:引入内存安全、有望成为 C++ 标准

创作时间:
作者:
@小白创作中心

“革命性”「Safe C++」扩展提案:引入内存安全、有望成为 C++ 标准

引用
1
来源
1.
https://www.oschina.net/news/312570/safe-c-plusplus

C++社区近期公布了一项堪称“革命性”的「Safe C++」扩展提案,旨在为C++语言添加内存安全特性。这一提案由C++ Alliance与工程师Sean Baxter合作开发,计划提交给ISO以纳入C++标准。

C++ Alliance是一个公益机构,致力于让C++编程语言更易于访问和使用,其使命是帮助所有希望学习和应用C++的人掌握和使用这种语言。

Safe 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) {
                ^  

行业领袖观点

C++ Alliance主席兼执行董事Vinnie Falco表示,这次合作标志着C++生态系统中的一个重要里程碑。随着软件安全性和可靠性日益重要,开发者面临着采用更安全的编程实践的巨大压力。"Safe C++"扩展通过引入防止常见内存相关错误的新特性来解决这一关键需求。

"Safe C++"扩展代表了C++迈向更加安全和高效的重要一步,同时保持了语言的性能和灵活性。"安全标准库(Safe Standard Library)"将是"Safe 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等机构对内存安全性的需求。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号