Записки разработчицы
1.97K subscribers
390 photos
24 videos
4 files
1.1K links
Разговоры об IT, о разработке. О мобилках нативных и кроссплатформенных.
Личный аккаунт @azharkova
Download Telegram
Forwarded from Android Broadcast (Кирилл Розов)
Вышел Gradle 8.4
👉 Поддержка Java 21
👉 Увеличена скорость компиляции Java на Windows
👉 Описание конфигураций по ролям: consumable , resolvable и Dependency Scope
🛠️ Исправление багов

Улучшения Kotlin DSL
👉 Kotlin 1.9.10
👉 Оператор = стал стабильным. Пригодится для Property
👉 В Kotlin DSL зашили ссылки на исходный код

#gradle
#kotlin Ничто невечно под Луной, включая планы разработчиков Kotlin. Буквально летом в их роадмапе пункт прямого интеропа Kotlin-Swift не значился приоритетным. Вернее, в связанных issue явно было написано, что ресурсов нет, поэтому задача далеко не первой очереди и отложена. Теперь же ситуация изменилась:
https://blog.jetbrains.com/kotlin/2023/11/kotlin-multiplatform-development-roadmap-for-2024/:
"The main initiative in this area is a direct Kotlin-to-Swift export. It will eliminate the Objective-C bottleneck, allowing for broader Swift language support and more natural exporting of APIs."

Также обратим внимание на: "introducing support for exporting your framework with SwiftPM"
🔥20
Forwarded from Android Broadcast (Кирилл Broadcast)
Показали первую превью KSP2 . Основные фичи:
👉 Использует K2 компилятор (нужно включать K2 компилятор в Kotlin)
👉 Новый отдельный генератор кода, который дает больше свободы и фичей по сравнению с текущим плагином Kotlin компилятора

Чтобы попробовать вам надо использовать KSP 1.0.14 или выше. Затем в gradle.properties добавить
ksp.useKSP2=true


В новой версии есть изменения в поведении API

#ksp #k2 #kotlin
👍4🔥1
#kotlin Решила закрепить свои материалы в виде серии статей или курса (может, с публикацией через Boosty). Хочется узнать ваше мнение, что было бы интереснее:
1. Плагины Kotlin 🤩
2. KSP 🍸
3. Kotlin Multiplatform👽
4 SwiftUI 🙈

Накидайте реакции и заходите в комментарии
🤩9👍54
#kotlin JB опубликовали гайд по миграции на компилятор K2. Версия полностью пригодна для работы и с мультиплатформой:
https://kotlinlang.org/docs/k2-compiler-guide.html#language-feature-improvements

Из интересных изменений по KMP:
1. Разный уровень видимости для API expect/actual. Expect - internal и видим только внутри модуля common кода.
2. Разделение общего и платформенного кода во время компиляции.

По остальным улучшением (не только мультиплатформа):
- улучшенный смарт-каст (например, параметров типа функций)
- не только свойства, но и интерфейсы функционального типа
5
Forwarded from Compose Broadcast
‼️ Jetpack Compose компилятор переехал в Kotlin репозиторий

Точнее это случится с релизом Kotlin 2.0. Это значит что вместе с релизом новой версии Kotlin сразу будет релизится Compose компилятор и не придется ждать обновлений из Jetpack.

❗️ Теперь версия Compose компилятора теперь будет такая же как у Kotlin. Артефакт androidx.compose.compiler:compiler заменят на org.jetbrains.kotlin:kotlin-compose-compiler-plugin-embeddable

📦 Новый Compose Compiler Gradle плагин (раньше был частью Android Gradle Plugin) позволит быстро настроить фреймворк в вашем проекте. Пример миграции тут

Больше подробностей в обновленной документации

#compose #kotlin #k2

Больше про Compose в @compose_broadcast
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍2
Forwarded from Kotlin Adept Notes (Alex Panov)
В публичный доступ опубликовали воркшоп от Павла Стрельченко по созданию плагинов для любых IDE от JetBrains 👩‍💻

Очень рекомендую глянуть воркшоп, даже если вы не собираетесь разрабатывать плагины, ведь из воркшопа можно вынести много всего полезного, а именно:

