Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

이 가이드에 대하여

이 가이드는 Rust 컴파일러인 rustc가 어떻게 동작하는지 문서화하고, 새로운 기여자가 rustc 개발에 참여할 수 있도록 돕기 위해 작성되었습니다.

이 가이드는 참고 자료로 쓰도록 만들어졌다는 점에 유의하십시오. 처음부터 끝까지 읽기보다는 필요한 문서를 검색해서 찾아보시기를 권장합니다.

이 가이드는 다음과 같은 여러 부분으로 구성되어 있습니다.

  1. rustc 빌드 및 디버깅: 어떤 방식으로 기여하든 유용한 빌드, 디버깅, 프로파일링 등에 관한 정보를 담고 있습니다.
  2. Rust에 기여하기: 어떤 방식으로 기여하든 유용한 기여 절차, git과 GitHub 사용법, 기능 안정화 등에 관한 정보를 담고 있습니다.
  3. 부트스트래핑: Rust 컴파일러가 이전 버전을 사용하여 자기 자신을 빌드하는 방법을 설명하며, 부트스트랩 과정 소개와 디버깅 방법을 포함합니다.
  4. 컴파일러의 고수준 아키텍처: 컴파일러의 고수준 아키텍처와 컴파일 과정의 각 단계를 다룹니다.
  5. 소스 코드 표현: 사용자로부터 받은 원시 소스 코드를 컴파일러가 쉽게 다룰 수 있는 다양한 형태로 변환하는 과정을 설명합니다.
  6. 지원 인프라: 명령줄 인자 규칙, rustc_driver와 rustc_interface 같은 컴파일러 진입점, 그리고 오류와 린트의 설계 및 구현을 다룹니다.
  7. 분석: 컴파일러가 코드의 다양한 속성을 검사하고 컴파일 과정의 이후 단계(예: 타입 검사)에 정보를 제공하기 위해 사용하는 분석을 다룹니다.
  8. MIR에서 바이너리까지: 링크된 실행 가능한 기계어 코드가 생성되는 방식을 다룹니다.
  9. 마지막에는 유용한 참고 정보를 담은 부록이 있습니다. 부록은 여러 개가 있으며 각각 다른 정보를 담고 있고, 용어집도 그중 하나입니다.

끊임없는 변화

rustc는 상당수의 기여자가 지속적으로 작업하고 있는 실제 프로덕션 수준의 제품이라는 점을 명심하십시오. 그렇기 때문에 코드베이스의 잦은 변경과 기술 부채도 상당합니다. 또한 이 가이드 전반에서 다루는 많은 아이디어는 아직 완전히 구현되지 않은 이상적인 설계입니다. 이 모든 이유로 이 가이드의 모든 내용을 완전히 최신 상태로 유지하기란 매우 어렵습니다!

물론 이 가이드 자체도 오픈 소스이며, 소스는 GitHub 저장소에서 호스팅됩니다. 가이드에서 오류를 발견하시면 이슈를 등록해 주십시오. 수정 사항을 담은 PR을 열어 주시면 더욱 좋습니다!

가이드에 기여하신다면 이 가이드의 문서 작성에 관한 하위 절을 참고하십시오.

“‘조건 지어진 모든 것은 무상하다’ — 이것을 지혜로써 볼 때, 사람은 괴로움에서 벗어납니다.” 법구경, 277게

정보를 찾을 수 있는 다른 곳

지금 읽고 계신 이 가이드는 컴파일러의 여러 부분이 어떻게 동작하는지, 그리고 컴파일러에 어떻게 기여하는지에 관한 정보를 담고 있습니다.

다음 사이트도 유용할 수 있습니다.

  • rustc API 문서 – 컴파일러, 개발 도구, 내부 도구에 대한 rustdoc 문서입니다.
  • Forge – Rust 인프라, 팀 절차 등에 관한 문서를 담고 있습니다.
  • rust-lang/rust의 LLM 정책
  • compiler-team – Rust 컴파일러 팀의 본거지로, 팀 절차, 활동 중인 작업 그룹, 팀 일정에 대한 설명이 있습니다.
  • std-dev-guide – 표준 라이브러리 개발을 위한 비슷한 가이드입니다.
  • rust-analyzer 책 – rust-analyzer에 관한 문서입니다.
  • t-compiler(컴파일러 팀) Zulip
  • Rust 내부 구조에 관해 질문하고 토론할 수 있는 곳인 Rust Internals 포럼
  • Rust 레퍼런스는 Rust 내부 구조를 따로 다루지는 않지만, 그럼에도 훌륭한 자료입니다
  • 오래되기는 했지만 Tom Lee의 훌륭한 블로그 글은 큰 도움이 됩니다
  • Rust 컴파일러 테스트 문서
  • @bors에 관해서는 이 치트 시트가 유용합니다
  • 프로그래밍할 때는 언제나 Google이 도움이 됩니다. 모든 Rust 문서를 검색하여(표준 라이브러리, 컴파일러, 책, 레퍼런스, 가이드) 언어와 컴파일러에 관한 정보를 빠르게 찾을 수 있습니다.
  • Rustdoc에 내장된 검색 기능을 사용하여 살펴보고 있는 크레이트 안의 타입과 함수에 관한 문서를 찾을 수도 있습니다. 타입 시그니처로 검색할 수도 있습니다! 예를 들어 * -> vec를 검색하면 Vec<T>를 반환하는 모든 함수를 찾을 수 있습니다. 힌트: 아무 Rustdoc 페이지에서나 ?를 입력하면 더 많은 팁과 키보드 단축키를 볼 수 있습니다!