JetBrains выпустила обновление языка с поддержкой восстановления стека корутин, новыми функциями для коллекций и экспериментальным нативным образом компилятора.
7 сентября 2026 года JetBrains официально выпустила Kotlin 2.4.20 — очередное плановое обновление языка, которое привнесло изменения практически во все уголки экосистемы. Релиз затронул стандартную библиотеку, Kotlin/Native, Kotlin/Wasm, Kotlin/JS, инструменты сборки и сам компилятор. Рассказываем, что нового и почему это стоит внимания разработчиков.
Стандартная библиотека: корутины, коллекции и тесты
Главное нововведение в стандартной библиотеке — поддержка восстановления стека вызовов для корутин. В Kotlin 2.4.20 появился экспериментальный интерфейс StackTraceRecoverable, который улучшает интеграцию с библиотекой kotlinx.coroutines. Теперь при обработке ошибок в асинхронном коде можно получать более полную информацию о цепочке вызовов — это серьёзно упрощает отладку. Раньше подобное требовало прямой зависимости от kotlinx.coroutines, теперь же интерфейс живёт прямо в стандартной библиотеке.
Для повседневной работы с коллекциями добавили три новых экспериментальных функции: allEqual() проверяет, все ли элементы коллекции равны между собой; allDistinct() и allDistinctBy() помогают проверить уникальность элементов. Мелочь, а приятно — больше не нужно писать велосипеды для элементарных проверок.
Кроме того, расширили возможности kotlin.test — добавили новые перегрузки функций проверки с поддержкой отложенного вычисления сообщений об ошибках. Теперь assertion-ы стали гибче, а диагностика падающих тестов — информативнее.
Kotlin/Native: Swift, инкременталка и Package.swift
В Kotlin/Native обновили экспорт в Swift: появились новые возможности для работы с Kotlin-кодом из Swift, включая поддержку sealed-классов и кросс-языкового наследования. Инкрементальную компиляцию артефактов klib включили по умолчанию — это должно заметно сократить время повторной сборки в multiplatform-проектах. Также для зависимостей Swift Package Manager теперь автоматически генерируются файлы Package.swift, что упрощает интеграцию Kotlin-кода со Swift-проектами.
Kotlin/Wasm: Wasmtime, компаньоны и размер бинарников
У Kotlin/Wasm сразу несколько улучшений. Во-первых, изменили поведение вызовов верхнего уровня require() в объявлениях @JsFun. Во-вторых, порядок инициализации объектов-компаньонов привели в соответствие с JVM-поведением. В-третьих, в Kotlin Gradle Plugin добавили поддержку Wasmtime как среды выполнения для таргета wasmWasi. И наконец, уменьшили размер бинарных файлов для функциональных интерфейсов.
Kotlin/JS: DSL для тестов и suspend-лямбды
Для Kotlin/JS добавили новый DSL для тестирования браузерного кода. Появилась возможность экспортировать приостанавливающие лямбда-функции (suspend lambda) как асинхронные функции JavaScript. Также улучшили экспортируемость классов данных (data class).
Gradle и Build Tools API
Kotlin 2.4.20 получил поддержку Gradle 9.7.0 и улучшенное отображение информации через API проблем Gradle. В Build Tools API добавили поддержку новых целей: Kotlin/JS, Kotlin/Wasm и метаданных Kotlin.
Компилятор: kotlinr и нативный образ
В состав релиза вошли две заметные возможности компилятора. Во-первых, новая команда kotlinr для запуска Kotlin-кода. Во-вторых, отдельный нативный образ компилятора — экспериментальная замена стандартному kotlin, которая обещает более быстрый старт и высокую производительность.
Кстати, если у вас в CI или скриптах вызывается kotlin, обновление на 2.4.20 их сломает — команду запуска переименовали в kotlinr. Это стоит учесть при обновлении.
Как обновиться
Kotlin 2.4.20 уже доступен в последних версиях IntelliJ IDEA и Android Studio. Чтобы обновить проект, достаточно изменить версию Kotlin в файлах сборки на 2.4.20. Например, для Gradle:
plugins { kotlin("jvm") version "2.4.20" }
Если используется командный компилятор, его можно скачать со страницы релиза проекта на GitHub.
Полный список изменений доступен в официальной документации и на GitHub.