内容提要
美国国防高级研究计划局(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的过程需要哪些专业知识?
迁移过程需要大量的测试和专业知识,以确保代码的安全性和功能等价性。