C++社区的反击: 推出Safe C++扩展, 与Rust一较高下

爱的威利斯2024-09-17 16:37:21  115

随着Rust等内存安全语言的崛起,C++正面临前所未有的挑战。为应对这一竞争,C++社区近期发布了“Safe C++ Extensions”(安全C++扩展)提案,旨在提升内存安全性,与Rust展开正面较量。

内存安全之争:C++与Rust的对决

近年来,内存安全成为编程语言领域的热点话题。Rust作为一门内存安全、性能优越的系统级编程语言,受到了业界的广泛关注和采用。许多大型组织和政府机构(如NSA、CISA和DARPA)都呼吁在新项目中采用像Rust这样的内存安全语言。这使得传统的C++社区感受到了巨大的压力和竞争。

微软Azure的CTO Mark Russinovich曾公开建议弃用C和C++,转而采用Rust。一些技术领袖也表达了类似的观点,认为C++的内存安全问题难以彻底解决。这些声音促使C++社区不得不正视内存安全的挑战,以免在未来的技术竞争中被淘汰。

Safe C++ Extensions的提出:C++的主动出击

为应对来自Rust的竞争压力,C++社区积极行动,推出了“Safe C++ Extensions”提案。C++联盟的主席兼执行董事Vinnie Falco在宣布这一提案时表示:

“这是一个革命性的提案,为C++编程语言添加了内存安全特性。这次合作标志着C++生态系统的一个重要里程碑,因为对安全代码的需求比以往任何时候都更加迫切。”

该提案由Circle编译器的创建者Sean Baxter和C++联盟的Christian Mazakas共同提出,旨在通过引入类似于Rust的内存安全机制,帮助开发者编写更安全的C++代码。

提案的核心:借鉴Rust的内存安全机制

Safe C++ Extensions的核心思想是在C++中引入类似于Rust的“借用检查器”(borrow checker)和其他内存安全机制。通过在编译时进行内存和类型安全检查,防止常见的内存错误,如缓冲区溢出和“释放后使用”(use-after-free)等。

Baxter和Mazakas指出,虽然Rust在内存安全方面表现出色,但将现有的C++代码迁移到Rust存在诸多困难,包括语言特性的差异和互操作性的障碍。他们认为,与其要求资深的C++开发者学习一门全新的语言,不如在C++内部寻求解决方案。

他们在提案中写道:

“为什么不在语言内部解决内存安全问题呢?为什么不推出一个安全的C++?”

具体措施:增强C++的内存安全

为实现这一目标,Safe C++项目计划:

引入编译时的借用检查:类似于Rust的机制,防止内存的不安全使用。

加强初始化分析:确保类型安全,防止未初始化的变量使用。

保持与现有C++代码的兼容性:让现有代码继续正常工作,开发者可以逐步引入安全特性。

Baxter强调,这不仅是对最佳实践的重申,而是为C++添加了新的技术手段,以在编译时阻止不安全的代码编写。

面临的挑战与未来展望

尽管Safe C++ Extensions的提出展示了C++社区积极应对内存安全挑战的决心,但要在语言层面彻底解决内存安全问题并非易事。正如软件工程师Alex Gaynor所言,虽然可以通过努力使C++变得更安全,但要达到像Swift、Go或Rust那样的内存安全水平,目前还缺乏简单的解决方案。

然而,考虑到重新用另一种语言重写整个项目的高昂成本,Safe C++的出现为众多C++项目提供了一个更现实的选择。Baxter表示:

“基础已经奠定:我们拥有出色的借用检查和初始化分析,为健全性保证提供了支持。下一步是全面审视C++的所有特性,并为它们制定内存安全的版本。虽然这是一个巨大的努力,但考虑到减少C++安全漏洞的重要性,这一努力是值得的。”

结语

面对Rust等内存安全语言的崛起,C++社区选择了积极应对,试图通过引入Safe C++ Extensions来提升自身的内存安全性。虽然挑战仍在,但这一举措显示了C++在新时代下的自我革新和与时俱进的精神。未来,C++能否凭借这些努力继续保持其在系统级编程中的地位,与Rust等新兴语言展开竞争,让我们拭目以待。

Safe C++ Extensions提案:https://safecpp.org/P3390R0.html

转载此文是出于传递更多信息目的。若来源标注错误或侵犯了您的合法权益,请与本站联系,我们将及时更正、删除、谢谢。
https://www.414w.com/read/1231096.html
0
随机主题
专业收割宝妈,张庭卷土重来火箭的控球简直是登峰造极,乱局长台精准入手,面对高难度局面彻底是杀疯了巴以冲突将迎来大结局? 以防长总理没想到, 法国也在背后给了一刀电脑时间日期不自更新了怎么办?为什么每次开机时间都不对?37岁生日拿下生涯1100胜, 德约科维奇剑指法网冠军奖杯提供消费便利, 老字号“特产”再进社区邻里节[中国有约]漳州古城迎来国际友人, 共赏闽南文化瑰宝父亲是非洲人, 他却入选了中国男篮, 和肤白貌美的女友是青梅竹马全无人化Robotaxi,居然有这种骚操作?多个炫富网红被封, “未曾设想的道路”不是歪门邪道吞噬星空大改, 界中界血腥混战, 罗峰抱大腿, 雾大人杀疯了在历史街区邂逅科技市集! 快来这里飞跃“数字鸿沟”体检报告送上门 真情服务暖人心不是首钢, 郭艾伦官宣下家, 李晓旭跟腱断裂, 辽篮奖金排名曝光4-1, 6-3! 曼城太强, 7次吊打曼联, 足总杯151亿决战, 央视不直播中国警告不到24小时, 菲推出替罪羊, 正中我们下怀, 菲走向死路桃园三结义:关羽誓死效忠刘备,张飞:俺也一样!一个更危险的情况, 正向乌克兰逼近!他曾担任煤炭工业部部长, 奉命组建神华集团, 留下了宝贵精神财富崔康熙两大嫡系夏窗驰援鲁能时间敲定, 能力已获认可, 值得期待2023年质量上乘的10部网大电影, 部部有惊喜, 你看了几部?
最新回复(1)
  • 徐大炮2024-09-17 18:55
    引用1
    早就应该有了,如果是真的,是编译检查,还是运行时自动管理?只是编译检查那么程序员还是要谣操心