Вышло обновление компиляторного плагина 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
Please open Telegram to view this post
VIEW IN TELEGRAM
#KMP #CMP
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Суть библиотеки в том, что аннотируешь 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
Please open Telegram to view this post
VIEW IN TELEGRAM
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
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
Лето прошло. Вместо пляжа — клавиатура. Дети учатся, а мы — пашем в спринтах. Результат: спина колесом, шея каменная, мозг в режиме «только не упади».
Единственный правильный апгрейд в этом сезоне — Эргостол.
Это не просто стол и кресло. Это оружие против остеохондроза:
— Регулировка за минуту.
— Работай стоя — качай спину без отрыва от продакшна.
— Полный порядок на столе (кронштейны, каналы, крепления).
В новом учебном году заботься о себе по-взрослому.
🤩 Промокод -10%
Единственный правильный апгрейд в этом сезоне — Эргостол.
Это не просто стол и кресло. Это оружие против остеохондроза:
— Регулировка за минуту.
— Работай стоя — качай спину без отрыва от продакшна.
— Полный порядок на столе (кронштейны, каналы, крепления).
В новом учебном году заботься о себе по-взрослому.
ANDROID10 действует на сайте и на OzonPlease open Telegram to view this post
VIEW IN TELEGRAM
Базовый 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👉 исключения при десериализации теперь всегда оборачиваются в
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
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
С 21 по 25 сентября пройдет Podlodka Android Crew. Организаторы конференции собрали сезон, в котором будет очень много свежего опыта, специфичного именно для мобильной разработки — это возможность обсудить актуальные задачи с опытными коллегами и ускорить свою работу.
Что ждёт слушателей сезона
Сезон практический — в результате можно будет забрать не только новые идеи, но и сразу начать использовать собственные наработки, сделанные в ходе пяти дней конференции.
Подробности о сезоне смотрите на сайте, и там же забирайте билеты.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM