Kotlin Multiplatform Broadcast
9.47K subscribers
833 photos
52 videos
1.11K links
Новости и фичи Kotlin, а также Kotlin Multiplatform

YouTubе канал: https://youtube.com/androidBroadcast
Compose Multiplatform @compose_broadcast
iOS разработка @ios_broadcast
Новости Android @android_broadcast
Реклама и прочее @android_broadcast_bot
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
🐱 LensLogger - KMP опенсорс библиотека для Android, iOS и Desktop чтобы отслеживать сетевые запросы через Ktor клиент и изучать их прямо из вашего приложения.

Подключаете зависимости и делается инициализацию
val client = HttpClient(engine) {
// body
install(LensHttpLogger){
level = LogLevel.ALL
}
}


#kotlin #kmp #ktor
Please open Telegram to view this post
VIEW IN TELEGRAM
42👍16🔥7
🚀 В Jetpack Paging 3.4.0-alpha01 добавили поддержку новых таргетов: watchos, tvos, mingwX64, watchosDeviceArm64 и linuxArm64

Библиотека для пагинации от Google уже давно обзавелась поддержкой iOS и Desktop, а вот в будущей версии и закроются остальный части, кроме JS и WASM.

#android #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍244
Уже успели попробовать в продакшен проектах Kotlin Context Parameter? Появились в Kotlin 2.2.0 в экспериментальном режиме. Делитесь впечатлениями

// UserService defines the dependency required in the context
interface UserService {
fun log(message: String)
fun findUserById(id: Int): String
}

// Declares a function with a context parameter
context(users: UserService)
fun outputMessage(message: String) {
// Uses log from the context
users.log("Log: $message")
}

// Declares a property with a context parameter
context(users: UserService)
val firstUser: String
// Uses findUserById from the context
get() = users.findUserById(1)
10👍5
Kotlin Contracts - это фича Kotlin, которая даёт компилятору дополнительную информацию про методы, что позволяет лучше понимать работу кода.

private fun sample(value: Value?): Boolean {
contract {
returns(true) implies (request != null)
}
...
}

а вот так будет выглядеть вторая версия контрактов
fun checkAndRun(x: Any, block: (x: String) -> Unit): Boolean contract [
callsInPlace(block, AT_MOST_ONCE),
returns(true) implies (x is String)
] {
if (x is String) {
block()
return true
} else {
return false
}
}


Про вторую версию контрактов можно почитать в статье (9м)

#kotlin
👍35🔥1
Вы знаете, что klib после компиляции Kotlin Native не содержит скомпилированный код, а только IR, который потребует компиляции каждый раз при сборке проекта? 🤯

Если
вы хотите больше погрузиться в том как работает компиляция Kotlin Native, то советую изучить статью(EN,10м)

🔗 Альтернативная ссылка

#kotlin #native
👍16🤔21
🏝 Вышел Kotlin 2.2.20 Beta1 (в обход 2.2.10)

Kotlin/JVM
👉 when expressions теперь будет компилироваться в более оптимизированный байтвод с использованием invokedynamic
invokedynamic — это байткод-инструкция JVM, позволяющая при первом запуске динамически связать вызов через bootstrap-метод, а затем выполнять его так же быстро, как обычный виртуальный метод, что даёт лямбдам и динамическим языкам нативную производительность.



Улучшения для Kotlin/Native
👉 Добавлена поддержка stack canaries в итоговый Koltin/Native бинарник, что повышает безопасность (нужно включение через флаг)
👉 Уменьшение размера бинаря для iOS таргета (нужно включение через флаг). Под капотом используется оптимизация -Oz для LLVM компилятора
👉 Улучшение информации об объектов в Kotlin/Native для дебагеров LLDB v GDB


Kotlin/WASM
👉 Отделили npm зависимости: ранее все npm зависимости устанавливались вместе в папку проекта. Теперь установка будет общей для всех всех проектов в папке в USER HOME

#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👍112
Вышел KtLint 1.7.0 с поддержкой Kotlin 2.2.0

Что нового в свежей версии инструмента для анализа качества Kotlin кода
👉 Добавили поддержку Kotlin Context Parameters
👉 Отключили по умолчанию правило no-unused-import
🛠 Обновление зависимостей, небольшие улучшения., исправление багов

#kotlin
🔥17
Forwarded from Android Broadcast
🤖 Jetpack Lifecycle теперь поддерживает все KMP тартеты

В версии Jetpack Lifecycle 2.9.2 добавили поддержку WasmJS тартега, а это значит что библиотека теперь может работать на всех KMP таргетах: JVM (Android, Desktop), Native (Linux, iOS, watchOS, macOS, MinGW) и Web (JavaScript, WasmJS)

#android #kmp @wasmjs #jetpackupdate
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥39👍19
🏝 Вышел релиз Koog 0.3.0 - библиотеки для написания AI агентов на Kotlin

Что нового:
👉 Сохранение состояния агента на диске
👉 Поддержка векторного хранилища для документов
👉 Поддержка Native OpenTelemetry
👉 Интеграция Spring Boot
👉 Параллельное выполнение задач
👉 Модерация и observability из коробки
👉 Множество других фичей

#kotlin #ai
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👍5🤔1
🏝 Вышла RC версия Kotlin 2.2.10 с исправлением багов и улучшениями производительность версии 2.2.0

#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥4
🚀 Вышел Ktor 3.2.2, который исправил работу на Android и другие минорные баги

#ktor #kotlin #android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍202
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 23 августа – Yandex Mobile Runtime!

Фестиваль для мобильных разработчиков от Яндекса. Забудь скучные доклады — бери ноутбук и погружайся в практику!

🚀 Главное событие: AI-хакатон!
Создай готовый продукт с ИИ-ассистентами за 5 часов. Экспертное жюри в лице Дмитрия Мовчана, руководителя мобильной разработки в Дзене, Геннадия Евстратова, руководителя проектов в Яндексе, Анны Жарковой, руководителя практики по мобильной разработке в Usetech, и др. выберет победителя! Регистрация на хакатон отдельная.

Еще крутое в программе:
⏺️ Воркшопы: ускорение приложений и MCP
⏺️ Карьера: консультации с лидами/сеньорами Яндекса
⏺️ Дискуссии: метрики, BDUI и другие темы от Городских сервисов
⏺️ Квиз по мобильной разработке

Отдохнуть и перезагрузиться в чилл-зонах от сервисов:
⚡️ Зона отдыха с настолками от Поиска и рекламных технологий
⚡️ Кастомный бар от Яндекс 360
⚡️ DJ-сет

Мидлы и сеньоры 👉 Регистрация открыта!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🤔2🔥1🙏1
🏝 JetBrains снова принимает заявки на гранты для поддержки open source проектов для Kotlin

Подать заявку можно тут до 31 июля

Проекты получат гранты, если:
👉 Решают важную проблему в экосистеме Kotlin, особенно в KMP
👉 Быстро реагируют на баги, уязвимости и обновления Kotlin/библиотек
👉 Следуют лучшим практикам разработки библиотек
👉 Имеют понятный roadmap развития

#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍3
#вехи_истории
🗓 22.07.2011 — Релиз Kotlin

👩‍💻 Компания JetBrains представила новый статически типизированный JVM-язык программирования — Kotlin. Его разработка началась с целью устранить недостатки Java и предложить современный, лаконичный и безопасный язык для разработки серверных программ, Android‑приложений и многоплатформенных решений (в дальнейшем).

🏝 Kotlin получил имя в честь острова Котлин в Финском заливе. Язык с самого начала разрабатывался как open-source, что помогло ему быстро обрести популярность в сообществе. Одной из его ключевых особенностей стала интерпретируемость (совмесимость) с Java: проекты на Java могли легко интегрировать код на Kotlin без переписывания всего приложения.

