Compatible with IntelliJ IDEA (Ultimate, Community), Android Studio and 17 more
Bundled in IntelliJ IDEA. Provides language support for Kotlin, a modern programming language designed to make developers happier.
Get answers to your questions in the Public Kotlin Slack
Share your feedback or report your issues in the Issue tracker.

What’s New

1.9.20

  • Kotlin/JVM: support for Java 21 bytecode
  • Kotlin/Native: custom allocator enabled by default, full parallel mark available in the GC, deprecated targets disabled, obligatory opt-in for all cinterop declarations (except for platform libraries), the GC scheduler tracking objects in big chunks, legacy memory manager disabled
  • Kotlin Multiplatform: hierarchy template available by default, full support for Gradle Configuration cache, the default support for third-party cinterop libraries, reworked configuration of compiler settings in multiplatform projects
  • Kotlin/Wasm: support for WASI, new `wasm-wasi` target and rename `wasm` target to `wasm-js`, compatible with recent updates in Wasm GC
  • Kotlin/JS: using open-addressing hash map in the JS stdlib, ability to generate one JS file for each Kotlin source file
  • Libraries: experimental support for `enumEntries()` function, further stabilization of Kotlin/Native standard library
  • Gradle: support for Gradle versions 8.0 and 8.1, new build metrics for Kotlin/Native tasks, support for test fixtures to access internal declarations, new property to configure custom path to Konan and its dependencies
Learn more in the changelog.

1.9.0

  • Language: stable `rangeUntil` operator, stable data objects feature, stable `Enum.entries` replacement for `Enum.values()`, stable `@Volatile` annotation
  • K2: JVM promoted to beta, basic support for Kotlin/Native and multiplatform projects, support for Kotlin/JS since 1.8.20
  • Kotlin/JVM: `@JvmDefault` and old `-Xjvm-default` modes deprecated with error, support for Java 20 bytecode
  • Kotlin/Native: new custom memory allocator, no object initialization when accessing `const val`, partial linkage enabled by default
  • Kotlin Multiplatform: new name for the `android` block, new Android source set layout enabled by default, support for Gradle configuration caching in multiplatform libraries, ability to disable sources publication in the Kotlin Multiplatform Gradle plugin, ability to add dependencies between Pods when using the CocoaPods Gradle plugin
  • Kotlin/Wasm: runtime footprint reduced and performance improved, set system default browser as default for `wasmBrowserRun` task, improved JS interop, more compiler and IDE diagnostics for JS interop
  • Kotlin/JS: deprecated legacy backend with error, deprecated external Enum class, extracted DOM API from standard library to module automatically added to builds, partial linkage enabled by default, IR compiler used by default, changed default destination of production distributions, deprecated `kotlin-js` Gradle plugin that is replaced by `kotlin-multiplatform` Gradle plugin, experimental support for ES6 classes and modules, reduced memory consumption for production builds
  • Libraries: stable standard library functions for open-ended ranges, new common function to get regex capture group by name, new `HexFormat` to format and parse hexadecimals, stable time API, new path utility to create parent directories, reviewed and stabilized Kotlin/Native standard library
  • Gradle: build scans show whether K1 or K2 compiler is used, new Gradle property `kotlin.experimental.tryK2` to try the K2 compiler, new project-level compiler options for Kotlin/JVM plugin, removed `KotlinCompile` task’s `classpath` property, exposed `jvmTargetValidationMode` property in `KotlinCompile` task, configurable standalone mode for Kotlin/Native iOS simulator tests, removed support for `org.gradle.api.internal.HasConvention` Gradle element, added `optIn` and `progressiveMode` compiler options, compiler plugins are published separately and Gradle plugins add them as compiler arguments, kapt tasks don’t trigger eager task creation, minimum supported Android Gradle plugin version is 4.2.2
Learn more in the changelog.

1.8.20

  • Language: experimental replacement of the Enum class `values()` function with the `entries` property, experimental lifting restrictions on secondary constructor bodies in value (inline) classes, experimental data objects
  • Kotlin/JVM: JVM IR for the kapt stub generation enabled by default
  • Kotlin/Native: bug fix for stack overflow when using regex with large input, improved output for Gradle errors in Xcode, new API for garbage collection statistics, dynamic framework linking without generating C-interop bindings
  • Kotlin Multiplatform: preview support for Gradle composite builds, experimental DSL for the new source set hierarchy
  • Kotlin/Wasm: experimental version of the new Kotlin/Wasm compiler backend
  • Kotlin/JS IR: alpha version of the K2 support, fully-qualified method name in source maps, declarations with non-minified names, the `dukat` integration removed, TypeScript definitions generated only on explicit Gradle action
  • Libraries: experimental support for the `AutoCloseable` interface and the `use()` extension function in the common standard library, experimental support for the Base64 encoding in the standard library, experimental support for the `@Volatile` annotation that works for both JVM and Kotlin/Native
  • Gradle: the new approach to incremental compilation enabled by default, new Gradle plugins alignment platform, compatibility with the Gradle 7.4, 7.5, and 7.6 releases, experimental ability to back up only updated files during incremental compilation, new property for adding a Git branch name to HTTP build reports
  • Maven: new `components.xml` to automatically compile Kotlin Maven projects, ability to set up kapt’s `aptMode`
  • Serialization: prototype of serialization plugin that works with the K2 compiler, prohibited implicit serializer customization via companion object
Learn more in the changelog.

1.8.0

  • Kotlin/JVM: removed old backend, the `-Xuse-old-backend` compiler option is no longer supported, support for Java 19 bytecode
  • Kotlin/Native: support for Xcode 14 and `watchosDeviceArm64` target, new `ObjCName`, `HiddenFromObjC` and `ShouldRefineInSwift` annotations to improve Objective-C and Swift interoperability, CocoaPods Gradle plugin dynamically links registered Kotlin frameworks by default
  • Kotlin/JS: stable IR compiler that uses incremental compilation by default, deprecated old backend, support for reporting when `yarn.lock` is updated during the CI process, Gradle plugin supports `kotlin.js.browser.karma.browsers` property to set browser test targets
  • Compiler: Lombok compiler plugin supports the `@Builder` annotation
  • Kotlin Multiplatform: new Android source set layout that can be enabled in Gradle plugin with `kotlin.mpp.androidSourceSetLayoutVersion=2` and includes new naming schema for `KotlinSourceSet` entities, naming change to compilation configurations created by the Kotlin Multiplatform Gradle plugin
  • Gradle: ensured compatibility with Gradle 7.3, disable daemon fallback strategy with `kotlin.daemon.useFallbackStrategy`, exposed available Kotlin compiler options as Gradle lazy properties, minimum supported Gradle version is 6.8.3, minimum supported Android Gradle plugin version is 4.1.3
  • Libraries: stable extensions for `java.util.Optional` in stdlib, stable `toTimeUnit()`, `toDurationUnit`, `cbrt()` functions, JVM target is 1.8 for stdlib, experimental enhancement of `TimeMark` allowing `elapsedNow` to be read from multiple `TimeMark`s simultaneously, added extension functions to `java.nio.file.Path` that can recursively copy or delete directories
Learn more in the changelog.

