rustc 전체를 C 로 변환: 4,600 만 줄의 코드와 cilly 의 도전
crustc: entirety of `rustc`, translated to C
저는 3 년간 Rust 를 C 로 컴파일하는 도구를 개발해 왔으며, 그 결과물인 cilly 를 통해 전체 rustc 를 4,600 만 줄의 C 코드로 성공적으로 변환했습니다. 이 프로젝트는 LLVM 이나 GCC 지원이 없는 구형 하드웨어에서도 Rust 를 사용할 수 있게 하는 것을 목표로 합니다. 이제 GCC 와 make 만으로도 작동하는 완전한 Rust 컴파일러를 직접 빌드해 볼 수 있습니다.
이 프로젝트의 목표는 Rust 가 지원하지 않는 구형 하드웨어 문제를 해결하여, C 를 지원하는 곳이라면 어디든 Rust 를 사용할 수 있게 하는 것입니다.
HN 토론
92- lioeters
> 지난 3 년간 Rust 를 C 로 컴파일하는 작업을 해왔습니다. .. 저의 세기로는 이번이 14 번째 시도인 cilly 입니다.
니치한 관심사에 대한 헌신에 존경을 표합니다.
> 이 작업의 주된 목표는 LLVM/GCC 지원이 없는 구형/희귀 하드웨어를 지원하는 것입니다.
Rust 컴파일러를 소스로 빌드하려면 일반적으로 Rust 컴파일러가 필요하다는 부트스트래핑(bootstrapping) 문제에 대해 읽은 기억이 나네요. https://bootstrapping.miraheze.org/wiki/Bootstrapping_Specif...
아, 그런데 Rust 컴파일러의 C++ 구현체가 있군요. https://github.com/thepowersgang/mrustc
어쨌든 이 부분도 유용해 보입니다. crustc 가 네트워크와 기기 간에 컴파일을 수행할 수 있다는 점이죠.
> Blorbo OS 에 작은 C 서버를 구축하고, Linux 같은 일반적인 플랫폼에서 rustc 를 실행한 뒤 cilly 가 네트워크를 통해 통신하게 합니다.
- taris2
공식 Rust 컴파일러에 백도어가 있는지 테스트하기 위해 Diverse Double-Compiling(DDC) 을 시도해 보셨나요?
crustc 를 사용하여 Rust 소스 코드를 컴파일하여 새로운 컴파일러를 생성한 뒤, 이 새로운 컴파일러와 공식 rustc 이진 파일 모두를 결정론적(deterministic) 플래그와 함께 사용하여 다시 Rust 소스 코드를 컴파일합니다. 두 출력 결과는 비트 단위까지 일치해야 합니다.
- levkk
정말 멋집니다. 처음엔 또 다른 LLM 생성 데모인 줄 알았는데, 아니었습니다: 원작 예술 작품이군요. 정말 멋집니다. LLVM IR 보다 C 로 트랜스파일링하는 것이 더 쉬워 보이는데, GCC 에 최적화를 맡기는 방식이 실제로 작동할 것 같습니다.
컴파일러 구현체가 나오면 기대되네요. 배울 점이 많을 것 같습니다.
- ronsor
> 저는 왼손을 믹서기에 넣었습니다. 믹서기가 이겼습니다. (손가락은 다 있지만 봉합은 몇 바늘 했습니다.) 더 이상 설명하지 않겠습니다.
아쉽네요. 이 내용에 관한 기사를 읽었을 텐데요.
- ahartmetz
잠깐, LLVM 에 Rust 를 C 로 트랜스파일링하는 데 사용할 수 있는 C 백엔드가 있다고 wasn't 생각했나요? 사실 오랫동안 없었지만, 이제 다시는 가능할지도 모릅니다: https://discourse.llvm.org/t/re-ann-llvm-c-backend-still-abl...