KAIST가 컴퓨터 시스템 작동을 위해 필요한 프로그래밍 언어인 C언어의 치명적인 단점을 보완할 수 있는 기술을 개발했다. C언어는 실행속도가 빠르고 유지보수도 쉽지만, 메모리 할당·관리 등에서 문제점을 안고 있었다. 이를 해결하기 위해 개발된 프로그래밍 언어가 러스트다.
개발된 기술은 프로그래밍 언어 C로 작성된 코드를 러스트 언어로 자동 번역해주는 것을 핵심으로 한다. 최근 백악관, 미국 국방부 등에서도 메모리 문제 해결을 막기 위해 러스트 같은 언어 사용을 촉구하고 있어 관심이 집중되고 있다.
KAIST는 류석영(사진) 전산학부 교수 연구팀이 여러 종류의 데이터를 같은 공간에 보관하는 방법으로 메모리 효율을 높이는 C언어의 핵심 기능인 유니언을 러스트의 태그드 유니언으로 변환하는 기술을 세계 최초로 개발했다고 13일 밝혔다.
태그드 유니언은 같은 공간에 보관할 수 있는 여러 종류의 데이터 중 어떤 종류의 데이터를 보관하는지 태그를 붙여서 구분해 메모리 문제를 일으키지 않는다.
연구팀은 C언어의 유니언에 특화된 새로운 프로그램 분석 기법을 고안해 러스트의 태그드 유니언으로 자동 번역하는 데 성공했다. 2015년부터 개발된 프로그래밍 언어인 러스트는 운영 체제, 웹 브라우저 개발 등에 쓰이는 것으로, 2022년에는 리눅스 개발에도 공식적으로 사용 중이다. C와 달리 프로그램 실행 전에 메모리 문제를 탐지하고, 예방할 수 있는 것이 특징이다.
앞서 지난해 5월과 올해 6월 연구팀은 각각 프로그램 동기화에 필요한 기능인 C의 뮤텍스와 계산 결과 전달에 사용되는 기능인 출력 파라미터를 러스트로 변환하는 기술을 세계 최초로 개발해 국제소프트웨어엔지니어링학회(ICSE)와 프로그래밍언어설계구현학회(PLDI)에서 발표하기도 했다.
세계적으로도 C-러스트 코드 번역 기술을 성공적으로 개발한 연구팀은 극소수다. 그마저도 데이터 저장 위치를 표현하는 기능인 포인터 변환에 머무르는 실정이다. 이런 가운데 연구팀은 C의 여러 핵심 기능을 변환하는 기법을 연달아 제시하는 등 C-러스트 코드 번역 기술을 선도하고 있는 셈이다.
류 교수는 “안전한 소프트웨어 제작을 목표로 연구하면서 C-러스트 코드 번역의 중요성을 일찍이 파악하고, 각종 프로그래밍 언어 기법들을 코드 번역에 적극적으로 도입해 나온 결과”라며 “완전한 자동 번역을 위해 아직 풀어야 할 난제가 많기 때문에 후속 연구에 정진할 것”이라고 말했다.
실제 올해 2월 백악관에서는 C언어의 사용을 중단하라고 촉구한 바가 있고, 미국 국방부의 연구·개발을 담당하는 미국 국방고등연구계획국(DARPA)에서는 C언어로 작성된 코드를 러스트로 자동 번역하는 기술을 개발하는 연구 과제를 발표한 적도 있다.
DARPA는 해당 과제를 제안하며 “C의 메모리 문제를 막기 위해 러스트같이 안전한 언어를 사용해야 한다”고 밝히기도 했다.
고재우 기자
ko@heraldcorp.com