TGViewer
Channel Public Channel
Kotlin Multiplatform Broadcast

Kotlin Multiplatform Broadcast

@kotlin_broadcast

Новости и фичи Kotlin, а также Kotlin Multiplatform

YouTubе канал: https://youtube.com/androidBroadcast
Compose Multiplatform @compose_broadcast
iOS разработка @ios_broadcast
Новости Android @android_broadcast
Реклама и прочее @ab_manager
Subscribers
9.55K
Photos
915
Videos
56
Links
1.3K
Recent Posts 16 shown
Post #2143 1.3K
⚡️⚡️AI-агент съел токены и потерял контекст. Что делать? Разберемся на Mobius 2026 Autumn.

Когда AI становится частью рабочего процесса, появляются вполне инженерные вопросы: сколько токенов уходит на задачу, где агент теряет контекст, оправдан ли MCP, как поделиться рабочими практиками внутри команды и где автоматизация начинает создавать больше проблем, чем решает.

Этим вопросам посвятят отдельный блок на Mobius 2026 Autumn — конференции по мобильной разработке. Восемь докладов, где AI-разработку рассмотрят с разных сторон: от оптимизации агентов и оркестрации до юридических ограничений и локальных моделей.

Подробности — в карточках и на сайте.

Конференция пройдет 21–22 октября в Санкт-Петербурге + онлайн. 

🔥С промокодом kotlinbroadcast персональные билеты дешевле

Купить билет

Реклама. ООО «Джуг Ру Груп». ИНН 7801341446
Post #2142 2.07K
🏝 Вышла первая 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
  • 🎉 14
  • 👍 3
Post #2141 3.56K
🚀 Вышел 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
Post #2139 4.31K
💉 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
Post #2137 4.81K

This post (sticker, poll or similar) has no web preview. Open in Telegram

  • 👍 26
  • 👎 3
Post #2131 6.52K
🏝 Kotlin 2.4.20 вышел. Те кто знает зачем - обновляйтесь, позже расскажу что там полезного

#Kotlin
  • 👍 17
  • 👎 2
Post #2130 3.49K
🏝 Готовится 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
  • 👍 20
  • 👎 2
Post #2129 4.92K
🏝 SKIE: StateFlow в SwiftUI без `.task` и обёрток

Базовый interop FlowAsyncSequence в 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
  • 👍 21
  • 👎 7
Post #2128 5.03K
Лето прошло. Вместо пляжа — клавиатура. Дети учатся, а мы — пашем в спринтах. Результат: спина колесом, шея каменная, мозг в режиме «только не упади».

Единственный правильный апгрейд в этом сезоне — Эргостол.
Это не просто стол и кресло. Это оружие против остеохондроза:
— Регулировка за минуту.
— Работай стоя — качай спину без отрыва от продакшна.
— Полный порядок на столе (кронштейны, каналы, крепления).

В новом учебном году заботься о себе по-взрослому.

🤩 Промокод -10% ANDROID10 действует на сайте и на Ozon
  • 👎 26
  • 👍 8
Post #2127 7.16K
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
  • 👍 66
  • 👎 4
Post #2126 5.82K
🐱 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
  • 👍 29
  • 👎 6
Post #2125 5.76K

This post (sticker, poll or similar) has no web preview. Open in Telegram

  • 👍 28
  • 👎 4
Post #2123 5.82K
🐱 Pokedex KMP - open source порт популярного примера для Android, но переведенного на KMP + CMP стек под Android, iOS, Desktop и WASM

#KMP #CMP
  • 👍 15
  • 👎 13
Post #2122 6.31K
💉 Вышел 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
  • 👍 22
  • 👎 9
Post #2121 6.49K

This post (sticker, poll or similar) has no web preview. Open in Telegram

  • 👍 24
  • 👎 7
Older posts →

About this channel

How can I read @kotlin_broadcast without a Telegram account?
TGViewer shows the public web preview Telegram publishes for Kotlin Multiplatform Broadcast: recent posts, photos, videos and the subscriber count, with no app, login or account.
How many subscribers does Kotlin Multiplatform Broadcast have?
Kotlin Multiplatform Broadcast (@kotlin_broadcast) has 9.55K subscribers on Telegram, refreshed roughly every 30 minutes.
Does Kotlin Multiplatform Broadcast know I viewed it here?
No. Public channel previews carry no viewer identity, and TGViewer has no accounts or tracking of what you look up.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →