Kotlin Multiplatform Broadcast
9.7K subscribers
864 photos
54 videos
1.17K links
Новости и фичи Kotlin, а также Kotlin Multiplatform

YouTubе канал: https://youtube.com/androidBroadcast
Compose Multiplatform @compose_broadcast
iOS разработка @ios_broadcast
Новости Android @android_broadcast
Реклама и прочее @ab_manager
Download Telegram
🏝 Kotlin 2.3.0 еще на шаг ближе - вышла Beta 2

Основные улучшения:

Язык: больше стабильных и включённых по умолчанию фич

Kotlin/JVM: поддержка Java 25.

Kotlin/Native: улучшенная совместимость с Swift export и включённые по умолчанию проверки типов на границах дженериков🔥

Kotlin/Wasm: включены полные имена и новая система обработки исключений.

Kotlin/JS: экспериментальный экспорт suspend-функций и новая реализация LongArray.

Gradle: поддержка Gradle 9.0 и новый API для регистрации сгенерированных исходников.

Стандартная библиотека: kotlin.time.Clock и kotlin.time.Instant теперь Stable.

#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍256🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
🏝 kmp-sharing - KMP библиотека для реализации платформенного шаринга на Android и iOS.

// Пример в common коде
share(
data = "file:///path/to/your/file.jpg",
options = SharingOptions(
android = AndroidSharingOptions(...),
ios = IosSharingOptions(...),
)
)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍50🔥3
🏝 Руководство от JB по реализации мультиагентной ИИ системы на основe Koog. Также еще называется A2A

#kotlin #koog #ai #ии
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍3
🏝 Новейший инструмент от JetBrains для тестирования работы многопоточных программ помог исправить баги Kotlin компилятора

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


🐱 LitmusKt - решение от JetBrains Research, которое позволяет проверить работу многопоточных Kotlin приложений. Сейчас можно запускать Kotlin/JVM и Kotlin/Native на всех платформах.

// Пример теста
class StoreBufferingState(
var x: Int = 0,
var y: Int = 0,
var r1: Int = 0,
var r2: Int = 0,
)

val StoreBuffering = litmusTest(::StoreBufferingState) {
thread {
x = 1
r1 = y
}
thread {
y = 1
r2 = x
}
outcome {
r1 to r2
}
spec {
accept(listOf(0 to 1, 1 to 0, 1 to 1))
interesting(listOf(0 to 0))
}
reset {
x = 0
y = 0
r1 = 0
r2 = 0
}
}

# Результат выполнения теста
outcome | type | count | frequency
---------------------------------------------
[1, 0] | ACCEPTED | 6298680 | 48.451%
[0, 1] | ACCEPTED | 6291034 | 48.392%
[0, 0] | INTERESTING | 405062 | 3.1158%
[1, 1] | ACCEPTED | 5224 | 0.0401%


Жду примеров как использовать это с кодом из корутин

#kotlin #concurrency
Please open Telegram to view this post
VIEW IN TELEGRAM
👍342
🏝 Вышел Dokka 2.1.0 - движок для документирования Kotlin API

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

Что нового:
Dokka Gradle Plugin v2 теперь включён по умолчанию
⚙️ K2 analysis активен по умолчанию
🧩 Поддержка context-параметров и вложенных typealias
🌐 Обновлённый HTML-формат — лучшее соответствие стандартам доступности и визуальная консистентность
🚀 Повышена производительность и совместимость

#kotlin #k2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18
🏝 Советы по миграции с Java Time API на Kotlin Time (EN, 6м)

При миграции Android-проекта в Kotlin Multiplatform я столкнулся с тем, что Java-временные API пронизывают весь код и все слои — от модели данных до форматирования в UI. В итоге пришлось делать массу правок вручную.

Рекомендую заранее перейти на kotlinx-datetime, чтобы:
избежать боли при миграции;
использовать единый кроссплатформенный API;
получить чистый, предсказуемый код без зависимости от Java-библиотек.

Если вы только начинаете внедрять KMP — начните именно с этого шага. Он окупится многократно. Подробно про опыт миграции можно найти в статье (альтернативная ссылка)

Из интересного - добавление Detekt правила для ограничения на использование импортов Java Time:
ForbiddenImport:
active: true
imports:
- reason: 'Use Kotlin Time in new code'
value: 'java.util.concurrent.TimeUnit'
- reason: 'Use Kotlin Time in new code'
value: 'java.time.*'


#kotlin #kotlinx #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍202
Какой из этих стримов является холодным ?
Anonymous Quiz
66%
Flow
18%
StateFlow
12%
SharedFlow
5%
Не участвую
10👍9🔥4🤔2
У какого типа flow всегда есть значение?
Anonymous Quiz
3%
Flow
5%
SharedFlow
82%
StateFlow
7%
MutableSharedFlow
3%
Не участвую
7👍6
Какой размер buffer по умолчанию в MutableSharedFow ?
Anonymous Quiz
47%
0
30%
1
18%
Int.MAX_VALUE
4%
Не участвую
👍121
Каков тип результата вызова MutableSharedFlow<Int>().map { it.toString() }?"
Anonymous Quiz
23%
MutableSharedFlow<String>
19%
SharedFlow<String>
49%
Flow<String>
6%
Другой тип
4%
Не участвую
20🔥9👍4
Вы используете stateIn для преобразования Flow в StateFlow в вашем ViewModel. Вы хотите, чтобы поток оставался активным и не отменялся, даже если экран будет свернут на несколько секунд (все отпишутся). Какую политику выбрать?
Anonymous Quiz
37%
Eagerly
35%
WhileSubscribed() //значения параметров по умолчанию
13%
Lazily
5%
Другой вариант ответа
11%
Не участвую
🤔33👍61
🏝 ktorgen - кодогенератор для HTTP запросов на основе Ktor Client без дополнительных зависимостей в рантайме. Всё генерируется с помощью KSP.

#kotlin #ksp
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16🤔6👍2