iOS

[iOS] 2026.01.01 ABI Stability

ioskkt 2026. 1. 2. 07:18

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에서 사용 -> 가볍고 일관된 실행환경

라이브러리 배포 : 소스코드 배포에서 바이너리 배포로 전환 가능

생태계 : 모듈, 프레임워크, 패키지의 재사용성과 상호 호환성 증가

 

즉, 개발과 배포, 실행 환경 전반에서 안전성과 효율성이 올라감.