Spec-Zone.ru › Kotlin 1.9

Поддержка целевых платформ Kotlin/Native

Компилятор Kotlin/Native поддерживает большое количество различных целевых платформ, хотя сложно обеспечить одинаковый уровень поддержки для всех. В этом документе описывается, какие целевые платформы поддерживает Kotlin/Native, и они разбиты на несколько уровней в зависимости от того, насколько хорошо компилятор их поддерживает.

Мы можем корректировать количество уровней, список поддерживаемых целевых платформ и их функции по мере необходимости.

Обратите внимание на следующие термины, используемые в таблицах уровней:

  • Имя целевой платформы Gradle — это пресет целевой платформы, который используется в плагине Kotlin Multiplatform Gradle для включения целевой платформы.

  • Тройка целевой платформы — это имя целевой платформы в соответствии со структурой <architecture>-<vendor>-<system>-<abi>, которая обычно используется компиляторами.

  • Запуск тестов указывает на готовую к использованию поддержку запуска тестов в Gradle и IDE.

    Это доступно только на собственном хосте для конкретной целевой платформы. Например, вы можете запустить тесты macosX64 и iosX64 только на хосте macOS x86-64.

Уровень 1

  • Целевая платформа регулярно тестируется в CI на возможность компиляции и запуска.

  • Мы делаем все возможное, чтобы обеспечить исходную и бинарную совместимость между выпусками компилятора.

Имя целевой платформы Gradle

Тройка целевой платформы

Запуск тестов

Описание

linuxX64

x86_64-unknown-linux-gnu

✅

Linux на платформах x86_64

Только хосты Apple macOS

macosX64

x86_64-apple-macos

✅

Apple macOS на платформах x86_64

macosArm64

aarch64-apple-macos

✅

Apple macOS на платформах Apple Silicon

iosSimulatorArm64

aarch64-apple-ios-simulator

✅

Apple iOS simulator на платформах Apple Silicon

iosX64

x86_64-apple-ios-simulator

✅

Apple iOS simulator на платформах x86-64

Уровень 2

  • Целевая платформа регулярно тестируется в CI на возможность компиляции, но может не тестироваться автоматически на возможность запуска.

  • Мы делаем все возможное, чтобы обеспечить исходную и бинарную совместимость между выпусками компилятора.

Имя целевой платформы Gradle

Тройка целевой платформы

Запуск тестов

Описание

linuxArm64

aarch64-unknown-linux-gnu

Linux на платформах ARM64

Только хосты Apple macOS

watchosSimulatorArm64

aarch64-apple-watchos-simulator

✅

Apple watchOS simulator на платформах Apple Silicon

watchosX64

x86_64-apple-watchos-simulator

✅

Apple watchOS 64-битный симулятор на платформах x86_64

watchosArm32

armv7k-apple-watchos

Apple watchOS на платформах ARM32

watchosArm64

arm64_32-apple-watchos

Apple watchOS на платформах ARM64 с ILP32

tvosSimulatorArm64

aarch64-apple-tvos-simulator

✅

Apple tvOS simulator на платформах Apple Silicon

tvosX64

x86_64-apple-tvos-simulator

✅

Apple tvOS simulator на платформах x86_64

tvosArm64

aarch64-apple-tvos

Apple tvOS на платформах ARM64

iosArm64

aarch64-apple-ios

Apple iOS и iPadOS на платформах ARM64

Мы делаем все возможное, чтобы перевести iosArm64 на Уровень 1, так как это важная целевая платформа для Kotlin Multiplatform для мобильных устройств. Для этого нам сначала нужно создать специальную инфраструктуру тестирования, поскольку ограничения платформы затрудняют запуск тестов компилятора на устройствах Apple.

Тем временем мы иногда запускаем тесты вручную на устройствах iOS и полагаемся на тестирование аналогичных целевых платформ, таких как iosSimulatorArm64, что должно быть достаточно в большинстве случаев.

Уровень 3

  • Не гарантируется, что целевая платформа будет тестироваться в CI.

  • Мы не можем гарантировать исходную и бинарную совместимость между различными выпусками компилятора, хотя такие изменения для этих целевых платформ довольно редки.

Имя целевой платформы Gradle

Тройка целевой платформы

Запуск тестов

Описание

androidNativeArm32

arm-unknown-linux-androideabi

Android NDK на платформах ARM32

androidNativeArm64

aarch64-unknown-linux-android

Android NDK на платформах ARM64

androidNativeX86

i686-unknown-linux-android

Android NDK на платформах x86

androidNativeX64

x86_64-unknown-linux-android

Android NDK на платформах x86_64

mingwX64

x86_64-pc-windows-gnu

✅

64-битный MinGW на Windows 7 и более поздних версиях

Только хосты Apple macOS

watchosDeviceArm64

aarch64-apple-watchos

Apple watchOS на платформах ARM64

Устаревшие целевые платформы

Следующие целевые платформы устарели начиная с Kotlin 1.8.20 и будут удалены в 1.9.20:

  • iosArm32

  • watchosX86

  • wasm32

  • mingwX86

  • linuxArm32Hfp

  • linuxMips32

  • linuxMipsel32

Для авторов библиотек

Мы не рекомендуем авторам библиотек тестировать больше целей или предоставлять более строгие гарантии, чем делает компилятор Kotlin/Native. Вы можете использовать следующий подход при рассмотрении поддержки целевых платформ:

  • Поддерживайте все цели 1, 2 и 3 уровней.

  • Регулярно тестируйте цели 1 и 2 уровней, которые поддерживают запуск тестов "из коробки".

Команда Kotlin использует этот подход в официальных библиотеках Kotlin, например, kotlinx.coroutines и kotlinx.serialization.

Последнее изменение: 11 апреля 2023
Дебаг отчётов о сбоях iOS Советы по улучшению времени компиляции Kotlin/Native

© 2010–2023 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/native-target-support.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API