Назад в ленту

Вышел Kotlin 2.4.20: улучшения стандартной библиотеки, поддержка Wasmtime и новая команда kotlinr

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.

Справка по теме (FAQ)
Что нового в стандартной библиотеке Kotlin 2.4.20?
Добавлен интерфейс StackTraceRecoverable для восстановления стека корутин, новые функции для работы с коллекциями (allEqual, allDistinct, allDistinctBy) и расширены возможности kotlin.test.
Что изменилось в Kotlin/Native?
Обновлён экспорт в Swift, инкрементальная компиляция klib включена по умолчанию, а для зависимостей Swift Package Manager автоматически генерируются файлы Package.swift.
Что такое kotlinr и зачем он нужен?
kotlinr — это новая команда для запуска Kotlin-кода, которая пришла на смену старой команде kotlin. Обновление на 2.4.20 сломает скрипты, в которых используется kotlin — их нужно будет заменить на kotlinr.
Поддерживает ли Kotlin 2.4.20 Gradle 9.7.0?
Да, в новой версии добавлена поддержка Gradle 9.7.0 и улучшено отображение информации через API проблем Gradle.