by Jeong Ilwoong
Published 13 Aug.2024 08:39(KST)
KAIST电子计算学部Ryu Seokyoung教授研究团队(编程语言研究室)首次在全球开发出一项技术,可将C语言的联合体(union)转换为Rust语言的标记联合体(tagged union)。
联合体是C语言的一项核心功能,通过在同一内存空间中存放多种类型的数据来提高内存使用效率。但由于无法区分当前存放的数据类型,存在可能引发内存问题的缺点。
这被视为在内存分配及管理等方面的致命问题。为防止此类内存问题,美国白宫和国防部一直敦促使用Rust等更安全的编程语言。
与此相反,标记联合体会为存放在同一空间中的多种数据类型附加标签加以区分,因此不会引发内存问题。由于有望弥补主要用于编写计算机系统运行软件的C语言(编程语言)的不足,标记联合体正受到关注。
研究团队开发的转换技术是一种专门针对C语言联合体的新型程序分析方法,具备将其自动翻译为Rust标记联合体的功能。
Rust是自2015年起开发的一种编程语言,被用于操作系统、网页浏览器开发等领域,并于2022年开始正式用于Linux开发。与C语言不同,Rust能够在程序运行前检测并预防内存问题,这是其一大特点。
不过,由于C语言与Rust之间差异巨大,全球范围内成功开发出C到Rust代码翻译技术的案例极为少见,而且现有技术也仅停留在转换指针(pointer,表示数据存储位置的功能)层面。
相比之下,该研究团队接连提出了转换C语言多项核心功能的方法,在C到Rust代码翻译技术领域处于领先地位。
此前,研究团队分别于去年5月和今年6月,首次在全球开发出将C语言的互斥锁(mutex,用于程序同步的功能)和输出参数(output parameter,用于传递计算结果的功能)转换为Rust的技术,并在顶级国际学术会议——国际软件工程大会(ICSE)和编程语言设计与实现会议(PLDI)上发表。
本次研究在韩国研究财团先导研究中心和中坚研究者支援项目、信息通信企划评价院(IITP)以及三星电子的资助下完成。
KAIST电子计算学部硕博连读课程学生Hong Jaemin以第一作者身份参与的本次研究成果,也被顶级国际学术会议——国际自动软件工程大会(ASE)录用。
Ryu教授表示:“我们以开发安全软件为目标,很早就认识到C到Rust代码翻译的重要性,并努力将各种编程语言技术积极引入代码翻译领域。”他还表示:“要实现完全自动翻译,仍有许多难题亟待解决,今后将继续专注开展后续研究。”
另一方面,今年2月,白宫呼吁停止使用C语言,美国国防高级研究计划局(以下简称DARPA)则发布了开发将C语言编写的代码自动翻译为Rust语言的技术这一研究课题。
DARPA在提出该课题时强调,为了防止C语言的内存问题,必须使用Rust等安全的编程语言。这也从侧面印证了在美国本土,“C到Rust”转换技术同样备受关注。