1.7.20

  • K2: support for the `all-open, `no-arg`, SAM-with-receiver, Lombok, Parcelize, AtomicFU, and `jvm-abi-gen` compiler plugins
  • Language: experimental `..<` (`rangeUntil`) operator for ranges with the excluded end bound, deprecated inferring type variables into an empty intersection type, warning on potentially empty intersection types, improved script handling in source roots
  • Language: builder inference in cases with multiple lambdas now requires explicit type arguments; using an uninferred stub type as a receiver in a call during type inference is now forbidden and leads to an error
  • Kotlin/JVM: experimental generic inline classes, more optimized cases of delegated properties
  • Kotlin/Native: the new memory manager enabled by default (with deprecated freezing API and an ability to run Kotlin `suspend` functions on non-main threads from Swift), customizable bundle identifier of the generated framework, improved documentation generated to the Objective-C header
  • Kotlin/JS IR: improved speed on the first build when using the incremental compilation, faster klib generation
  • Libraries: a new experimental interface for ranges with the excluded end bound, new walk and visit extensions for `java.nio.file.Path`
  • Gradle: simplified configuration method for the JVM Toolchain, fixed deprecations and ensured compatibility with Gradle 7.1
Learn more in the changelog.

1.7.0

  • New Kotlin K2 compiler for JVM in Alpha
  • Language: changes in builder inference, allowed implementation by delegation to inlined value of inline class, changes in Opt-in annotations
  • Kotlin/JVM: performance improvements, removed `1.6` target version
  • Kotlin/Native: performance improvement for the new memory manager, embeddable compiler jar for Kotlin/Native by default, returning `Void` instead of `KotlinUnit` from `suspend` functions by default, generation of standalone executable for androidNative targets by default, prohibited exceptions through Objective-C bridges
  • Kotlin/JS: performance improvements, smaller bundle size, generated `.js` compatible with old browsers and engines
  • Libraries: extensions for `java.util.Optional` in stdlib, min/max(By/With) functions for non-empty collections, stable `Regex.matchAt()`, `Regex.matchesAt()`, `findAnnotations()`, `DeepRecursiveFunction` functions, getting named groups of a regex match in JS and Native
  • Gradle: Experimental incremental compilation, minimal supported Gradle version is `6.7.1` and Android Gradle plugin is `3.6.4`, allow to override default Kotlin/Native compiler download URL, deprecated `kotlin.compiler.execution.strategy`, removed `useExperimentalAnnotation`, `experimentalAnnotationInUse`, `kotlin.coroutines` (and related `kotlin.experimental.coroutines` Gradle DSL option) properties
Learn more in the changelog.

1.6.20

  • Language: prototype of context receivers, definitely non-nullable types
  • Kotlin/JVM: experimental parallel compilation of a single module, callable references to functional interface constructors, improved compatibility for default methods
  • Kotlin/Native: instantiation of annotation classes, improved interop with Swift async/await, better stack traces with libbacktrace, performance improvements
  • Multiplatform: hierarchical project structure by default
  • CocoaPods Gradle plugin: new tasks for generating a suitable podspec for XCFramework publishing, accepting the podspec version when configuring CocoaPods for Kotlin/Native
  • Kotlin/JS: IR compiler improvements (incremental compilation, lazy initialization of top-level properties, separate JS files for project modules), export improvements
  • Security: using relative paths in klibs, persisting yarn.lock for Kotlin/JS Gradle projects, installation of npm dependencies with --ignore-scripts by default
  • Gradle: compiler execution strategies, cleaning up deprecated properties and options
Learn more in the changelog.
For more details, see [What’s New in Kotlin 1.6.20](https://kotlinlang.org/docs/whatsnew1620.html).

1.6.20

  • Language: prototype of context receivers, definitely non-nullable types
  • Kotlin/JVM: experimental parallel compilation of a single module, callable references to functional interface constructors, improved compatibility for default methods
  • Kotlin/Native: instantiation of annotation classes, improved interop with Swift async/await, better stack traces with libbacktrace, performance improvements
  • Multiplatform: hierarchical project structure by default
  • CocoaPods Gradle plugin: new tasks for generating a suitable podspec for XCFramework publishing, accepting the podspec version when configuring CocoaPods for Kotlin/Native
  • Kotlin/JS: IR compiler improvements (incremental compilation, lazy initialization of top-level properties, separate JS files for project modules), export improvements
  • Security: using relative paths in klibs, persisting yarn.lock for Kotlin/JS Gradle projects, installation of npm dependencies with --ignore-scripts by default
  • Gradle: compiler execution strategies, cleaning up deprecated properties and options
Learn more in the changelog.
For more details, see [What’s New in Kotlin 1.6.20](https://kotlinlang.org/docs/whatsnew1620.html).

1.6.0

  • Language: stable exhaustive `when` statements for enum, sealed and Boolean subjects, stable conversions from regular to suspending functional types, stable instantiation of annotation classes, improvements to type inference and builder inference
  • Kotlin/JVM: support for repeatable annotations with runtime retention and bytecode optimizations for delegated properties
  • Kotlin/Native: a preview of the new memory manager, support for Xcode 13, updated LLVM to 11.1.0, compiler caches enabled by default for `linuxX64` and `iosArm64`, cross-compilation for MinGW targets, unified compiler plugin ABI with JVM and JS IR backends, reworked unhandled exception handling API
  • Kotlin/JS: ability to disable downloading Node.js and Yarn
  • Gradle: removed 'kotlin.useFallbackCompilerSearch' build option
  • Stdlib: top-level `readln()` and `readlnOrNull()` on JVM, stable `typeOf()`, Duration API, and сollection builders, improvements to the existing API
Learn more in the changelog.

1.5.30

  • Kotlin/JVM: instantiation of annotation classes and improvements to how nullability annotations are handled.
  • Kotlin/Native: support for Apple silicon, Kotlin DSL improvements for the Cocoapods Gradle plugin, deprecation of linkage with DLLs without import libraries for MinGW targets, optimized access to object declarations with `const val`s only, and debugger improvements.
  • Swift/Objective-C interop: experimental interoperability with Swift 5.5 async/await and improved singleton mapping.
  • C interop: passing by value for more C structs.
  • Kotlin Multiplatform: the ability to share custom `cinterop` libraries between platforms, XCFrameworks support, and a new default publishing setup for Android artifacts.
  • Kotlin/JS: IR backend in Beta and source map generation for it.
  • Gradle: Java toolchain support and changes to Kotlin daemon JVM argument configuration.
  • Standard library: improvements to the `Regex` and `Duration` APIs.
  • Compiler improvements: changes to the opt-in requirement mechanism, improvements to type inference on recursive generic types, and the elimination of builder inference restrictions.
Learn more in the changelog and this blog post.

1.5.21

A bug fix release for Kotlin 1.5.20. Learn more in the changelog.

1.5.20

Released: June 24, 2021
  • String concatenation uses invokedynamic on JVM by default.
  • Annotations on function type parameters are emitted to the bytecode on JVM 1.8+.
  • Support calling Lombok-generated Java methods from Kotlin code in the same module.
  • Kotlin/Native: improved performance of `Array.copyInto` inside one array.
  • Kotlin/Native: opt-in export of KDoc comments to the generated Objective-C headers with the `-Xexport-kdoc` compiler option.
  • Experimental caching of annotation processors' classloaders.
  • Parallel compilation of Kotlin sources is controlled by `--parallel` Gradle property. The `kotlin.parallel.tasks.in.project` property is deprecated.
  • Aligned behavior of stdlib functions `isLowerCase`/`isUpperCase` and `digitToInt` across platforms.
For more details, see What’s New in Kotlin 1.5.20 and this blog post

1.5.10

Released: May 24, 2021
A bug fix release for Kotlin 1.5.0. Learn more in the changelog.

1.5.0

Released: May 5, 2021
  • JVM IR backend by default.
  • New language features by default: inline value classes, sealed interfaces, and JVM records support.
  • New default JVM target: 1.8 (1.6 is deprecated)
  • SAM adapters use invokedynamic on JVM by default. Lambdas can use invokedynamic with an opt-in via `-Xlambdas=indy`.
  • Deprecation of `-Xjvm-default=enable` and `-Xjvm-default=compatibility` compiler modes and `@JvmDefault` annotation.
  • Kotlin/Native compilation time improvements.
  • Kotlin/JS uses webpack 5 by default.
  • New stdlib APIs: math functions `floorDiv()` and `mod()`, collection function `firstNotNullOf()`, strict version of `String.toBoolean()`.
  • Stabilization of experimental APIs: unsigned integers, extensions for Java NIO Path API, Char-to-int and Char-to-code conversions, locale-agnostic functions for upper-/lowercasing.
  • Changes in the experimental Duration API.
  • Simplified kotlin-test dependency usage.
  • New and updated assertion functions in kotlin-test.
  • New library versions: coroutines 1.5.0, serialization 1.2.0, dateTime 0.2.0
  • Fixed compiler exceptions.
Learn more in:

1.4.30

Released: February 4, 2021
  • Preview of new language features: JVM records support, sealed interfaces, and stable inline classes.
  • Kotlin/JVM: IR backend is now in Beta.
  • Kotlin/Native: performance improvements, new `watchosX64` simulator target, support for Xcode 12.2 libraries.
  • Kotlin/JS: prototype lazy initialization of top-level properties.
  • Support for Gradle configuration cache.
  • Standard library API improvements: locale-agnostic API for upper/lowercasing text and clear Char-to-code and Char-to-digit conversions.
For more details, see What’s New in Kotlin 1.4.30 and this blog post.

1.4.20

Released: November 23, 2020
  • Kotlin/JS: New project templates, improved Gradle plugin, experimental compilation with errors mode in the IR compiler.
  • Kotlin/Native: New escape analysis mechanism, wrapping of Objective-C exceptions, various functional and performance improvements.
  • IDE: Experimental support for Code Vision, the Redirect input from option in Kotlin run configurations, and more.
  • JEP 280 (invokedynamic) string concatenation is available on the JVM.
  • Changes to the layout of multiplatform projects.
  • Improved CocoaPods support.
  • Standard library improvements: Extensions for java.nio.file.Path and performance optimizations.
  • Deprecation of the kotlin-android-extensions compiler plugin. Parcelable implementation generator has moved to the new kotlin-parcelize plugin.
For more details, see What’s New in Kotlin 1.4.20 and this blog post.

1.4.0

Released: August 17, 2020
  • New compiler with better type inference.
  • IR backends for JVM and JS in Alpha mode (requires opt-in).
  • A new flexible Kotlin Project Wizard for easy creation and configuration of different types of projects.
  • New IDE functionality to debug coroutines.
  • IDE performance improvements: many actions, such as project opening and autocomplete suggestions now complete up to 4 times faster.
  • New language features such as SAM conversions, trailing comma, and other.
  • Type annotations in the JVM bytecode and new modes for generating default interfaces in Kotlin/JVM.
  • New Gradle DSL for Kotlin/JS.
  • Improved performance and interop with Swift and Objective-C in Kotlin/Native.
  • Support for sharing code in several targets thanks to the hierarchical structure in multiplatform projects.
  • New collection operators, delegated properties improvements, the double-ended queue implementation ArrayDeque, and much more new things in the standard library.
For more details, see What’s New in Kotlin 1.4.0 and this blog post.

To get the most out of the changes and improvements introduced in Kotlin 1.4, join our Online Event where you will be able to enjoy four days of Kotlin talks, Q&As with the Kotlin team, and more.
May 07, 2024
Version 232-1.9.24-release-822-IJ10072.27

Rating & Reviews

3.6
130 Ratings (35,654,058 Downloads)
5
4
3
2
1

Doesn't support older versions of IntelliJ Idea Ultimate, e.g. 2022.2.5. I can't use new versions of Spring libraries that were compiled with a version of Kotlin compiler not supported by this plugin.

Also the fact that compiled Kotlin code is not backwards compatible is dissapointing. I'd rather use Java for my projects that Kotlin because it stays relevant for longer period of time, not requiring me to update my projects and IDEs every week.

+1

I'm getting an issue when I try to install the plugin from the disk in my current Intellij version "IU-233.15026.9"

"Plugin 'Kotlin' (version '232-1.9.23-release-779-IJ10072.27') is not compatible with the current version of the IDE, because it requires build 232.* or older but the current build is IU-233.15026.9"

for that reason my kotlin clasess doesn't recognize.

+2

Ella

17.03.2024

Sometimes sucks or hangs.

0

Additional Information

Vendor:
Copyright:
Plugin ID:
org.jetbrains.kotlin