Swift Compiler 학습 스택¶
Swift Compiler를 배우기 위해 필요한 기술 스택은 생각보다 넓다. 이 페이지는 “무엇을 어느 정도까지 알아야 하는가?”를 학습 관점에서 정리한 로드맵이다.
핵심 원칙¶
Swift Compiler를 배우는 데 필요한 지식은 한 덩어리가 아니다. 대략 다음 다섯 층으로 쌓인다.
- Swift 언어 이해
- 컴파일러 일반 교양
- Swift 특유의 구현 축
- 빌드/테스트/디버그 도구
- 생태계 패키지와 실전 도구
레벨별 학습 스택¶
Level 0 — Swift 언어 사용자 시야¶
먼저 Swift를 실제로 쓰는 언어로 이해해야 한다.
필수 주제:
- declarations / expressions / modules
- protocol / generic / existential / opaque type
- ownership 감각과 값/참조 의미론
- concurrency와 Sendable
- SwiftPM 기반 프로젝트 구조
추천 페이지: - Swift 언어 개요 - Swift 타입 시스템 - Swift 소유권·메모리 모델 - Swift Concurrency 전체 구조 - Swift actor isolation·Sendable - Swift Task·Executor·Runtime - 표준 라이브러리·런타임·컴파일러의 관계 - TSPL → 컴파일러 교차 읽기 - 언어 → 컴파일러 교차학습 지도 - Swift Package Manager
Level 1 — 컴파일러 일반 교양¶
Swift 고유 세부 구현으로 들어가기 전에, 컴파일러 전반에서 반복되는 개념을 알아두면 훨씬 덜 헤맨다.
필수 주제: - parsing / AST - semantic analysis - type checking / constraint solving - IR / SSA / optimization - calling convention / ABI / runtime
추천 페이지: - Swift 컴파일러 모노레포 개요 - 타입 체커 설계 및 구현 - SIL (Swift Intermediate Language) - ABI 안정성 - Swift 런타임
Level 2 — Swift 특유의 핵심 구현¶
이 지점부터가 “Swift Compiler답다”는 느낌이 강해진다.
필수 주제: - generic signature / archetype / substitution map - protocol conformance model - OSSA와 ownership - resilience / library evolution - strict concurrency checking
추천 페이지: - Compiling Swift Generics - Swift 소유권·메모리 모델 - Swift Concurrency 전체 구조 - Swift actor isolation·Sendable - Swift Task·Executor·Runtime - Generic Signatures - Substitution Maps - Conformances - SIL 소유권 모델 (OSSA) - 라이브러리 진화 (Library Evolution) - Swift 6 데이터 경쟁 안전성 검사
Level 3 — 툴체인 실무 스택¶
여기서부터는 “읽기”뿐 아니라 “만지고 검증하는 능력”이 붙는다.
필수 주제: - build-script / driver / SwiftPM / llbuild - CMake / Ninja 기반 빌드 감각 - lit / FileCheck 테스트 문화 - LLDB 디버깅 루프 - CI와 validation 흐름
추천 페이지: - Swift 툴체인 스택 - Swift Compiler 빌드·테스트·디버그 스택 - CMake와 Ninja 빌드 인프라 - lit와 FileCheck - LLDB와 Swift 디버깅 - LLVM 백엔드와 Swift - Swift 개발 환경 설정 - Swift 테스트 가이드 - 컴파일러 개발 팁 - 컴파일러 디버깅 가이드 - 지속적 통합 (CI)
Level 4 — 생태계와 도구 층¶
컴파일러만이 아니라 주변 도구와 패키지까지 연결되면 훨씬 입체적으로 보인다.
필수 주제: - SwiftSyntax와 매크로/구문 도구 - SourceKit-LSP와 IDE 경험 - Foundation / Testing / Collections / NIO 같은 대표 패키지 - interop가 실제 라이브러리 경계에서 어떤 의미를 가지는지
추천 페이지: - Swift 매크로·도구 스택 - swift-syntax - SourceKit-LSP - Swift Foundation - Swift Testing - Swift Collections - SwiftNIO - C++ 상호운용성 개요
무엇을 얼마나 깊게 알아야 하나¶
| 목표 | 필요한 깊이 |
|---|---|
| Swift 언어를 잘 쓰는 개발자 | Level 0~1 |
| 컴파일러 위키를 읽고 길을 잃지 않는 수준 | Level 0~2 |
| 간단한 문서/테스트/진단 수정 기여 | Level 0~3 |
| Sema/SIL/ABI 쪽 구현 기여 | Level 0~4 |
| 툴체인/생태계 전체를 설계 관점으로 보기 | Level 0~4 + 지속적 확장 |
추천 학습 루트¶
빠른 전체 지도 루트¶
- Swift 전체 지도
- Swift 언어 개요
- Swift와 Swift Compiler의 관계
- Swift 소유권·메모리 모델
- Swift Concurrency 전체 구조
- Swift actor isolation·Sendable
- Swift Task·Executor·Runtime
- Swift Evolution / proposal history
- Swift 툴체인 스택
- 위키 키워드 연결망
구현 중심 루트¶
기여 중심 루트¶
언어 ↔ 구현 연결 루트¶
- 언어 → 컴파일러 교차학습 지도
- Swift와 Swift Compiler의 관계
- Compiling Swift Generics
- Swift 6 데이터 경쟁 안전성 검사
- 라이브러리 진화 (Library Evolution)
이 위키에서 다음에 더 보강할 축¶
- Swift proposal-to-implementation 개별 교차 페이지 묶음