ch
Feedback
Kotlin Multiplatform Broadcast

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
订阅者
-324 小时
+17 天
-4730 天
帖子存档
🏝 Скрестил пальцы и очень жду новостей по Unused return value checker в Kotlin 2.5.0. Какую фичу в Kotlin вы ждете или хотеил бы увидеть?

⚡️⚡️AI-агент съел токены и потерял контекст. Что делать? Разберемся на Mobius 2026 Autumn. Когда AI становится частью рабочег
+4
⚡️⚡️AI-агент съел токены и потерял контекст. Что делать? Разберемся на Mobius 2026 Autumn. Когда AI становится частью рабочего процесса, появляются вполне инженерные вопросы: сколько токенов уходит на задачу, где агент теряет контекст, оправдан ли MCP, как поделиться рабочими практиками внутри команды и где автоматизация начинает создавать больше проблем, чем решает. Этим вопросам посвятят отдельный блок на Mobius 2026 Autumn — конференции по мобильной разработке. Восемь докладов, где AI-разработку рассмотрят с разных сторон: от оптимизации агентов и оркестрации до юридических ограничений и локальных моделей. Подробности — в карточках и на сайте. Конференция пройдет 21–22 октября в Санкт-Петербурге + онлайн.  🔥С промокодом kotlinbroadcast персональные билеты дешевле Купить билет Реклама. ООО «Джуг Ру Груп». ИНН 7801341446

🏝 Вышла первая Beta Kotlin 2.5.0 Что уже известно про новую версию (самое интересное) ✔️ Стабильный name based destructing (
🏝 Вышла первая 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, со
🚀 Вышел 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

🏝 Следующий KotlinConf пройдет в апреле 2027 в Кракове, Польша!
🏝 Следующий KotlinConf пройдет в апреле 2027 в Кракове, Польша!

💉 Koin Compiler 1.2 проверяет уже весь DSL, то что стоило делать еще в 1.0 Koin Compiler - плагин Kotlin комплиятора, провер
💉 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 #KMP

Хакатон, который не про ещё один чат-бот за выходные, а про реальные задачи Узнал про КосмоХакатон и хочу поделится с вами, т
Хакатон, который не про ещё один чат-бот за выходные, а про реальные задачи Узнал про КосмоХакатон и хочу поделится с вами, так как реально интересный формат, где участникам будут предложены реальны задачи: мониторинг пожаров и гидрологии по снимкам ДЗЗ, автономное управление группировкой, верификация «зелёных» кредитов по состоянию леса. Можно взяться за решения задачи "топливный контур к 2035-му", где нужно спроектировать систему снабжения орбитального топливного узла на 2035–2040 гг. 🤯 Обычный хакатон часто сводится к скорости собрать демо и хорошо его презентовать. Здесь же идея другая - растить сферу у себя и давать людям пощупать настоящие задачи, а не выдуманный финтех на выходные. Участвовать могут школьники с 14 лет, студенты, молодые учёные. В ближайшие выходные 18-20 сентября будет очный тур в Красноярске и Санкт-Петербурге. По итогам будет финал в Москве с 25 по 27 сентября. Общий призовой фонд - 7.2 млн рос. рублей. Вы сможете завести полезные знакомства и обратить внимание для себя, поэтому рекомендую собрать команду или присоединится к существующей, чтобы ощутить не себе атмосферу. #Хакатон

⚙️ Podlodka Android Crew: Android × AI: новый workflow разработки С 21 по 25 сентября пройдет Podlodka Android Crew. Организа
+4
⚙️ Podlodka Android Crew: Android × AI: новый workflow разработки С 21 по 25 сентября пройдет Podlodka Android Crew. Организаторы конференции собрали сезон, в котором будет очень много свежего опыта, специфичного именно для мобильной разработки — это возможность обсудить актуальные задачи с опытными коллегами и ускорить свою работу. Что ждёт слушателей сезона 🤖 эффективный AI-пайплайн для Android: от дизайна до отладки и тестирования, ⚙️ настройка агента для предсказуемых результатов в мобильной разработке, 🔥 профилирование агентом: как делать это в 3 раза дешевле, ⭐️ необычные задачи, и как научить агентов их решать автономно. Сезон практический — в результате можно будет забрать не только новые идеи, но и сразу начать использовать собственные наработки, сделанные в ходе пяти дней конференции. Подробности о сезоне смотрите на сайте, и там же забирайте билеты. 👉 Билеты на Podlodka Android Crew По промокоду BROADCAST16 получите скидку🎁

🏝 Kotlin 2.4.20 вышел. Те кто знает зачем - обновляйтесь, позже расскажу что там полезного #Kotlin
🏝 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 действует на сайте и на Ozon

Kotlin — почти единственный язык, на который переходят потому что хочется JetBrains выложили разбор реальных миграций языков
Kotlin — почти единственный язык, на который переходят потому что хочется 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.
🚀 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, Deskt
🐱 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