▲neo 3달전 | parent | favorite | on: GN⁺: C 언어로 작성된 Rust 컴파일러(notgull.net)Hacker News 의견 Rust를 부트스트랩하려면, C로 프로토-러스트를 작성한 후, 프로토-러스트로 전체 러스트 컴파일러를 작성하는 것이 좋음 프로토-러스트는 차용 검사기나 매크로 지원이 없고, 메모리를 해제하지 않으며, 좋은 코드를 생성할 필요가 없음 프로토-러스트는 러스트 문법을 가진 C와 같음 왜 이 경로가 선택되지 않았는지 궁금함 취미로 Rust로 C 컴파일러를 작성 중이며, "Small C Compiler"라고 부름 Cranelift를 백엔드로 사용하며, 컴파일러 아키텍처는 플러그 가능하고 해킹 가능함 printf("Hello World!")를 처리할 수 있을 때까지 오픈 소스 계획이 없음 전처리기와 파서를 구현하려고 노력 중이며, rust-peg와 HimeCC에 참여함 typedef 문제로 인해 학계의 해결책이 궁금함 하드웨어에서도 동일한 부트스트랩 문제 존재 컴퓨터는 이전에 만들어진 컴퓨터와 소프트웨어로 만들어짐 생각해볼 만한 흥미로운 주제임 부트스트랩의 이점을 찾기 위해 4개의 링크를 따라가야 했음 제목의 "왜" 부분이 그 이유를 설명할 것이라고 기대했음 부트스트랩 체인에 C++이 도입되면 부트스트랩이 거의 끝남 Rust를 사용하려면 C++ 도입 이전에 사용해야 함 Rust 컴파일러가 C에서 부트스트랩될 수 있으면 좋겠음 그러나 이전 버전의 rustc는 이전 버전의 rustc로 컴파일됨 OCaml 컴파일러를 Guile로 성공적으로 컴파일할 수 있음 저자는 C++ 단계를 제거하고 C 단계를 선호함 저자의 동기가 명확하지 않음 목표 시스템에서 새로운 바이너리를 생성하려면 rustc가 해당 시스템을 지원해야 함 rustc에 해당 지원을 추가하면 스스로 빌드할 수 있음 Scheme으로 C++ 인터프리터나 컴파일러를 작성하는 것을 상상함 Scheme에서 현재 gcc로 바로 가는 것은 큰 지름길이 될 것임 그러나 C++ 컴파일러 작성은 거의 불가능하다는 것이 일반적인 지혜임 전체 스택을 보면 "trusting trust" 문제를 우회할 수 있는 방법일 수 있음 링크 QBE를 백엔드로 사용하는 것이 마음에 듦 Rust와 LLVM과의 비교를 보는 것이 흥미로울 것임 행운을 빔 부트스트랩 과정에 FORTH를 도구 체인의 일부로 사용하는 것을 고려할 수 있음
Hacker News 의견
Rust를 부트스트랩하려면, C로 프로토-러스트를 작성한 후, 프로토-러스트로 전체 러스트 컴파일러를 작성하는 것이 좋음
취미로 Rust로 C 컴파일러를 작성 중이며, "Small C Compiler"라고 부름
하드웨어에서도 동일한 부트스트랩 문제 존재
부트스트랩의 이점을 찾기 위해 4개의 링크를 따라가야 했음
부트스트랩 체인에 C++이 도입되면 부트스트랩이 거의 끝남
목표 시스템에서 새로운 바이너리를 생성하려면 rustc가 해당 시스템을 지원해야 함
Scheme으로 C++ 인터프리터나 컴파일러를 작성하는 것을 상상함
전체 스택을 보면 "trusting trust" 문제를 우회할 수 있는 방법일 수 있음
QBE를 백엔드로 사용하는 것이 마음에 듦
부트스트랩 과정에 FORTH를 도구 체인의 일부로 사용하는 것을 고려할 수 있음