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 645
订阅者
-124 小时
-57
-830
帖子存档
🏝 15 лет с анонса Kotlin https://x.com/kotlin/status/2066920292996251865

🏝 Swift Export vs SKIE: что реально готово для iOS-интеропа сегодня Touchlab выкатил большой разбор с прямым сравнением двух путей экспорта KMP в iOS: новый Swift Export от JetBrains против связки Obj-C bridge + SKIE. Сравнивают не галочками фич, а скомпилированным выводом обоих подходов. Это сильная сторона текста, можно повторить и посмотреть сгенерированный код самому.
Swift Export в Kotlin 2.4 дошёл до alpha и подтянул concurrency. Идея простая - генерировать нативный Swift API напрямую, без прослойки Objective-C. Swift Export и Obj-C export взаимоисключающие, поэтому выбор бинарный, смиксовать нельзя.
Где Swift Export уже выигрывает: 👉 Nullable-примитивы маппятся напрямую в Int32?, без обёрток типа KotlinInt 👉 Сохраняет typealias и структуру пакетов 👉 Настоящие изолированные Swift-модули вместо одного umbrella-фреймворка Shared Где пока проигрывает, и это важно для прода: 👉 Generics по сути не поддерживаются. Только Kotlin-типы как параметры, value-типы Swift отваливаются, бывает что просто не компилится 👉 Sealed-классы теряют исчерпываемость. Никакого onEnum, обязательный default, компилятор не поймает новый кейс 👉 Extension-функции деградируют в static-функции с явным receiver. Совсем не по-свифтовому 👉 Всё помечается final, кросс-языкового наследования нет Вывод авторов - для нативного iOS UI сегодня по-прежнему SKIE, а Swift Export годится для пет-проектов и небольших MVP. Cтатью писал Touchlab, авторы SKIE и драйверы KMP в сообществе. По фактам они правы, Swift Export пока alpha и дыры реальные. Но «SKIE definitive choice» это уже их акцент, читайте с этой поправкой. Направление от JetBrains очевидное - KMP-проекты без Objective-C под капотом. Вопрос только в сроках, слишком уж долго они топили за поддержку Obj-C интеропа и игнорировали Swift. #Kotlin #KMP #Swift #IOS

🏝 В Kotlin 2.4.0. улучшили compile time константы
// Не работало в Koltin 2.3.X
// В Koltin 2.4.0 теперь можно
const val TAG = "MyClass".lowercase()
В Kotlin 2.4.0 экспериментально добавили поддержку строковых функций stdlib в compile-time константах: .lowercase(), .uppercase(), .trim(). Плюс операции с unsigned-типами и вычисление .name у enum-констант и KCallable. Чтобы было понятно, какие функции обрабатываются компилятором, ввели аннотацию @IntrinsicConstEvaluation. Пока аннотацию расставили не везде. В следующих релизах добавят остальное. Включается флагом компилятора:
kotlin {
    compilerOptions {
        freeCompilerArgs.add("-Xintrinsic-const-evaluation")
    }
}
#Kotlin #Kotlin240

Митап для Java-разработчиков — 18 июня, Екатеринбург В программе 2 доклада от бэкендеров Яндекс Вертикалей про неочевидные пр
Митап для Java-разработчиков — 18 июня, Екатеринбург В программе 2 доклада от бэкендеров Яндекс Вертикалей про неочевидные продакшн-баги в Java и Spring, переход на Temporal: 🟥 NullPointerException на инициализированном final-поле. Как такое вообще возможно? Расскажет Михаил Черноскутов из Яндекс Путешествий 🟥Переезд со scheduler-сервисов на Temporal. Зачем он понадобился и какие были подводные камни, ответит Герман Михайлов из Яндекс Недвижимости После выступлений участников ждёт «Громкий вопрос» — интеллектуальная игра по мотивам одноимённого шоу. А также нетворкинг с коллегами и единомышленниками. 🗓18 июня (четверг), 18:00 — 22:00 📍 Ельцин Центр, Екатеринбург → Подробности и регистрация #реклама

Уже попробовали новый синтаксис создания коллекций?
Anonymous voting

Обновились на Kotlin 2.4.0?
Anonymous voting

⭐️ Вышла Gemma 4 12B и она запускается локально на 16GB RAM. Понимает текст, картинки и аудио в одной модели До этого мультим
+1
⭐️ Вышла Gemma 4 12B и она запускается локально на 16GB RAM. Понимает текст, картинки и аудио в одной модели До этого мультимодальные модели работали так: картинку сначала обрабатывает отдельный блок, аудио тоже через свой. Каждый такой блок ест память и добавляет задержку. Gemma 4 12B делает это без посредников. Картинка и звук идут прямо в модель. Один пайплайн для всего. На практике это значит меньше памяти под инфраструктуру и выше скорость отклика. Модель запускается на железе с 16GB VRAM (не потребляет, а столько оперативки в компе надо) или unified memory, то есть MacBook Pro с M3 тянет без проблем. Apache 2.0, весы на Hugging Face и Kaggle, запуск через Ollama или LM Studio. Задачи, которые это открывает: 👉 локальный агент с пониманием скриншотов и голоса 👉 анализ изображений без отправки данных в облако 👉 голосовой ввод прямо в агентный пайплайн. Для тех, кто строит агентов с приватными данными или просто не хочет зависеть от API-ключей и облачных лимитов — это рабочий вариант. Мне интересно попробовать именно в связке с локальным агентом: один инстанс, текст плюс скриншот плюс аудио, без облака. Посмотрим, насколько это работает на практике, а не только на бенчмарках. 🔗 Оф анонс #AI #Gemma

💉 Koin Compiler Plugin 1.0.0 вышел в stable и переводит проверку графа зависимостей на этап компиляции. Плагин проверяет граф на трёх уровнях: 👉 смотрит каждый модуль в изоляции 👉 собирает полный граф при startKoin<T>() 👉 проверяет каждый call-site, включая get<T>(), inject<T>(), koinViewModel<T>() и вызовы внутри @Composable. Если проект собрался, граф валиден. Работает с DSL и аннотациями, поддерживает KMP. Миграция с koin-ksp-compiler не ломает существующие аннотации. Требует Kotlin 2.3.20+ и Koin 4.2.1+. ‼️ ВАЖНО: классический DSL-стиль single { MyClass(get()) } не даёт полной проверки. Полная compile safety работает с single<MyClass>() или аннотациями (@Single, @Factory, @KoinViewModel). По умолчанию strictSafety включён на модуле, где живёт startKoin: compileKotlin на нём перезапускает проход на каждой сборке. Библиотечные модули остаются инкрементальными. Непонятно как устроена работа со скоупами. Koin использую давно, и тест с checkModules() всегда был немного в стороне от основного пайплайна. Теперь это просто часть компиляции. Смущает только порог Kotlin 2.3.20: если проект ещё не обновился, придётся ждать. 🔗 Источник - оф блог Kotin #android #kotlin #koin #di

🏝 Вышел Kotlin 2.4.0 Stable 👉 Язык: стабильные контекстные параметры, явные backing-поля и несколько нововведений для use-s
🏝 Вышел Kotlin 2.4.0 Stable 👉 Язык: стабильные контекстные параметры, явные backing-поля и несколько нововведений для use-site таргетов аннотаций. 👉 Стандартная библиотека: стабилизация UUID API 👉 Kotlin/JVM: поддержка Java 26 и аннотации в метаданных включены по умолчанию. 👉 Kotlin/Native: поддержка SPM как зависимостей, обновления Swift export и CMS GC включён по умолчанию. 👉 Kotlin/Wasm: инкрементальная компиляция включена по умолчанию и поддержка WebAssembly Component Model. 👉 Совместимость с Gradle 9.5.0. 👉 Компилятор Kotlin: более согласованное поведение inline-функций при компиляции в .klib. #Kotlin #Kotlin240

🏝 Попробовал Kotlin Toolchain - CLI для сборки проектов на Kotlin. Пока он практически бесполезен... По сути переименовали б
+1
🏝 Попробовал Kotlin Toolchain - CLI для сборки проектов на Kotlin. Пока он практически бесполезен... По сути переименовали билд систему Amper и вот вам Toolchain для Kotlin. Кажется ему до полезности еще очень долго. 🏝 Если успели попробовать - делитесь впечатлениями #kotlin

