# Kotlin 1.3.70: Reactions to Incremental Improvements and Multiplatform Compatibility

DevFeed: [Kotlin 1.3.70: Reactions to Incremental Improvements and Multiplatform Compatibility](<https://devfeed.tech/articles/kotlin-1-3-70-reactions-25002.md>)

Original publisher: [Read original article](<https://dev.to/touchlab/kotlin-1-3-70-reactions-3de3>)

Author: Russell Wolf

Published: 2020-03-05T18:11:44Z

Content type: opinion

Language: en

Sources: [DEV Community 👩💻👨💻: Russell Wolf](<https://devfeed.tech/sources/dev-community-russell-wolf.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Development](<https://devfeed.tech/topics/development.md>), [Library](<https://devfeed.tech/topics/library.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [FIRST](<https://devfeed.tech/topics/first.md>), [Template](<https://devfeed.tech/topics/template.md>)

Tags: [coding](<https://devfeed.tech/tags/coding.md>), [community](<https://devfeed.tech/tags/community.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [experimental](<https://devfeed.tech/tags/experimental.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [improvements](<https://devfeed.tech/tags/improvements.md>), [inclusive](<https://devfeed.tech/tags/inclusive.md>), [incremental](<https://devfeed.tech/tags/incremental.md>), [jetbrains](<https://devfeed.tech/tags/jetbrains.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-native](<https://devfeed.tech/tags/kotlin-native.md>), [kotlinmultiplatform](<https://devfeed.tech/tags/kotlinmultiplatform.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [news](<https://devfeed.tech/tags/news.md>), [quality](<https://devfeed.tech/tags/quality.md>), [release](<https://devfeed.tech/tags/release.md>), [software](<https://devfeed.tech/tags/software.md>)

## AI overview

A commentary on Kotlin 1.3.70, focusing on incremental quality-of-life improvements, renamed opt-in annotations, and new common implementations of data structures. It also cautions Kotlin/Native Multiplatform users that binaries are incompatible across versions and recommends waiting for compatible library dependencies before updating.

## Source excerpt

Kotlin 1.3.70 is here! As the release blog post says, there's not much in the way of major landmark new features, but lots of incremental improvements and some interesting little quality-of-life stuff which I'm excited about. It's the first new language version since KotlinConf so it's cool to see some of the things JetBrains has been working on since then, even if a lot of the big-ticket stuff won't come until 1.4. Before we jump in, a quick reminder for Multiplatform users: Since Kotlin/Native is still in Beta, binaries are not compatible across versions. This means that you shouldn't update your Multiplatform projects until all of your library dependencies have Kotlin 1.3.70-compatible versions. If you're a KaMPKit user, you can follow this issue to see when the libraries we use in that template are ready. Here's a couple of items in the blog post I thought were noteworthy. Renaming of experimental annotations I've been using @Experimental and @UseExperimental for over a year now in Multiplatform Settings, and find it to be a really nice way for libraries to mark more volatile APIs. Simply create an annotation class MyExperimentalApi and annotate it with @Experimental, and then consumers of anything marked @MyExperimentalApi will have to explicitly opt-in to their dependence on experimental behavior. But I've also noticed some usage in the wild (including in JetBrains' own libraries) where it was more about marking internal APIs they didn't want other people depending on, rather than just APIs that might be unstable. So I'm not surprised that they're renaming these to @RequiresOptIn and @OptIn to broaden the usage. A side note here since I've seen people miss this: A @RequiresOptIn annotation deliberately leaks to callers so that they're forced to opt-in as well. If you don't want to do that (for instance, because the experimental usage is just an internal implementation detail), you should use @OptIn(MyExperimentalApi::class) instead so you only need to annotate