Kotlin
A concise multiplatform language developed by JetBrains
Seven Highlights from the Kotlin Roadmap Autumn 2021
Kotlin is built for translating ideas into code. We try to remove all obstacles that are in the way of your ideas and make reading and writing Kotlin simple and fun. To make this possible, we need a very complex engineering system that consists of many parts: the language syntax, the compiler frontend and backends, the IDE, the build tooling, the libraries, and all of the other tools. To maintain and develop all of these components, we have about 110 people on our team. All of them work simultaneously on different projects and tasks.
If you want to stay up to date with all of these projects, you can check out the Kotlin public roadmap. We’ve just updated it to reflect our plans for Kotlin 1.7.0 and beyond! If you just want a quick overview of what’s going on without going into the details, you can get the gist of what we are working on in this blog post, which covers the seven most notable highlights.
For those who don’t want to read we prepared a video with these highlights!
1. K2 compiler frontend is on its way to Alpha
The compiler is the heart of Kotlin. It is the powerhouse of the entire language that drives every aspect of creating an application, including IDE responsiveness, build speed, binary size, and efficiency. That’s why we’re actively investing into the Kotlin compiler, notably by building the new K2 compiler.
Our team is currently focusing on bringing the K2 compiler frontend to the Alpha state. The frontend is the compiler part that is responsible for code analysis and transformation to an intermediate representation, which is later processed by backends. The new compiler is already showing great results! It’s able to compile huge JVM production projects such as Kotlin itself and IntelliJ IDEA. For those projects, the compilation speed is twice as fast on average.
We will continue stabilizing it by compiling more projects and fixing bugs and performance issues. The plan is to have the K2/JVM compiler public preview up and running by Spring 2022. The Alpha version will provide a preview of the new plugin infrastructure that will allow the community to build more tools.
We’re also investing in support for non-JVM backends, which will allow multiplatform projects to be built with the K2 compiler.
Explore the roadmap tickets:
- Release the K2/JVM compiler in Alpha
- Stabilize the Compiler Plugin API
- Investigate JS backend for the K2 compiler
2. Focus on stability and robustness for KMM
KMM is going Beta in Spring 2022! That means we are now focused on finding and fixing as many issues that interrupt user workflows as possible. This includes code highlighting, navigation and completion, debugging, and build tooling stability.
We’ll also continue to improve the concurrency experience. We’ve just released an Experimental Kotlin/Native memory manager. It smoothes out the differences between the JVM and Native platforms and makes it easy for you to write common, concurrent code for both iOS and Android platforms. Further plans include improving stability and performance to make the future migration to the new memory manager easier.
Explore the roadmap tickets:
Kotlin moves fast! Check out our public roadmap to get a full picture of all the features that we’re focusing on right now!
3. Namespaces research and prototyping
In Kotlin, you can have an extension to the class only if the corresponding class declares a companion object. That brings with it many unwanted consequences, such as the inability to extend many of the third-party library classes and inefficiency when declaring private static class members.
We’re planning to prototype a solution that is based on introducing the new concept of a namespace – a kind of ephemeral object without an instance that every class automatically possesses. Namespace members are naturally compiled down to static members on the JVM. This keeps static helpers grouped together in the source, but removes all of the object overhead. This is intended to significantly improve Kotlin’s interoperability with Java’s static methods, and will enable extensions on any Java types. As a result, it should help with further Kotlin/JVM adoption.
Explore the roadmap tickets:
4. Kover, a Kotlin test coverage tool
We believe that having a robust, Kotlin-specific solution for collecting the test coverage of Kotlin applications and libraries is essential for our ecosystem growth. That’s why we introduced Kover, a Gradle plugin that measures code coverage for Kotlin code and works with all language constructs, including inline functions.
Among our long-term plans are DSL for verification rules, JaCoCo usage stabilization, advanced filtering, and advanced Android support. We plan to develop Kover based on your feedback, so try it out and share your feedback with us!
Explore the roadmap tickets:
5. Dokka, a revamped tool for generating lib docs
Another tool for library developers that we work on is Dokka, a documentation generation tool. We’re promoting it to Beta with 1.6.0 and, in doing so, focusing on usability and design unification with official Kotlin documentation. We want developers to have a seamless experience when they work with Kotlin documentation, no matter whether it’s the official language reference or library documentation. Using a uniform visual style and structure helps reduce the cost of context switching.
The next step is to promote Dokka to Stable with only one stable output – HTML. Other output formats like GitHub Markdown or Jekyll, API for plugin developers, and wall-to-wall support for Java will stay in Alpha. To move them forward, we will run a series of interviews and wait for your feedback as well!
Explore the roadmap tickets:
Hint: Want to participate in UX studies? Apply!
6. Improving the Kotlin IDE plugin release adoption
Moving the Kotlin IDE plugin to the IntelliJ platform development infrastructure was a complex engineering task that allowed us to provide support for the new tooling functionality together with the IntelliJ platform. However, there are some drawbacks. For example, if you’re an EAP user, you may have noticed that IntelliJ IDEA EAP releases don’t support preview versions of upcoming Kotlin releases. We plan to improve our internal infrastructure to address this and other problems with Kotlin IDE plugin release adoption.
Explore the roadmap tickets:
7. Playground improvements
Have you ever been in a situation at a party where you wanted to show your friends some brand new Kotlin feature and suddenly realised that you didn’t bring your laptop? For this and many other cases, such as learning the language, prototyping, and knowledge sharing, we have Kotlin Playground. Since Kotlin Playground has become so popular among all of you, we want to provide you with even more capabilities!
If you are a new user, we plan to simplify the user experience with more examples and tips. If you are an advanced user, we want to provide you with the ability to synchronize progress between devices, open multiple tabs, export files, and more. We will even make Kotlin Playground mobile friendly, so that the party won’t be ruined if you forget your laptop!
Explore the roadmap tickets:
——–
The community is what makes Kotlin great. We want to build our plans on your feedback and ideas, so don’t hesitate to share them with us via YouTrack, Slack, or other channels.
We will continue covering future Kotlin plans in our blog and YouTube channel, so subscribe to both and stay tuned!
Learn more
- The Kotlin Roadmap
- #kotlin-roadmap channel in public Slack (get an invite)
- Kotlin YouTube channel