Kotlin/Native
Общее описание "что это такое" - https://kotlinlang.org/docs/native-overview.html
Выступление Иготти про внутрянку K/N - https://youtu.be/DqsYo_4QWSg
runtime
- Интероп Kotlin и ObjectiveC - https://kotlinlang.org/docs/native-objc-interop.html тут вся важная информация о стыке iOS мира и Kotlin. Очень важный раздел для хорошего понимания какой код из common как будет виден в ios нативном мире из swift
- Иммутабельность объектов в многопоточной среде - https://kotlinlang.org/docs/native-immutability.html это важный на данный момент аспект K/N сильно влияющий на общий код, если в проекте используется многопоточность. По ссылке указана идея заложенная в фундамент memory management'а K/N рантайма.
- Сборщик мусора
- Кратко про него сказано тут - https://kotlinlang.org/docs/native-faq.html#what-is-kotlin-native-memory-management-model
- Заявлена его переработка - https://blog.jetbrains.com/kotlin/2020/07/kotlin-native-memory-management-roadmap/
- https://youtu.be/f-e-SdAugOs - выступление Иготти про сборщик
- https://kotlinlang.org/docs/apple-framework.html#garbage-collection-and-reference-counting - про сборщик в котлин на айосе. коротко.
- https://discuss.kotlinlang.org/t/kotlin-native-1-3-50-relaxed-mode/13586 - немного про relaxed режим памяти K/N, но новый сборщик мусора не на нем основан, это просто альтернативная опция про которую мало что известно и я даже не уверен что этот режим до конца доделали.
- Многопоточность - https://kotlinlang.org/docs/native-concurrency.html тесно связанная с пунктом про иммутабельность тема - многопоточность. Какие возможности предоставляются и как их использовать.
- https://www.youtube.com/watch?v=nw6YTfEyfO0 - выступление Иготти о том как устроена многопоточность и иммутабельность в K/N
- https://www.youtube.com/watch?v=oxQ6e1VeH4M - выступление Галлигана с разжевыванием темы многопоточнсоти
- https://dev.to/touchlab/practical-kotlin-native-concurrency-ac7 - три статьи от Галлигана с хорошим разобором темы
- https://kotlinlang.org/docs/mobile/concurrent-mutability.html - раздел Working with concurrency в документации KMM тоже с хорошим разобром от Галлигана
- Колдовская штука-хак https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.native.concurrent/-worker-bound-reference/ которая позволяет шарить что-либо без заморозки.
- Touchlab гайд по многопоточности + видео - https://touchlab.co/kotlin-native-concurrency/
- Отладка K/N - https://kotlinlang.org/docs/native-debugging.html
- Для простоты есть https://github.com/touchlab/xcode-kotlin
- Также позволяет дебажить https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform-mobile
- И AppCode - https://blog.jetbrains.com/kotlin/2019/04/kotlinnative-support-for-appcode-2019-1/
- Coroutines - https://github.com/Kotlin/kotlinx.coroutines/blob/native-mt/kotlin-native-sharing.md про native-mt ветку и ограничения корутин из-за иммутабельности
compilation
- Про градл плагин K/N - https://github.com/JetBrains/kotlin-native/blob/master/GRADLE_PLUGIN.md
- Подробный референс градл плагина - https://kotlinlang.org/docs/mpp-dsl-reference.html
- Про сборку итоговых бинарников K/N - https://kotlinlang.org/docs/mpp-build-native-binaries.html для айоса важен бинарь framework и экспорт зависимостей, а также универсальные фреймворки (но мы их не юзаем)
- Гибкая настройка компиляции, детали про cinterop - https://kotlinlang.org/docs/mpp-configure-compilations.html
- Статья про реализацию swift библиотеки для подключение через cinterop в kotlin (на примере криптографии) - Create a Kotlin/Multiplatform library with Swift
- https://youtu.be/5QPPZV04-50 - запись с Kotlin 1.4 online event про мпп детали
- Интеграция через cocoapods (официальный плагин) - https://kotlinlang.org/docs/native-cocoapods.html
- Дебажные символы для крешрепортов осмысленных - https://kotlinlang.org/docs/native-ios-symbolication.html
- Про внутрянку klib'ов и K/N lib - https://kotlinlang.org/docs/native-libraries.html
- Про размер бинарника на iOS - https://youtu.be/hrRqX7NYg3Q?t=1895
- Некоторые хаки компиляции - https://github.com/JetBrains/kotlin-native/blob/master/HACKING.md (очень специфичная история)
- советы по ускорению компиляции - https://kotlinlang.org/docs/native-improving-compilation-time.html