👨‍💻 В 2017 году Google официально добавил Kotlin как язык для разработки Android, что стало переломным моментом в его истории. Сегодня Kotlin используется миллионами разработчиков, поддерживает серверные и веб‑приложения, а также активно развивается в направлении Kotlin Multiplatform, делая возможной разработку приложений для Android, iOS, Web и Desktop.

🩵 Всех, кто разрабатывает программы на Kotlin - с праздником)

📼 Истории известных разработчиков, которые не применяли ИИ-инструменты для создание чего-то нового - уже на канале:
1️⃣ Я - создатель Яндекса. Реальная история Ильи Сегаловича
YouTube | VkVideo

2️⃣ Удивительная история Android! Вы этого НЕ ЗНАЛИ
YouTube | VkVideo

3️⃣ Насколько ОПАСЕН ИИ?
YouTube | VkVideo

YouTube | VkVideo | Telegram | Pikabu
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉51👍76
🤖 Тратите месяцы на то, что можно подключить за час?

Пора выкинуть устаревший подход:

🔥 Современный разработчик не кодирует инфраструктуру — он собирает приложение из готовых решений, фокусируясь только на уникальной бизнес-логике.

Узнайте на открытом вебинаре:
→ Какие 5+ компонентов бессмысленно писать самому в 2020-х
→ Как работать в 10x темпе, используя облачные сервисы и готовые инструменты
→ Где грань между "кастомным кодом" и "изобретением велосипеда"

🗓 30 июля | 19:00 МСК
🆓 Урок от курса «Kotlin Backend Developer. Professional»

🎁 Ваш бонус:

Сразу после урока — готовые инфраструктурные файлы (подходят для Kotlin, Java, Python и др.), которые сэкономят вам 100+ часов.

🔗 Ссылка на регистрацию

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Автор Kombinator рассказал о том как он делал архитектуру и реализацию библиотеки. Если кому интересно узнать про реализацию кодогенерации на KSP - читайте в статье(EN,6м).

🔗 Альтернативная ссылка

#kotlin
👍7
🏝 Kombinator - open source библиотека для генерации экземпляров Kotlin объектов со всеми возможными комбинациями значений из заданных.

Библиотека работает на основе генерации кода через KSP. Может быть полезна для тестов, чтобы проверять разные входные данные.

// Уровень класса @Kombine: Задает значения по умолчанию для свойств
// без аннотаций и без дефолтных значений property
@Kombine(
allPossibleIntParams = [100],
allPossibleStringParams = ["system"],
)
data class ScreenConfig(
// Аннотация на уровне свойства переопределяет уровень класса для 'theme'
@Kombine(allPossibleStringParams = ["light", "dark", "auto"])
val theme: String,

// Есть значение по умолчанию, Kombinator будет использовать ТОЛЬКО "portrait"
val orientation: String = "portrait",

// Нет аннотации @Kombine и значения по умолчанию.
// Будет использовать значение уровня класса: [100]
val padding: Int,

// Аннотация на уровне свойства переопределяет уровень класса для 'fontSize'
@Kombine(allPossibleIntParams = [12, 16, 20])
val fontSize: Int,

// Нет аннотации @Kombine и значения по умолчанию.
// Будет использовать значение уровня класса: ["system"]
val fontFamily: String,
)

#kotlin #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26🏆1
Верим, что после нашего нового выпуска это миссия станет выполнимой ⚡️

В нём вместе с Ольгой Елисеевой, руководителем технической дирекции, «Инфосистемы Джет», обсудили:

📌Основные причины появления нового руководителя;
📌 Разницу выхода на новую позицию у лида и инженера;
📌 Способы вхождения в команду;
📌 Откат до инженера после опыта руководства;
📌 И многое другое!

Слушайте выпуск по ссылке на любой удобной платформе 😀

📺 Ютуб
🔵 ВК Видео
🎧 Mave
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3