Today we are releasing Kotlin 1.3 together with a set of accompanying libraries, build tools, and learning materials!
We develop Kotlin to be a good tool for all application developers, at all scales and on all platforms. In Kotlin 1.3 coroutines graduated to stable, making non-blocking code easy to read and write. Scalability has never been as approachable before! This release also brings Kotlin/Native Beta that compiles Kotlin code directly to native binaries. The multiplatform capabilities of Kotlin now cover all supported platforms so one can share business logic between such components as Android and iOS apps. Servers can share logic with web and mobile clients too, and multiplatform libraries make everyday tasks easily portable.
We’ll organize a series of webinars covering major features of 1.3. Subscribe here:
Community and Ecosystem
Kotlin has seen an unprecedented growth in adoption this year. Since January 2018, about 1.5 million users wrote Kotlin code, and this number has more than doubled since last year. The trends on StackOverflow and in our public Slack are also very encouraging. We are grateful to the Kotlin community for being supportive and welcoming!
We are happy to see the ecosystem around Kotlin grow and mature. Kotlin is friends with Google Cloud Platform, the Spring Framework and Gradle, not to mention the first-class support on Android. The open source community is creating excellent libraries such as RxKotlin, mockito-kotlin, TornadoFX, Kodein, and ΛRROW. And projects like Square’s Okio and LibreOffice are migrating to Kotlin or planning to do so. Everyone is welcome to join the Kotlin ecosystem with their great ideas and projects!
Many people outside JetBrains contributed to Kotlin 1.3 with pull requests, bug reports and all kinds of feedback. We appreciate your help a lot and are really happy to move Kotlin forward together!
Coroutines are now stable
Coroutines are a modern way to write non-blocking asynchronous code that’s easy to understand and evolve. It’s a powerful tool for anything from offloading work onto background workers to implementing complicated network protocols. The kotlinx.coroutines library hits 1.0 release and provides a solid foundation for managing asynchronous jobs at any scale including composition, cancelation, exception handling and UI-specific use cases.
Kotlin/Native uses LLVM to compile Kotlin sources to standalone binaries (no VM required!) for various operating systems and CPU architectures including iOS, Linux, Windows, Mac and even WebAssembly and embedded systems like STM32. It features fully automatic memory management, can interoperate with C, Objective-C (and Swift), and exposes platform APIs such as Core Foundation, POSIX, and any native library you fancy!
The Kotlin/Native runtime promotes immutable data and prohibits any attempts of sharing unprotected mutable state between threads. In fact, threads don’t exist for Kotlin/Native, they are abstracted away as a low-level implementation detail and replaced by workers — a safe and manageable way of doing concurrency.
Multiplatform projects and tooling
Kotlin 1.3 ships with a set of multiplatform libraries that cover everyday tasks such as HTTP, serialization and managing coroutines. The easiest way to write multiplatform code is to rely on such libraries. You can also create your own multiplatform libraries wrapping platform-specific dependencies into a common API.
Tooling for Kotlin/Native and Multiplatform
Kotlin 1.3 features tooling support for Kotlin/Native and Multiplatform projects that’s available in IntelliJ IDEA Community Edition, IntelliJ IDEA Ultimate, and Android Studio. All code editing features such as error highlighting, code completion, navigation and refactoring are available in all the three IDEs. We’ll be working on more advanced features and integrations with commercial tooling.
Ktor 1.0 Beta
Ktor, our connected applications framework that implements the entire HTTP stack fully asynchronously using coroutines, has reached Beta and is available at ktor.io.
In addition to everything covered so far, this release comes with many other features and improvements, including:
- Experimental support for inline classes for performance and type safety
- Experimental support for unsigned integers to facilitate byte-manipulation and other low-level code
- Subject in
whenexpressions to reduce boilerplate
- Contracts to improve static analysis for library calls
- No-arg entry point for cleaner beginners’ experience
- Sequence debugger for visualizing lazy computations
- Scratch files, REPL and scripting improvements for smoothly working with scripts and code snippets
- Standard Library expanded to Kotlin/Native, improved support for Kotlin/JS, got Random on all platforms and has other improvements and bug fixes.
- Experimental incremental compilation for Kotlin/JS
We’ve just published all the videos from KotlinConf 2018 covering the hottest topics of the 1.3 release. Check out the opening keynote and session recordings to deep dive on what’s new and noteworthy:
We do our best to make learning Kotlin easy and fun. Out of the numerous resources available, we’d like to highlight these:
- A new course by Svetlana Isakova and Andrey Breslav is starting on Coursera
- Atomic Kotlin, a book for beginners by Bruce Eckel and Svetlana Isakova is open for early access
- The new play.kotl.in mini-web-IDE has Koans, Examples and embeddable code snippets
- The EduTools plugin helps learn Kotlin right in the IDE
- Certified Kotlin Training is available from multiple providers around the world
The Kotlin 1.3 webinars will be a great starting point for everyone.
How to upgrade
As always, you can try Kotlin online at play.kotl.in.
- In Maven, Gradle and npm: Use
1.3.0as the version number for the compiler and the standard library. See the docs here.
- In IntelliJ IDEA: 2018.3 has Kotlin 1.3 bundled, in earlier versions Install or update the Kotlin plugin to version 1.3.
- In Android Studio: Install or update the plugin through Plugin Manager.
- In Eclipse: install the plugin using Marketplace.
- The command-line compiler can be downloaded from the Github release page.