Mungomash LLC
Kotlin Versions

2011 – 2026

Kotlin Versions

Every public release of Kotlin — Kotlin 1.0 in February 2016 through the current 2.x line — with the K1 / K2 compiler progression, Kotlin Multiplatform target stability, and the headline language features per release. Plus the JetBrains M-series prehistory (2011–2015), the Google I/O 2017 Android announcement, the 2019 Kotlin-first turn, the K2 compiler rewrite, the November 2023 KMP stable launch, and the Compose Multiplatform story.

Era & compiler

Era

M-series — M1 – M14 milestones, 2011–2015 (in prose only; pre-1.0)
1.x (pre-K2) — Kotlin 1.0 – 1.9, 2016–2023, original K1 compiler
2.x (K2) — Kotlin 2.0+, 2024 onward, K2 compiler default

Compiler

K1 Original Kotlin compiler frontend, 2010–2024
K2 alpha K2 frontend opt-in preview, 1.7 onward
K2 beta K2 frontend opt-in beta, 1.9
K2 stable K2 default for all targets, 2.0+

Kotlin version table

Version
Kotlin 2.2
2.x (K2)
K2 stable
May 2025
Continued K2 maturation. Power-assertions stable. Context parameters (preview).
  • K2 compiler is fully default across JVM, Native, JS, and Wasm targets.
  • Power-assertions feature graduates to stable: assert failures show the value of every sub-expression in the assertion.
  • Context parameters (the successor to context receivers) move forward in preview.
  • Continued KMP / Compose Multiplatform tooling refinements; iOS interop reliability work.
  • Always confirm exact features against the official 2.2 release notes — this row is refreshed quarterly.
Version
Kotlin 2.1
2.x (K2)
K2 stable
Nov 2024
First K2 follow-up. when-with-subject guards, multi-dollar interpolation.
  • First Kotlin release after the 2.0 K2-stable line. K2 is the default; K1 remains as a fallback for problem cases.
  • Guard conditions in when expressions: is Foo if value > 0 -> ....
  • Multi-dollar string interpolation: $$"...$marker..." for verbatim shell-template strings.
  • Continued KMP toolchain work; iOS Simulator improvements.
  • Continued Compose Multiplatform stabilization for iOS.
Version
Kotlin 2.0
2.x (K2)
K2 stable
May 2024
K2 compiler default. Years-long frontend rewrite ships stable. The watershed Kotlin release.
  • K2 compiler default across all targets. Years-long rewrite of the Kotlin frontend — cleaner architecture, better incremental compilation, faster build times, stricter type inference, IDE intelligence improvements. K1 remains opt-in for projects that hit edge cases.
  • Released at KotlinConf 2024 (May 2024). Branded as the foundation for the next decade of language and platform work.
  • Smart-cast improvements that K1 couldn’t do: cleaner casts across try/catch, function-call boundaries, and through anonymous-class hierarchies.
  • Compose Compiler integration moved into the Kotlin distribution, removing the matched-Compose-version pinning that had been a constant source of friction.
  • The major-version bump from 1.9 to 2.0 was a deliberate signal: the K2 compiler is a structural change, not a feature drop.
Version
Kotlin 1.9
1.x (pre-K2)
K2 beta
Jul 2023
Final 1.x line. K2 reaches beta. Last 1.x before the K2-default 2.0.
  • The final Kotlin 1.x major. K2 compiler is opt-in beta on JVM; alpha on Native and JS.
  • Stable ..< open-ended ranges; enumEntries as a successor to values().
  • Kotlin Multiplatform iOS Simulator targets reach beta.
  • K2 work consumes the bulk of 1.9.x point releases (1.9.10, 1.9.20, 1.9.21, 1.9.22, 1.9.23, 1.9.24) leading up to the 2.0 cutover.
Version
Kotlin 1.8
1.x (pre-K2)
K1
Dec 2022
JDK 19 support. @JvmStatic on companion. Recursive copy / delete.
  • JDK 19 support; experimental support for JDK 17 features in Kotlin source.
  • New experimental functions in kotlin.io: recursive copy and delete.
  • Kotlin/Native: improved memory model performance, SQLite improvements.
  • K2 work continues; alpha quality on JVM.
Version
Kotlin 1.7
1.x (pre-K2)
K2 alpha
Jun 2022
K2 compiler alpha (JVM only). Definitely-non-nullable types.
  • K2 compiler enters alpha on JVM — opt-in, not the default. The first publicly testable build of the new frontend.
  • Definitely non-nullable types: the T & Any upper-bound syntax.
  • Builder inference improvements; the new memory model for Kotlin/Native reaches stable.
Version
Kotlin 1.6
1.x (pre-K2)
K1
Nov 2021
Stable suspending entry point (suspend fun main). Sealed when exhaustiveness.
  • suspend fun main reaches stable.
  • Exhaustive when over sealed classes / Boolean: warning becomes a compile-time error in 1.7.
  • Type inference for recursive generic types.
Version
Kotlin 1.5
1.x (pre-K2)
K1
May 2021
Sealed interfaces. Inline value classes. Java records support.
  • Sealed interfaces — not just sealed classes. Enables exhaustive when across multiple-inheritance hierarchies.
  • Inline value classes reach stable as the successor to inline classes; the @JvmInline value class form.
  • Support for Java records (Kotlin 1.5+ on JDK 16+ recognizes records as data carriers).
  • New JVM IR backend default; new JS IR backend stable.
Version
Kotlin 1.4
1.x (pre-K2)
K1
Aug 2020
New type inference algorithm. Trailing commas. SAM conversions for Kotlin interfaces.
  • New type-inference algorithm becomes default; foundational for what later became the K2 frontend rewrite.
  • Trailing commas in argument lists, parameter lists, and other comma-separated constructs.
  • SAM (functional interface) conversions for Kotlin fun interface declarations.
  • Kotlin Multiplatform Mobile (KMM) preview; the Apple Silicon and unified JVM IR work begin.
Version
Kotlin 1.3
1.x (pre-K2)
K1
Oct 2018
Coroutines stable. Multiplatform first cut. Inline classes (experimental).
  • Coroutines reach stable. The structured-concurrency / suspending-function design that has shaped every Kotlin project since. Replaces the Rx-based async stacks that Android and server-side Kotlin had been building on.
  • Multiplatform projects (KMP) v1 — first publicly recommended cut. Common, JVM, JS, Native, and Native iOS targets.
  • Inline classes ship as experimental (later renamed value classes in 1.5).
  • Contracts on standard-library functions: checkNotNull tells the type checker about nullability across function boundaries.
Version
Kotlin 1.2
1.x (pre-K2)
K1
Nov 2017
Multiplatform projects (experimental). Array literals in annotations.
  • Multiplatform projects ship as experimental — the precursor to KMP’s 2023 stable arrival.
  • Array literals in annotations: @Annotation(["a", "b"]).
  • Lateinit on top-level properties / local variables.
Version
Kotlin 1.1
1.x (pre-K2)
K1
Mar 2017
Coroutines (experimental). Type aliases. Bound callable references.
  • Coroutines ship as experimental. Two years before reaching stable in 1.3.
  • Type aliases.
  • Kotlin/JS reaches stable.
  • Bound callable references: obj::method.
Version
Kotlin 1.0
1.x (pre-K2)
K1
Feb 15, 2016
First stable release. Kotlin/JVM only. Backwards-compat guarantee starts here.
  • Kotlin 1.0 ships February 15, 2016 after five years of M-series development at JetBrains. JVM-only at this stage; Kotlin/JS and Kotlin/Native were still in development.
  • Public commitment to language and standard-library backwards compatibility within the 1.x line. Source compatibility, binary compatibility, and migration tools became the team’s recurring obligations.
  • Designed by JetBrains under Andrey Breslav (Kotlin language lead 2010–2020). Apache 2.0 licensed.
  • The pitch that won early adopters: a more concise Java alternative with null-safety in the type system, full Java interop, and Java-fluent IntelliJ tooling on day one.

Each row anchors as #kotlin-N-M (e.g. #kotlin-2-0, #kotlin-1-3). The pre-1.0 M-series milestones are folded into the prose history below rather than the table; they predate the backwards-compatibility guarantee. Confirm exact features against kotlinlang.org/docs/releases.html — this table is refreshed quarterly.

Kotlin Multiplatform target stability

Kotlin Multiplatform (KMP) lets one Kotlin codebase target multiple platforms by compiling shared code to each platform’s native artifact format. Each target has gone through its own stability ramp on a different schedule. The most consequential stability event was November 2023, when KMP itself was declared stable — covering the core Common, JVM, Android, and iOS targets. Other targets (Wasm, JS browser bindings) continue maturing past that landmark.

Target 1.3 (2018) 1.5 (2021) 1.7 (2022) 1.9 (2023) 2.0+ (2024+)
Common (shared) Beta Stable Stable Stable Stable
JVM Stable Stable Stable Stable Stable
Android Beta Stable Stable Stable Stable
iOS (Native) Alpha Beta Beta Stable Stable
Native (other) Alpha Beta Beta Stable Stable
JS (Node / browser) Alpha Beta Beta Stable Stable
Wasm Experimental Alpha Alpha

KMP itself was declared stable in November 2023 with the Kotlin 1.9.20 release — the milestone covers the Common / JVM / Android / iOS / JS combination most cross-platform projects target. Wasm continues to mature; Compose Multiplatform’s Wasm target reached alpha alongside it. Status legend: Stable = production-ready; Beta = recommended but breaking changes possible; Alpha = early access; Experimental = opt-in flag required; = not available.

The JetBrains origin and the M-series prehistory (2010–2015)

Kotlin started inside JetBrains in 2010, led by language designer Andrey Breslav. JetBrains had a specific itch: their own engineers had been writing IntelliJ IDEA and the rest of the JetBrains tool suite in Java for a decade. Java’s slow evolution under Sun and then Oracle — particularly the long delays around lambdas (eventually shipped in Java 8 in 2014) and the lack of practical null-safety — meant JetBrains was paying a daily productivity tax on a language that was no longer evolving fast enough for the work they were doing.

Scala existed and JetBrains evaluated it; the team concluded its compile times and complexity were unacceptable for IntelliJ-scale codebases. The decision was to build their own JVM language — pragmatic, Java-interop-first, IDE-tooling-first, with null-safety in the type system and a smaller surface area than Scala. Kotlin was announced in July 2011; the name comes from Kotlin Island, off St. Petersburg.

The development period from 2011 through early 2016 ran through fourteen Milestone (M) builds — M1 through M14, each a publicly downloadable preview, none with backwards-compatibility guarantees. The community that adopted these early milestones — Square, Pinterest, parts of the Android developer community, JetBrains’ own engineers — gave Kotlin its first real test corpus. Kotlin 1.0 in February 2016 was the formal end of the M-series and the start of the backwards-compatibility commitment.

Google I/O 2017 — first-class Android language

At Google I/O 2017 (May 17, 2017), Google announced first-class support for Kotlin on Android. Until that point, Kotlin had been usable on Android via the JetBrains Kotlin plugin since Studio 1.x, and a small but vocal cohort of Android developers (Square, Pinterest, Basecamp, Trello) had been shipping production Kotlin code. The I/O announcement made it official: Android Studio 3.0 (October 2017) shipped Kotlin first-class — bundled, no plugin install, with templates, code completion, lint, and refactoring across Kotlin and Java sources. (Cross-link: Android Studio 3.0.)

Two pressures drove the call. Oracle v. Google — the eleven-year API copyright case over Android’s reimplementation of 37 Java SE packages — was still active at I/O 2017, and would remain so until the Supreme Court’s fair-use ruling in April 2021. Reducing structural reliance on the Java APIs themselves was a strategic hedge, even if Google ultimately won the case. (See the Java Versions page for the Java-side narrative on the same case.)

The other pressure was developer demand. Kotlin’s reception inside the Android community had been rapidly positive through 2015–2017; Google could either lead the Kotlin transition or be dragged behind it. They led. In May 2019 at I/O, Google announced Kotlin-first — new platform APIs are designed Kotlin-first, new Jetpack libraries ship Kotlin-only, the Android Developers documentation defaults to Kotlin code samples. Java is still supported, but the planning is done in Kotlin.

The Kotlin Foundation

In February 2018, JetBrains and Google jointly established the Kotlin Foundation to safeguard Kotlin’s development as a public, multi-stakeholder project. JetBrains retained primary stewardship of language design and compiler implementation; Google joined as a founding sponsor. The Foundation owns the Kotlin trademark, oversees the language committee that approves breaking changes, and provides governance separate from any single corporate sponsor — a deliberate hedge against the uncertainty around Java’s post-Oracle stewardship that had unsettled the community a few years earlier.

Coroutines and structured concurrency

Coroutines — suspending functions and the structured-concurrency library built around them — were Kotlin’s most consequential addition since 1.0. Shipped as experimental in 1.1 (March 2017) and reaching stable in 1.3 (October 2018), they replaced the RxJava-shaped async stacks that Android and server-side Kotlin had been building on through the late 2010s. The pitch: write asynchronous code in a synchronous style, with cancellation and lifetime built into the type system rather than the convention.

The structured-concurrency design (Roman Elizarov’s lineage) became influential beyond Kotlin. Java itself absorbed similar ideas in Project Loom — virtual threads in Java 21 (September 2023) — though the API shapes diverge (Loom doesn’t require suspend markers; Kotlin does). Apple’s Swift 5.5 (September 2021) shipped a third take on the same problem — async/await, structured concurrency, and actors as a first-class language feature — and went further than either Kotlin or Java in baking thread-isolation into the type system, with Swift 6.0 (2024) making strict-concurrency data-race safety the compile-time default. Three languages, three different starting points, converging on similar ergonomics.

The K2 compiler — a multi-year frontend rewrite