🧠 Все говорят об AI-инструментах, но физическое рабочее место всё ещё решает ​ Copilot, Cursor и ChatGPT ускоряют работу, но
🧠 Все говорят об AI-инструментах, но физическое рабочее место всё ещё решает ​ Copilot, Cursor и ChatGPT ускоряют работу, но спину они не спасут: стул, стол и поза важны не меньше. Апгрейд рабочего места — это такой же современный апгрейд, как новый AI-инструмент. У Ergostol можно подобрать регулируемые столы, кресла и аксессуары для комфортной работы весь день! 💲Скидка -10% по промокоду ANDROID10 на сайте Ergostol. Так же промокод действует и на Ozon 🛒 Реклама. ООО «СОФТЭФФЕКТ». ИНН 7735575262

🏝 Keynote KotlinConf'26 прошёл. Без воды — только то, что реально новое и уже доступно. 👉 Kotlin Toolchain. Единый CLI для
🏝 Keynote KotlinConf'26 прошёл. Без воды — только то, что реально новое и уже доступно. 👉 Kotlin Toolchain. Единый CLI для всего цикла: создание, сборка, тесты, форматирование, документация. Amper теперь его core. Работает уже сегодня для JVM и KMP проектов. Это то, чего давно не хватало — один инструмент вместо зоопарка инструментов. 👉 Koog 1.0 stable. Kotlin AI agent framework вышел в production. Type-safe DSL для воркфлоу, persistence для long-running агентов, интеграции с Ktor и Spring AI. Mercedes-Benz уже в проде. Первый серьёзный AI framework именно на Kotlin, а не обёртка над Python. 👉 Kotlin LSP → Alpha + официальный extension для VS Code на Marketplace. Kotlin больше не только про IntelliJ. Это расширение аудитории языка — и потенциально больше контрибьюторов в экосистему. 👉 kdoc.jar. Машиночитаемая документация публикуется вместе с библиотекой и потребляется IDE, Dokka и AI агентами. Тихая, но важная вещь — TypeScript declarations для Kotlin экосистемы. 👉 Swift Export переходит в Alpha в Kotlin 2.4 + SPM Import. Вызов Kotlin из Swift становится нормальным, а не костыльным. Глядишь так еще пару лет и получим Stable. 👉 Kotlin/Native: -25% время сборки, меньше половины RAM по сравнению с прошлым годом. Измерено на кодовой базе Google Docs. Один из главных аргументов против KMP на iOS становится слабее. Из всего кейноута это единственное, что можно потрогать сейчас, а не ждать "когда-нибудь". #Kotlin #AI #Koog #IDEA #Kotlin240

🏝 Keynote KotlinConf'26 прошёл. Без воды — только то, что реально новое и уже доступно. 👉 Kotlin Toolchain. Единый CLI для всего цикла: создание, сборка, тесты, форматирование, документация. Amper теперь его core. Работает уже сегодня для JVM и KMP проектов. Это то, чего давно не хватало — один инструмент вместо зоопарка инструментов. 👉 Koog 1.0 stable. Kotlin AI agent framework вышел в production. Type-safe DSL для воркфлоу, persistence для long-running агентов, интеграции с Ktor и Spring AI. Mercedes-Benz уже в проде. Первый серьёзный AI framework именно на Kotlin, а не обёртка над Python. 👉 Kotlin LSP → Alpha + официальный extension для VS Code на Marketplace. Kotlin больше не только про IntelliJ. Это расширение аудитории языка — и потенциально больше контрибьюторов в экосистему. kdoc.jar. Машиночитаемая документация публикуется вместе с библиотекой и потребляется IDE, Dokka и AI агентами. Тихая, но важная вещь — TypeScript declarations для Kotlin экосистемы. Kotlin stdlib — 18-месячная политика security support с версии 2.4. Security-фиксы бэкпортируются во все активные release lines. Закрывает главный аргумент enterprise против Kotlin. Swift Export → Alpha в Kotlin 2.4 + SPM Import. Вызов Kotlin из Swift становится нормальным, а не костыльным. Плюс зависимости через Swift Package Manager прямо из Kotlin. Для KMP на iOS это ощутимо. Kotlin/Native: -25% время сборки, меньше половины RAM по сравнению с прошлым годом. Измерено на кодовой базе Google Docs. Один из главных аргументов против KMP на iOS становится слабее. Из всего кейноута это единственное, что можно потрогать сейчас, а не ждать "когда-нибудь".

