Kotlin Help

Kotlin/Native target support

The Kotlin/Native compiler supports a great number of different targets, though it is hard to provide the same level of support for all of them. This document describes which targets Kotlin/Native supports and breaks them into several tiers depending on how well the compiler supports them.

Mind the following terms used in tier tables:

  • Gradle target name is a target preset that is used in the Kotlin Multiplatform Gradle plugin to enable the target.

  • Target triple is a target name according to the <architecture>-<vendor>-<system>-<abi> structure that is commonly used by compilers.

  • Running tests indicates out of the box support for running tests in Gradle and IDE.

    This is only available on a native host for the specific target. For example, you can run macosX64 and iosX64 tests only on macOS x86-64 host.

Tier 1

Gradle target name

Target triple

Running tests

Description

Apple macOS hosts only:

macosX64

x86_64-apple-macos

Apple macOS on x86_64 platforms

macosArm64

aarch64-apple-macos

Apple macOS on Apple Silicon platforms

iosSimulatorArm64

aarch64-apple-ios-simulator

Apple iOS simulator on Apple Silicon platforms

iosX64

x86_64-apple-ios-simulator

Apple iOS simulator on x86-64 platforms

Tier 2

Gradle target name

Target triple

Running tests

Description

linuxX64

x86_64-unknown-linux-gnu

Linux on x86_64 platforms

linuxArm64

aarch64-unknown-linux-gnu

Linux on ARM64 platforms

Apple macOS hosts only:

watchosSimulatorArm64

aarch64-apple-watchos-simulator

Apple watchOS simulator on Apple Silicon platforms

watchosX64

x86_64-apple-watchos-simulator

Apple watchOS 64-bit simulator on x86_64 platforms

watchosArm32

armv7k-apple-watchos

Apple watchOS on ARM32 platforms

watchosArm64

arm64_32-apple-watchos

Apple watchOS on ARM64 platforms with ILP32

tvosSimulatorArm64

aarch64-apple-tvos-simulator

Apple tvOS simulator on Apple Silicon platforms

tvosX64

x86_64-apple-tvos-simulator

Apple tvOS simulator on x86_64 platforms

tvosArm64

aarch64-apple-tvos

Apple tvOS on ARM64 platforms

iosArm64

aarch64-apple-ios

Apple iOS and iPadOS on ARM64 platforms

Tier 3

  • The target is not guaranteed to be tested on CI.

  • We can't promise a source and binary compatibility between different compiler releases, though such changes for these targets are quite rare.

Gradle target name

Target triple

Running tests

Description

androidNativeArm32

arm-unknown-linux-androideabi

Android NDK on ARM32 platforms

androidNativeArm64

aarch64-unknown-linux-android

Android NDK on ARM64 platforms

androidNativeX86

i686-unknown-linux-android

Android NDK on x86 platforms

androidNativeX64

x86_64-unknown-linux-android

Android NDK on x86_64 platforms

mingwX64

x86_64-pc-windows-gnu

64-bit MinGW on Windows 7 and later

Apple macOS hosts only:

watchosDeviceArm64

aarch64-apple-watchos

Apple watchOS on ARM64 platforms

For library authors

We don't recommend library authors to test more targets or provide stricter guarantees than the Kotlin/Native compiler does. You can use the following approach when considering support for native targets:

  • Support all the targets from tier 1, 2, and 3.

  • Regularly test targets from tier 1 and 2 that support running tests out of the box.

The Kotlin team uses this approach in the official Kotlin libraries, for example, kotlinx.coroutines and kotlinx.serialization.

Last modified: 27 October 2023