Rust 코드를 읽기 쉬운 C로 바꾸는 Eurydice, 고신뢰 소프트웨어와 Rust 컴파일러 없는 환경 겨냥
- Eurydice는 Rust 프로그램을 C 코드로 변환하는 컴파일러로, 2023년에 시작되어 Aeneas 프로젝트 소속으로 개발됨
- 프로그램 구조를 그대로 유지하면서 Rust에만 있고 C에는 없는 구문을 제거하며, 평가 순서를 지키려고 임시 변수(uu____0)를 추가함
- rustc가 같은 함수를 기계어에 가까운 얽힌 루프로 내놓는 것과 달리 Eurydice 출력은 원래 코드와 비슷한 구조로 남음
- 포스트퀀텀 암호 루틴을 Rust에서 C로 옮기는 데 쓰였고, 검증 도구가 C를 요구하는 고신뢰 소프트웨어 프로젝트를 주로 겨냥함
Hacker News opinions
Rust 쪽 경계 검사 같은 런타임 체크도 IR에 남아서 C 출력까지 그대로 내려간다는 거임. 목표가 Rust랑 같은 의미와 안전성 유지라서 방향은 맞는 듯함.
C++도 원래 C로 번역하는 전처리기에서 시작했잖음. 근데 요즘 C 컴파일러가 전부 C++로 짜여 있어서 굳이 필요한가 싶음. edgcpp.org라는 게 C++을 C로 바꿔준다더라.
굳이 readable일 필요는 없고, C 컴파일러만 있으면 Rust 소스 부트스트랩 체인이 된다는 게 핵심임.
return uu____0 보고 웃었음. readability가 셀링 포인트면 return_value 같은 이름 휴리스틱 하나 넣는 게 그렇게 어렵나?
AeneasVerif 쪽 프로젝트도 같이 보는 거 추천함. Scylla가 Eurydice 반대 방향 격이고 Charon이랑 Aeneas도 있음. Microsoft랑 Google 암호 라이브러리에 Eurydice 생성 코드 붙이는 작업이 진행 중이라더라.
idiomatic이라는 말 자체가 동어반복 같음. 컴파일러가 이해 못 하는 코드만 비관용적인 거지, 스타일 우위를 단정하는 건 얕은 얘기임.