LitmusKt: новый инструмент для тестирования конкурентности в Kotlin
JetBrains Research представила LitmusKt - фреймворк для тестирования конкурентных сценариев в Kotlin. Он помогает исследователям и разработчикам проверять поведение многопоточных программ и JVM-памяти.
LitmusKt основан на идее litmus tests - небольших программ, моделирующих работу нескольких потоков и проверяющих возможные результаты исполнения. Такие тесты позволяют выявить неочевидные эффекты из-за reorderings, кешей и особенностей модели памяти.
Основные возможности LitmusKt:
- Поддержка JVM и Kotlin/Native;
- Встроенные модели памяти (Java, Kotlin, C11, и др.);
- Автоматическая генерация всех возможных интерлеавингов потоков;
- Проверка ожидаемых и неожиданных исходов;
- Интеграция с Kotlin DSL для лаконичного описания тестов.
Пример теста:
Этот пример проверяет, может ли оба потока одновременно прочитать нули, что нарушает JMM.
Инструмент можно использовать для анализа оптимизаций компилятора, JVM и нового Kotlin Memory Model.
https://blog.jetbrains.com/research/2025/10/litmuskt-concurrency-testing/
✍️ @kotlin_lib
JetBrains Research представила LitmusKt - фреймворк для тестирования конкурентных сценариев в Kotlin. Он помогает исследователям и разработчикам проверять поведение многопоточных программ и JVM-памяти.
LitmusKt основан на идее litmus tests - небольших программ, моделирующих работу нескольких потоков и проверяющих возможные результаты исполнения. Такие тесты позволяют выявить неочевидные эффекты из-за reorderings, кешей и особенностей модели памяти.
Основные возможности LitmusKt:
- Поддержка JVM и Kotlin/Native;
- Встроенные модели памяти (Java, Kotlin, C11, и др.);
- Автоматическая генерация всех возможных интерлеавингов потоков;
- Проверка ожидаемых и неожиданных исходов;
- Интеграция с Kotlin DSL для лаконичного описания тестов.
Пример теста:
litmus("StoreLoad") {
thread("T1") { x = 1; r1 = y }
thread("T2") { y = 1; r2 = x }
outcome { r1 == 0 && r2 == 0 } // недопустимо по Java Memory Model
}
Этот пример проверяет, может ли оба потока одновременно прочитать нули, что нарушает JMM.
Инструмент можно использовать для анализа оптимизаций компилятора, JVM и нового Kotlin Memory Model.
https://blog.jetbrains.com/research/2025/10/litmuskt-concurrency-testing/
✍️ @kotlin_lib
👍7
Kotlin: расширенные функции-расширения для набора инструментов старшего разработчика
Функции-расширения в Kotlin — это мощный механизм, позволяющий добавлять новую функциональность к уже существующим классам без необходимости наследоваться от них. Большинство разработчиков знакомы с базовым применением, однако набор инструментов опытного разработчика должен включать более продвинутые и тонкие решения, которые элегантно и эффективно закрывают распространённые задачи.
Этот материал не о банальных
https://pbs009.medium.com/kotlin-custom-extension-functions-for-a-senior-developers-toolkit-110b061a8b43
✍️ @kotlin_lib
Функции-расширения в Kotlin — это мощный механизм, позволяющий добавлять новую функциональность к уже существующим классам без необходимости наследоваться от них. Большинство разработчиков знакомы с базовым применением, однако набор инструментов опытного разработчика должен включать более продвинутые и тонкие решения, которые элегантно и эффективно закрывают распространённые задачи.
Этот материал не о банальных
toPx() или showToast() расширениях. Здесь мы углубимся в функции, которые способны существенно переработать ваш код, улучшить читаемость и сократить шаблонный код.https://pbs009.medium.com/kotlin-custom-extension-functions-for-a-senior-developers-toolkit-110b061a8b43
✍️ @kotlin_lib
☃1
⌨️ DSL в Kotlin: от теории к практике
Приглашаем на открытый урок.
🗓 20 ноября в 19:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Kotlin Backend Developer. Professional».
Программа вебинара:
✔️ Что такое DSL и зачем он нужен в современной разработке
✔️ Основные элементы Kotlin для создания DSL: лямбды, infix-функции, расширения
✔️ Практические примеры использования DSL в Gradle, Ktor и TeamCity
Вебинар будет полезен:
Бэкенд-разработчикам на Kotlin, тимлидам и всем, кто хочет писать более чистый и поддерживаемый код.
В результате вебинара:
Научитесь создавать собственные DSL и применять их при разработке
🔗 Ссылка на регистрацию: https://vk.cc/cRbOTY
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Приглашаем на открытый урок.
🗓 20 ноября в 19:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Kotlin Backend Developer. Professional».
Программа вебинара:
Вебинар будет полезен:
Бэкенд-разработчикам на Kotlin, тимлидам и всем, кто хочет писать более чистый и поддерживаемый код.
В результате вебинара:
Научитесь создавать собственные DSL и применять их при разработке
🔗 Ссылка на регистрацию: https://vk.cc/cRbOTY
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Media is too big
VIEW IN TELEGRAM
Проектирование Kotlin за пределами выводимого типа | Росс Тейт
Программисты на Kotlin регулярно опускают неинформативные типы в своих программах. Это делает разработку быстрее, код — легче для чтения, а сопровождение — менее трудоёмким. Но это также означает, что язык Kotlin должен быть спроектирован так, чтобы компиляторы могли надёжно принимать программы без этих типовых подсказок. Мы называем это выводом типов, но по определению вывод типов означает, что компилятор должен определить пропущенные типы так, чтобы программа успешно прошла проверку типов.
Но что, если мы можем определить, что программа безопасна, не определяя эти отсутствующие типы? Что, если мы можем сделать это даже тогда, когда таких типов в принципе не существует? И что, если мы можем сделать это эффективнее любого алгоритма вывода типов? Исследуя алгоритмы типизации следующего поколения для Kotlin, мы обнаружили, что можем эффективно выйти за пределы возможностей вывода и проверки типов. Мы разработали алгоритм «type-outference» (внешнего вывода типов), который эффективно определяет «согласованность типов» — свойство, которому удовлетворяют все программы, выводимые и проверяемые по типам (но не наоборот).
Хотя вывод типов остаётся важным для обратной связи и этапа компиляции, согласованность типов — куда более гибкое свойство, а type-outference задаёт ясные принципы для проектирования возможностей языка, которые можно эффективно проверять. В этом докладе, представив ключевые идеи, мы покажем, как они направляют создание ожидаемых и гипотетических возможностей Kotlin: объединённые типы для ошибок, условное наследование для типобезопасного сравнения значимых типов и неявную полиморфность для невыплывающих ссылок.
источник
✍️ @kotlin_lib
Программисты на Kotlin регулярно опускают неинформативные типы в своих программах. Это делает разработку быстрее, код — легче для чтения, а сопровождение — менее трудоёмким. Но это также означает, что язык Kotlin должен быть спроектирован так, чтобы компиляторы могли надёжно принимать программы без этих типовых подсказок. Мы называем это выводом типов, но по определению вывод типов означает, что компилятор должен определить пропущенные типы так, чтобы программа успешно прошла проверку типов.
Но что, если мы можем определить, что программа безопасна, не определяя эти отсутствующие типы? Что, если мы можем сделать это даже тогда, когда таких типов в принципе не существует? И что, если мы можем сделать это эффективнее любого алгоритма вывода типов? Исследуя алгоритмы типизации следующего поколения для Kotlin, мы обнаружили, что можем эффективно выйти за пределы возможностей вывода и проверки типов. Мы разработали алгоритм «type-outference» (внешнего вывода типов), который эффективно определяет «согласованность типов» — свойство, которому удовлетворяют все программы, выводимые и проверяемые по типам (но не наоборот).
Хотя вывод типов остаётся важным для обратной связи и этапа компиляции, согласованность типов — куда более гибкое свойство, а type-outference задаёт ясные принципы для проектирования возможностей языка, которые можно эффективно проверять. В этом докладе, представив ключевые идеи, мы покажем, как они направляют создание ожидаемых и гипотетических возможностей Kotlin: объединённые типы для ошибок, условное наследование для типобезопасного сравнения значимых типов и неявную полиморфность для невыплывающих ссылок.
источник
✍️ @kotlin_lib
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
🤖 Android-приложение на чистой архитектуре: разберём шаг за шагом
Чистая архитектура — это фундамент для масштабируемых Android-приложений. 26 ноября в 20:00 на открытом уроке вы создадите клиент-серверное приложение с нуля и поймёте, как строить код, который не рушится при первом изменении требований.
❗️ Разберём API для скачивания фото и описания, подключим интернет, разделим приложение на слои с использованием MVVM и реализуем логику отображения данных. Если вы уже работаете Android-разработчиком уровня junior и хотите перейти к продвинутым архитектурным решениям — этот вебинар станет отличным стартом.
👉 Вебинар проходит в преддверии старта курса «Android Developer. Professional». Регистрация открыта: https://vk.cc/cRrnFl
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Чистая архитектура — это фундамент для масштабируемых Android-приложений. 26 ноября в 20:00 на открытом уроке вы создадите клиент-серверное приложение с нуля и поймёте, как строить код, который не рушится при первом изменении требований.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
ktorgen - Kotlin + KSP + Ktor Client Code Generator
Легкий процессор Kotlin KSP для генерации клиентского кода Ktor с аннотациями
https://github.com/kingg22/ktorgen
✍️ @kotlin_lib
Легкий процессор Kotlin KSP для генерации клиентского кода Ktor с аннотациями
https://github.com/kingg22/ktorgen
✍️ @kotlin_lib
🔥1
Deploying Kotlin Multiplatform at Google Workspace | Jason Parachoniak and Johan Bay
I like to talk you through some of the bugs we found and optimizations as we launched Kotlin Multiplatform to some users with Google Workspace. We'll talk through some bugs, performance issues and fixes with comparisons to ObjectiveC. As well as a Q/A with the developers of worked on this.
https://www.youtube.com/watch?v=5lkZj4v4-ks
✍️ @kotlin_lib
I like to talk you through some of the bugs we found and optimizations as we launched Kotlin Multiplatform to some users with Google Workspace. We'll talk through some bugs, performance issues and fixes with comparisons to ObjectiveC. As well as a Q/A with the developers of worked on this.
https://www.youtube.com/watch?v=5lkZj4v4-ks
✍️ @kotlin_lib
YouTube
Deploying Kotlin Multiplatform at Google Workspace | Jason Parachoniak and Johan Bay
Recording brought to you by American Express. https://americanexpress.io/kotlin-jobs
I like to talk you through some of the bugs we found and optimizations as we launched Kotlin Multiplatform to some users with Google Workspace. We'll talk through some bugs…
I like to talk you through some of the bugs we found and optimizations as we launched Kotlin Multiplatform to some users with Google Workspace. We'll talk through some bugs…
🏆 Пройди тест из 10 вопросов, проверь свой уровень знаний и приходи учиться на онлайн-курс «Kotlin Backend Developer. Professional» от OTUS!
На курсе:
🎫 Курс можно приобрести в рассрочку
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Джедайские техники Kotlin: inline-функции и reified-типы
Kotlin радует лаконичным синтаксисом и мощными фичами, но некоторые из них остаются недооценёнными. Сегодня поговорим про две джедайские техники Kotlin, о которых многие слышали, но не все используют в полной мере: это inline-функции и reified-типы.
https://habr.com/ru/companies/otus/articles/970264/
✍️ @kotlin_lib
Kotlin радует лаконичным синтаксисом и мощными фичами, но некоторые из них остаются недооценёнными. Сегодня поговорим про две джедайские техники Kotlin, о которых многие слышали, но не все используют в полной мере: это inline-функции и reified-типы.
https://habr.com/ru/companies/otus/articles/970264/
✍️ @kotlin_lib
👍4
Building Responsive Applications with RxKotlin with Sarp Remzi Aksu
Этот доклад посвящён принципам реактивного программирования и показывает, как RxKotlin можно использовать для управления асинхронными операциями, обработки потоков данных и построения реактивной архитектуры. Также мы рассмотрим стратегии интеграции RxKotlin с другими возможностями и библиотеками Kotlin, обеспечивая чистый и поддерживаемый код. По итогам сессии участники получат прочное понимание реактивного программирования с RxKotlin и смогут создавать высокоотзывчивые и надёжные приложения.
https://www.youtube.com/watch?v=Og2vqfPkvm4
✍️ @kotlin_lib
Этот доклад посвящён принципам реактивного программирования и показывает, как RxKotlin можно использовать для управления асинхронными операциями, обработки потоков данных и построения реактивной архитектуры. Также мы рассмотрим стратегии интеграции RxKotlin с другими возможностями и библиотеками Kotlin, обеспечивая чистый и поддерживаемый код. По итогам сессии участники получат прочное понимание реактивного программирования с RxKotlin и смогут создавать высокоотзывчивые и надёжные приложения.
https://www.youtube.com/watch?v=Og2vqfPkvm4
✍️ @kotlin_lib
YouTube
Building Responsive Applications with RxKotlin with Sarp Remzi Aksu
This talk delves into the principles of reactive programming and demonstrates how RxKotlin can be leveraged to manage asynchronous operations, handle data streams, and implement reactive architectures. Additionally, we will explore strategies for integrating…
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🤖 Как сделать свой оператор Flow и не сломать логику приложения
Когда стандартных операторов Flow становится мало — значит, вы вышли на следующий уровень. На открытом уроке вы узнаете, как писать свои операторы для сложных сценариев, управлять потоками данных и правильно обрабатывать события в Kotlin. Мы покажем, как реализовать собственный оператор, работать с несколькими потоками в рамках одного и не потерять производительность.
❗️ Разберём подходы, которые помогают писать читаемый и поддерживаемый асинхронный код. Урок будет полезен Android-разработчикам уровня junior+, которые уже знакомы с Flow и хотят разобраться, как расширять его под реальные задачи.
🗓 8 декабря, 20:00 МСК. Открытый урок проходит в преддверии старта курса «Android Developer. Professional». Регистрация открыта: https://vk.cc/cS2KQn
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Когда стандартных операторов Flow становится мало — значит, вы вышли на следующий уровень. На открытом уроке вы узнаете, как писать свои операторы для сложных сценариев, управлять потоками данных и правильно обрабатывать события в Kotlin. Мы покажем, как реализовать собственный оператор, работать с несколькими потоками в рамках одного и не потерять производительность.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Ktor Server Fundemantals. Часть 1
Освойте разработку бэкенда на Ktor с использованием Kotlin! Эта серия материалов охватывает основы Ktor, маршрутизацию, обработку запросов, аутентификацию и другие ключевые концепции, которые помогут вам эффективно создавать надежные серверные приложения.
источник
✍️ @kotlin_lib
Освойте разработку бэкенда на Ktor с использованием Kotlin! Эта серия материалов охватывает основы Ktor, маршрутизацию, обработку запросов, аутентификацию и другие ключевые концепции, которые помогут вам эффективно создавать надежные серверные приложения.
источник
✍️ @kotlin_lib
👍3🥰1