The original Kotlin compiler — retroactively named K1 — was carrying a decade of architectural decisions that had become limiting. Type inference was performant but inflexible in subtle ways. Incremental compilation was approximate. IDE intelligence (Kotlin in IntelliJ / Studio) had to share the same frontend with batch compilation, which constrained both. The team began work on a replacement frontend — K2 — around 2017–2018.

K2 reached publicly testable alpha in Kotlin 1.7 (June 2022, JVM only, opt-in). Beta in Kotlin 1.9 (July 2023). And shipped as the default compiler in Kotlin 2.0 (May 2024) — the deliberate major-version bump signaling a structural change rather than a feature drop. The transition took about five years end-to-end and was the largest investment in Kotlin’s history.

What K2 changed: cleaner internal architecture (FIR — the new intermediate representation — replaces the old PSI-based frontend), faster incremental compilation, smarter type inference (cleaner casts across try/catch and through anonymous-class hierarchies), better IDE intelligence (the analyzer that powers Studio / IntelliJ now uses the same frontend as batch compilation), and a clearer foundation for future language features (context parameters, value classes, multiplatform improvements). K1 remains opt-in for projects that hit edge cases.

Kotlin Multiplatform — from experiment to stable (2017–2023)

Kotlin Multiplatform (KMP) was the answer to a structural pressure on the language: more than half of the Kotlin community was on Android, where Kotlin/JVM compiles to JVM bytecode that runs on the Android Runtime, but the iOS half of the mobile market was unserved. JetBrains had been working on Kotlin/Native (LLVM-based, ahead-of-time compiled to native binaries) since 2017 for exactly this reason. KMP composed Kotlin/JVM, Kotlin/Native, Kotlin/JS, and a Common shared module into a model where one shared codebase could target multiple platforms.

The progression was deliberate: experimental in Kotlin 1.2 (November 2017), refined through KMM (Kotlin Multiplatform Mobile) preview in 1.4 (August 2020), beta on the iOS target through 1.5–1.8, and finally stable in Kotlin 1.9.20 (November 2023). The stable milestone covered Common, JVM, Android, and iOS — the combination most cross-platform projects target. Wasm continues to mature; the JS browser story stabilized alongside iOS.

KMP’s adoption has been measured. It’s a meaningful tool for teams with substantial business logic that benefits from cross-platform sharing — networking, data persistence, business rules — while leaving each platform’s native UI (UIKit/SwiftUI on iOS, View/Compose on Android) to its own platform team. Major adopters include Netflix, McDonald’s, Cash App / Block, Philips, Touchlab. The Compose Multiplatform story (Compose UI on iOS, Wasm, desktop) is a separate parallel push that takes the sharing further into UI; Compose Multiplatform for iOS reached stable in 2024.

Kotlin on the server side

Kotlin’s adoption beyond Android has been quieter but real. Spring Framework 5 (September 2017) shipped first-class Kotlin support — null-safe APIs, Kotlin-flavored DSLs for routing and bean configuration, coroutines integration in Spring WebFlux. Ktor, JetBrains’ own asynchronous HTTP server / client framework, has been a steady alternative. Micronaut, Quarkus, and http4k all support Kotlin-first development. The major JVM frameworks have all opened to Kotlin without making it primary; coexistence is the steady state.

People who actually shaped Kotlin

JetBrains: Andrey Breslav (Kotlin language lead 2010–2020; designed most of the language); Roman Elizarov (current Kotlin lead since 2020; designed the coroutines library and the structured-concurrency model); Stanislav Erokhin (compiler lead); Mikhail Glukhikh (K2 frontend lead); Svetlana Isakova (Kotlin in Action co-author and developer-relations lead); Hadi Hariri (former JetBrains developer-advocacy lead).

Google / Android: Stephanie Cuthbertson (Android developer experience leadership during the Kotlin-first turn); Florina Muntenescu, Romain Guy, and the Jetpack team (Kotlin-first API design across Jetpack Compose and the rest of the Android KTX surfaces).

Community: Jake Wharton (Square; one of the earliest production Kotlin advocates; libraries that shaped the ecosystem — Retrofit, Okio); Egor Andreevich (Kotlin/Native lineage); Donn Felker, Antonio Leiva, and the Kotlin-on-Android book / blog circuit that brought Kotlin to mainstream Android developers in 2016–2018; Touchlab’s Kevin Galligan (longtime KMP advocate). Conferences: KotlinConf (annual since 2017) is the canonical venue.

Sources: kotlinlang.org/docs/releases.html; JetBrains Kotlin blog; github.com/JetBrains/kotlin/releases; KEEP — Kotlin Evolution and Enhancement Proposals; Kotlin Foundation. Cross-references: Android Studio Versions, Java Versions, Android Versions. Last updated April 2026.

Mungomash LLC · More data pages