Вышла новая предрелизная версия Kotlin 1.6.20-RC с исправлениями багов в компиляторе и интеграции с Gradle.
Попробовать ее довольно просто, инструкция здесь.
Попробовать ее довольно просто, инструкция здесь.
GitHub
Release Kotlin 1.6.20-RC2 · JetBrains/kotlin
Changelog
Compiler
Fixes
KT-51352 "ClassCastException: class ScopeCoroutine cannot be cast to class Iterable" caused by coroutines and context receivers
KT-51271 "ArrayIndexOutOfBou...
Compiler
Fixes
KT-51352 "ClassCastException: class ScopeCoroutine cannot be cast to class Iterable" caused by coroutines and context receivers
KT-51271 "ArrayIndexOutOfBou...
👍2
Merge queue – это практика работы с Git, которая облегчает жизнь с большим количеством веток, в которых меняются одни и те же файлы.
В чем суть проблемы – у вас может в один и тот же момент времени висеть сразу несколько веток с зелеными тестами относительно текущего состояния main. Но как только одна из веток будет слита, все остальные станут красными.
Merge queue решает проблему следующим образом. Все PR попадают в единую очередь. Валидность кода в PR проверяется относительно main, в который будут слиты все предыдущие ветки из очереди. Если PR остается зеленым, то он сольется автоматически. Если нет – то либо заблокирует очередь, либо будет автоматически выкинут из нее.
В чем суть проблемы – у вас может в один и тот же момент времени висеть сразу несколько веток с зелеными тестами относительно текущего состояния main. Но как только одна из веток будет слита, все остальные станут красными.
Merge queue решает проблему следующим образом. Все PR попадают в единую очередь. Валидность кода в PR проверяется относительно main, в который будут слиты все предыдущие ветки из очереди. Если PR остается зеленым, то он сольется автоматически. Если нет – то либо заблокирует очередь, либо будет автоматически выкинут из нее.
Runway
Merge queues: An intro for mobile engineers | by Runway
As a mobile engineer, it’s quite possible you’ve never used, or even heard of, merge queues. This might be due in part to the fact that mobile teams traditionally move a bit slower than their web counterparts (merge queues are more often employed by teams…
Пример использования Kotlin DSL вместе с Kotlin Scripting для того, чтобы реализовать удобный трекер личных финансов.
scastiel.dev
Combining scripts and DSLs is Kotlin’s most underrated feature
The more I play with Kotlin, the more convinced I am that a combo of two of its features is vastly underrated: first, the ability to create domain-specific languages (DSL), thanks to some syntactic sugar; then, the ability to write scripts and create interpreters…
👍4👎1
Android разработчик, разрабатывающий приложения на Compose, попробовал SwiftUI и написал хороший пост со сравнением двух фреймворков. Отличий не очень много, но в целом разрабатывать под SwiftUI проще, так как он заточен под одну конкретную платформу.
Medium
SwiftUI vs Jetpack Compose by an Android Engineer
If you think it is a good idea to use Jetpack Compose (or any other multi-platform UI library like Flutter or React Native) to build an…
👍7🔥1
Твиттер-тред с обзором правил для ktlint, которые помогают большой команде писать единообразный код на Compose и не стрелять себе в ногу.
Twitter
Nacho López 🥘
A big challenge to face when a big team with a large codebase starts adopting Compose is that not everybody will start at the same page. This happened to us at Twitter. Compose is 🔝, allows for amazing things, but has a bunch of footguns to be aware of. ktlint…
👍8
Новая часть цикла статей от CashApp про сравнение RxJava и корутин. В этот раз разбираются Shared Flows.
Cash App Code Blog
Rx to Coroutines Concepts, Part 5: Shared Flows
Sometimes, you need to share a Flow with multiple consumers. Read all about how this works in this post.
👍1
Команда DoorDash используют Kotlin для разработки микросервисов. Одна из причин, по которым они предпочли Kotlin Python’у – богатые возможности для функционального программирования. В этом посте они закапываются в детали того, как конкретно они пишут функциональный код на Kotlin.
👍4💩2
Разбор того, как работает kotlin-parcelize, и как можно вмешаться в этот процесс, чтобы уменьшить объем сгенерированного кода.
le0nidas
Use Parceler to put your parcels on a diet
kotlin-parcelize is a great tool. Its simple to use and it helps in avoiding writing a lot of boilerplate code. There are times though that we need to take control of writing and reading to/from th…
👎6👍3
Короткое видео с советами от команды Kotlin про то, как сделать работу с циклами более идиоматичной.
YouTube
How to Improve Loops in Kotlin | Kotlin Tips 2024
Welcome to Kotlin Tips, the video series on how to use Kotlin more efficiently.
Loops are a basic and powerful concept in programming. They allow you to repeat the execution of statements until a certain condition is met. In this video, Sebastian (https…
Loops are a basic and powerful concept in programming. They allow you to repeat the execution of statements until a certain condition is met. In this video, Sebastian (https…
👍9
Хороший структурированный обзор того, как реализовывать OAuth в Android и iOS приложениях с общими принципами работы и потенциальными проблемами.
Хабр
OAuth в мобильных приложениях
Привет! Меня зовут Мялкин Максим, я занимаюсь мобильной разработкой в KTS . Ни один сервис не обходится без логина. Часто в мобильных приложениях требуется интегрировать вход через сторонние соцсети —...
👍6👎1
Вышел Kotlin 1.6.20! Из ключевых фич:
📌Прототип контекстных ресиверов
📌Definitely non-nullable types
📌Возможность параллельной компиляции в рамках одного JVM модуля
📌Инкрементальная компиляция в новом JS IR бэкенде
📌26% ускорение компиляции Native бинарников
📌Прототип контекстных ресиверов
📌Definitely non-nullable types
📌Возможность параллельной компиляции в рамках одного JVM модуля
📌Инкрементальная компиляция в новом JS IR бэкенде
📌26% ускорение компиляции Native бинарников
The JetBrains Blog
Kotlin 1.6.20 Released | The Kotlin Blog
Kotlin 1.6.20 offers previews of future language features and brings performance improvements for the JVM, JS, and Native platforms.
👍20🔥1
Хороший разбор того, как фронтенд компилятора Kotlin парсит код и строит из него PSI дерево. А тем временем напоминаю, что работы над новым фронтендом сейчас в самом разгаре!
Medium
Crash course on the Kotlin compiler | 1. Frontend: Parsing phase
Lexers, parsers, PSI, AST v. CST, and other fundamental concepts to help understand writing IDE/compiler plugins
Команда Dropbox выпустила Focus – Gradle-плагин, который генерирует settings.gradle файл под каждый конкретный модуль, что позволяет не загружать лишние зависимости и ускоряет время синка проекта. Авторы рассказывают, что для их команды в части кейсов время синка срезалось с 2 минут до 20 секунд.
dropbox.tech
Introducing Focus, a new open source Gradle plugin
👍13
Семафоры – многопоточные примитивы, которые позволяют определять число потоков, которое может получить доступ к определенному блоку кода. В статье рассказывается, как использование семафора может помочь при работе с корутинами.
Shreyas Patil's Blog
Leveraging the Semaphore concept in Coroutines to limit the parallelism 🔀
In this blog, we'll learn to use the concept of Semaphore with Kotlin coroutines to limit parallelism
👍4
Твиттер-тред про то, как к Gradle плагину можно подключить библиотеку, написанную на Swift и работающую с Foundation. Из интересного – работа с библиотекой ведется через JNA, более простую альтернативу JNI.
Twitter
Zac Sweers
Did a neat little Friday project today. I needed to use an API that only exists in Apple's Foundation framework. So I needed to write Swift code that I could use from a Gradle plugin. Here we go 🧵
❤1🤔1
Qiwi рассказывают про свой опыт работы с KMM, на котором они реализовали сетевой слой и view models. Если вы еще только присматриваетесь к КММ, то кейс ребят может вас вдохновить.
Хабр
Как мы в QIWI внедряли Kotlin Multiplatform Mobile (KMM)
Привет, Хабр! Меня зовут Кирилл Васильев, и я хотел бы рассказать, как мы в QIWI внедряли Kotlin Multiplatform Mobile (KMM). КММ — это технология кроссплатформенной разработки, позволяющая...
👍4🔥3👎2
Представьте себе прямую, описываемую функцией
Джейк Уортон написал статью, в которой прикладывает эту модель к библиотекам Picasso, Retrofit и Dagger, и рассуждает, как ее использовать при создании новой библиотеки.
y=mx+b. Параметр b показывает, насколько далеко от 0 находится место пересечения оси Y, а m – угол наклона. Это – удобная ментальная модель, чтобы оценивать сложность использования различных библиотек, где b – сложность первого старта, m – сложность, возникающая при усложнении кейсов использования.Джейк Уортон написал статью, в которой прикладывает эту модель к библиотекам Picasso, Retrofit и Dagger, и рассуждает, как ее использовать при создании новой библиотеки.
Jake Wharton
Slope-intercept library design – Jake Wharton
👍10👏2
Системная статья про то, как в Compose работают сайд эффекты, каких антипаттернов стоит остерегаться, и как в них работать со сторонними зависимостями.
👨💻 Jorge Castillo
Jetpack Compose Effect Handlers
Learn how to run your side effects 🌀 bound to the @Composable lifecycle.
This post has been moved to the Effective Android newsletter.
This post has been moved to the Effective Android newsletter.
👍1
Недавно команда Square увидела, что на эмуляторах с API 23 резко вырос объем памяти, потребляемой на CI библиотекой LeakCanary. Прочитайте статью с расследованием причин проблемы и разбором нюансов работы сборщика мусора.
🤔1
Kotlin Multiplatform отлично подходит для разработки DSL. Держите пример того, как с его помощью решили задачу генерации SVG на бэкенде и фронтенде.
avwie.github.io
avwie's programming blog
This is my programming blog where I write articles about experiments that I've done. Some are successful, some are not, but we learn from all.
👍2