콘텐츠로 이동

Swift 컴파일러 모노레포 개요

Swift는 고성능 시스템 프로그래밍 언어로, 현대적 구문과 메모리 안전성을 제공한다. 이 모노레포(swiftlang)는 Swift 컴파일러와 관련 도구 전체를 포함한다.

컴파일러 파이프라인

Swift Source → Parser → Sema(TypeChecker) → SILGen → Mandatory Passes
→ Canonical SIL → Optimization Passes → IRGen → LLVM IR → Machine Code
  1. Parser: Swift 소스에서 AST(Abstract Syntax Tree) 구성
  2. Sema/TypeChecker: AST 타입 검사 및 주석 — 제약 기반 양방향 타입 추론 사용 (type-checker)
  3. SILGen: AST에서 raw SIL 생성
  4. Mandatory Passes: 필수 최적화 및 진단 → canonical SIL 생성
  5. Optimization Passes: 성능 최적화 (ARC, devirtualization, 제네릭 특수화 등) (optimizer-design)
  6. IRGen: SIL → LLVM IR 하위 변환
  7. LLVM Backend: LLVM 최적화 및 기계 코드 생성

모노레포 구성

컴파일러 코어 (swift/)

  • lib/AST/ — AST 정의 및 조작
  • lib/Parse/ — 파서
  • lib/Sema/ — 의미 분석 (타입 검사)
  • lib/SILGen/ — SIL 생성
  • lib/SIL/ — SIL IR 자료 구조
  • lib/SILOptimizer/ — SIL 최적화 패스
  • lib/IRGen/ — LLVM IR 생성
  • lib/SwiftDemangle/ — 심볼 디맹글링

LLVM/Clang (llvm-project/)

LLVM IR 최적화 및 코드 생성 백엔드. Clang Importer가 C/Objective-C 선언을 Swift에 노출한다.

표준 라이브러리 (swift/stdlib/, swift-foundation/)

Swift 표준 라이브러리(swiftCore)와 Foundation 구현.

패키지 및 도구

  • swift-syntax/ — Swift 구문 분석 라이브러리 (매크로 기반)
  • swift-driver/ — 컴파일러 드라이버
  • swiftpm/ / swift-build/ — Swift Package Manager
  • sourcekit-lsp/ — SourceKit LSP 서버
  • swift-format/ — 코드 포매터
  • swift-testing/ — Swift Testing 프레임워크

주요 문서

컴파일러 코어

ABI

코드 구조 분석

Interop (ObjC / C / C++)

언어 설계

기여 가이드

패키지 및 도구