본문으로 건너뛰기

Kotlin/Native 대상 지원

Kotlin/Native 컴파일러는 매우 다양한 대상을 지원하지만, 모든 대상에 대해 동일한 수준의 지원을 제공하기는 어렵습니다. 이 문서는 Kotlin/Native가 지원하는 대상을 설명하고 컴파일러 지원 수준에 따라 여러 계층으로 나눕니다.

노트

지원되는 대상 목록, 기능 및 계층 수는 변경될 수 있습니다.

계층 테이블에 사용된 용어는 다음과 같습니다.

  • Gradle target name은 대상을 활성화하기 위해 Kotlin Multiplatform Gradle 플러그인에서 사용되는 target name입니다.

  • Target triple은 일반적으로 컴파일러에서 사용되는 <architecture>-<vendor>-<system>-<abi> 구조에 따른 대상 이름입니다.

  • Running tests는 Gradle 및 IDE에서 즉시 테스트 실행을 지원하는지 여부를 나타냅니다.

    이는 특정 대상에 대한 네이티브 호스트에서만 사용할 수 있습니다. 예를 들어 macosX64iosX64 테스트는 macOS x86-64 호스트에서만 실행할 수 있습니다.

Tier 1

Gradle target nameTarget tripleRunning testsDescription
Apple macOS hosts only:
macosX64x86_64-apple-macosx86_64 플랫폼의 Apple macOS
macosArm64aarch64-apple-macosApple Silicon 플랫폼의 Apple macOS
iosSimulatorArm64aarch64-apple-ios-simulatorApple Silicon 플랫폼의 Apple iOS 시뮬레이터
iosX64x86_64-apple-ios-simulatorx86-64 플랫폼의 Apple iOS 시뮬레이터
iosArm64aarch64-apple-iosARM64 플랫폼의 Apple iOS 및 iPadOS

Tier 2

  • 대상이 컴파일 가능한지 정기적으로 CI에서 테스트하지만, 실행 가능한지 자동으로 테스트하지 않을 수 있습니다.
  • 컴파일러 릴리스 간에 소스 및 binary compatibility between compiler releases를 제공하기 위해 최선을 다하고 있습니다.
Gradle target nameTarget tripleRunning testsDescription
linuxX64x86_64-unknown-linux-gnux86_64 플랫폼의 Linux
linuxArm64aarch64-unknown-linux-gnuARM64 플랫폼의 Linux
Apple macOS hosts only:
watchosSimulatorArm64aarch64-apple-watchos-simulatorApple Silicon 플랫폼의 Apple watchOS 시뮬레이터
watchosX64x86_64-apple-watchos-simulatorx86_64 플랫폼의 Apple watchOS 64비트 시뮬레이터
watchosArm32armv7k-apple-watchosARM32 플랫폼의 Apple watchOS
watchosArm64arm64_32-apple-watchosILP32를 사용하는 ARM64 플랫폼의 Apple watchOS
tvosSimulatorArm64aarch64-apple-tvos-simulatorApple Silicon 플랫폼의 Apple tvOS 시뮬레이터
tvosX64x86_64-apple-tvos-simulatorx86_64 플랫폼의 Apple tvOS 시뮬레이터
tvosArm64aarch64-apple-tvosARM64 플랫폼의 Apple tvOS

Tier 3

  • 대상이 CI에서 테스트된다는 보장이 없습니다.
  • 서로 다른 컴파일러 릴리스 간에 소스 및 바이너리 호환성을 보장할 수 없지만, 이러한 대상에 대한 변경 사항은 매우 드뭅니다.
Gradle target nameTarget tripleRunning testsDescription
androidNativeArm32arm-unknown-linux-androideabiARM32 플랫폼의 Android NDK
androidNativeArm64aarch64-unknown-linux-androidARM64 플랫폼의 Android NDK
androidNativeX86i686-unknown-linux-androidx86 플랫폼의 Android NDK
androidNativeX64x86_64-unknown-linux-androidx86_64 플랫폼의 Android NDK
mingwX64x86_64-pc-windows-gnuMinGW 호환성 계층을 사용하는 64비트 Windows 7 이상
Apple macOS hosts only:
watchosDeviceArm64aarch64-apple-watchosARM64 플랫폼의 Apple watchOS

linuxArm32Hfp 대상은 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다.

For library authors

라이브러리 작성자는 Kotlin/Native 컴파일러보다 더 많은 대상을 테스트하거나 더 엄격한 보증을 제공하는 것을 권장하지 않습니다. 네이티브 대상에 대한 지원을 고려할 때 다음 접근 방식을 사용할 수 있습니다.

  • 1, 2, 3 계층의 모든 대상을 지원합니다.
  • 즉시 테스트 실행을 지원하는 1, 2 계층의 대상을 정기적으로 테스트합니다.

Kotlin 팀은 공식 Kotlin 라이브러리(예: kotlinx.coroutineskotlinx.serialization)에서 이 접근 방식을 사용합니다.