Kotlin Multiplatform Broadcast
9.48K subscribers
834 photos
53 videos
1.13K links
Новости и фичи Kotlin, а также Kotlin Multiplatform

YouTubе канал: https://youtube.com/androidBroadcast
Compose Multiplatform @compose_broadcast
iOS разработка @ios_broadcast
Новости Android @android_broadcast
Реклама и прочее @android_broadcast_bot
Download Telegram
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
👍36🔥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
🏝 Вышел релиз 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
🏝 JetBrains снова принимает заявки на гранты для поддержки open source проектов для Kotlin

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

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

#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍4
Автор Kombinator рассказал о том как он делал архитектуру и реализацию библиотеки. Если кому интересно узнать про реализацию кодогенерации на KSP - читайте в статье(EN,6м).

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

#kotlin
👍9
🏝 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
👍30🏆2