홈으로 돌아가기

Swift 6.3: Android SDK 및 @c 속성

Swift 6.3, Android용 공식 SDK, C 내보내기용 @c 속성, 모듈 선택자 및 새로운 컴파일러 최적화 도입. 업데이트로 시니어 개발자를 위한 크로스플랫폼 기능과 성능 향상.

Swift 6.3, Android 공식 지원 및 C 상호운용성
Advertisement 728x90

Swift 6.3: Android용 공식 SDK와 새로운 내보내기 속성

Swift 6.3는 2026년 3월 말에 출시되었습니다. 소스 코드는 GitHub에서 Apache 2.0 라이선스 하에 제공됩니다. 이전 안정 버전은 2025년 10월의 Swift 6.2였으며, Debian, Fedora, Ubuntu 24.04 지원이 포함된 Swift 6.0은 2024년 9월에 나왔습니다. 공식 빌드는 Linux, Windows, macOS용으로 배포됩니다.

이번 업데이트는 크로스 플랫폼 기능과 컴파일러 도구 확장에 중점을 둡니다. Swift 언어는 C와 Objective-C의 기능을 통합하면서 Objective-C 런타임과의 호환성을 유지합니다. Swift 코드는 C와 Objective-C와 상호 운용 가능하며, ARC를 통한 메모리 관리로 버퍼 오버플로우, 초기화되지 않은 메모리 접근, use-after-free 오류를 방지합니다.

Swift는 제네릭, 클로저, 람다, 튜플, 딕셔너리 타입, 효율적인 컬렉션, 함수형 구성 요소를 지원합니다. LLVM을 통한 머신 코드 컴파일로 Objective-C보다 30% 향상된 성능을 제공합니다. Swift Package Manager는 의존성 관리, 빌드, 링킹을 처리합니다.

Google AdInline article slot

Android용 Swift SDK: 공식 출시

첫 번째 주요 변경 사항은 Android용 공식 Swift SDK입니다. 이제 중·고급 개발자들이 Swift로 완전한 네이티브 Android 앱을 빌드하거나 기존 Java/Kotlin 프로젝트에 Swift 컴포넌트를 통합할 수 있습니다.

이 SDK는 Android 워킹 그룹과 커뮤니티의 기여로 실험 단계에서 공식화되었습니다. 이는 iOS/macOS와 Android 생태계 간 장벽을 최소화해 크로스 플랫폼 개발을 간소화합니다.

// Example integration Swift in Android project
import Foundation

@objc public class SwiftBridge: NSObject {
    @objc public func greet(name: String) -> String {
        return "Hello, \(name)! From Swift on Android."
    }
}

이 코드는 기본 상호 운용성을 보여줍니다. 클래스가 JNI용으로 내보내집니다.

Google AdInline article slot

@c 속성과 C 내보내기

새로운 @c 속성은 Swift 함수와 enum을 C로 내보냅니다. 컴파일러가 선언이 포함된 헤더 파일(.h)을 생성합니다.

@c
public enum ErrorCode: Int32 {
    case none = 0
    case invalidInput = 1
    case networkFailure = 2
}

@c
public func processData(_ data: UnsafePointer<UInt8>, length: Int) -> ErrorCode {
    // Obrabotka data
    return .none
}

생성된 module.h:

enum ErrorCode : int32_t {
  ErrorCode_none = 0,
  ErrorCode_invalidInput = 1,
  ErrorCode_networkFailure = 2
};

enum ErrorCode processData(const uint8_t *data, int length);

이는 시스템 프로그래밍의 FFI와 C 기반 프로젝트에 Swift를 임베드하는 데 필수적입니다.

Google AdInline article slot

모듈 선택자와 충돌 해결

모듈 선택자가 도입되어 여러 모듈에서 동일한 이름의 API를 가져올 때 발생하는 모호성을 해결합니다.

import ModuleA.SomeType
using module(ModuleB) SomeType  // Yavno from ModuleB

let a: ModuleA.SomeType = ...
let b: ModuleB.SomeType = ...

using module(ModuleB) 선택자는 출처를 명시해 중복 의존성이 있는 대형 프로젝트에서 링커 오류를 방지합니다.

새로운 컴파일러 최적화 속성

최적화 속성이 확장되어 세밀한 튜닝이 가능합니다:

  • @specialize: 핫 타입(예: Array<Int>)에 대한 제네릭의 모노모픽 특수화 생성.
  • @inline: 함수 인라이닝을 강제해 호출 오버헤드 감소.
  • @export(implementation): 라이브러리에 ABI 안정 구현 내보내기.
@specialize(Array<Int>)
public func sum<T: Numeric>(_ array: [T]) -> T {
    return array.reduce(0, +)
}

@inline(never)
public func debugLog(_ msg: String) {
    print("DEBUG: \(msg)")
}

SwiftPM에서의 Swift Build 통합

Swift Package Manager에 Swift Build의 초기 구현이 통합되었습니다. 이는 수천 개 패키지가 있는 모노레포에서 증분 빌드를 가속화합니다.

주요 포인트:

  • Android용 공식 Swift SDK: Java/Kotlin과의 완전한 개발 및 통합.
  • @c 속성: FFI를 위한 자동 C 헤더 생성.
  • 모듈 선택자: 이름 변경 없이 이름 충돌 해결.
  • 최적화 속성: @specialize, @inline, @export(implementation)으로 성능 튜닝.
  • SwiftPM에서의 Swift Build: 빌드 성능 향상.

이번 업데이트는 커뮤니티 기여, 특히 Android 그룹의 노력을 반영합니다. Swift 6.3은 고급 전문가를 위한 멀티 플랫폼 개발에서 언어의 입지를 강화합니다.

— Editorial Team

Advertisement 728x90

다음 읽기