Changelog
Analysis API
KT-86546Check suspicious when over ConeKotlinType in ConeTypeCompatibilityCheckerKT-65417K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets
Analysis API. FIR
KT-69727K2 IDE. Wrong error in the editor on callingclonefunction of actual enum instance in non-jvm platformKT-69726FP errors on declaringfun clone()in actual enum in not-jvm source-set
Analysis API. Infrastructure
KT-84914Do not publish analysis-api-test-frameworkKT-86986kotlin-compiler-common-for-idebundles unrelated Analysis API modules
Analysis API. Light Classes
KT-87301SymbolLightAccessorMethod#isValid returns false for delegated propertiesKT-87171SLC: non-mapped Kotlin collection supertype is dropped from supertype listKT-87250JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations
Analysis API. PSI
KT-84925Move KtReference to the Kotlin IntelliJ plugin
Analysis API. Standalone
KT-61404Analysis API: implement proper library publishing structure
Analysis API. Stubs and Decompilation
KT-86250KotlinIllegalArgumentExceptionWithAttachments: No fir element was found for KtDestructuringDeclaration on destructuring declaration typingKT-64901Inconsistency between AST and Stub tree in the case of non-local destructuring declarations
Analysis API. Surface
Performance Improvements
KT-70021Analysis API: optimize KaFirExpressionTypeProvider.expressionType for simple cases
Fixes
KT-87337Integrate KaContextParameterOwnerSymbol into KaCallableSymbolKT-78234Analysis API: Context parameters for accessorsKT-86786Investigate suspicious when over ConeKotlinType in ConeKotlinType.getDirectSupertypesKT-72902Shouldn'tKaSymbolProvider#findClassreturnKaNamedClassSymbol?KT-87237No expected type insidearrayOfin annotation entriesKT-87143findKDocreturns parent property KDoc for accessors of an overriding propertyKT-83224Support "Compile-time functions" in the Analysis APIKT-87174Expected class KaFirSymbol instead of class KaFirPackageSymbol exceptionKT-87199[Analysis API] RemoveKaEnumEntryInitializerSymbolKT-85206Provide information about potentially removable context-sensitive resolution qualifiers via Analysis APIKT-86872KtOperationReferenceExpressionshould beKtResolvableCallKT-85800Analysis API: The internal utilityPrettyPrinteris used in the public API surfaceKT-73796Consider "KaAnnotation#useSiteTarget" removalKT-84184[Analysis API] Provide a unification substitutor API
Backend. Wasm
KT-86242K/Wasm: deprecate and prohibit usingwasmExportsKT-87639[Wasm] Multimodule wasm fails on Pointer usagesKT-86245K/Wasm: provide an API to get a reference to wasm memoryKT-76207K/Wasm: prototype generating suspend functions with stack-switching proposalKT-73452K/Wasm: turning on range checks by defaultKT-83159K/Wasm: generate one common base class fun interfaces (including Function*)KT-83356K/Wasm: Difference in behavior on nested class initialization (for enums?)KT-84267K/Wasm: init order of companion objects is different from JVMKT-86192K/Wasm: Raise a warning on usage of top-level require in JsFunKT-86822K/Wasm: don't cast the result of calling callable references with Unit return type
Compiler
New Features
KT-85925Native: rework virtual trampolines machineryKT-80373Add initial support for release compiler cachesKT-86018Short-form of name-based destructuring for multi-field value classesKT-86406Swift Export: support supercalls for cross-language inheritanceKT-77616Native: consider adding an annotation that enforces thread state switching for a@SymbolNameexternal fun`KT-86410[KMP] Implement acceptance of JVM IC metadata from previous compilation
Performance Improvements
KT-85621Native: fix optimization in CastsOptimization
Fixes
KT-86525JvmExposeBoxed: Inconsistent number of parameters during reflectionKT-87606Compiler crash on red code with redeclaration of type parameter which is used as expressionKT-87335Context parameters: wrong LINENUMBER emitted for context argument loads in JVM bytecodeKT-87245Report UnsupportedFeature on ExplicitContextArgumentKT-87577Compiler crash on red code with ambiguous type parameter used as expressionKT-72706Confusing "INVISIBLE_REFERENCE" when calling private constructorKT-86957Warning on the underscore variable is not reported for java.lang.Void callKT-87261K/N debug: 'is' check miscompilation — local variable reports wrong type when two smart-cast extractions precede an inline loopKT-87507False-positiveABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTEDon fake-override with value parameter of type missing in dependenciesKT-87439Postpone UnitConversionsOnArbitraryExpressions indefinetelyKT-87434JAVA_CLASS_ON_COMPANION not reported when companion accessed through typealiasKT-64622[K/N]arutility fails with symbol@in module/klib name on Linux with static cacheKT-84037Native: reworkarinvocations in the compilerKT-87339JVM: Support recursive type provided as an argument of typeOfKT-86551Check suspicious when over ConeKotlinType in FirExposedVisibilityDeclarationChecker#findVisibilityExposureKT-87395StackOverflowError in return value checker when a Java class member is annotated with the class's own nested annotationKT-87290Investigate possible bug in value class deserializationKT-61141K/N: irText tests failed with K/N irText first runKT-85764Native: Prohibit compiling sources in 'kotlin' package by defaultKT-86469Check 'when's over 'ConeKotlinType' which could miss some branches in DFAKT-87253MissedConeCapturedTypecheck in processing ofequalscontractsKT-84522Refactor FirResolvedQualifierKT-84299resolvedToCompanionObjectis not set in some situationsKT-87327JVM IR: NullPointerException in JvmInlineClassLowering when using == between value of generic value class and another value classKT-86959Native: OptimizeCasts gets confused by "complex" terms leaking between different loop iterationsKT-86949Native: ComputeTypesPass handles type checks across loop iterations wrongKT-86948Native: CastsOptimization merges results of type checks across loop iterations wrongKT-86947Native: CastsOptimization drops side effects of always-nullsafe castsKT-87276Drop or move ConeTypeCompatibilityCheckerKT-78623No-arg constructor should be generated if all parameters are optional, even when one of the parameters is inline typeKT-86886Kotlin Lombok: compiler crash with IllegalArgumentException on builder with a single type parameterKT-83880Consider makingOPERATOR_RENAMED_ON_IMPORTa warning (instead of error)KT-87140K/N: Test generation leaksBaseClassSuite'sINSTANCEtype parameterKT-87291Enable ProhibitScriptTopLevelInnerClasses in 2.5KT-87226CompanionBlocksAndExtensions: COMPANION_EXTENSION_RECEIVER_IS_OBJECT diagnostic is absent when object used via typealiasKT-87058Investigate abandoned language featuresKT-86655mismatched mutability annotations in overriding lead to misaligned behavior in warn-mode and strict-modeKT-85169Return value checker: RETURN_VALUE_NOT_USED: object expression highlighted entirely instead of just the keywordKT-87083JVM: AssertionError in if UIntArray is declared in sourcesKT-87032JvmExposeBoxed: forbid private@JvmExposeBoxeddeclarationsKT-86523JvmExposeBoxed: Cannot generate code for exposed constructor with default parameter referencing another default parameterKT-86865Support abstract full value classes with non-trivial constructorsKT-87016DropANNOTATION_ON_ANNOTATION_ARGUMENTdiagnosticKT-86615K2: Missing INVALID_CHARACTERS diagnostic for enum entry name with illegal JVM characters, leading to runtime ClassFormatErrorKT-86849Remove old@JvmInlinemulti-field value classesKT-87014[KGP] failing testSwiftExportCoroutinesKT-86481Compilation failure with spreadarrayOfinsidearrayOfKT-86996unwrapVarargValuedoes not consider some casesKT-86955K2: Companion block funs in interfaces have OPEN modality after Fir2IRKT-87035K2: Context parameter type leaks unsubstituted into callable-reference adapterKT-86940Diagnostic range of NONE_APPLICABLE in enum entry is hard to seeKT-86046Put@K1Deprecationto all public declarations of K1 modulesKT-86555CL-based annotation resolve: clean up CFG-related hacksKT-86482Collection literals: do not fallback if not supertype ofListis expectedKT-85288Consider dropping use-site target checks in checkRepeatedAnnotation and similar placesKT-85469Native: potential concurrency problem with cachesKT-86853FIR:Char.codenot being const-evaluated under IntrinsicConstEvaluation featureKT-86877Postpone ELA-related language featuresKT-86852Initialize full value classes fields before calling superKT-86824Native: support spaces in paths for LinuxKT-85816Drop remaining usages of ComponentRegistrarKT-86042Inference fixes lambda's return type variable too earlyKT-84719Provide information for qualified types that might be replaced with context-sensitive simple names in IDE mode
Compose compiler
b/522127447Fixed a bug that was making the stability of pre-cast types be used in certain skipping checks instead of the stability of post-cast types
IR. Inlining
KT-86558Forbid accesing volatile references after inliningKT-87272IR: Function value is inlined with out-of-scope type parameterKT-87274IR: Synthetic accessors are generated with out of scope type parameters
IR. Tree
KT-87138IR: Rich callable reference to an inner-class member leaks outer class type parameters into the generated adapterKT-69305Re-enable reporting out-of-scope type parameter usages during pre-lowering IR validationKT-87105[Tests][IR] Unify or split IR dump for different backendsKT-87292IR: Droplateinitmodifier fromIrFile.modulepropertyKT-73921False negative: tailrec checkers with recursive functions (without tail recursion)KT-85575KLIBs: Add IR text & ABI dump tests for companion blocks and companion extensionsKT-86943Investigate if lambdas must be transformed into static or regular functionsKT-86884IrTreeSymbolVisitor is not visiting symbols declared in non-final classKT-85147K/N: Segfault when calling SAM instance converted to type with nullable type parameter upper bound
JVM. Reflection
KT-73657Fix kotlin-reflect performance issues for reflection operations common for both reflection implementation: stdlib and kotlin-reflectKT-86101Reflection: additional Java constructors are not added for mapped builtins in the new implementation
JavaScript
Fixes
KT-86934K/JS: Stack overflow when implementing interface with suspend fun using anonymous objectKT-80188Design exporting of suspend lambdas into JS/TSKT-87127KJS:@JsPlainObjectfactory contains duplicated parametersKT-70622Kotlin/JS: Incremental compilation doesn't recompile kotlin js stdlib while changing a collectionKT-87307[JS] Reflection: runtime KClass of a Long value differs from Long::classKT-87410[K/JS] Companion block initialization order of super types differs from JVMKT-86273@JsExport.Ignore does not work properly with data classes propertiesKT-84992Remove body of isLongCompiledToBigInt intrinsic after boostrap version updatedKT-40768KJS: initialization order for companion objects (inherited classes) different from K/JVMKT-87074KJS: Fix inheritance issues in Analysis API-based TypeScript exportKT-75176Add infrastructure for bundle size testingKT-70223Delete the source code for the legacy JS backendKT-73067Drop support for the legacy JS metadata from the metadata decompilerKT-82224Respect file-level annotations in Analysis API-based TypeScript exportKT-82340Implement supertype approximation in Analysis API-based TypeScript ExportKT-82317Support Kotlin collections in Analysis API-based TypeScript Export
Klibs
Fixes
KT-87294[Wasm] Implement Wasi Klib backward compatibility testingKT-86320[PL] Replacing unusable classifiers with Any? type may cause a signature clashKT-86632KLIBs: Rework serialization logic for IrTypeAliasKT-87006Extract/remove K1-specific parts from :kotlin-util-klib-metadataKT-81659Load symbols on 2nd compilation stage without frontend involvementKT-85611Change usage ofKlibCompilerDeserializationConfigurationin IntelliJ toCommonCompilerDeserializationConfigurationKT-86451Get rid of deprecated '-no-endorsed-libs' usages in Kotlin projectKT-85578KLIBs: New manifest property to indicate "new initialization order"KT-74417Deduce the metadata version based on LV in KLIB-based backendsKT-85587[Tests] Update test data so it ignores failing compatibility tests correctlyKT-71414KotlinLibraryResolver.resolveWithDependencies was evolved in binary incompatible way
Language Design
KT-11914Confusing data class copy with private constructorKT-86761DM 2026-06-08: Another round on ELA (2)KT-86895Make full value classes poison builds
Libraries
KT-30270Provide allDistinct() and allDistinctBy{} for iterablesKT-86766Add@EqualityBounddeclaration to stdlibKT-87173isSortedBy and isSortedByDescending inline their selector twice at every call siteKT-87166allEqualBy inlines its selector twice at every call siteKT-31305Support JUnit5-like assertions with message suppliers in kotlin-testKT-86329Update kotlinx.collections.immutable in Kotlin project to 0.5.0KT-85020Path.copyToRecursively silently corrupts directory structure when copying across file systems with different path separatorsKT-57883Description and code mismatch in CoroutineContextImpl.ktKT-65526Rewrite builtins as expect-actual
Native
KT-36076KotlinNullPointerException: Gradle parallel compilation fails on 1.3.70
Native. Build Infrastructure
KT-86889Kotlin/Native: restore benchmarks after bootstrap update
Native. C and ObjC Import
KT-33092Kotlin/Native doesn't mangle names clashing with standard macros when generating Objective-C headersKT-87461Native: platform.darwin cache build failure with symbol is already boundKT-83940Generate IR from C-interop KLIBs without descriptorsKT-84665Don't use KLIB resolver in the CInterop toolKT-86263Generate IR for forward-declared classes without descriptorsKT-86871C-interop Klib caches are not deterministic after KT-83940
Native. ObjC Export
KT-86443Native: crash in SwitchThreadState when KotlinBase methods are called from a thread without an initialized Kotlin runtimeKT-85423Native: ObjC export throws and breaks IDE highlighting and navigation support due to mangling inconsistency
Native. Runtime. Memory
KT-86432Native: PMCS GC bug - alive object seems to be freed prematurely
Native. Swift Export
New Features
KT-87503Swift Export: Support properties in cross-language inheritanceKT-87068Swift Export: default interface method implementationsKT-86890Swift Export: Support async calls in cross-language subtypingKT-80000Swift Export: Sealed Classes
Fixes
KT-86509[Swift Export] Probable race in testsKT-87340[Swift Export] runtime crash during existential creationKT-87462[Swift Export] variadic params in functions requiring reverse bridges generates incomparable codeKT-87221[Swift Export] abstract class with inherited interface fails to compileKT-87229[Swift Export] OptIn property inside interface fails to compileKT-86463Swift Export: nested sealed interface in kotlinx-datetime (DateTimeFormatBuilder.WithDate) is referenced but never emitted, causing Swift compile errorKT-87088Protocols that came from cinterop should lose theProtocolsuffixKT-87150[Swift Export] member function with param named result fails to compileKT-87144[Swift Export] nullable closure in member function fails to compileKT-87106[Swift Export] suspend closure with context parameter fails to compileKT-86780Native: Swift Export coroutines tests are flaky on the CIKT-87022[Swift Export] Optional Range results in incompilable code
Tools. BCV
KT-85950Add support of "com.android.kotlin.multiplatform.library" plugin [ABI validation]
Tools. Build Tools API
New Features
KT-78224BTA: implement support for metadata compilationsKT-86702[BTA] Drop JVM classpath metadata argumentsKT-86676Add Gradle property to control KMP JVM metadata usage in incremental compilationKT-85663Make BTA JS Compiler Arguments Type-SafeKT-66425BTA: implementClasspathEntrySnapshot.hashCodeKT-84598[BTA] Expose API Version via Public Property
Fixes
KT-87370JS/Wasm history IC fails when compiler plugin generates callablesKT-87034Introduce SerializedFirMetadata to track source file per metadata fragmentKT-87110Name KLIB metadata fragments after source files for incremental writesKT-87248[KMP/JVM] Merge common metadata module header across incremental compilationsKT-87040Track source-file-to-metadata-fragment mapping when writing KLIB metadataKT-86703Support JVM classpath metadata for KMP incremental compilationKT-87152Decouple JVM IC-specific metadata writing logic from common metadata componentsKT-86876Migrate WasmBinaryTransform to BTAKT-86916[BTA] adopt availableSinceVersion for WASM option holdersKT-82986BTA: setting unknown options may pass silentlyKT-85736BTA tests: automate detection of missing versions in compatibilityTestsVersions
Tools. CLI
KT-86473Report usages of removed CLI arguments as warningsKT-86314Add a CLI flag which controls ELA statusKT-86284Deprecate using PSI mode from compiler CLIKT-86405Generalize reporting of deprecated CLI argumentsKT-87057Return a legacy JVM KMP IC implementation until the proper one is implementedKT-85003Fix name check for@JvmNameand@JvmExposeBoxed
Tools. CLI. Native
KT-87123Phased klib compiler does not read-native-libraryarguments
Tools. Compiler Plugin API
KT-86860GeneralizegeneratePropertiesto supportFirVariableSymbolbut not onlyFirPropertySymbol
Tools. Compiler Plugins
KT-86842Lombok: introduceARGUMENT_IS_NOT_SUPPORTEDdiagnosticKT-86145Support for@EqualsAndHashCodeannotation on kotlin classesKT-87137Lombok: builder methods aren't resolved if use an existing builder and genericsKT-87044[DataFrame] Plugin generates a spurious backing field for generated column accessorsKT-87153Lombok: merge modulecommonintok2KT-86980Delete sources of K1 parts of compiler pluginsKT-87053Lombok:@NoArgsConstructorfactory references an out-of-scope type parameter of a generic classKT-86839Handle@Logon Java classesKT-86985Can't use@JvmNameon class member properties of JPA entities even when using the 'final' modifierKT-86774PowerAssert: allow changing the last parameter to a different type if not specified
Tools. Compiler plugins. Compose
KT-87326Compose compiler plugin: NoClassDefFoundError / IrLinkageError at runtime when calling@Composableinterface method with default parameter across modules
Tools. Compiler plugins. Serialization
KT-86224Serialization plugin generates IR with out-of-scope type parameters
Tools. Gradle
New Features
KT-87481Introduce DelicateKotlinGradlePluginApi Opt-InKT-85709Write Kotlin Daemon warnings and Errors to Problems API
Fixes
KT-87509Stop using Gradle Problems API severity fieldKT-87508Wire buildNeeded/buildDependent only for Gradle <9.5.0KT-78294Applying kotlin-dsl in buildSrc with org.jetbrains.kotlin.ecosystem in settings.gradle.kts causes sync failureKT-86435ReplaceFile.ensureParentDirsCreated()with NIO PathcreateDirectories()KT-87241CleanDataTask.exec() deprecation message unreachable - task fails with cryptic UninitializedPropertyAccessException insteadKT-86039Compile against Gradle 9.6.0 APIKT-87187Bump Apple deployment targets to match Xcode 27KT-86515Replace mavenLocal() with build-dir repo in KGP functional testsKT-76515IC misses dependency to recompile when named kt file with JvmField instructed property was replaced with an object with the same nameKT-87186Fix failing testSwiftExportCoroutinesKT-87160Fix failing Swift Export testExportingTransitiveDependencies testKT-86827[KGP] Add KgpJson helper and bump kotlinx-serialization-json 1.4.0→1.4.1KT-55452Values of the compiler arguments set via KotlinCompile task configuration are duplicated by the KaptGenerateStubs taskKT-57653Explicit API mode is not enabled when free compiler arguments are specified in Gradle project
Tools. Gradle. JS
New Features
KT-86715Add ability to configure Dev-server URL (or specification) to run browser tests fromKT-87483Mark parts of JS Test DSL with DelicateAPIKT-87484Update Browser JS Test DSL after DM for 2.4.20-Beta2
Fixes
KT-86911Configured post-processing for playwright reports missing an input or output annotationKT-87501Throw an error if new JS test DSL is used with WasmKT-84724NPM dependency versions do not invalidate KotlinWebpack task cache key in kotlin multiplatform projectKT-87600Playwright install on multiple subprojects cause Gradle build to failKT-87647Upgrade tooling NPM dependencies versions for 2.4.20KT-87023Add ability to change / set path to custom browser executableKT-86958Unclear error for js test failure on timeoutKT-86922Correct browserDefaults timeout
Tools. Gradle. Multiplatform
KT-82398KMP Separate Compilation: missing fragment dependencies to commonized cinterop
Tools. Gradle. Native
KT-85468Don't fail IDE import if the SwiftPM import pipeline has failed somewhereKT-84852Wire linkage package integration check with Swift Export's embedAndSignKT-87196Ld override falls apart in Xcode 27KT-86155Print what changed in the linkage packageKT-84223Move local SwiftPM package IO validation and name inference from configuration time to execution timeKT-86995Cocoapods plugin: pass all frameworks to the compilerKT-86667Switch off sandboxing in integrateEmbedAndSign
Tools. Gradle. Wasm
KT-86633K/Wasm: Introduce wasmtime support as a runtime for wasm-wasi target in KGPKT-87258K/Wasm: Introduce a way to use multimodule compilation only for developmentKT-86919K/Wasm: Allow to configure wasm compilation modeKT-86878K/Wasm: Update wasmtime to 46.0.0KT-86673K/Wasm: update binaryen to 130KT-82419wasm failed to compile on windows arm64
Tools. Gradle. Xcode
KT-86858Eager SwiftPM check in XCFramework task crashes if Kotlin extension is not yet registered
Tools. Incremental Compile
KT-87217JS/Wasm IC: "Could not close incremental caches" with "Storage is already registered"KT-86781Deprecate FIR based incremental runnerKT-85241IC: star-import conflicts are not re-evaluated after adding new declarations, leading to missed ambiguity errorsKT-60584IC does not propagate RequiresOptIn level change effect transitively
Tools. Kapt
KT-86550Kapt: properties with context parameters are translated incorrectly
Tools. Maven
KT-83374CRI: it is not clear that CRI generation requires IC being enabled in Maven
Tools. Scripts
KT-87041Scripting: classpath extraction fails to extract stdlib from kotlincKT-87331Scripting: compiling scripts with kotlinc doesn't update the compilation config after refinementKT-87042Scripting cache test fails on thekotlinrunner
Tools. Wasm
KT-86407Get rid of '-Xwasm' usages in Kotlin project