专栏名称: OSC开源社区
OSChina 开源中国 官方微信账号
目录
相关文章推荐
程序员的那些事  ·  GPT-4o能玩《黑神话》!精英怪胜率超人类 ... ·  15 小时前  
OSC开源社区  ·  MoonBit编程挑战赛启动,国内编程语言技 ... ·  14 小时前  
程序员的那些事  ·  趣图:过?还是不过? ·  4 天前  
OSC开源社区  ·  我有一个大胆的想法:呼吁Linus延迟退休, ... ·  4 天前  
程序员的那些事  ·  又“刑”了!搞瘫公司三千多台工作站,不给 ... ·  5 天前  
51好读  ›  专栏  ›  OSC开源社区

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

OSC开源社区  · 公众号  · 程序员  · 2024-09-22 20:40

正文

↑点击上方蓝字关注「OSC开源社区」

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

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 等机构对内存安全性的需求。

相关来源

https://www.theregister.com/2024/09/16/safe_c_plusplus/

https://safecpp.org/P3390R0.html

https://cppalliance.org/vinnie/2024/09/12/Safe-Cpp-Partnership.html


延伸阅读

美国国防部建议将C代码转换为Rust——而且是用AI

从C++切换到Rust,开发效率提升两倍不止

C++之父反驳白宫,称拜登政府忽视了现代C++编程语言的优势

建议放弃C/C++,消除内存安全漏洞

C++用于Linux内核开发,曾被Linus强烈反对,现在时机终成熟?

苹果称Swift是取代C++的最佳选择

END


热门文章

谷歌SRE工程师打拼9年:年薪超60万美元、钱赚够了、对技术不再那么热爱

高通拟收购英特尔——Arm与x86之争到此为止?

Zen浏览器——号称是“开源版Arc”、轻如鸿毛、快如闪电

“神仙外企”、“IT养老院”前员工忆往昔:曾经是乌托邦、工资多得花不完只能买房

分享在看点赞 Orz