Kotlin Multiplatform Broadcast
9.7K subscribers
870 photos
56 videos
1.18K links
Новости и фичи Kotlin, а также Kotlin Multiplatform

YouTubе канал: https://youtube.com/androidBroadcast
Compose Multiplatform @compose_broadcast
iOS разработка @ios_broadcast
Новости Android @android_broadcast
Реклама и прочее @ab_manager
Download Telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍4
🏝 Kotlin Multiplatfrom плагин стал доступен на Windows и Linux (macOS была ранее) для Idea и Android Studio

Примите, что работы с iOS не будет на Windows и Linux, но потом будет возможность собирать klib для всех платформ.

#kotlin #kmp #androidstudio #idea
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥386👍6🏆3
🐱 kthot - Kotlin DSL для JavaScript

createHTML().html {
head {
jslScript {
val button = Const {
JsButton.def("button")
} assign Document.getElementById("button")

+button.setOnClick {
val title = Const {
JsParagraph.def("title")
} assign Document.getElementById("title")

+title.setTextContent("Clicked!")
Log("Clicked!")
}
}
}
body {
div {
p {
id = "title"
}
}
button {
id = "button"
+"Click me"
}
}
}


#kotlin #js
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔237👍6
🏝 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
🏝 Руководство от JB по реализации мультиагентной ИИ системы на основe Koog. Также еще называется A2A

#kotlin #koog #ai #ии
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍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
🏝 ktorgen - кодогенератор для HTTP запросов на основе Ktor Client без дополнительных зависимостей в рантайме. Всё генерируется с помощью KSP.

#kotlin #ksp
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20🤔7👍3
🏝 Вышел ktlint 1.8.0 - популярный линтер для проверки стиля кода и не только

Команда разработчиков представила версию 1.8.0, включающую:
👉 Поддержку languageVersion = KOTLIN_2_0, чтобы обеспечить совместимость с Kotlin 2.0.
👉 Возможность проще создавать собственные правила линтинга (custom ruleset).
👉 Новое правило then-spacing для улучшения читаемости кода.
🛠 Различные минорные улучшения и исправления

#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍8
🏝 Вышел Release Candidate Kotlin 2.3.0. Будет подарок на новый год из интересных фичей! Жду Stable версию

#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👍6
**🔄 Koin IDE Plugin обновился до версии 1.5.1 — полная поддержка Koin Annotations 2.2**

IDE Плагин популярного DI Koin получил значительное обновление! Версия 1.5.1 приносит совместимость с Koin Annotations 2.2 и расширяет возможности работы с dependency injection.

Что нового в этом обновлении:

🎯 Поддержка JSR-330 аннотаций
Теперь плагин полностью понимает стандартные аннотации dependency injection:
@Singleton // Синглтон-зависимости
class UserRepository @Inject constructor()

@Named("prod") // Именованные зависимости
class ProductionService @Inject constructor()

Это особенно удобно для команд, мигрирующих с Hilt или Dagger.

🤖 Android-specific scopes
Плагин теперь валидирует Android-специфичные scope'ы:
- @ActivityScope — для зависимостей Activity
- @FragmentScope — для Fragment
- @ViewModelScope — для ViewModel
- @ActivityRetainedScope — переживающие смену конфигурации

🔍 Умная валидация конфигурации
Обновление добавляет проверки для:
- Корректности использования @KoinApplication (одна аннотация на модуль)
- Совместимости JSR-330 аннотаций с Koin
- Правильности Android scope'ов

🎨 Визуализация графа зависимостей
Tree View теперь отображает JSR-330 квалификаторы и Android scope'ы, что упрощает навигацию по сложным графам зависимостей.

🤖 AI-помощник для отладки
Новая функция генерации AI-запросов помогает быстрее решать проблемы с зависимостями — от missing dependency до misconfiguration.

⚙️ Улучшения UX
- Исправлена проблема спонтанного выхода из системы
- Добавлена поддержка lazy modules
- Настройка инспекций под ваш workflow

Почему стоит обновиться:
- Более надежная работа с сессиями
- Расширенная поддержка современных практик DI
- Улучшенная навигация по коду
- Раннее обнаружение ошибок конфигурации

Обновите плагин через Marketplace в вашей IDE и попробуйте новые возможности!

#Kotlin #Koin #DI #Android #IDEA #AndroidStudio #JSR330 #KMP #AI
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
16👍16
🏝 Документацию по Kotlin и Kotlin Multiplatform объединили на одном сайте, а также сделали обновления UI. Должно стать удобнее

#Kotlin #KMP
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥39👍9
🏝 Kotlin 2.3.0-RC2 доступен для тестирования!

Вышла вторая релиз-кандидат Kotlin 2.3.0 — финальная версия уже близко. Вот ключевые изменения, которые стоит проверить в новой сборке:

Язык и компилятор:
Больше стабильных фичей по умолчанию
Новый чекер для неиспользуемых возвращаемых значений в экспериментальном режиме

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

Kotlin/Native:
Улучшенная интероперабельность через Swift export
Проверки типов на границах generic-типов включены по умолчанию

Kotlin/Wasm
Полные квалифицированные имена включены по умолчанию
Новая модель обработки исключений включена по умолчанию

Kotlin/JS:
Экспериментальный export для suspend-функций
Новое представление LongArray

Gradle:
Совместимость с Gradle 9.0
Новый API для регистрации сгенерированных исходников

Стандартная библиотека:
Стабилизированы API для работы со временем

Это предрелизная версия — идеальное время для тестирования ваших проектов перед финальным релизом. Нашли проблемы? Сообщайте в YouTrack!

#Kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥154👍4
🏝 Kotlin 2.3.0-RC2: Нативные Enums и Varargs в Swift Export

В Kotlin 2.3.0-RC2 продолжили улучшать совместимость со Swift через механизм Swift Export. В новой версии улучшили работу с enum class из Kotlin в Swift

Раньше Kotlin-enum экспортировались как обычные Swift-классы. Теперь маппинг прямой — вы получаете настоящие нативные enum в Swift.

enum class Color(val rgb: Int) {
RED(0xFF0000),
GREEN(0x00FF00),
BLUE(0x0000FF)
}

👇
public enum Color: Swift.CaseIterable, Swift.RawRepresentable {
case RED, GREEN, BLUE
var rgb: Int { get }
}


#Kotlin #KMP #Swift
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19
🏝 Kotlin 2.3.0-RC2: Varargs теперь нативны в Swift

В обновлении Swift Export завезли долгожданный маппинг для vararg. Теперь функции с переменным числом аргументов в Kotlin превращаются в нативные вариативные функции Swift (...), а не в массивы или обертки.

Это делает API вашего общего кода гораздо чище для iOS-разработчиков — больше не нужно создавать массив вручную, чтобы передать список параметров.

fun log(vararg messages: String)

// Вызов в Kotlin:
log("Error", "Warning", "Info")


👇 Автоматическая конвертация в Swift:

public func log(messages: Swift.String...)

// Вызов в Swift (теперь нативно!):
log(messages: "Error", "Warning", "Info")


⚠️ Ограничение: Generics в вариативных параметрах пока не поддерживаются в этом режиме.

#Kotlin #Swift #KMP
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14