Latest posts

The Daily Kotlin
9 Sept, 11:59
Kotlin Toolchain 0.12.1 — fixes, migration and a safety netKotlin Toolchain 0.12.1 is out with two bug fixes.Update from your project directory: ./kotlin updateAdditional updatesA new Gradle migration guide. The official walkthrough maps Gradle projects, convention plugins, dependencies and source sets to Toolchain modules, templates and platform qualifiers. JVM-only modules can keep their existing source layout with layout: maven-like.Trying Toolchain should be a reversible decision. That's why I built ktc-to-gradle. Start a real project with Toolchain's simpler declarative model, evaluate it in practice and keep using it when it fits. If a missing capability gets in the way, the converter gives you an escape hatch to a conventional Gradle Kotlin DSL build without rebuilding the configuration from scratch. The goal is to give more teams the confidence to adopt and test KotlinGitHubRelease 0.12.1 · JetBrains/kotlin-toolchainFull Changelog: v0.12.0...v0.12.1 Fixed bugs KTC-5769 — DR resolution error is shadowed by 'dependency was resolved but it's missing on disk' KTC-5799 — Cannot publish to repository &#...
The Daily Kotlin
7 Sept, 17:02
KotlinPoet 2.4.0KotlinPoet 2.4.0 adds support for explicit backing fields and fixes several bugs in generated code. It also changes how annotation arrays are written.Major changes:1. Explicit backing fields. You can now set a backing field's type and initializer with PropertySpec.Builder.backingFieldType() and backingFieldInitializer(). For example, a property can expose LiveData<String> while storing MutableLiveData<String> in its backing field. The language feature is stable in Kotlin 2.4 — #2325, KEEP-04302. Preparation for multi-field value classes. KotlinPoet now accepts value class declarations with more than one constructor property, such as a Color with separate alpha, red, green, and blue values. Previously, its validation rejected them. Compiler support is still in development under KEEP-0454 — #2329, KT-849043. Shorter annotation arrays. Array arguments inGitHubRelease 2.4.0 · square/kotlinpoetThanks to @eyupcanakman and @arimu1 for contributing to this release. New: Kotlin 2.4.20. New: KSP 2.3.11. New: Support for explicit backing fields. (#2325) New: value class validations have been ...
The Daily Kotlin
7 Sept, 13:10
Kotlin 2.4.20 (3/3)The final part of our 2.4.20 notes covers build tooling, performance and bug fixes.Major changes:1. Build Tools API for JS, Wasm and metadata. The Gradle plugin can use BTA for these compilations. Enable it with kotlin.js.runViaBuildToolsApi=true, kotlin.wasm.runViaBuildToolsApi=true and kotlin.metadata.runViaBuildToolsApi=true. BTA is planned to be enabled by default in 2.5.0 — KT-78214, KT-78216, KT-805092. KMP incremental compilation on JVM. The compiler records incremental compilation metadata per fragment, so commonMain no longer resolves against jvmMain class files during recompilation. This requires build tools to pass -Xfragment-incremental-classpath. Without it, the previous behaviour remains — KT-86409, KT-86410, KT-870573. Gradle. KGP is fully compatible with Gradle 7.6.3 through 9.7.0. Compiler diagnostics use their own IDs in the Problems API,TelegramThe Daily KotlinKotlin 2.4.20 (1/3) 2.4.20 is out, with the What's new page for the official summary. The release tag points to the same commit as RC3. Compared with 2.4.10, it includes 3,939 commits and 747 changelog tickets. This post covers language and compiler changes.…
The Daily Kotlin
7 Sept, 12:59
Kotlin 2.4.20 (2/3)The second part of our 2.4.20 notes covers the standard library, Kotlin/Native, Swift export, Wasm and JS.Major changes:1. Stdlib. StackTraceRecoverable (KEEP-0461) lets exceptions with extra constructor arguments define how kotlinx.coroutines copies them for stack-trace recovery, without a coroutines dependency. Collections, sequences and arrays gain allEqual/allEqualBy and allDistinct/allDistinctBy. kotlin-test assertions accept lazy message lambdas, as in JUnit 5. All these APIs are Experimental — KT-86595, KT-10380, KT-30270, KT-313052. Swift export. Swift classes can extend exported Kotlin classes and implement Kotlin interfaces using Swift libraries. This supports supercalls, properties, async members and default interface methods. Sealed hierarchies are exposed as Swift enums through a generated sealedType() function, allowing exhaustive switchTelegramThe Daily KotlinKotlin 2.4.20 (1/3) 2.4.20 is out, with the What's new page for the official summary. The release tag points to the same commit as RC3. Compared with 2.4.10, it includes 3,939 commits and 747 changelog tickets. This post covers language and compiler changes.…
The Daily Kotlin
7 Sept, 12:49
Kotlin 2.4.20 (1/3)2.4.20 is out, with the What's new page for the official summary. The release tag points to the same commit as RC3. Compared with 2.4.10, it includes 3,939 commits and 747 changelog tickets. This post covers language and compiler changes. The next two cover stdlib and platforms, then build tooling and fixes.Major changes:1. when via invokedynamic. This optimization is now Stable and enabled by default on JVM 21+. The compiler uses a typeSwitch bootstrap for type checks in when, replacing a series of instanceof checks. The -Xwhen-expressions=indy flag is no longer needed — KT-780792. Explicit context arguments and name-based destructuring. Both are marked Stable for language version 2.5. In 2.4.20, the default language version is 2.4, so they still require -Xexplicit-context-arguments and -Xname-based-destructuring=only-syntax. The destructuring flag alsoThe JetBrains BlogKotlin 2.4.20 Released - The JetBrains BlogThe Kotlin 2.4.20 release is out! This release brings performance improvements, bug fixes, and tooling updates, and more. Take a look!
The Daily Kotlin
2 Sept, 12:45
Kotlin 2.4.20-RC3Out, a week after RC2. One entry, one Critical fix — a ClassCastException from suspend conversion, broken since Beta1 — KT-88953. The release is around the corner.GitHubRelease Kotlin 2.4.20-RC3 · JetBrains/kotlinChangelog Compiler KT-88953 CCE caused by suspend conversion of nullable argument to nullable expected type
The Daily Kotlin
1 Sept, 12:55
KEEP-0469: Explicit Type ParametersGitHubKEEP/proposals/KEEP-0469-explicit-type-parameters.md at main · Kotlin/KEEPKotlin Evolution and Enhancement Process. Contribute to Kotlin/KEEP development by creating an account on GitHub.
The Daily Kotlin
26 Aug, 14:50edited
Kotlin 2.4.20-RC2Out. Five entries, all fixes, nothing new – the release is close.GitHubRelease Kotlin 2.4.20-RC2 · JetBrains/kotlinChangelog Compiler KT-88316 K/N: StackOverflowError in CastsOptimization when two nullable local variables are assigned to each other across nested loops Compose compiler b/549552317 Fixed a bug...
The Daily Kotlin
26 Aug, 08:11
kortex: Kotlin Toolchain skill updated for 0.12The kotlin-toolchain skill in kortex now supports Kotlin Toolchain 0.12. Support for projects still pinned to 0.11 remains available.Install it in Claude Code:/plugin marketplace add Heapy/kortex /plugin install kortex@kortexInstallation instructions for Codex and Junie are available in the repository README.Have fun with Kotlin!GitHubGitHubGitHub - Heapy/kortex: Agent Skills for Kotlin DevelopmentAgent Skills for Kotlin Development. Contribute to Heapy/kortex development by creating an account on GitHub.
The Daily Kotlin
26 Aug, 05:51
Kotlin Toolchain 0.12.0 — migration, compatibility, IDE (2/2)Part one covered the headline capabilities of Kotlin Toolchain 0.12.0. Part two: new baselines and platform defaults, broader dependency compatibility, safer publishing and a much better IDE plugin.Major changes:1. The baseline moves forward. The default JDK is 25 and the CLI now requires JDK 17; minimum Kotlin is 2.2.20, default 2.4.10. Android minSdk becomes 24, with new defaults for Ktor 3.5.2, Compose 1.11.1 and Spring Boot 4.1.0 — KTC-5708, KTC-57122. Platform and CLI cleanup. ios/app no longer supports iosX64; macosX64 leaves the defaults for macos/app, and watchosArm32 is deprecated. The old --root, --build-output and --shared-caches-root options are gone; publish standardizes on -m/--module and asks for --transitive or --non-transitive when the selected modules depend on other local ones — KTC-5462, KTC-57023.TelegramThe Daily KotlinKotlin Toolchain 0.12.0 — build, run, publish (1/2) Kotlin Toolchain 0.12.0 is the project's biggest release yet. First, the headline capabilities: KMP publishing, incremental JVM builds, a runnable Wasm target and IDE-free Hot Reload. Major changes: 1.…
The Daily Kotlin
26 Aug, 05:51
Kotlin Toolchain 0.12.0 — build, run, publish (1/2)Kotlin Toolchain 0.12.0 is the project's biggest release yet. First, the headline capabilities: KMP publishing, incremental JVM builds, a runnable Wasm target and IDE-free Hot Reload.Major changes:1. KMP library publication lands in preview. The toolchain compiles KMP metadata, generates kotlin-project-structure-metadata.json, assembles the all-metadata JAR and emits Gradle .module metadata. Native interop is covered too: cinterop KLIBs are commonized and published. Compose resources are not included yet — KTC-719, KTC-5437, KTC-56982. Kotlin incremental compilation for JVM targets, through the Build Tools API that the toolchain already used for non-incremental compiler calls. It is on by default with Kotlin 2.4 and newer. Compiler warnings are replayed when a compilation is served from the cache, instead of disappearing afterGitHubRelease 0.12.0 · JetBrains/kotlin-toolchainFull Changelog: v0.11.1...v0.12.0 See our release blog post (coming soon) for the highlights, and to learn about the tooling improvements. Breaking changes KTC-5221 — Update default JDK version to...
The Daily Kotlin
13 Aug, 17:42
Resilient sync: Gradle stops taking the IDE down with itUntil now one broken subproject or convention plugin aborted the entire sync — a 100-project build lost completion and highlighting exactly when you needed them to fix the build. Resilient sync changes the contract: the new BuildController.fetch(...) in the Tooling API returns the models that did resolve alongside structured failure info instead of throwing, so the IDE keeps working code fully usable and marks only what's actually broken. Nothing to enable — Gradle 9.7 plus IntelliJ IDEA 2026.2 switch it on by themselves.Gradle blogblog.gradle.orgResilient Sync: Your IDE Keeps Helping even when your Build is BrokenGradle 9.7 and IntelliJ IDEA 2026.2 bring resilient sync to IDE users. When part of your build fails to configure, Gradle still hands the IDE models for everything that succeeded, so you keep code completion...
The Daily Kotlin
13 Aug, 13:57
Michail Zarečenskij: Every language with generics has intersection types
The Daily Kotlin
12 Aug, 10:29
Kotlin 2.4.20-RCThe release candidate is out. Its changelog is the delta since Beta2 — 30 entries, at least 24 of them fixes — so this is the shape 2.4.20 will ship in.Major changes:1. Kotlin/Native incremental compilation is off again. Switched on by default for Beta1 and Beta2 as a stabilization experiment, it is turned back off for the RC — the only carry-over ticket in this changelog. Still opt-in via kotlin.incremental.native=true — KT-866572. The 2.4.0 Gradle sync regression is fixed: a 400+ module KMP project reported sync at 74.8s → 105.4s (+41%), Gradle execution alone up 76%. Dependency maps and host-specific metadata are now cached per source set — KT-877903. ClassCastException: Float cannot be cast to Unit when a suspend call's result is discarded in a when branch, seen in a plain LaunchedEffect. A Unit-returning suspend function can be resumed with a non-UnitGitHubRelease Kotlin 2.4.20-RC · JetBrains/kotlinChangelog Backend. J2KLIB KT-88165 Add Support for -XheaderModeType=compilation to improve header compilation performance KT-86239 [JKLIB] Investigate which type system context is needed in JklibI...
The Daily Kotlin
28 Jul, 13:39
KotlinLLM: LLM-generated bodies, committed as Kotlin sourceJetBrains Research has open-sourced KotlinLLM under Apache 2.0 — a research prototype for delegating runtime logic to an LLM from Kotlin code, without keeping the model in the request path.The unit is a Smart macro: an ordinary Kotlin call whose body is generated source code. Two are exposed — asLlm<F, T>(from, hint) turns unstructured input into typed Kotlin values, and mockLlm<T>() builds stateful interface implementations to use as test doubles.val issuesApiUrl: String = asLlm(repoInput, hint = "GitHub API URL: get all issues, including closed")val issues: List<Issue> = asLlm(response, hint = "Return all beginner-friendly issues for this repository")The argument against the obvious alternative is stated plainly: calling the model on every invocation is slow, non-deterministic and costly, and it makes the applicationGitHubGitHub - JetBrains-Research/kotlinllm-plugin: KotlinLLM is an IntelliJ IDEA plugin prototype for experimenting with LLM-driven…KotlinLLM is an IntelliJ IDEA plugin prototype for experimenting with LLM-driven Smart macros in Kotlin, enabling code generation, runtime updates, and hot-reloading. - JetBrains-Research/kotlinllm...
The Daily Kotlin
22 Jul, 14:19
Kotlin 2.4.20-Beta2https://github.com/JetBrains/kotlin/releases/tag/v2.4.20-Beta2Major changes:1. Swift Export: cross-language inheritance is here. The umbrella ticket for cross-language subtyping is closed: Swift types can subclass Kotlin classes — with supercalls, properties, async members, default interface methods. Sealed classes are supported too. KT-66888 KT-800002. Full value classes (KEEP-0453) take shape. Short-form name-based destructuring, abstract value classes, and the old @JvmInline multi-field prototype is removed. Still experimental: builds using them are deliberately poisoned. KT-84904 KT-86018 KT-868493. KMP: fragment-aware incremental compilation on JVM. The OSIP-75 push: commonMain will no longer accidentally see jvmMain declarations during IC, removing the need for the non-incremental fallback. Landed behind a feature flag while the rollout continues.GitHubRelease Kotlin 2.4.20-Beta2 · JetBrains/kotlinChangelog Analysis API KT-86546 Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker KT-65417 K2 IDE: KTOR false positive expect-actual matching error on enum class because of...
The Daily Kotlin
15 Jul, 08:18edited
KEEP-0466: Expect with fallbackTL;DR • Expect declarations may define a fallback implementation. • The fallback implementation implementation is used when there's no corresponding actual declaration in a platform for an expect. • Fallback implementation must define the declaration completely ("all-or-nothing" rule); leaving some parts unspecified is not allowed.
The Daily Kotlin
14 Jul, 12:09
Kotlin 2.4.10 has been released 🎉️️️️️️https://github.com/JetBrains/kotlin/releases/tag/v2.4.10What's new https://telegram.me/TheDailyKotlin/621GitHubRelease Kotlin 2.4.10 · JetBrains/kotlinChangelog Backend. Wasm KT-87066 K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation Compiler KT-86939 JVM: IllegalStateExc...
The Daily Kotlin
8 Jul, 13:28
Kotlin 2.4.10-RC2https://github.com/JetBrains/kotlin/releases/tag/v2.4.10-RC2GitHubRelease Kotlin 2.4.10-RC2 · JetBrains/kotlinChangelog Backend. Wasm KT-87066 K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation Tools. Gradle. BCV KT-87223 Gradle, BC...
The Daily Kotlin
29 Jun, 13:36
Kotlin Notebook SunsetThe JetBrains BlogKotlin Notebook Sunset - The JetBrains BlogStarting from IntelliJ IDEA 2026.2, JetBrains will sunset Kotlin Notebook as a product and will no longer maintain it.
Related Channels
Other channels in the same section of the catalogue.
