본문 바로가기

Swift System 오픈소스화 소식

기술적인 이야기/애플 플랫폼 개발 2020. 9. 27.
반응형

애플에서 저수준 시스템 콜 라이브러리인 Swift System을 오픈소스화 했다는 소식이 공식 블로그를 통해서 전해졌습니다.

 

Swift System is Now Open Source

In June, Apple introduced Swift System, a new library for Apple platforms that provides idiomatic interfaces to system calls and low-level currency types. Today, I’m excited to announce that we’re open-sourcing System and adding Linux support! Our visi

swift.org

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은 멀티플랫폼입니다. 이 정의는 하나의 소스코드로 모든 플랫폼에서 동작시킨다는 크로스 플랫폼과는 다른 의미입니다. 멀티 플랫폼은 인터페이스를 가급적 통일하되 상황에 따라 플랫폼 독자 구현도 포함하는 형태를 정의합니다. 따라서 일부 플랫폼에서는 인터페이스나 동작이 달라질 여지도 있습니다. 하지만 대부분의 라이브러리는 표준화되어있기 때문에 거의 동일한 인터페이스를 접할 수 있을 것으로 추측됩니다.

 

apple/swift-system

Contribute to apple/swift-system development by creating an account on GitHub.

github.com

현재는 초기 버전으로 애플 플래폼 즉 iOS, macOS, tvOS, watchOS에 해당하는 코드가 일부 구현되어 있는 상황인데, 오픈소스이기 때문에 여기서 리눅스와 윈도 코드가 커뮤니티에 의해 추가로 구현될 수 있습니다. 따라서 조만간 상당수의 플랫폼에서 시스템 콜은 자유롭게 쓸 수 있지 않을까 생각됩니다.

728x90
반응형

댓글