애플에서 저수준 시스템 콜 라이브러리인 Swift System을 오픈소스화 했다는 소식이 공식 블로그를 통해서 전해졌습니다.
Swift System은 멀티 플랫폼 라이브러리로 시스템 콜을 C 라이브러리를 직접 링크해서 호출하는 방식이 아닌 Swift 인터페이스로 감싼 형태로 좀 더 쉽게 호출할 수 있도록 디자인된 라이브러리 패키지입니다. 아마도 stdio(Standard I/O), stdlib(Standard Library)의 많은 부분을 감싸기 위한 목적으로 만들어진 것으로 유추됩니다. 대표적으로 아래와 같은 파일 출력 샘플 소스를 언급하고 있습니다.
let message: String = "Hello, world!" + "\n"
let path: FilePath = "/tmp/log"
let fd = try FileDescriptor.open(
path, .writeOnly, options: [.append, .create], permissions: .ownerReadWrite)
try fd.closeAfter {
_ = try fd.writeAll(message.utf8)
}
예제를 보면 알 수 있지만 단순 함수 투성이(?)인 C 언어의 시스템 콜과는 다르게 Swift System은 이런 함수들을 모듈화, 클래싱 혹은 구조화해서 제공하는 형태로 디자인하는 것을 알 수 있습니다.
Swift System은 멀티플랫폼입니다. 이 정의는 하나의 소스코드로 모든 플랫폼에서 동작시킨다는 크로스 플랫폼과는 다른 의미입니다. 멀티 플랫폼은 인터페이스를 가급적 통일하되 상황에 따라 플랫폼 독자 구현도 포함하는 형태를 정의합니다. 따라서 일부 플랫폼에서는 인터페이스나 동작이 달라질 여지도 있습니다. 하지만 대부분의 라이브러리는 표준화되어있기 때문에 거의 동일한 인터페이스를 접할 수 있을 것으로 추측됩니다.
현재는 초기 버전으로 애플 플래폼 즉 iOS, macOS, tvOS, watchOS에 해당하는 코드가 일부 구현되어 있는 상황인데, 오픈소스이기 때문에 여기서 리눅스와 윈도 코드가 커뮤니티에 의해 추가로 구현될 수 있습니다. 따라서 조만간 상당수의 플랫폼에서 시스템 콜은 자유롭게 쓸 수 있지 않을까 생각됩니다.
'기술적인 이야기 > 애플 플랫폼 개발' 카테고리의 다른 글
SwiftUI macOS 앱에서 타이틀 바와 툴바가 통합된 윈도우 구현하기 (359) | 2020.11.12 |
---|---|
Swift 5.3에서는 뭐가 바뀌었을까? (898) | 2020.09.28 |
iOS 시뮬레이터에서 애플 인증이 실패하는 문제 (899) | 2020.09.20 |
애플 앱 심사 지침 업데이트 (1254) | 2020.09.01 |
Swift 5.2 업데이트 내역 살펴보기 (891) | 2020.03.25 |
댓글