Kotlin Multiplatform Broadcast
الذهاب إلى القناة على Telegram
Новости и фичи Kotlin, а также Kotlin Multiplatform YouTubе канал: https://youtube.com/androidBroadcast Compose Multiplatform @compose_broadcast iOS разработка @ios_broadcast Новости Android @android_broadcast Реклама и прочее @ab_manager
إظهار المزيد9 546
المشتركون
+424 ساعات
+37 أيام
-4130 أيام
أرشيف المشاركات
🏝 Скрестил пальцы и очень жду новостей по Unused return value checker в Kotlin 2.5.0. Какую фичу в Kotlin вы ждете или хотеил бы увидеть?
+4
⚡️⚡️AI-агент съел токены и потерял контекст. Что делать? Разберемся на Mobius 2026 Autumn.
Когда AI становится частью рабочего процесса, появляются вполне инженерные вопросы: сколько токенов уходит на задачу, где агент теряет контекст, оправдан ли MCP, как поделиться рабочими практиками внутри команды и где автоматизация начинает создавать больше проблем, чем решает.
Этим вопросам посвятят отдельный блок на Mobius 2026 Autumn — конференции по мобильной разработке. Восемь докладов, где AI-разработку рассмотрят с разных сторон: от оптимизации агентов и оркестрации до юридических ограничений и локальных моделей.
Подробности — в карточках и на сайте.
Конференция пройдет 21–22 октября в Санкт-Петербурге + онлайн.
🔥С промокодом
kotlinbroadcast персональные билеты дешевле
Купить билет
Реклама. ООО «Джуг Ру Груп». ИНН 7801341446🏝 Вышла первая Beta Kotlin 2.5.0
Что уже известно про новую версию (самое интересное)
✔️ Стабильный name based destructing
(val mail = email, val name = username) = user
Более простой (пока экспериментальный) способ реализации extention для companion object
// Объявление UnitX в качестве companion extension
companion val Vector.UnitX get() = Vector(1.0, 0.0)
data class Vector(val x: Double, val y: Double) {
companion {
// Объявление Zero в companion блоке
val Zero: Vector get() = Vector(0.0, 0.0)
}
}
// Можно вызывать
Vector.UnitX или Vector.Zero
🔗 Подробнее можно прочитать тут
#Kotlin #Kotlin250🚀 Вышел Ktor 3.6
Главное для тех, кто тащит Ktor на KMP/Android — артефакт
ktor-client-engine-defaults. Кладешь в common, создаешь клиент без Android/CIO/OkHttp в shared-коде: на каждом таргете подтянется свой engine. Рядом HttpCache переехал на Path из kotlinx-io, так что файловый кэш больше не привязан к java.io.File:
// было в 3.5
// engine выбираешь сам в common или ожидаешь expect/actual
val client = HttpClient(OkHttp) {
install(HttpCache) {
publicStorage(FileStorage(...))
}
}
// стало в 3.6: commonMain
api("io.ktor:ktor-client-engine-defaults:3.6.0")
val client = HttpClient() {
install(HttpCache) {
publicStorage(FileStorage(Path(...)))
}
}
Ещё по клиенту: ContentNegotiation больше не обязан дописывать свои типы в Accept, если ты уже выставил заголовок сам — ContentTypeMergeStrategy.SkipIfPresent. Мелочь, но спасает, когда API капризный к точному Accept.
🔗 Анонс
#Kotlin #Ktor #KMP💉 Koin Compiler 1.2 проверяет уже весь DSL, то что стоило делать еще в 1.0
Koin Compiler - плагин Kotlin комплиятора, проверящий гарф зависимостей Koin 4.XДо 1.2 плагин ловил дыры только в своём reified-DSL. Классика проходила мимо компилятора и падала уже в рантайме:
single<UserService>() // проверялось
singleOf(::UserRepository) // нет
single { AnalyticsHelper(get()) } // нет
В 1.2.1 оба стиля попадают в проверки. Плюс починили видимость определений зависимостей через два и больше Gradle-модуля и добавили entry point для install(Koin) в Ktor.
Минимум - Koin 4.2.0 и Kotlin 2.3.20
Пока все также циклы в single { get() } всё ещё не видит, для этого лучше singleOf или single<T>(). Ждем следующий релиз!
🔗 Разбор от автора
#Kotlin #Koin #KMPRepost from Кирилл Розов
Хакатон, который не про ещё один чат-бот за выходные, а про реальные задачи
Узнал про КосмоХакатон и хочу поделится с вами, так как реально интересный формат, где участникам будут предложены реальны задачи: мониторинг пожаров и гидрологии по снимкам ДЗЗ, автономное управление группировкой, верификация «зелёных» кредитов по состоянию леса. Можно взяться за решения задачи "топливный контур к 2035-му", где нужно спроектировать систему снабжения орбитального топливного узла на 2035–2040 гг. 🤯
Обычный хакатон часто сводится к скорости собрать демо и хорошо его презентовать. Здесь же идея другая - растить сферу у себя и давать людям пощупать настоящие задачи, а не выдуманный финтех на выходные. Участвовать могут школьники с 14 лет, студенты, молодые учёные.
В ближайшие выходные 18-20 сентября будет очный тур в Красноярске и Санкт-Петербурге. По итогам будет финал в Москве с 25 по 27 сентября. Общий призовой фонд - 7.2 млн рос. рублей. Вы сможете завести полезные знакомства и обратить внимание для себя, поэтому рекомендую собрать команду или присоединится к существующей, чтобы ощутить не себе атмосферу.
#Хакатон
⚙️ Podlodka Android Crew: Android × AI: новый workflow разработки
С 21 по 25 сентября пройдет Podlodka Android Crew. Организаторы конференции собрали сезон, в котором будет очень много свежего опыта, специфичного именно для мобильной разработки — это возможность обсудить актуальные задачи с опытными коллегами и ускорить свою работу.
Что ждёт слушателей сезона
🤖 эффективный AI-пайплайн для Android: от дизайна до отладки и тестирования,
⚙️ настройка агента для предсказуемых результатов в мобильной разработке,
🔥 профилирование агентом: как делать это в 3 раза дешевле,
⭐️ необычные задачи, и как научить агентов их решать автономно.
Сезон практический — в результате можно будет забрать не только новые идеи, но и сразу начать использовать собственные наработки, сделанные в ходе пяти дней конференции.
Подробности о сезоне смотрите на сайте, и там же забирайте билеты.
👉 Билеты на Podlodka Android Crew
По промокоду BROADCAST16 получите скидку🎁
🏝 Kotlin 2.4.20 вышел. Те кто знает зачем - обновляйтесь, позже расскажу что там полезного
#Kotlin
🏝 Готовится kotlinx.serialization 1.12.0. Вышла первая RC: стабилизировали JSON API и улучшили работу с ошибками
👉 исключения при десериализации теперь всегда оборачиваются в
JsonException / JsonDecodingException с путём и куском JSON. catch перестаёт ловить рандом из конструктора кастомного сериализатора
👉 лимит вложенности JSON: вместо StackOverflow получишь нормальный JsonDecodingException
👉 парсер ASCII ближе по производительности к String на Okio / kotlinx-io
👉 Protobuf: ProtoUnknownFieldHolder сохраняет неизвестные поля и отдаёт их обратно. Плюс фикс oneof default и schema для inline value class
👉 CBOR: меньше памяти на коллекциях известного размера, unsigned как положительные int
#Kotlin #KMP🏝 SKIE: StateFlow в SwiftUI без `.task` и обёрток
Базовый interop
Flow → AsyncSequence в SKIE уже давно. Теперь поверх него добавили preview-слой под SwiftUI (в превью). Shared не трогаешь, тот же StateFlow.
class RandomColorViewModel {
private val _color = MutableStateFlow(UIColor.gray)
val color: StateFlow<UIColor> = _color.asStateFlow()
fun randomize() {
_color.value = UIColor(
red = Random.nextDouble(),
green = Random.nextDouble(),
blue = Random.nextDouble(),
alpha = 1.0
)
}
}
Без хелперов на iOS это всё ещё .task + ручной @State. С preview-API экран выглядит так:
struct ColorScreen: View {
let viewModel: RandomColorViewModel
@State private var color: Color = .gray
var body: some View {
ColorSample(color: color, onRandomize: viewModel.randomize)
.collect(flow: viewModel.color, into: $color) { Color($0) }
}
}
Или без @State — flow сразу кормит view:
struct ColorScreen: View {
let viewModel: RandomColorViewModel
var body: some View {
Observing(viewModel.color, animation: .default) { color in
ColorSample(
color: Color(color),
onRandomize: viewModel.randomize
)
}
}
}
Включается так:
//build.gradle.kts
skie {
features {
enableSwiftUIObservingPreview = true
}
}
В Kotlin to Swift Export interop корутин только догоняет. У SKIE базовый interop уже в бою, а collect / Observing — свежий preview поверх него.
🔗 Источник - блог Touchlab
#KMP #Kotlin #Touchlab #Swift #SwiftUIЛето прошло. Вместо пляжа — клавиатура. Дети учатся, а мы — пашем в спринтах. Результат: спина колесом, шея каменная, мозг в режиме «только не упади».
Единственный правильный апгрейд в этом сезоне — Эргостол.
Это не просто стол и кресло. Это оружие против остеохондроза:
— Регулировка за минуту.
— Работай стоя — качай спину без отрыва от продакшна.
— Полный порядок на столе (кронштейны, каналы, крепления).
В новом учебном году заботься о себе по-взрослому.
🤩 Промокод -10%
ANDROID10 действует на сайте и на OzonKotlin — почти единственный язык, на который переходят потому что хочется
JetBrains выложили разбор реальных миграций языков из опроса Developer Ecosystem 2025 (не «планирую перейти», а «чем писал год назад → чем пишу сейчас»).
Главный паттерн ожидаемый: большинство переездов — это project requirements. Надо — идёшь.
А вот Kotlin выбивается. На него люди переходят не потому что заставили, а потому что «feels better to work with» — лучше DX и более современные фичи. Это редкий чистый pull среди языков.
Другие цифры, которые зацепили:
👉 C теряет ~50% тех, у кого он был основным год назад. Часто формулировка «хотел выучить что-то новое» + «более современные фичи». Язык явно стареет в глазах разработчиков.
👉 Java в основном течёт в Python и TypeScript. Поток Java → Kotlin слабее, чем многие ожидали (и есть обратные переезды).
👉 Классический конвейер: HTML/CSS → JavaScript → TypeScript.
👉 Python — универсальный «приёмник» почти отовсюду.
👉 TypeScript и Rust — самые быстрые растущие.
Для нас это хороший сигнал: Kotlin продолжает выигрывать не административным давлением, а тем, что на нём реально приятнее писать. Это сложнее масштабировать маркетингом, но гораздо устойчивее.
🔗 Полный разбор с таблицами потоков в разборе
#Kotlin
🐱 Valix — валидация на KSP без рефлексии и с ~9× скоростью
Суть библиотеки в том, что аннотируешь data-класс, KSP генерирует обычный процедурный Kotlin-валидатор в
build/generated/ksp/. Никакой рефлексии, никаких правил ProGuard, zero cold-start.
data class CreateUserRequest(
@NotBlank val username: String,
@Email val email: String,
@Min(18) val age: Int,
@Sensitive(mask = "[REDACTED]") @MinLength(8) val password: String
)
val result = CreateUserRequestValidator.validate(request)
По JMH: ~7,8–8,5 млн ops/sec против ~0,9 млн у Hibernate Validator. Есть fail-fast, @ValidateIf, маскирование чувствительных полей, DSL без аннотаций, экспорт OpenAPI/JSON Schema.
Для Android/Compose — valix-compose с rememberValixForm() и ValidatedTextField. Плюс адаптеры под Spring, Ktor, Micronaut, Flow и ViewModel. KMP: JVM, Android, iOS, JS, Wasm.
*Подход мне нравится тем, что можно декларативно работать с валидацией, перестать писать код и тесты под это, а также интегрировать с Android Lint для проверок заранее.*
#Kotlin #KSP #KMP #Compose🚀 Kotlin DSL: от теории к практике и созданию JsonBuilder
Одна из лучших фич Kotlin — возможность писать выразительные DSL. Они превращают сложную бизнес-логику в читаемый код, похожий на естественный язык.
Многие разработчики каждый день используют готовые DSL (например, в Gradle или Ktor), но не до конца понимают, как они устроены «под капотом». С этим можно разобраться на бесплатном вебинаре курса «Проектирование и разработка Kotlin-бэкенда».
🗓 Когда: 19 августа в 20:00 (мск)
🎯 Для кого: Kotlin-разработчики и тех, кто хочет выйти за рамки базового синтаксиса и понять главные фичи языка.
Что будет на вебинаре?
☑️ Теория DSL: зачем нужны предметно-ориентированные языки и в каких сценариях они действительно экономят время.
☑️ Практика: с нуля напишем собственный JsonBuilder.
☑️ Инструменты языка: глубоко изучим лямбды с получателем (lambdas with receiver) и extension-функции.
☑️ Архитектура API: разберём, как создавать удобные, безопасные к типам и читаемые интерфейсы.
👉 Регистрация на вебинар тут
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
🐱 Pokedex KMP - open source порт популярного примера для Android, но переведенного на KMP + CMP стек под Android, iOS, Desktop и WASM
#KMP #CMP
💉 Вышел Koin Compiler Plugin 1.1.0
Вышло обновление компиляторного плагина Koin для валидации графе в момент компиляции. Главное — переработали механизм compile-time проверки графа, чтобы он стал надёжнее и точнее.
Раньше плагин проверял каждый модуль по отдельности. Это давало ложные ошибки в многомодульных проектах, когда зависимость предоставлялась в другом модуле. Теперь единственный источник истины — полная проверка графа в точка запуска (
startKoin / koinApplication / @KoinApplication). Плагин смотрит только на финальный граф.
Результат:
👉 Меньше ложных ошибок "Missing Dependency"
👉 Ошибки точнее указывают на реальный модуль и место в коде
👉 Проверка стала качественнее и предсказуемее
Также в релизе исправили баги и улучшили работу анализатора.
// build.gradle.kts
plugins {
// Работает с Koin 4.2.0+ и Kotlin 2.3.0–2.3.10
id("io.insert-koin.compiler.plugin") version "1.1.0"
}
#koin #Kotlin #KMP