7 июня Яндекс проводит Mobile Runtime (офлайн в Москве и онлайн) В этот раз программа делится на два трека — AI и Not so AI.
7 июня Яндекс проводит Mobile Runtime (офлайн в Москве и онлайн) В этот раз программа делится на два трека — AI и Not so AI. Поговорим про влияние нейросеток на пайплайн и архитектуру. 💡 Что в программе:Проблема контекста в AI: Александр Иванов (Яндекс Go) на воркшопе покажет, как структурный индекс кода (ast-index) заменяет медленный grep и позволяет AI-агентам адекватно ориентироваться в гигантских монорепозиториях, не сливая токены впустую. • Performance-инженерия: Лев Бондаренко (Яндекс Еда) разберет кейс медиаленты. Поговорим про управление памятью, дебаг и архитектурные решения, которые позволили сохранить плавность интерфейса при тяжелом контенте. • Процессы и Seniority: На круглых столах обсудим «обратную сторону AI» — почему сложность задач растет вместе с внедрением агентов (с участием лидов из Яндекса, Сбера, Райффайзенбанка и Одноклассников), и как качать T-Shape скиллы, когда стек меняется слишком быстро. Если вы работаете с нативной или кроссплатформенной разработкой, думаете про BDUI и перформанс — встречаемся 7 июня. ➡️ Регистрация уже открыта.

🏝 В Kotlin переписывают деструктуризацию. К версии 2.7 в конце 2027 года val (name, age) = person будет извлекать свойства по именам, а не по позиции, как работает сейчас. В Kotlin 2.3.20 уже появился экспериментальный синтаксис, где val ставится внутри скобок:
(val name, val age) = p
Порядок написания неважен, поддерживается переименование:
(val age, val theName = name) = p
Для позиционной деструктуризации, где имён нет (Pair, Triple, коллекции, итерация по Map), вводят квадратные скобки:
val [x, y] = point
for ([key, value] in map) { ... }
По плану JetBrains: в 2.3.20 новый синтаксис включается флагом -Xname-based-destructuring=only-syntax. В 2.5.0 в конце 2026 он станет стабильным, появятся хелперы миграции в компиляторе и IDE. В 2.7.0 в конце 2027 скобки начнут работать по именам по умолчанию. componentN у data class никуда не денется, бинарную совместимость ломать не будут. Позиционная деструктуризация всегда была одной из самых спорных фич языка. Стоило поправить data class, как val (a, b) = obj в других местах тихо разваливался или продолжал компилироваться с неправильной логикой. Сам относился к ней скептически, использовал разве что для совсем простых случаев и почти никогда для data class. То, что JetBrains фактически признала проблему и переходит на имена, правильный шаг. Но есть опасение: репутация у фичи давно подмочена, многие её обходят стороной, и возвращаться к деструктуризации в data class могут и не пойти. Хотя ошибку наконец-то исправили, и это уже хорошо. 🔗 Источник #Kotlin #Kotlin27 #Kotlin25

Твой код — в сердце мощного ИИ! 💚 Команда GigaChat зовёт на One Day Offer амбициозных Java-разработчиков, которые готовы соз
Твой код — в сердце мощного ИИ! 💚 Команда GigaChat зовёт на One Day Offer амбициозных Java-разработчиков, которые готовы создавать AI‑продукты уровня BigTech и стать частью крупнейшего AI-комьюнити. Если ты дружишь с Java (версии 8–25), ладишь со Spring и Hibernate, а PostgreSQL и ClickHouse для тебя — не просто слова, переходи по ссылке и занимай слот на One Day Offer. Встречаемся 23 мая — очень ждём именно тебя! #реклама

