[iOS] 2026.01.01 ABI Stability
ABI Stability는 Swift 5 부터 도입되었음.
여기서 ABI(Application Binary Interface)란,
앱과 운영체제가 바이너리 레벨에서 소통하는 규칙 / 약속 을 의미함.
(API가 앱과 서버간의 통신 규칙이라면, ABI는 앱과 운영체제와의 통신 규칙)
즉, 컴파일이 끝난 후 런타임 시점에 실행 가능한 기계어(binary) 기준에서의 인터페이스 설계임.
(소스레벨 규칙은 API, 바이너리레벨 규칙은 ABI)
ex) 메모리 구조, 함수 호출 방식, 타입 정보 등.
Swift 5 이전에는
언어 자체가 계속 변화하면서 ABI가 지속적으로 변경되어 버전 간 바이너리 호환이 어려웠음.
그래서 앱 실행에 필요한 Swift 런타임과 표준 라이브러리를 앱 번들에 직접 포함해야 했음.
-> 앱 용량 증가
Swift 5 부터
Swift의 ABI가 안정화 되면서 Apple OS에 Swift 런타임과 표준 라이브러리를 내장함.
즉 앱은 OS가 제공하는 런타임을 사용하게 됨.
-> 앱 용량 감소
프레임워크를 배포하는 데 있어서도,
기존에는 ABI가 달라서 미리 컴파일할 수 없기 때문에 소스코드를 배포해야 했지만
ABI가 안정된 이후로는 미리 컴파일된 Binary Framework/XCFramework 를 사용할 수 있게 됨.
결론
Swift 5 이후 ABI 안정화는
Swift 생태계가 소스 중심에서 바이너리 중심으로 전환된 결정적인 전환점이다.
앱 : 런타임을 OS에서 사용 -> 가볍고 일관된 실행환경
라이브러리 배포 : 소스코드 배포에서 바이너리 배포로 전환 가능
생태계 : 모듈, 프레임워크, 패키지의 재사용성과 상호 호환성 증가
즉, 개발과 배포, 실행 환경 전반에서 안전성과 효율성이 올라감.