본문으로 건너뛰기
피드

러스트 컴파일러 전체를 C로 번역한 ‘크러스트씨’ 공개

open-source 약 7분
vote
0
댓글
북마크

한 개발자가 rustc 전체를 C 코드로 번역해 GCC와 make로 빌드할 수 있는 데모 ‘crustc’를 공개했어. 핵심은 Rust를 C로 컴파일하는 cilly 툴체인의 쇼케이스로, LLVM이나 GCC가 직접 지원하지 않는 오래되거나 특이한 플랫폼에서도 Rust를 돌릴 가능성을 노린 프로젝트야.

  • 1

    crustc는 C 코드와 일부 사전 빌드된 C++ LLVM 래퍼로 구성된 동작 가능한 Rust 컴파일러 데모

  • 2

    cilly는 Rust 코드를 C로 바꾸는 컴파일러 백엔드이며, 대상 C 컴파일러와 플랫폼의 타입 크기·정렬·문자 인코딩·정수 표현을 ‘증인 프로그램’으로 조사

  • 3

    네트워크 너머의 C 컴파일러와 TCP로 통신해, 로컬 rustc가 원격의 특이한 운영체제용 C 컴파일러를 사용할 수 있음

  • 4

    작성자는 이 프로젝트가 3년간의 14번째 시도이며, 아직 공개 소비용으로 안정화되지는 않았다고 밝힘

rustc를 통째로 C로 번역했다

  • ‘crustc’는 동작하는 Rust 컴파일러를 C 코드 형태로 빌드할 수 있게 만든 데모임

    • GCC와 GNU make로 빌드하면 Rust 컴파일러가 나옴
    • 이 컴파일러는 core, alloc, std 같은 Rust 표준 구성 요소도 컴파일할 수 있다고 설명함
    • 저장소 자체는 새 툴체인 ‘cilly’의 쇼케이스에 가까움
  • 작성자는 지난 3년간 Rust를 C로 컴파일하는 작업을 해왔고, 이번이 14번째 시도라고 밝힘

    • 이전에는 rustc_codegen_clr 같은 공개 시도도 있었고, 비공개 실험도 많았다고 함
    • cilly는 Rust 코드 생성 라이브러리이자 rustc 백엔드 플러그인으로 동작함
    • 즉 사용자는 특정 타깃에 어떤 C 컴파일러를 쓸지만 정하면, cilly가 Rust를 C로 바꿔 그 컴파일러에 넘기는 구조임

중요

> 포인트는 “Rust를 C로 예쁘게 변환”이 아니라, LLVM이나 GCC가 직접 지원하지 않는 오래되거나 특이한 플랫폼에도 Rust를 보낼 통로를 만들겠다는 데 있음.

이상한 C 컴파일러까지 맞춰주는 방식

  • cilly의 핵심 아이디어는 대상 C 컴파일러에 맞춰 코드를 생성하는 것임

    • 작성자는 예시로 “이상한 운영체제의 이상한 C 컴파일러”까지 언급함
    • 타입 레이아웃, 크기, 정렬, 문자 인코딩, 정수 표현 같은 걸 가정하지 않고 질의함
    • 가능한 한 ANSI C 밖의 가정을 피하고, 필요하면 런타임 assert나 문서화로 처리한다고 함
  • 이를 위해 ‘증인 프로그램’을 생성해 대상 컴파일러와 플랫폼의 성질을 확인함

    • 예를 들어 포인터 왕복 변환, CHAR_BIT 값, 2의 보수 정수 표현 같은 현실적인 가정들을 검사하는 식
    • 그래서 생성된 C 코드는 이식 가능한 범용 C라기보다, 특정 컴파일러와 특정 플랫폼에 맞춘 C에 가까움
    • ARM64용으로 생성한 C를 그대로 RISC-V 32비트에서 돌리는 식은 안 되고, RISC-V용으로 다시 생성해야 함
  • 네트워크 투명성도 꽤 특이한 부분임

    • cilly는 TCP 너머의 C 컴파일러와 통신할 수 있음
    • 정상적인 리눅스 머신에서 rustc를 돌리고, 특이한 운영체제 쪽에는 작은 C 서버만 띄워서 컴파일을 맡기는 방식이 가능함
    • 작성자는 실제로 ARM64 리눅스에서 rustc를 돌리면서 x86 Plan 9 가상머신용 작은 Rust 프로그램을 컴파일해봤다고 함
