최근 'crustc'라는 흥미로운 프로젝트가 공개되며 개발자 커뮤니티의 주목을 받고 있습니다. 이 프로젝트는 Rust 컴파일러(rustc)의 특정 나이틀리 버전(1.98.0-nightly) 전체를 무려 4,600만 줄의 C 코드로 변환한 데모입니다. 이렇게 생성된 C 코드는 표준 GCC와 make를 통해 빌드하면 실제로 작동하는 Rust 컴파일러가 되며, 이는 Rust 코드를 C로 컴파일하는 새로운 도구체인 'cilly'의 강력한 가능성을 보여줍니다.
'crustc'는 사실 'cilly'라는 새로운 Rust-to-C 컴파일러 백엔드의 쇼케이스입니다. 'cilly'는 Rust 라이브러리이자 Rust 컴파일러의 플러그인 형태로 작동하며, 사용자의 Rust 코드를 임의의 대상에 맞춰 C 코드로 변환하는 것을 목표로 합니다. 특히 'cilly'의 독특한 점은 대상 C 컴파일러와 플랫폼의 특성(타입 레이아웃, 크기, 정렬, 문자 인코딩 등)을 'witness 프로그램'이라는 방식으로 질의하여, 해당 C 컴파일러가 받아들일 수 있는 최적화된 C 코드를 생성한다는 것입니다. 이는 LLVM이나 GCC 지원이 부족한 오래되거나 특이한 하드웨어에서도 Rust를 사용할 수 있게 하려는 핵심적인 접근 방식입니다. 또한, TCP를 통해 원격 C 컴파일러와 통신하는 네트워크 투명성 기능도 포함하고 있어, 크로스 컴파일 환경 구축의 난제를 해결하는 데 기여할 수 있습니다.
이 프로젝트의 가장 중요한 의미는 Rust 언어의 적용 범위를 획기적으로 확장할 수 있다는 점입니다. 기존에는 LLVM이나 GCC 백엔드를 지원하지 않는 특수하거나 레거시 시스템에서는 Rust 사용이 어려웠습니다. 하지만 'cilly'를 통해 Rust 코드를 C로 변환할 수 있게 되면, C 컴파일러만 있다면 어떤 환경에서든 Rust 프로그램을 실행할 수 있게 됩니다. 이는 임베디드 시스템, 구형 게임 콘솔, 특정 산업용 제어 장치 등 다양한 틈새 시장에서 Rust의 안정성과 성능을 활용할 수 있는 길을 열어줄 것입니다. 비록 'cilly' 도구체인이 아직 공개 사용 준비가 완료되지 않았고 최적화 관련 버그도 추적 중이지만, 이 기술이 성숙해진다면 Rust 생태계에 새로운 활력을 불어넣고, 개발자들이 더 넓은 영역에서 Rust를 선택할 수 있는 강력한 동기를 제공할 것으로 기대됩니다.