DARPA的TRACTOR项目能否将C语言迁移到Rust以实现内存安全的全面改革?

DARPA的TRACTOR项目能否将C语言迁移到Rust以实现内存安全的全面改革?

💡 原文英文,约1900词,阅读约需7分钟。
📝

内容提要

美国国防高级研究计划局(DARPA)推出名为TRACTOR的项目,旨在将C语言应用迁移到Rust,以解决内存安全问题。Rust语言强制程序员编写正确的代码,保护软件免受自身错误的影响。DARPA将举办公开竞赛,测试解决方案的能力。

🔎

延伸解读

语义保留与缺陷消除的两难

TRACTOR项目面临一个根本性挑战:如何在不保留原代码缺陷的情况下保留其语义。Rust专家Tim McNamara对此表示怀疑,认为这几乎不可能。因为C代码中的内存安全漏洞往往与程序逻辑交织,自动化工具在转换时可能难以区分哪些是预期行为,哪些是错误。即使借助LLM,也可能将缺陷一并翻译,导致Rust代码仍存在安全隐患。因此,项目成功的关键在于能否开发出智能识别并修复缺陷的转换技术。

企业迁移的现实风险与成本

对于普通企业,大规模将C代码重构为Rust可能带来显著风险。Omdia分析师Brad Shimmin指出,如果企业缺乏Rust基础,此举如同蒙眼开车,容易引发意外问题。即使使用GenAI转录代码片段,也会缺乏对整个代码库的上下文感知。此外,迁移后还需进行大量测试,包括单元测试和回归测试,这需要测试和Rust方面的专业知识,成本高昂。因此,企业应权衡风险与收益,而非盲目跟风。

知识积累与维护能力的隐忧

翻译代码虽能获得可运行的Rust程序,但可能削弱团队对软件内部机制的理解。Tweede golf的Erik Jonkers指出,重写软件(如NTP)能培养出精通该领域的专家,而翻译代码得到的开发者只懂如何修饰翻译后的代码,却不清楚软件如何工作。要弥补这一缺口,需额外投入时间理解架构和规范,但这可能影响生产力和成本效益。长期来看,若开发者因缺乏成就感而离开,项目可能留下无人敢维护的代码。

渐进式改进与现有工具的价值

尽管完全自动化的C到Rust翻译尚不现实,但已有工具如c2rust在特定场景下发挥作用。Immunant公司利用c2rust处理AV1视频解码,并计划用于bzip2移植。Tweede golf的初步实验表明,翻译工具并非银弹,但对某些代码效果尚可,且需额外手动工作才能达到生产就绪。这些实践为TRACTOR提供了基础,即使项目未达终极目标,也能推动翻译工具进步,降低迁移成本,提升内存安全软件的可用性。

❓

Q&A

TRACTOR项目的主要目标是什么?

TRACTOR项目旨在将C语言应用迁移到Rust,以解决内存安全问题。

为什么Rust被认为比C语言更安全?

Rust强制程序员编写正确的代码,减少内存安全问题的发生,保护软件免受自身错误的影响。

专家对TRACTOR项目的可行性有什么看法?

专家对能否在不保留原代码缺陷的情况下保留语义表示怀疑,但认为该项目有助于软件行业获得更多翻译旧代码的信息。

企业在迁移C代码到Rust时可能面临哪些风险?

企业可能面临缺乏Rust基础、代码重构带来的风险,以及翻译过程中缺乏上下文意识的问题。

DARPA如何计划测试TRACTOR项目的解决方案?

DARPA将举办公开竞赛,测试基于大型语言模型的解决方案的能力。

迁移C代码到Rust的过程需要哪些专业知识?

迁移过程需要大量的测试和专业知识,以确保代码的安全性和功能等价性。

🏷️

标签

➡️

继续阅读