Latest in branch 1.3
1.3.72
Released 15 Apr 2020
(6 years ago)
SoftwareKotlin
Version1.3
Status
End of life
Supported
Java versions
Java 13
Initial release1.3.0
29 Oct 2018
(7 years ago)
Latest release1.3.72
15 Apr 2020
(6 years ago)
Security supportNo
Release noteshttps://github.com/JetBrains/kotlin/releases/tag/v1.3.72
Source codehttps://github.com/JetBrains/kotlin/tree/v1.3.72
Documentationhttps://kotlinlang.org/docs/home.html
Kotlin 1.3 ReleasesView full list

What's New in Kotlin 1.3?

Kotlin 1.3 is a major release focused on stabilizing key language features and expanding its multi-platform reach. The headline is the official stabilization of coroutines, alongside significant advancements for Kotlin/Native and new experimental goodies for developers to try.

Category Key Changes
Stable Features Coroutines, Kotlin/Native Beta, Multi-platform Projects, Contracts
Experimental Features Inline Classes, Unsigned Integer Types
Standard Library New functions for collections, text, and bitwise operations
Tooling Kotlin/Native IDE support, improved JavaScript DCE, compiler performance

Why are coroutines in Kotlin 1.3 such a big deal?

Coroutines moved out of experimental status and are now a stable part of the language. This matters because it gives you a green light for production use. You can write complex asynchronous code that looks sequential, making it much easier to reason about compared to callback-based patterns.

The core coroutine APIs in kotlinx.coroutines also reached stability. In practice, this means libraries and frameworks can build on a solid foundation, and your investment in learning coroutines is future-proofed for the long term.

What can I do with Kotlin/Native in this version?

Kotlin/Native hit beta status, bringing the language to iOS, macOS, Windows, and embedded systems without a VM. The key achievement is interoperability: you can call into native code or export Kotlin code for use from C or Swift.

This opens the door for sharing core business logic across Android, iOS, and server applications. The toolchain also got IDE support, so you can work on Native projects directly from IntelliJ IDEA or Android Studio.

How do inline classes improve my code?

Inline classes, introduced as experimental, are a tool for type safety without the runtime overhead. You wrap a single value in a new type, like UserId around an Int, to prevent mixing up parameters. The compiler inlines the wrapper, so it's as fast as using the underlying value directly.

inline class Password(val value: String)
inline class UserName(val value: String)

fun authenticate(password: Password, userName: UserName) { ... }
// Compiler prevents calling authenticate(UserName("x"), Password("y"))

They're perfect for domain modeling, making APIs harder to misuse while keeping performance optimal.

What are contracts and how do they help?

Contracts are a compiler feature that lets library developers specify function behavior in a way the Kotlin compiler can understand. For example, they can tell the compiler that a function will initialize an object or that a predicate function returns true implies a non-null value.

// Example from stdlib: the compiler now knows `isEmpty()` check
// implies the collection size is zero.
@ExperimentalContracts
fun example(list: List<String>) {
    if (list.isNotEmpty()) {
        println(list[0]) // Compiler knows list[0] is safe
    }
}

This leads to smarter static analysis, reducing the need for redundant null checks or manual variable initialization in your code.

Are there new number types in Kotlin 1.3?

Yes, unsigned integer types are now available as an experimental feature. You get UByte, UShort, UInt, and ULong. This is useful for low-level APIs, binary data processing, or when you need to enforce non-negative values at the type level.

val hexCode: UInt = 0xFF00AABBU
val byteMask: UByte = 0b11001100u

The standard library also added new functions for bitwise operations like countLeadingZeroBits() and takeHighestOneBit(), making bit manipulation much cleaner.

FAQ

Is it safe to migrate to Kotlin 1.3 for a large production project?
Yes, the core language and standard library are stable. The main risk areas are the new experimental features like inline classes and unsigned integers, which require an explicit opt-in and their APIs may still change.

Do I need to rewrite my existing coroutine code for 1.3?
If you were using the experimental coroutines API from earlier Kotlin versions, you will likely need to update some imports and adapt to API changes. The migration path is documented, and the mental model remains the same.

Can I use Kotlin/Native to build a full iOS app?
Kotlin/Native is excellent for sharing business logic and data models. For the UI layer, you would typically use Swift/Objective-C or a cross-platform UI framework. It's best for the "write once, run anywhere" logic, not necessarily the entire app.

What's the real-world benefit of multi-platform projects?
It allows you to share Kotlin code between JVM (backend, Android), JavaScript (frontend), and Native (iOS) targets. You can write your data models, validation logic, or networking layer once and reuse it everywhere, ensuring consistency.

How do I try the new experimental features?
You need to explicitly opt-in with a compiler flag. For example, to use inline classes, you would add -Xinline-classes to your Gradle build script or use the @ExperimentalUnsignedTypes annotation for unsigned integers.

Releases In Branch 1.3

VersionRelease date
1.3.7215 Apr 2020
(6 years ago)
1.3.7123 Mar 2020
(6 years ago)
1.3.7003 Mar 2020
(6 years ago)
1.3.6126 Nov 2019
(6 years ago)
1.3.6018 Nov 2019
(6 years ago)
1.3.5022 Aug 2019
(6 years ago)
1.3.4103 Jul 2019
(6 years ago)
1.3.4019 Jun 2019
(6 years ago)
1.3.3125 Apr 2019
(7 years ago)
1.3.3011 Apr 2019
(7 years ago)
1.3.2106 Feb 2019
(7 years ago)
1.3.2023 Jan 2019
(7 years ago)
1.3.1106 Dec 2018
(7 years ago)
1.3.1013 Nov 2018
(7 years ago)
1.3.029 Oct 2018
(7 years ago)
1.3-rc418 Oct 2018
(7 years ago)
1.3-rc303 Oct 2018
(7 years ago)
1.3-rc227 Sep 2018
(7 years ago)
1.3-rc20 Sep 2018
(7 years ago)