JetBrains has released an update to the Kotlin programming language. Kotlin 2.0.20 features concurrent marking for the garbage collector and other performance improvements, along with bug fixes for Kotlin 2.0.0.
Unveiled August 22, Kotlin 2.0.20 follows the May 23 release of Kotlin 2.0.0. Installation instructions for Kotlin 2.0.20 can be found at jetbrains.com.
With the Kotlin 2.0.20 release, experimental support for concurrent marking for Kotlin/Native has been added to the garbage collector (GC). By default, application threads were paused when the GC marks objects in the heap. Now the marking phase of the GC can be run simultaneously with application threads, which should significantly shorten the GC pause time and help improve application responsiveness, JetBrains said. Kotlin/Native enables compiling Kotlin code to native binaries.
Kotlin 2.0.20 begins a change to the data class copy function. Currently, when you create a data class using a private
constructor, the automatically generated .copy()
function doesn’t provide the same visibility. In future Kotlin releases, the default visibility of the .copy()
function will be the same as the constructor. Kotlin 2.2.20 starts this migration plan by issuing warnings in code where the visibility will change in the future.
Additionally, Kotlin 2.0.20 adds support for Gradle versions 8.6 to 8.8, and introduces a new option for sharing JVM artifacts between Gradle projects as class files.
For Kotlin Multiplatform development, Kotlin 2.0.20 offers improvements to source set management in multiplatform projects along with deprecation of compatibility with some Gradle plugins due to recent changes in Gradle.
The Kotlin plugins that support Kotlin 2.0.20 are bundled in the latest IntelliJ Idea and Android Studio IDEs. Developers do not need to update the Kotlin plugin in their IDEs.
With Kotlin 2.0.0, JetBrains unveiled a Stable release of the Kotlin K2 compiler, for better performance, and introduced an open-source Kotlin data set for large language model (LLM) builders. Support for named exports in Kotlin/Wasm also was featured.