바이너리 직렬화 형식¶
Swift 모듈의 바이너리 직렬화 형식. 원본: swift/docs/Serialization.md
용도¶
- swiftmodule 파일: 모듈의 공개 인터페이스
- SIB (Swift Intermediate Binary): Sema/SILGen 이후 상태 캡처
- 디버그 정보: 타입 고수준 인트로스펙션
- 비공개 API 디버그: 인터랙티브 디버깅용
LLVM Bitstream 형식¶
LLVM IR용으로 설계된 바이너리 컨테이너를 재활용:
- Block: 파일 영역, 길이가 시작에 기록되어 빠른 스킵 가능
- Record: 최대 64비트 데이터 필드
- 블록 내 특정 오프셋으로 점프 가능
- 형식 변경이 즉시 기존 파일을 무효화하지 않음
버전 관리¶
| 변경 유형 | major | minor |
|---|---|---|
| 하위 호환 변경 | 유지 | 유지 |
| 이전 컴파일러 로드 불가 | 유지 | 증가 |
| 이후 컴파일러 로드 불가 | 증가 | (리셋) |
현재: major=0, minor가 항상 증가 (모든 변경이 호환성 파괴).
파일 위치¶
swift/lib/Serialization/— 직렬화 구현
관련 페이지: overview, abi-stability