Swift 언어 개요¶
이 페이지의 목적은 Swift를 “문법 목록”이 아니라 언어 의미, 라이브러리, 런타임, 도구 생태계까지 포함한 하나의 시스템으로 보는 데 있다.
Swift를 이해할 때 같이 봐야 하는 층¶
| 층 | 핵심 질문 | 연결 페이지 |
|---|---|---|
| 표면 문법 | 사용자가 어떤 문법과 선언 모델을 쓰는가 | TSPL → 컴파일러 교차 읽기, Swift 모듈 시스템, Swift 접근 제어, 리터럴의 타입 체킹과 추론 |
| 타입 시스템 | 값, 참조, 프로토콜, 제네릭, 오류, 동시성을 어떻게 모델링하는가 | 타입 체커 설계 및 구현, Generic Signatures, 에러 처리 설계, Swift Concurrency 전체 구조, Swift 6 데이터 경쟁 안전성 검사 |
| 실행 의미 | 값/참조 의미론, 소유권, 메모리, 런타임은 어떻게 작동하는가 | 소유권 매니페스토, SIL 소유권 모델 (OSSA), Swift 런타임, ABI: 타입 메타데이터 |
| ABI/배포 | 모듈 안정성, ABI 안정성, 라이브러리 진화는 어떻게 다뤄지는가 | ABI 안정성, 라이브러리 진화 (Library Evolution), 바이너리 직렬화 형식 |
| 생태계 | SwiftPM, Foundation, SwiftSyntax, SourceKit-LSP 같은 도구/패키지는 어디에 위치하는가 | Swift Package Manager, Swift Foundation, swift-syntax, SourceKit-LSP |
Swift를 구성하는 핵심 주제들¶
1. 표현식과 선언¶
Swift는 사용성이 높은 표면 문법을 제공하지만, 실제로는 파서가 AST를 만들고 타입 체커가 의미를 채워 넣으면서 언어가 완성된다.
바로 이어지는 구현 축: - Swift 컴파일러 모노레포 개요 - 타입 체커 설계 및 구현 - Request Evaluator
2. 프로토콜과 제네릭¶
Swift의 핵심 정체성 중 하나는 제네릭과 프로토콜 중심 설계다. 이 축을 이해하지 못하면 표준 라이브러리, 최적화, ABI까지 모두 끊겨 보인다.
관련 페이지: - Swift 타입 시스템 - Compiling Swift Generics - Generic Signatures - Substitution Maps - Conformances - 제네릭 매니페스토
3. 값 의미론과 소유권¶
Swift는 value semantics를 강하게 강조하지만, 실제 구현에서는 ARC, borrow, OSSA, copy-on-write 같은 메커니즘이 함께 작동한다.
관련 페이지: - Swift 소유권·메모리 모델 - 표준 라이브러리·런타임·컴파일러의 관계 - 소유권 매니페스토 - SIL 소유권 모델 (OSSA) - SIL ARC 최적화 - Value/Reference Types → SIL 소유권 교차 읽기
4. 동시성과 안전성¶
Swift 6 이후에는 동시성이 단지 async/await 문법이 아니라 정적 안전성 검사 체계라는 점이 훨씬 중요해졌다.
관련 페이지: - Swift Concurrency 전체 구조 - Swift actor isolation·Sendable - Swift Task·Executor·Runtime - Swift 6 데이터 경쟁 안전성 검사 - 진단 시스템 (Diagnostics) - SIL 옵티마이저 패스 카탈로그
5. 상호운용성과 모듈 경계¶
Swift는 독립 언어이면서도 C, Objective-C, C++와의 상호운용을 전략적으로 중시한다. 그래서 module, importer, naming, overlay 구조를 함께 보는 것이 중요하다.
관련 페이지: - Swift 매크로·도구 스택 - Objective-C 상호운용 - C에서 Swift로의 이름 변환 - Swift의 C API 임포트 방식 - C++ 상호운용성 개요
Swift는 컴파일러 없이 설명될 수 있는가¶
부분적으로는 가능하지만, 완전하게는 어렵다. Swift의 제네릭, ownership, concurrency, resilience 같은 중요한 특성은 언어 사양의 문장만으로는 충분히 이해되지 않고, 컴파일러의 제약과 구현 구조를 같이 봐야 제대로 보인다.
그래서 이 위키에서는 Swift를 배울 때 자연스럽게 - Swift와 Swift Compiler의 관계 - 언어 → 컴파일러 교차학습 지도 - Swift Compiler 학습 스택 으로 넘어가게 설계한다.
Swift를 배우는 세 가지 관점¶
- 사용자 관점
- 문법, 라이브러리, 패키지, 앱/서버 코드 작성
- 구현 관점
- Parser, Sema, SIL, IRGen, ABI, runtime
- 도구 관점
- SwiftPM, driver, SourceKit-LSP, SwiftSyntax, LLDB
이 세 관점이 같이 연결될 때 Swift 전체가 보이기 시작한다.