sequenceDiagram
    participant 개발자
    participant 러스트컴파일러
    participant 실리
    participant 원격C컴파일러
    participant 특이한플랫폼
    개발자->>러스트컴파일러: Rust 코드 빌드 요청
    러스트컴파일러->>실리: C 코드 생성 백엔드 호출
    실리->>원격C컴파일러: 플랫폼 특성 확인용 증인 프로그램 전송
    원격C컴파일러-->>실리: 타입 크기와 ABI 정보 반환
    실리->>원격C컴파일러: 대상 플랫폼용 C 코드 전달
    원격C컴파일러->>특이한플랫폼: 실행 가능한 결과물 생성

아직은 거칠지만, 방향은 선명함

  • 이 프로젝트가 노리는 문제는 Rust의 오래된 약점 중 하나임

    • 어떤 프로젝트가 C에서 Rust로 옮겨가면 “그럼 Plan 9 같은 플랫폼은?”이라는 반론이 늘 나옴
    • LLVM이나 GCC가 없는 오래된 하드웨어, obscure 플랫폼은 Rust 지원에서 밀리기 쉬움
    • cilly의 목표는 C 컴파일러만 있는 곳에도 Rust를 가져가는 것임
  • 다만 지금 공개된 건 안정적인 제품이 아니라 데모에 가까움

    • 빌드에는 특정 nightly Rust, LLVM 라이브러리, GCC, GNU make가 필요함
    • 최적화는 켜지 말라고 권장함. 최적화 관련 버그를 추적 중이고, 큰 Rust 파일에서 빌드가 막힐 수 있다고 함
    • 빌드된 디렉터리 안에서 실행하면 경로 정규화 문제로 crash가 날 수 있고, 다른 위치에서는 괜찮다는 이상한 제약도 있음
  • ABI 호환성도 ‘대부분’이라는 단서가 붙음

    • 일반 rustc가 만든 코드와 대체로 ABI 호환이지만, 일부 플랫폼은 Rust ABI를 C로 표현하기 어렵다고 함
    • 예를 들어 ARM64에서는 작은 구조체 반환에서 sret 포인터가 C 컴파일러가 고르는 방식과 맞지 않는 문제가 있음
    • 이건 단순 번역기가 아니라 실제 컴파일러 백엔드가 얼마나 많은 플랫폼 디테일과 싸워야 하는지 보여주는 대목임

기술 맥락

  • cilly가 흥미로운 이유는 Rust의 프론트엔드와 분석 능력은 그대로 쓰면서, 마지막 코드 생성 경로를 C로 바꾸려 한다는 점이에요. LLVM이 없는 플랫폼에서도 C 컴파일러는 있는 경우가 많기 때문에, C를 중간 목적지처럼 쓰는 전략이 나오는 거예요.

  • 그런데 C로 내보낸다고 자동으로 이식성이 생기지는 않아요. C의 타입 크기, 정렬, 구조체 반환 규칙, 문자 인코딩은 컴파일러와 플랫폼마다 달라질 수 있거든요. 그래서 cilly는 증인 프로그램을 만들어 직접 물어보고, 그 결과에 맞춰 코드를 생성해요.

  • 네트워크로 C 컴파일러와 통신하는 설계도 부트스트랩 문제를 겨냥해요. 특이한 운영체제 위에서 rustc 전체를 돌리기 어렵다면, 강한 머신에서 rustc를 실행하고 대상 시스템에는 작은 C 컴파일 서버만 두는 식으로 우회할 수 있어요.

  • 가장 큰 트레이드오프는 생성된 C가 범용 산출물이 아니라는 점이에요. 특정 플랫폼의 ABI와 컴파일러 성질에 맞춰 나온 코드라서, 다른 아키텍처에 그대로 들고 가는 방식은 어렵지만, 대신 정말 이상한 타깃까지 맞출 여지를 얻어요.

