🎉 guard condition в when - новая фича Kotlin в 2.1 [PREVIEW]
Некое подобие Pattern Matching из Java. Теперь в ветках проверки условия для значения из when блока можно указать несколько условий. Синтаксис спорный конечно и не очень понятный. Раньше тоже самое можно было сделать через
Фича экспериментальная и чтобы включить её надо передать флаг компилятору:
#kotlin
Некое подобие Pattern Matching из Java. Теперь в ветках проверки условия для значения из when блока можно указать несколько условий. Синтаксис спорный конечно и не очень понятный. Раньше тоже самое можно было сделать через
when
без значенияФича экспериментальная и чтобы включить её надо передать флаг компилятору:
// build.gradle.kts
kotlin {
compilerOptions {
freeCompilerArgs.add("-Xwhen-guards")
}
}
#kotlin
👍52🔥11
🎉 Kotlin 2.1. Non-local break and continue [PREVIEW]
Теперь станет возможно использование break и continue нелокально, это значит что вызов этих выражений внутри циклов стало возможно из лямбды, переданной в inline функцию.
Фича экспериментальная и чтобы включить её надо передать флаг компилятору:
Теперь станет возможно использование break и continue нелокально, это значит что вызов этих выражений внутри циклов стало возможно из лямбды, переданной в inline функцию.
Фича экспериментальная и чтобы включить её надо передать флаг компилятору:
// build.gradle.kts
kotlin {
compilerOptions {
freeCompilerArgs.add("-Xnon-local-break-continue")
}
}
🔥21👍8🎉5
🎉 Multi-dollar string interpolation [PREVIEW]
В Kotlin 2.1 теперь возможно указать какое количество символов $ необходимо использовать внутри String, чтобы это интерпретировалось как вычисляемое выражение
Фича экспериментальная и чтобы включить её надо передать флаг компилятору:
#kotlin
В Kotlin 2.1 теперь возможно указать какое количество символов $ необходимо использовать внутри String, чтобы это интерпретировалось как вычисляемое выражение
Фича экспериментальная и чтобы включить её надо передать флаг компилятору:
// build.gradle.kts
kotlin {
compilerOptions {
freeCompilerArgs.add("-Xmulti-dollar-interpolation")
}
}
#kotlin
👍27
🚀 Ускорение KAPT в Kotlin 2.1
Текущая стабильная версия KAPT работает на основе K1 компилятора. Еще в Kotlin 1.9 сделали экспериментальную реализацию KAPT на основе K2 компилятора. По заявлением авторов, реализацию K2 KAPT в Kotlin 2.1 сделали стала значительно быстрее чем раньше, но кроме слов никаких тестов не показали.
В будущих версия KAPT реализация на основе K2 будет включена по умолчанию и версия K1 будет удалена.
Приятно видеть такие улучшения в инструменте, который переведён в режим поддержки. На замену рекомендуется KSP, но авторы популярных кодогенераторов не спешат с поддержкой (привет Dagger 👋)
Чтобы попробовать новый K2 KAPT надо добавить в gradle.properties флаг
Если вы уже попробовали новый KAPT - поделитесь впечатлениями и результатами скорости работы/потреблению памяти.
#kapt #k2
Текущая стабильная версия KAPT работает на основе K1 компилятора. Еще в Kotlin 1.9 сделали экспериментальную реализацию KAPT на основе K2 компилятора. По заявлением авторов, реализацию K2 KAPT в Kotlin 2.1 сделали стала значительно быстрее чем раньше, но кроме слов никаких тестов не показали.
В будущих версия KAPT реализация на основе K2 будет включена по умолчанию и версия K1 будет удалена.
Приятно видеть такие улучшения в инструменте, который переведён в режим поддержки. На замену рекомендуется KSP, но авторы популярных кодогенераторов не спешат с поддержкой (привет Dagger 👋)
Чтобы попробовать новый K2 KAPT надо добавить в gradle.properties флаг
kapt.use.k2=true
Если вы уже попробовали новый KAPT - поделитесь впечатлениями и результатами скорости работы/потреблению памяти.
#kapt #k2
👍15
В Kotlin 2.1 when будет лучше работать в when, когда используется Generic тип, ограниченный сверху sealed классом/интерфейсом
#kotlin
#kotlin
🔥50❤1👍1
Еще на KotlinConf 2024 сделали анонс экспорта Kotlin кода в Swift, что обеспечить удобную работу при подключении KMP библиотеки в современные iOS проекты. В Kotlin 2.1.0 можно попробовать первые результаты. Пока только базовая поддержка.
Проект с примером настройки от JetBrains на
Чтобы включить Swift Export надо добавить в gradle.properties флаг:
# gradle.properties
kotlin.experimental.swift-export.enabled=true
#kotlin #swift
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26👍6❤1
В официальной документации по Kotlin Multiplatform появился раздел по интеграции с iOS. Описываются как подходы локальные, так и через SPM и CocoaPods
Теперь подключение iOS в KMP проект перестало быть магией. До этого приходилось потратить прилично времени на разбор
#ios #kmp #spm #swift #документация
Теперь подключение iOS в KMP проект перестало быть магией. До этого приходилось потратить прилично времени на разбор
#ios #kmp #spm #swift #документация
🔥47❤1
Media is too big
VIEW IN TELEGRAM
UUID (Universally Unique Identifier) - это универсальный уникальный идентификатор, используемый для уникальной идентификации объектов в распределённых системах. UUID широко применяется в программировании, базах данных, сетевых приложениях и других областях, где требуется обеспечить уникальность идентификатора. UUID имеет длину 128 бит (16 байт)
#kmp #stdlib
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥35👍12
#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20
KMMBridge — это мощный Gradle-плагин для публикации Kotlin Multiplatform Xcode Framework в Swift Package Manager (SPM) и CocoaPods, что позволяет интегрировать мультиплфторменные решения быстрее и прозрачнее
Что нового в версии 1.1.0?
🛠 Сделан серьезный рефакторинг под капотом
🚀 Поддержка Gradle Configuration Cache, ускоряющая сборки.
👉 Модульная структура по фичам, упрощающая поддержку.
🔒 Упрощение публичного API, чтобы избежать случайного использования внутренних частей.
Для перехода на новую версию потребуется выполнить миграцию. Авторы подготовили подробное руководство.
#kmp #spm #cocoapods #gradle
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
Пример (EN,6м) использования Anvil расширений, но для Kotlin-Inject. Благодаря дополнениям работа с этим DI становится нормальной, потому что из коробки возможностей совсем не хватает
#kotlin #di
#kotlin #di
👍6❤2
Вышел релиз-кандидат библиотеки kotlinx.serialization версии 1.8.0. Вот что нового:
👉 Аннотация @JsonIgnoreUnknownKeys позволит игнорировать неизвестные поля для отдельных классов
👉 SerialDescriptor и SerialKind теперь стабильные API
👉 Теперь генерируются реализации методов по умолчанию для Java 8 и выше
🛠 Исправлены баги и сделаные небольшие улучшения
#kotlinx #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉38👍2❤1
Для замеров скорости работы Kotlin кода на разных платформах используйте KotlinX Benchmark
Вам надо подключить Gradle плагин и затем провести настройка бенчмарка
Затем вы пишите тест подобный JVM Unit тесту
#benchmark
Вам надо подключить Gradle плагин и затем провести настройка бенчмарка
// build.gradle.kts
benchmark {
targets {
register("js")
register("linuxX64")
}
configurations {
named("main") {
warmups = 20
iterations = 10
iterationTime = 3
iterationTimeUnit = "s"
}
register("smoke") {
include("<pattern of fully qualified name>")
warmups = 5
iterations = 3
iterationTime = 500
iterationTimeUnit = "ms"
}
}
}
Затем вы пишите тест подобный JVM Unit тесту
@State(Scope.Benchmark)
class MyBenchmark {
private val size = 10
private val list = ArrayList<Int>()
@Setup
fun prepare() {
for (i in 0..<size) list += i
}
@TearDown
fun cleanup() { list.clear() }
@Benchmark
fun benchmarkMethod(): Int = list.sum()
}
#benchmark
👍41❤6
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥44❤3👍2
Touchlab обновила SKIE и KMMBridge для поддержки дебага SPM билдов, используя Xcode Kotlin плагин, без необходимости компиляции или конфигурации KMP зависимостей 🤯
Нужно использовать KMMBridge 1.2.0. Работает всё на основе публикация исходного Kotlin кода в SPM
#kotlin #kmp #xcode #spm #touchlab #skie
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉13👍4❤2
Короткий разбор(EN,3м) как работает withContext() в Kotlin Coroutines и почему не стоит его активно использовать
#coroutines
#coroutines
3👍19
Forwarded from Android Broadcast
В новом видео показываю как настроить публикации для Android и Kotlin Multiplatform библиотеки в Gradle с новым механизмом подписи артефактов для Maven Central в 2024
#AndroidBroadcast #видео #gradle #maven #kmp #android
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍4
🎉 KAPT переезжает на K2 и теперь будет работать в этом режиме
#kotlin #kapt #gradle
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉29👍6