💡 Подчерпнуть идеи для плагинов и автоматизаций
🔮 Понять как мыслить при работе с незнакомым кодом
🐞 Увидеть как эффективно работать с дебаггером
✏️ Услышать полезные советы и многое другое

Приятного просмотра

#Plugins #Kotlin #IDE
@kotlin_adept
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍3
🏝🎉 Вышел Kotlin 2.1.0

👉 Новые фичи языка (разберу отдельно в @kotlin_broadcast, но ничего такого)
👉 Улучшения K2 компилятора, что также повлияло и на kapt (который deprecated)
👉 KMP Базовая поддержка Swift Export, стабильный Gradle для опций компилятора и много чего ещё
👉 В Kotlin/Native улучшили поддержку iosArm64
👉 Поддержка новых версий Gradle и Android Gradle Plugin

Ждем багфиксы в 2.1.10 и потом обновляемся. За разборами с большими подробностями идите в @kotlin_broadcast

#kotlin #gradle #k2 #kmp #swift
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6
📊 Автогенерация тестов для Kotlin в IntelliJ IDEA: сравнение AI-инструментов

Для многих разработчиков тестирование остается нелюбимой частью работы. На недавних конференциях Joker и Heisenbug более 400 разработчиков поделились мнением о применении AI-инструментов для тестирования.

В статье рассказывается о полученной информации, а также о существующих AI-инструментах для автоматической генерации тестов, включая их плюсы и минусы.

👉 Читать статью
#новость #kotlin
👍51👎1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
‼️🏝 KMP Разработчики не обновляйте XCode до 16.3

В Kotlin 2.1.20 несовместим со свежей версий XCode, поддержка будет в Kotlin 2.1.21. Отложите обновление!

#kotlin #kmp #xcode
Please open Telegram to view this post
VIEW IN TELEGRAM
👌5
🏝 Ускорение работы Kotlin/Native 🚀

В Kotlin 2.1.20 добавили экспериментальную новый проход inline оптимизации, который по тестам JetBrains ускоряет работу кода в runtime на 9.5%

Чтобы попробовать надо передать компилятору опцию
-Xbinary=preCodegenInlineThreshold=40


#kotlin #native #производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🏝 В Kotlin 2.2.20 прокачали contracts — механизм, который позволяет компилятору делать больше проверок на этапе компиляции и давать дополнительные гарантии.

❗️ Все новые функции пока экспериментальные — их использование требует аннотаций или специальных флагов компилятора.


1️⃣ Контракты в get/set у property
val Any.isHelloString: Boolean
get() {
contract { returns(true) implies (this@isHelloString is String) }
return "hello" == this
}


2️⃣ returnsNotNull() — новая функция в контрактах, которая гарантирует, что функция вернёт не null
fun decode(encoded: String?): String? {
contract { (encoded != null) implies (returnsNotNull()) }
if (encoded == null) return null
return java.net.URLDecoder.decode(encoded, "UTF-8")
}


3️⃣ holdsIn() — новая функция, которая позволяет зафиксировать, что условие будет true в пределах указанной лямбды
Документация
fun <T> T.alsoIf(
condition: Boolean,
block: (T) -> Unit,
): T {
contract {
// Объявляет, что лямбда будет вызвана не более одного раза
callsInPlace(block, InvocationKind.AT_MOST_ONCE)
// Объявляет, что условие считается истинным внутри лямбды
condition holdsIn block
}
if (condition) block(this)
return this
}


4️⃣ Поддержка generic типов в контрактах типов
fun <T, F : Failure> Result<T, F>.isHttpError(): Boolean {
contract {
returns(true) implies (this@isHttpError is Result.Failed<Failure.HttpError>)
}
return this is Result.Failed && this.failure is Failure.HttpError
}


Зачем это нужно
Контракты помогают компилятору и IDE лучше понимать поведение функций и условий в коде. Это значит: меньше лишних !!, меньше кастов типов, больше подсказок от IDE и меньше багов на рантайме. По сути, вы даёте компилятору «дополнительные знания», и он становится умнее при анализе вашего кода.


#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥91👍1