핵심 요약
- 러스트 코드를 사람이 읽기 쉬운 C 언어 코드로 변환해 주는 신규 오픈소스 컴파일 도구 '유리디스(Eurydice)'가 공개되었습니다.
- C 언어 기반으로 구축된 기존 형식 검증 도구나 러스트 컴파일러가 없는 특수 환경에서도 러스트 코드를 활용할 수 있게 해줍니다.
- 프랑스 Inria와 MS 연구진이 주도하며 코드 구조와 실행 순서를 보존하는 방식으로 C 코드를 생성합니다.
요약 러스트(Rust) 코드를 사람이 읽기 쉬운 깔끔한 C 언어 코드로 변환해 주는 새로운 컴파일 프로젝트 '유리디스(Eurydice)'가 개발자들 사이에서 주목받고 있습니다. 과거에는 러스트 코드를 컴파일할 때 LLVM 백엔드를 사용하는 rustc가 유일한 선택지였으나, 최근에는 mrustc, gccrs 등 다양한 백엔드 프로젝트가 등장하며 선택지가 넓어지고 있습니다. 그중에서도 유리디스는 러스트 코드를 읽을 수 있는 C 코드로 번역하는 것을 목표로 삼고 있습니다.
이러한 변환 도구가 필요한 이유는 기존의 형식 검증 및 규정 준수 도구 대다수가 C 언어 기반으로 구축되어 있기 때문입니다. 고도의 신뢰성이 요구되는 소프트웨어 분야나 러스트 컴파일러가 지원되지 않고 C 컴파일러만 존재하는 특수 환경에서, 유리디스는 기존 검증 도구를 즉시 활용할 수 있도록 돕는 징검다리 역할을 합니다. 실제로 양자 내성 암호 루틴을 러스트에서 C로 변환하는 데 이미 적용되기도 했습니다.
유리디스는 프랑스 국립컴퓨터과학연구소(Inria)와 마이크로소프트 소속 연구진이 주도하는 에네아스(Aeneas) 프로젝트의 일환으로 2023년 시작되었습니다. 일반적인 컴파일러처럼 중간 표현(IR)을 거치지만, 러스트 특유의 문법 구조를 C로 옮기면서도 원본 코드의 구조와 평가 순서를 보존하는 데 초점을 둡니다. 예를 들어 연산 순서를 보장하기 위해 임시 변수를 적절히 추가하고, 반복자 기반 루프는 상태를 관리하는 지원 코드가 포함된 while 루프로 변환합니다.
물론 언어적 차이로 인한 기술적 난제도 존재합니다. C에는 제네릭 개념이 없기 때문에 단형성화(monomorphization)를 거치며 타입별로 별도 함수가 생성되고, 크기가 동적으로 결정되는 타입의 경우 엄격한 앨리어싱 규칙을 우회하기 위해 컴파일 시 특정 플래그(-fno-strict-aliasing)를 사용해야 하는 제약이 따릅니다. 그럼에도 C 생태계와의 호환성을 매끄럽게 잇는 기술적 시도로서 개발자 커뮤니티의 많은 관심을 받고 있습니다.
Sponsored · 광고