🏝 JetBrains обновили дефолтную структуру KMP проектов. Теперь общий код живёт в shared модуле, а под каждую целевую платформ
🏝 JetBrains обновили дефолтную структуру KMP проектов. Теперь общий код живёт в shared модуле, а под каждую целевую платформу свой отдельный application модуль. Раньше всё было в одном composeApp, который одновременно был и KMP библиотекой, и приложением. Это создавало путаницу в build конфигах и платформенных настройках. iOS при этом уже жил в отдельной папке, и асимметрия торчала наружу. Главным триггером изменений стал Android Gradle Plugin 9, который больше не позволяет применять Android application plugin к multiplatform модулю. Entry point Android приложения теперь обязательно вынесен в отдельный модуль. Если в проекте есть нативный UI (например, SwiftUI для iOS), shared разбивается на два модуля: sharedLogic без Compose зависимостей и sharedUI только для платформ с Compose Multiplatform. Для проектов с серверной частью добавляется server модуль и core с общими моделями и валидацией для шаринга между клиентом и сервером. Я ещё до этого держал каждый application в отдельном модуле, так что для меня новая дефолтная структура лишь оформляет то что уже стало здравым смыслом. Раньше с одним shared было неприятно из-за того что Kotlin stdlib и зависимости тащились в каждый iOS framework. Несколько атомарных shared модулей решают эту проблему и позволяют точечнее управлять тем что попадает на каждую платформу. Очень рад что JetBrains двигаются в сторону более атомарных модулей, но пока есть вопросы не будет ли дублирования базовых Kotlin библиотека в каждый Xcode фреймворк. Новая структура уже доступна в KMP wizard на kmp.new и в IDE плагине. 🔗 Анонс 📹 Видео разбор от JetBrains #Kotlin #KMP #Gradle

Kotlin - язык с множеством фичей, но их всегда мало и хотелось бы что-то сделать удобнее. 💬 Пишите в комментариях какую фичу вы хотите видеть в Kotlin или KMP, а главное - зачем!

🔥 Суперсилы Kotlin для удобных UI-автотестов Открытый вебинар пройдет 21 мая в 20:00 МСК в преддверии старта курса «Автомати
🔥 Суперсилы Kotlin для удобных UI-автотестов Открытый вебинар пройдет 21 мая в 20:00 МСК в преддверии старта курса «Автоматизатор тестирования на Kotlin». На открытом вебинаре поговорим: 🔗как возможности Kotlin помогают писать более удобные, читаемые и поддерживаемые UI-автотесты 🔗какие особенности языка особенно полезны в тестировании пользовательских интерфейсов 🔗как применять их на практике 🔗о подходах, которые позволяют упростить работу с тестовым кодом, сократить количество шаблонного кода 🔗как повысить стабильность автотестов. ➡️ Зарегистрируйтесь по ссылке, чтобы писать удобные автотесты Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

🏝 Context parameters становятся Stable в Kotlin 2.4.0 В Kotlin 2.4.0-Beta2 фича официально получила статус Stable (с оговоркой — context arguments и callable references пока остаются experimental). Долгий путь от экспериментальных context receivers подходит к финалу. Context parameters позволяют функции или свойству объявить зависимости, которые неявно доступны из окружающего scope. Перестаём тащить Logger, Repository, Transaction через все слои сигнатур руками.
interface Logger {
    fun log(message: String)
}

context(logger: Logger)
fun processOrder(order: Order) {
    logger.log("Processing ${order.id}")
    // ...
}
Главное отличие от context receivers (их удалят) — у параметра обязательно есть имя. Обращаемся через logger.log(), а не через неявный this. Если имя в теле не нужно — ставим подчёркивание, и фишка резолвится по типу:
context(_: Logger)
fun processOrder(order: Order) {
    logMessage("...") // подтянется автоматически
}
Context Arguments сможет убрать часть extension функций. Точно в Compose функция будет полезна, так что жду улучшений! 🔗 Документация #Kotlin #Kotlin240