이건 ‘Rust를 C로 바꿔봤다’ 수준보다 훨씬 흥미로움. Rust의 약점으로 자주 나오는 ‘LLVM이 안 가는 플랫폼은 어쩔 건데?’에 정면으로 들이받는 프로젝트라서, 완성도가 올라가면 레거시·임베디드 쪽에서 꽤 큰 얘기가 될 수 있음.

댓글

댓글

댓글을 불러오는 중...

open-source

밸브, 스팀 머신 전면 전자잉크 화면을 MIT 라이선스로 공개

밸브가 스팀 머신용 전면 전자잉크 디스플레이를 직접 팔지는 않지만, 누구나 만들 수 있도록 설계와 제작 정보를 공개했어. 이름은 ‘인크터페이스’고, 깃랩에 MIT 라이선스로 올라와 있어서 하드웨어 액세서리 업체나 개인 제작자가 바로 따라 만들 수 있는 상태야.

open-source

고도·Zig 등 오픈소스 프로젝트, AI 생성 코드 PR 전면 차단 흐름

고도 재단을 비롯한 여러 오픈소스 프로젝트가 AI가 만든 ‘바이브 코딩’ 풀 리퀘스트를 받지 않겠다고 선을 긋고 있어. 이유는 코드 품질만이 아니라 리뷰어의 시간, 신규 기여자 멘토링, 유지보수자 양성이라는 코드 리뷰의 본래 기능이 무너진다는 데 있어.

open-source

PeerTube, 유튜브식 중앙집중을 피하는 연합형 오픈소스 영상 플랫폼

PeerTube는 유튜브, 데일리모션, 비메오처럼 데이터와 시선을 한곳에 모으는 플랫폼의 대안으로 만든 무료 오픈소스 영상 플랫폼이다. 핵심은 ActivityPub 기반 연합 구조, WebRTC 기반 피어투피어 전송, 인스턴스 간 캐싱으로 작은 서버도 더 넓은 시청자를 감당할 수 있게 하는 데 있다.

open-source

직접 조립하는 오픈소스 로봇청소기 ‘움우’, 클라우드 없이 집을 돈다

메이커스 펫이 직접 만들고 고칠 수 있는 오픈소스 로봇청소기 프로젝트 ‘움우’를 공개했다. 하드웨어, 펌웨어, 소프트웨어를 모두 열고, 2D 라이다와 ROS 2 기반 자율주행, 홈 어시스턴트 연동, 3D 프린팅 섀시를 목표로 한다. 아직 초기 단계지만 부품표, 3D 출력 파일, ROS 2 패키지, 펌웨어, 문서까지 공개하며 커뮤니티와 병렬로 개발하겠다는 점이 꽤 재밌다.

open-source

F-드로이드가 구글의 안드로이드 개발자 인증을 ‘보호로 위장한 위협’이라고 때린 이유

F-드로이드는 구글의 안드로이드 개발자 인증 제도(ADV)가 악성코드 방지보다 앱 배포 통제에 가깝다고 강하게 비판했다. 개발자 신원 등록, 서명 키 등록, 구글 약관 동의가 사실상 안드로이드 앱 생태계의 중앙 게이트키핑으로 이어질 수 있다는 주장이다. 특히 2026년 9월 30일부터 브라질, 인도네시아, 싱가포르, 태국에서 먼저 적용될 예정이라 사이드로딩과 오픈소스 앱 배포에 직접적인 영향이 예상된다.