유니언을 사용하는 C 코드의 기존 번역 결과와 제안한 기법을 적용한 번역 결과. 기존 번역 결과는 유니언을 태그드 유니언으로 대체하지 않아 메모리 문제를 방지하지 못했다. 반면, 제안한 기법을 적용한 번역 결과는 유니언을 태그드 유니언으로 대체해 메모리 문제를 방지했다. /사진=KAIST
KAIST(카이스트)는 류석영 전산학부 연구팀(프로그래밍 언어 연구실)이 C언어의 핵심 기능에서 메모리 문제가 생기지 않도록 방지하는 'C-러스트 코드 번역 기술'을 개발했다고 13일 밝혔다. 이번 연구 결과는 국제 학술대회 '국제 자동 소프트웨어엔지니어링학회(ASE)'에 채택됐다.
프로그래밍 언어는 컴퓨터의 소프트웨어를 작동시키기 위한 언어를 말한다. 이중 C언어는 실행 속도가 빠르고 유지·보수도 쉬운 언어로 알려졌다. C언어의 핵심 기능 중 하나는 여러 종류의 데이터를 같은 공간에 보관해 메모리의 효율을 높이는 '유니언'이다. 하지만 유니언은 보관 중인 데이터가 어떤 종류인지 구분할 수 없기 때문에 메모리 관리에 치명적인 문제가 있다.
연구팀은 기존 C언어의 유니언을 러스트 코드로 번역하는 기술을 개발했다. 연구팀에 따르면 C언어와 러스트의 간극이 매우 커, C-러스트 코드 번역 기술을 성공적으로 개발한 팀은 전 세계적으로 극소수다.
KAIST는 "올해 2월 미국 백악관에서도 C언어의 사용을 중단할 것을 촉구했고, 미국 국방고등연구계획국(DARPA)에서도 C언어로 작성된 코드를 러스트로 자동 번역하는 기술을 개발하는 내용의 연구 과제를 발표했다"며 "이같은 연구를 국내 연구진이 이미 선제적으로 개발하고 선도한 것"이라고 설명했다.
연구를 이끈 류 교수는 "안전한 소프트웨어 제작을 목표로 연구하며 C-러스트 코드 번역의 중요성을 일찍 깨닫고, 각종 프로그래밍 언어 기법들을 코드 번역에 적극적으로 도입해 이같은 결과를 낼 수 있었다"고 말했다. 연구팀은 '완전 자동 번역' 단계에 이르기 위한 후속 연구를 진행할 계획이다.
이 시각 인기 뉴스
이번 연구는 한국연구재단 선도연구센터 및 중견연구자지원사업, 정보통신기획평가원(IITP), 삼성전자 (64,400원 ▼1,900 -2.87%)의 지원을 받아 수행됐다.
류석영 KAIST 전산학부 교수 /사진=KAIST