Swift Compiler 빌드·테스트·디버그 스택¶
이 페이지는 Swift Compiler 기여자의 실무 루프를 한 장으로 묶은 허브다. 즉 “코드를 읽고 → 고치고 → 빌드하고 → 테스트하고 → 디버깅하고 → CI까지 확인하는 흐름”을 연결해서 본다.
전체 루프¶
단계별 핵심 도구¶
| 단계 | 핵심 도구 | 관련 페이지 |
|---|---|---|
| 초기 설정 | build-script, checkout, toolchain setup | Swift 개발 환경 설정 |
| 빌드 그래프/증분 빌드 | CMake, Ninja | CMake와 Ninja 빌드 인프라 |
| 프론트엔드/파이프라인 이해 | driver, dependency analysis | Swift 컴파일러 드라이버, 의존성 분석 (증분 빌드) |
| 테스트 실행 | lit, FileCheck, run-test | lit와 FileCheck, Swift 테스트 가이드 |
| 디버깅 | LLDB, dump flags, SIL/IR 출력 | LLDB와 Swift 디버깅, 컴파일러 디버깅 가이드 |
| 최적화/백엔드 추적 | SIL dump, LLVM IR, pass bisect | SIL (Swift Intermediate Language), LLVM 백엔드와 Swift, Swift 옵티마이저 설계 |
| 최종 검증 | validation / CI | 지속적 통합 (CI), 첫 번째 Pull Request 제출 |
왜 이 허브가 필요한가¶
기존 문서들은 각각 - 환경 설정 - 테스트 작성 - 디버깅 테크닉 - 드라이버 구조 를 따로 설명한다. 하지만 실제 기여는 이 문서들을 번갈아 오가는 루프로 진행된다. 그래서 이 페이지는 개별 도구보다 “실제 작업 흐름” 중심으로 정리한다.
대표 시나리오¶
1. 진단 버그 수정¶
- 관련 표현식 재현
- 프론트엔드 출력 / 타입체커 흐름 확인
- lit/FileCheck 테스트 추가
- LLDB나 dump 플래그로 내부 상태 확인
연결 페이지: - 진단 시스템 (Diagnostics) - Swift 테스트 가이드 - lit와 FileCheck - LLDB와 Swift 디버깅
2. 최적화/성능 문제 조사¶
- SIL 전후 출력 비교
- 특정 패스 bisect
- 필요하면 LLVM IR까지 내려가 확인
연결 페이지: - Swift 옵티마이저 설계 - SIL 옵티마이저 패스 카탈로그 - LLVM 백엔드와 Swift - 컴파일러 성능 측정
3. 빌드/인프라 문제 조사¶
- CMakeLists / 타깃 등록 확인
- Ninja 증분 빌드 루프 확인
- 드라이버/SwiftPM/llbuild 경계 확인
연결 페이지: - CMake와 Ninja 빌드 인프라 - 컴파일러 개발 FAQ - swift-driver (패키지) - llbuild
최소 실무 루프¶
- Swift 개발 환경 설정
- CMake와 Ninja 빌드 인프라
- Swift 테스트 가이드
- lit와 FileCheck
- 컴파일러 디버깅 가이드
- LLDB와 Swift 디버깅
- 지속적 통합 (CI)