KAIST 전산학부 류석영 교수 연구팀(프로그래밍 언어 연구실)이 C언어의 유니언(union)을 러스트의 태그드 유니언으로 변환하는 기술을 세계 최초로 개발했다.
유니언은 여러 종류의 데이터를 같은 공간에 보관해 메모리 효율을 높이는 C언어의 핵심 기능이다. 하지만 보관된 데이터의 종류가 구분되지 않아 메모리 문제를 일으킬 수 있는 단점을 갖는다.
이는 메모리 할당 및 관리 등에 치명적 문제로 꼽히며, 미국 백악관과 국방성에서는 이러한 메모리 문제를 막기 위해 러스트 등 안전한 언어 사용을 촉구한다.
이와 달리 태그드 유니언은 같은 공간에 보관 중인 여러 종류의 데이터에 태그를 붙여 구분해 메모리 문제를 일으키지 않는 장점이 있다. 컴퓨터 시스템을 작동하기 위해 소프트웨어를 작성하는 데 주로 쓰이는 C언어(프로그래밍 언어)를 보완할 수 있다는 점에서 태그드 유니언이 주목받는다.
연구팀이 개발한 변환 기술은 C언어의 유니언에 특화된 새로운 프로그램 분석 기법으로, 러스트의 태그드 유니언으로 자동 번역하는 기능을 한다.
러스트는 2015년부터 개발된 프로그래밍 언어다. 운영체제, 웹 브라우저 개발 등에 쓰이며, 2022년에는 리눅스(Linux) 개발에도 공식 사용되기 시작했다. C언어와 달리 프로그램 실행 전 메모리 문제를 탐지하고 예방할 수 있는 것이 특징이다.
다만 C언어와 러스트의 간극이 커 세계적으로도 C-러스트 코드 번역 기술을 성공적으로 개발한 사례는 극소수며, 그나마도 포인터(pointer·데이터 저장 위치를 표현하는 기능)를 변환하는 데 머물고 있다.
반면 연구팀은 C언어의 여러 핵심 기능을 변환하는 기법을 연달아 제시해 C-러스트 코드 번역 기술을 선도하고 있다.
앞서 연구팀은 지난해 5월과 올해 6월 각각 C의 뮤텍스(mutex·프로그램 동기화에 필요한 기능)와 출력 파라미터(output parameter·계산 결과 전달에 사용되는 기능)를 러스트로 변환하는 기술을 세계 최초로 개발해 최우수 국제 학술대회인 국제소프트웨어엔지니어링학회(ICSE)와 프로그래밍언어설계구현학회(PLDI)에 발표했다.
이번 연구는 한국연구재단 선도연구센터와 중견연구자지원사업, 정보통신기획평가원(IITP), 삼성전자의 지원을 받아 수행됐다.
KAIST 전산학부 홍재민 석박사통합과정 학생이 제1 저자로 참여한 이번 연구 결과는 최우수 국제 학술대회인 국제자동소프트웨어엔지니어링학회(ASE)에서도 채택됐다.
류 교수는 “안전한 소프트웨어 제작을 목표로 C-러스트 코드 번역의 중요성을 일찍이 파악하고, 각종 프로그래밍 언어 기법을 코드 번역에 적극적으로 도입하기 위해 노력했다”며 “완전한 자동 번역을 위해서는 여전히 풀어가야 할 난제가 많은 만큼, 앞으로도 후속 연구에 정진하겠다”고 말했다.
한편 지난 2월 백악관에서는 C언어 사용의 중단을 촉구했고, 미국 국방고등연구계획국(이하 DARPA)에서는 C언어로 작성된 코드를 러스트(Rust)로 자동 번역하는 기술을 개발하는 연구 과제를 발표했다.
지금 뜨는 뉴스
DARPA는 이 과제를 제안하며 C언어의 메모리 문제를 막기 위해 러스트 등 안전한 언어를 사용해야 한다고 강조했다. 미국 현지에서도 ‘C-러스트’ 변환 기술을 주목하고 있음을 방증하는 대목이다.
대전=정일웅 기자 jiw3061@asiae.co.kr
<ⓒ투자가를 위한 경제콘텐츠 플랫폼, 아시아경제(www.asiae.co.kr) 무단전재 배포금지>