What’s New

Kotlin

Languages & Runtimes

A statically typed language for the JVM, Android, the browser and native targets.

Latest v2.4.10 · by JetBrainsWebsiteJetBrains/kotlin

Changelog

v2.4.20-Beta2Pre-release

Kotlin 2.4.20-Beta2

Added 2
  • Context parameters for accessors
  • Provide an API to get a reference to wasm memory
Changed 3
  • Do not publish analysis-api-test-framework
  • Move KtReference to the Kotlin IntelliJ plugin
  • Optimize KaFirExpressionTypeProvider.expressionType for simple cases
Fixed 15
  • Check suspicious when over ConeKotlinType in ConeTypeCompatibilityChecker
  • K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets
  • K2 IDE wrong error in the editor on calling clone function of actual enum instance in non-jvm platform
  • FP errors on declaring fun clone() in actual enum in not-jvm source-set
  • kotlin-compiler-common-for-ide bundles unrelated Analysis API modules
  • SymbolLightAccessorMethod#isValid returns false for delegated properties
Removed 1
  • Remove KaEnumEntryInitializerSymbol
Deprecated 1
  • Deprecate and prohibit using wasmExports
Changelog
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 implicit clone() in non-JVM source sets
Analysis API. FIR
  • KT-69727 K2 IDE. Wrong error in the editor on calling clone function of actual enum instance in non-jvm platform
  • KT-69726 FP errors on declaring fun clone() in actual enum in not-jvm source-set
Analysis API. Infrastructure
  • KT-84914 Do not publish analysis-api-test-framework
  • KT-86986 kotlin-compiler-common-for-ide bundles unrelated Analysis API modules
Analysis API. Light Classes
  • KT-87301 SymbolLightAccessorMethod#isValid returns false for delegated properties
  • KT-87171 SLC: non-mapped Kotlin collection supertype is dropped from supertype list
  • KT-87250 JvmExposeBoxed: light classes shouldn't be autogenerated for private declarations
Analysis API. PSI
  • KT-84925 Move KtReference to the Kotlin IntelliJ plugin
Analysis API. Standalone
  • KT-61404 Analysis API: implement proper library publishing structure
Analysis API. Stubs and Decompilation
  • KT-86250 KotlinIllegalArgumentExceptionWithAttachments: No fir element was found for KtDestructuringDeclaration on destructuring declaration typing
  • KT-64901 Inconsistency between AST and Stub tree in the case of non-local destructuring declarations
Analysis API. Surface
Performance Improvements
  • KT-70021 Analysis API: optimize KaFirExpressionTypeProvider.expressionType for simple cases
Fixes
  • KT-87337 Integrate KaContextParameterOwnerSymbol into KaCallableSymbol
  • KT-78234 Analysis API: Context parameters for accessors
  • KT-86786 Investigate suspicious when over ConeKotlinType in ConeKotlinType.getDirectSupertypes
  • KT-72902 Shouldn't KaSymbolProvider#findClass return KaNamedClassSymbol?
  • KT-87237 No expected type inside arrayOf in annotation entries
  • KT-87143 findKDoc returns parent property KDoc for accessors of an overriding property
  • KT-83224 Support "Compile-time functions" in the Analysis API
  • KT-87174 Expected class KaFirSymbol instead of class KaFirPackageSymbol exception
  • KT-87199 [Analysis API] Remove KaEnumEntryInitializerSymbol
  • KT-85206 Provide information about potentially removable context-sensitive resolution qualifiers via Analysis API
  • KT-86872 KtOperationReferenceExpression should be KtResolvableCall
  • KT-85800 Analysis API: The internal utility PrettyPrinter is used in the public API surface
  • KT-73796 Consider "KaAnnotation#useSiteTarget" removal
  • KT-84184 [Analysis API] Provide a unification substitutor API
Backend. Wasm
  • KT-86242 K/Wasm: deprecate and prohibit using wasmExports
  • KT-87639 [Wasm] Multimodule wasm fails on Pointer usages
  • KT-86245 K/Wasm: provide an API to get a reference to wasm memory
  • KT-76207 K/Wasm: prototype generating suspend functions with stack-switching proposal
  • KT-73452 K/Wasm: turning on range checks by default
  • KT-83159 K/Wasm: generate one common base class fun interfaces (including Function*)
  • KT-83356 K/Wasm: Difference in behavior on nested class initialization (for enums?)
  • KT-84267 K/Wasm: init order of companion objects is different from JVM
  • KT-86192 K/Wasm: Raise a warning on usage of top-level require in JsFun
  • KT-86822 K/Wasm: don't cast the result of calling callable references with Unit return type
Compiler
New Features
  • KT-85925 Native: rework virtual trampolines machinery
  • KT-80373 Add initial support for release compiler caches
  • KT-86018 Short-form of name-based destructuring for multi-field value classes
  • KT-86406 Swift Export: support supercalls for cross-language inheritance
  • KT-77616 Native: consider adding an annotation that enforces thread state switching for a @SymbolName external fun`
  • KT-86410 [KMP] Implement acceptance of JVM IC metadata from previous compilation
Performance Improvements
  • KT-85621 Native: fix optimization in CastsOptimization
Fixes
  • KT-86525 JvmExposeBoxed: Inconsistent number of parameters during reflection
  • KT-87606 Compiler crash on red code with redeclaration of type parameter which is used as expression
  • KT-87335 Context parameters: wrong LINENUMBER emitted for context argument loads in JVM bytecode
  • KT-87245 Report UnsupportedFeature on ExplicitContextArgument
  • KT-87577 Compiler crash on red code with ambiguous type parameter used as expression
  • KT-72706 Confusing "INVISIBLE_REFERENCE" when calling private constructor
  • KT-86957 Warning on the underscore variable is not reported for java.lang.Void call
  • KT-87261 K/N debug: 'is' check miscompilation — local variable reports wrong type when two smart-cast extractions precede an inline loop
  • KT-87507 False-positive ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED on fake-override with value parameter of type missing in dependencies
  • KT-87439 Postpone UnitConversionsOnArbitraryExpressions indefinetely
  • KT-87434 JAVA_CLASS_ON_COMPANION not reported when companion accessed through typealias
  • KT-64622 [K/N] ar utility fails with symbol @ in module/klib name on Linux with static cache
  • KT-84037 Native: rework ar invocations in the compiler
  • KT-87339 JVM: Support recursive type provided as an argument of typeOf
  • KT-86551 Check suspicious when over ConeKotlinType in FirExposedVisibilityDeclarationChecker#findVisibilityExposure
  • KT-87395 StackOverflowError in return value checker when a Java class member is annotated with the class's own nested annotation
  • KT-87290 Investigate possible bug in value class deserialization
  • KT-61141 K/N: irText tests failed with K/N irText first run
  • KT-85764 Native: Prohibit compiling sources in 'kotlin' package by default
  • KT-86469 Check 'when's over 'ConeKotlinType' which could miss some branches in DFA
  • KT-87253 Missed ConeCapturedType check in processing of equals contracts
  • KT-84522 Refactor FirResolvedQualifier
  • KT-84299 resolvedToCompanionObject is not set in some situations
  • KT-87327 JVM IR: NullPointerException in JvmInlineClassLowering when using == between value of generic value class and another value class
  • KT-86959 Native: OptimizeCasts gets confused by "complex" terms leaking between different loop iterations
  • KT-86949 Native: ComputeTypesPass handles type checks across loop iterations wrong
  • KT-86948 Native: CastsOptimization merges results of type checks across loop iterations wrong
  • KT-86947 Native: CastsOptimization drops side effects of always-null safe casts
  • KT-87276 Drop or move ConeTypeCompatibilityChecker
  • KT-78623 No-arg constructor should be generated if all parameters are optional, even when one of the parameters is inline type
  • KT-86886 Kotlin Lombok: compiler crash with IllegalArgumentException on builder with a single type parameter
  • KT-83880 Consider making OPERATOR_RENAMED_ON_IMPORT a warning (instead of error)
  • KT-87140 K/N: Test generation leaks BaseClassSuite's INSTANCE type parameter
  • KT-87291 Enable ProhibitScriptTopLevelInnerClasses in 2.5
  • KT-87226 CompanionBlocksAndExtensions: COMPANION_EXTENSION_RECEIVER_IS_OBJECT diagnostic is absent when object used via typealias
  • KT-87058 Investigate abandoned language features
  • KT-86655 mismatched mutability annotations in overriding lead to misaligned behavior in warn-mode and strict-mode
  • KT-85169 Return value checker: RETURN_VALUE_NOT_USED: object expression highlighted entirely instead of just the keyword
  • KT-87083 JVM: AssertionError in if UIntArray is declared in sources
  • KT-87032 JvmExposeBoxed: forbid private @JvmExposeBoxed declarations
  • KT-86523 JvmExposeBoxed: Cannot generate code for exposed constructor with default parameter referencing another default parameter
  • KT-86865 Support abstract full value classes with non-trivial constructors
  • KT-87016 Drop ANNOTATION_ON_ANNOTATION_ARGUMENT diagnostic
  • KT-86615 K2: Missing INVALID_CHARACTERS diagnostic for enum entry name with illegal JVM characters, leading to runtime ClassFormatError
  • KT-86849 Remove old @JvmInline multi-field value classes
  • KT-87014 [KGP] failing testSwiftExportCoroutines
  • KT-86481 Compilation failure with spread arrayOf inside arrayOf
  • KT-86996 unwrapVarargValue does not consider some cases
  • KT-86955 K2: Companion block funs in interfaces have OPEN modality after Fir2IR
  • KT-87035 K2: Context parameter type leaks unsubstituted into callable-reference adapter
  • KT-86940 Diagnostic range of NONE_APPLICABLE in enum entry is hard to see
  • KT-86046 Put @K1Deprecation to all public declarations of K1 modules
  • KT-86555 CL-based annotation resolve: clean up CFG-related hacks
  • KT-86482 Collection literals: do not fallback if not supertype of List is expected
  • KT-85288 Consider dropping use-site target checks in checkRepeatedAnnotation and similar places
  • KT-85469 Native: potential concurrency problem with caches
  • KT-86853 FIR: Char.code not being const-evaluated under IntrinsicConstEvaluation feature
  • KT-86877 Postpone ELA-related language features
  • KT-86852 Initialize full value classes fields before calling super
  • KT-86824 Native: support spaces in paths for Linux
  • KT-85816 Drop remaining usages of ComponentRegistrar
  • KT-86042 Inference fixes lambda's return type variable too early
  • KT-84719 Provide information for qualified types that might be replaced with context-sensitive simple names in IDE mode
Compose compiler
  • b/522127447 Fixed 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-86558 Forbid accesing volatile references after inlining
  • KT-87272 IR: Function value is inlined with out-of-scope type parameter
  • KT-87274 IR: Synthetic accessors are generated with out of scope type parameters
IR. Tree
  • KT-87138 IR: Rich callable reference to an inner-class member leaks outer class type parameters into the generated adapter
  • KT-69305 Re-enable reporting out-of-scope type parameter usages during pre-lowering IR validation
  • KT-87105 [Tests][IR] Unify or split IR dump for different backends
  • KT-87292 IR: Drop lateinit modifier from IrFile.module property
  • KT-73921 False negative: tailrec checkers with recursive functions (without tail recursion)
  • KT-85575 KLIBs: Add IR text & ABI dump tests for companion blocks and companion extensions
  • KT-86943 Investigate if lambdas must be transformed into static or regular functions
  • KT-86884 IrTreeSymbolVisitor is not visiting symbols declared in non-final class
  • KT-85147 K/N: Segfault when calling SAM instance converted to type with nullable type parameter upper bound
JVM. Reflection
  • KT-73657 Fix kotlin-reflect performance issues for reflection operations common for both reflection implementation: stdlib and kotlin-reflect
  • KT-86101 Reflection: additional Java constructors are not added for mapped builtins in the new implementation
JavaScript
Fixes
  • KT-86934 K/JS: Stack overflow when implementing interface with suspend fun using anonymous object
  • KT-80188 Design exporting of suspend lambdas into JS/TS
  • KT-87127 KJS: @JsPlainObject factory contains duplicated parameters
  • KT-70622 Kotlin/JS: Incremental compilation doesn't recompile kotlin js stdlib while changing a collection
  • KT-87307 [JS] Reflection: runtime KClass of a Long value differs from Long::class
  • KT-87410 [K/JS] Companion block initialization order of super types differs from JVM
  • KT-86273 @JsExport.Ignore does not work properly with data classes properties
  • KT-84992 Remove body of isLongCompiledToBigInt intrinsic after boostrap version updated
  • KT-40768 KJS: initialization order for companion objects (inherited classes) different from K/JVM
  • KT-87074 KJS: Fix inheritance issues in Analysis API-based TypeScript export
  • KT-75176 Add infrastructure for bundle size testing
  • KT-70223 Delete the source code for the legacy JS backend
  • KT-73067 Drop support for the legacy JS metadata from the metadata decompiler
  • KT-82224 Respect file-level annotations in Analysis API-based TypeScript export
  • KT-82340 Implement supertype approximation in Analysis API-based TypeScript Export
  • KT-82317 Support Kotlin collections in Analysis API-based TypeScript Export
Klibs
Fixes
  • KT-87294 [Wasm] Implement Wasi Klib backward compatibility testing
  • KT-86320 [PL] Replacing unusable classifiers with Any? type may cause a signature clash
  • KT-86632 KLIBs: Rework serialization logic for IrTypeAlias
  • KT-87006 Extract/remove K1-specific parts from :kotlin-util-klib-metadata
  • KT-81659 Load symbols on 2nd compilation stage without frontend involvement
  • KT-85611 Change usage of KlibCompilerDeserializationConfiguration in IntelliJ to CommonCompilerDeserializationConfiguration
  • KT-86451 Get rid of deprecated '-no-endorsed-libs' usages in Kotlin project
  • KT-85578 KLIBs: New manifest property to indicate "new initialization order"
  • KT-74417 Deduce the metadata version based on LV in KLIB-based backends
  • KT-85587 [Tests] Update test data so it ignores failing compatibility tests correctly
  • KT-71414 KotlinLibraryResolver.resolveWithDependencies was evolved in binary incompatible way
Language Design
  • KT-11914 Confusing data class copy with private constructor
  • KT-86761 DM 2026-06-08: Another round on ELA (2)
  • KT-86895 Make full value classes poison builds
Libraries
  • KT-30270 Provide allDistinct() and allDistinctBy{} for iterables
  • KT-86766 Add @EqualityBound declaration to stdlib
  • KT-87173 isSortedBy and isSortedByDescending inline their selector twice at every call site
  • KT-87166 allEqualBy inlines its selector twice at every call site
  • KT-31305 Support JUnit5-like assertions with message suppliers in kotlin-test
  • KT-86329 Update kotlinx.collections.immutable in Kotlin project to 0.5.0
  • KT-85020 Path.copyToRecursively silently corrupts directory structure when copying across file systems with different path separators
  • KT-57883 Description and code mismatch in CoroutineContextImpl.kt
  • KT-65526 Rewrite builtins as expect-actual
Native
  • KT-36076 KotlinNullPointerException: Gradle parallel compilation fails on 1.3.70
Native. Build Infrastructure
  • KT-86889 Kotlin/Native: restore benchmarks after bootstrap update
Native. C and ObjC Import
  • KT-33092 Kotlin/Native doesn't mangle names clashing with standard macros when generating Objective-C headers
  • KT-87461 Native: platform.darwin cache build failure with symbol is already bound
  • KT-83940 Generate IR from C-interop KLIBs without descriptors
  • KT-84665 Don't use KLIB resolver in the CInterop tool
  • KT-86263 Generate IR for forward-declared classes without descriptors
  • KT-86871 C-interop Klib caches are not deterministic after KT-83940
Native. ObjC Export
  • KT-86443 Native: crash in SwitchThreadState when KotlinBase methods are called from a thread without an initialized Kotlin runtime
  • KT-85423 Native: ObjC export throws and breaks IDE highlighting and navigation support due to mangling inconsistency
Native. Runtime. Memory
  • KT-86432 Native: PMCS GC bug - alive object seems to be freed prematurely
Native. Swift Export
New Features
  • KT-87503 Swift Export: Support properties in cross-language inheritance
  • KT-87068 Swift Export: default interface method implementations
  • KT-86890 Swift Export: Support async calls in cross-language subtyping
  • KT-80000 Swift Export: Sealed Classes
Fixes
  • KT-86509 [Swift Export] Probable race in tests
  • KT-87340 [Swift Export] runtime crash during existential creation
  • KT-87462 [Swift Export] variadic params in functions requiring reverse bridges generates incomparable code
  • KT-87221 [Swift Export] abstract class with inherited interface fails to compile
  • KT-87229 [Swift Export] OptIn property inside interface fails to compile
  • KT-86463 Swift Export: nested sealed interface in kotlinx-datetime (DateTimeFormatBuilder.WithDate) is referenced but never emitted, causing Swift compile error
  • KT-87088 Protocols that came from cinterop should lose the Protocol suffix
  • KT-87150 [Swift Export] member function with param named result fails to compile
  • KT-87144 [Swift Export] nullable closure in member function fails to compile
  • KT-87106 [Swift Export] suspend closure with context parameter fails to compile
  • KT-86780 Native: Swift Export coroutines tests are flaky on the CI
  • KT-87022 [Swift Export] Optional Range results in incompilable code
Tools. BCV
  • KT-85950 Add support of "com.android.kotlin.multiplatform.library" plugin [ABI validation]
Tools. Build Tools API
New Features
  • KT-78224 BTA: implement support for metadata compilations
  • KT-86702 [BTA] Drop JVM classpath metadata arguments
  • KT-86676 Add Gradle property to control KMP JVM metadata usage in incremental compilation
  • KT-85663 Make BTA JS Compiler Arguments Type-Safe
  • KT-66425 BTA: implement ClasspathEntrySnapshot.hashCode
  • KT-84598 [BTA] Expose API Version via Public Property
Fixes
  • KT-87370 JS/Wasm history IC fails when compiler plugin generates callables
  • KT-87034 Introduce SerializedFirMetadata to track source file per metadata fragment
  • KT-87110 Name KLIB metadata fragments after source files for incremental writes
  • KT-87248 [KMP/JVM] Merge common metadata module header across incremental compilations
  • KT-87040 Track source-file-to-metadata-fragment mapping when writing KLIB metadata
  • KT-86703 Support JVM classpath metadata for KMP incremental compilation
  • KT-87152 Decouple JVM IC-specific metadata writing logic from common metadata components
  • KT-86876 Migrate WasmBinaryTransform to BTA
  • KT-86916 [BTA] adopt availableSinceVersion for WASM option holders
  • KT-82986 BTA: setting unknown options may pass silently
  • KT-85736 BTA tests: automate detection of missing versions in compatibilityTestsVersions
Tools. CLI
  • KT-86473 Report usages of removed CLI arguments as warnings
  • KT-86314 Add a CLI flag which controls ELA status
  • KT-86284 Deprecate using PSI mode from compiler CLI
  • KT-86405 Generalize reporting of deprecated CLI arguments
  • KT-87057 Return a legacy JVM KMP IC implementation until the proper one is implemented
  • KT-85003 Fix name check for @JvmName and @JvmExposeBoxed
Tools. CLI. Native
  • KT-87123 Phased klib compiler does not read -native-library arguments
Tools. Compiler Plugin API
  • KT-86860 Generalize generateProperties to support FirVariableSymbol but not only FirPropertySymbol
Tools. Compiler Plugins
  • KT-86842 Lombok: introduce ARGUMENT_IS_NOT_SUPPORTED diagnostic
  • KT-86145 Support for @EqualsAndHashCode annotation on kotlin classes
  • KT-87137 Lombok: builder methods aren't resolved if use an existing builder and generics
  • KT-87044 [DataFrame] Plugin generates a spurious backing field for generated column accessors
  • KT-87153 Lombok: merge module common into k2
  • KT-86980 Delete sources of K1 parts of compiler plugins
  • KT-87053 Lombok: @NoArgsConstructor factory references an out-of-scope type parameter of a generic class
  • KT-86839 Handle @Log on Java classes
  • KT-86985 Can't use @JvmName on class member properties of JPA entities even when using the 'final' modifier
  • KT-86774 PowerAssert: allow changing the last parameter to a different type if not specified
Tools. Compiler plugins. Compose
  • KT-87326 Compose compiler plugin: NoClassDefFoundError / IrLinkageError at runtime when calling @Composable interface method with default parameter across modules
Tools. Compiler plugins. Serialization
  • KT-86224 Serialization plugin generates IR with out-of-scope type parameters
Tools. Gradle
New Features
  • KT-87481 Introduce DelicateKotlinGradlePluginApi Opt-In
  • KT-85709 Write Kotlin Daemon warnings and Errors to Problems API
Fixes
  • KT-87509 Stop using Gradle Problems API severity field
  • KT-87508 Wire buildNeeded/buildDependent only for Gradle <9.5.0
  • KT-78294 Applying kotlin-dsl in buildSrc with org.jetbrains.kotlin.ecosystem in settings.gradle.kts causes sync failure
  • KT-86435 Replace File.ensureParentDirsCreated() with NIO Path createDirectories()
  • KT-87241 CleanDataTask.exec() deprecation message unreachable - task fails with cryptic UninitializedPropertyAccessException instead
  • KT-86039 Compile against Gradle 9.6.0 API
  • KT-87187 Bump Apple deployment targets to match Xcode 27
  • KT-86515 Replace mavenLocal() with build-dir repo in KGP functional tests
  • KT-76515 IC misses dependency to recompile when named kt file with JvmField instructed property was replaced with an object with the same name
  • KT-87186 Fix failing testSwiftExportCoroutines
  • KT-87160 Fix failing Swift Export testExportingTransitiveDependencies test
  • KT-86827 [KGP] Add KgpJson helper and bump kotlinx-serialization-json 1.4.0→1.4.1
  • KT-55452 Values of the compiler arguments set via KotlinCompile task configuration are duplicated by the KaptGenerateStubs task
  • KT-57653 Explicit API mode is not enabled when free compiler arguments are specified in Gradle project
Tools. Gradle. JS
New Features
  • KT-86715 Add ability to configure Dev-server URL (or specification) to run browser tests from
  • KT-87483 Mark parts of JS Test DSL with DelicateAPI
  • KT-87484 Update Browser JS Test DSL after DM for 2.4.20-Beta2
Fixes
  • KT-86911 Configured post-processing for playwright reports missing an input or output annotation
  • KT-87501 Throw an error if new JS test DSL is used with Wasm
  • KT-84724 NPM dependency versions do not invalidate KotlinWebpack task cache key in kotlin multiplatform project
  • KT-87600 Playwright install on multiple subprojects cause Gradle build to fail
  • KT-87647 Upgrade tooling NPM dependencies versions for 2.4.20
  • KT-87023 Add ability to change / set path to custom browser executable
  • KT-86958 Unclear error for js test failure on timeout
  • KT-86922 Correct browserDefaults timeout
Tools. Gradle. Multiplatform
  • KT-82398 KMP Separate Compilation: missing fragment dependencies to commonized cinterop
Tools. Gradle. Native
  • KT-85468 Don't fail IDE import if the SwiftPM import pipeline has failed somewhere
  • KT-84852 Wire linkage package integration check with Swift Export's embedAndSign
  • KT-87196 Ld override falls apart in Xcode 27
  • KT-86155 Print what changed in the linkage package
  • KT-84223 Move local SwiftPM package IO validation and name inference from configuration time to execution time
  • KT-86995 Cocoapods plugin: pass all frameworks to the compiler
  • KT-86667 Switch off sandboxing in integrateEmbedAndSign
Tools. Gradle. Wasm
  • KT-86633 K/Wasm: Introduce wasmtime support as a runtime for wasm-wasi target in KGP
  • KT-87258 K/Wasm: Introduce a way to use multimodule compilation only for development
  • KT-86919 K/Wasm: Allow to configure wasm compilation mode
  • KT-86878 K/Wasm: Update wasmtime to 46.0.0
  • KT-86673 K/Wasm: update binaryen to 130
  • KT-82419 wasm failed to compile on windows arm64
Tools. Gradle. Xcode
  • KT-86858 Eager SwiftPM check in XCFramework task crashes if Kotlin extension is not yet registered
Tools. Incremental Compile
  • KT-87217 JS/Wasm IC: "Could not close incremental caches" with "Storage is already registered"
  • KT-86781 Deprecate FIR based incremental runner
  • KT-85241 IC: star-import conflicts are not re-evaluated after adding new declarations, leading to missed ambiguity errors
  • KT-60584 IC does not propagate RequiresOptIn level change effect transitively
Tools. Kapt
  • KT-86550 Kapt: properties with context parameters are translated incorrectly
Tools. Maven
  • KT-83374 CRI: it is not clear that CRI generation requires IC being enabled in Maven
Tools. Scripts
  • KT-87041 Scripting: classpath extraction fails to extract stdlib from kotlinc
  • KT-87331 Scripting: compiling scripts with kotlinc doesn't update the compilation config after refinement
  • KT-87042 Scripting cache test fails on the kotlin runner
Tools. Wasm
  • KT-86407 Get rid of '-Xwasm' usages in Kotlin project
v2.4.10

Kotlin 2.4.10

Added 1
  • Introduce kotlinr in the Kotlin distribution
Fixed 12
  • K/Wasm: Fix missing files in compiler output directory with multimodule-closed-world and incremental compilation
  • JVM: Fix IllegalStateException "No value for annotation parameter" when using const val in nested Java annotation array argument
  • K2: Fix wrong sourcePsi set for SymbolPsiLiteral in SLC for annotation arguments referencing a const val
  • Reified type inference: Fix expected type not propagated into inline call inside lambda with elvis operator
  • Compose Compiler 2.4: Fix classes previously inferred as stable now reported as runtime or Uncertain
  • Native: Fix IrTypeAliasSymbolImpl already bound error for kotlinx.datetime/Instant|null on iosSimulatorArm64
Changelog
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: IllegalStateException "No value for annotation parameter" when using const val in nested Java annotation array argument
  • KT-83766 K2: Wrong sourcePsi is set for SymbolPsiLiteral in SLC for annotation arguments referencing a const val
  • KT-86728 Reified type inference: expected type not propagated into inline call inside lambda with elvis operator
Compose Compiler
  • b/522127447 Compose Compiler 2.4: classes previously inferred stable now reported runtime/Uncertain
Klibs
  • KT-86501 Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64
Tools. CLI
  • KT-86930 Introduce kotlinr in the Kotlin distribution
Tools. Gradle. BCV
  • KT-87223 Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0
Tools. Gradle. JS
  • KT-87304 jsBrowserTest fails with "exited with errors (exit code: 1)"
  • KT-86057 kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail
Tools. Gradle. Multiplatform
  • KT-87084 False positive warning for JS and Wasm compilations when CRI is enabled
Tools. Scripts
  • KT-87076 @file:CompilerOptions("-jvm-target", ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8
  • KT-86352 K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts
v2.4.10-RC2Pre-release

Kotlin 2.4.10-RC2

Fixed 3
  • K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation
  • Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0
  • jsBrowserTest fails with exit code 1
Changelog
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, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0
Tools. Gradle. JS
  • KT-87304 jsBrowserTest fails with "exited with errors (exit code: 1)"
v2.4.10-RCPre-release

Kotlin 2.4.10-RC

Added 1
  • Introduce kotlinr in the Kotlin distribution
Fixed 9
  • JVM: IllegalStateException when using const val in nested Java annotation array argument
  • K2: Wrong sourcePsi is set for SymbolPsiLiteral in SLC for annotation arguments referencing a const val
  • Reified type inference: expected type not propagated into inline call inside lambda with elvis operator
  • Compose compiler: stability of post-cast types now used in skipping checks instead of pre-cast types
  • Native: IrTypeAliasSymbolImpl is already bound error for iosSimulatorArm64
  • kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail
Changelog
Compiler
  • KT-86939 JVM: IllegalStateException "No value for annotation parameter" when using const val in nested Java annotation array argument
  • KT-83766 K2: Wrong sourcePsi is set for SymbolPsiLiteral in SLC for annotation arguments referencing a const val
  • KT-86728 Reified type inference: expected type not propagated into inline call inside lambda with elvis operator
Compose compiler
  • b/522127447 Fixed 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
Klibs
  • KT-86501 Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64
Tools. CLI
  • KT-86930 Introduce kotlinr in the Kotlin distribution
Tools. Gradle. JS
  • KT-86057 kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail
Tools. Gradle. Multiplatform
  • KT-87084 False positive warning for JS and Wasm compilations when CRI is enabled
Tools. Scripts
  • KT-87076 @file:CompilerOptions("-jvm-target", ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8
  • KT-86352 K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts
v2.4.20-Beta1Pre-release

Kotlin 2.4.20-Beta1

Added 4
  • Implement an API for accessing deserialized file annotations in Analysis API
  • Support resolving to companion block members & extensions from Java in light classes
  • Support PsiClass#getRecordComponents in light classes
  • Support parameters in getExpectsForActual()
Fixed 14
  • K2 false positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines
  • containingSymbol of constructor property differs for local and non-local classes
  • K2 IDE / KMP Debugger error Cannot compile a common source without a JVM counterpart on evaluating inline fun from common module inside jvm
  • No expects for actual
  • Types are broken after remove parameter through change signature
  • KotlinIllegalArgumentExceptionWithAttachments on companion blocks
Removed 2
  • Drop kotlin.parallel.resolve.under.global.lock registry key
  • Drop kotlin-compiler-testdata-for-ide artifact
Changelog
Analysis API
  • KT-85418 Implement an API for accessing deserialized file annotations in Analysis API
  • KT-74448 K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutines
  • KT-85856 containingSymbol of constructor property differs for local and non-local classes
Analysis API. Code Compilation
  • KT-76457 K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm
Analysis API. FIR
  • KT-70552 No expects for actual
  • KT-86014 Types are broken after remove parameter through change signature
  • KT-86363 KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocks
  • KT-86147 Drop kotlin.parallel.resolve.under.global.lock registry key
  • KT-85543 Avoid lazy resolve for the contracts phase if no constracts might be resolved
Analysis API. Infrastructure
  • KT-86186 Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrate
  • KT-85360 Drop kotlin-compiler-testdata-for-ide artifact
  • KT-85585 Simplify the dependencies graph for the Analysis API modules
  • KT-85381 Remove tests for the FE10 implementation
Analysis API. Light Classes
New Features
  • KT-84645 Support resolving to companion block members & extensions from Java (light classes)
  • KT-80775 Support PsiClass#getRecordComponents in light classes
Fixes
  • KT-57537 SLC: propagate default parameter value from (@JvmOverloads) expect declarations to actual declarations
  • KT-63568 Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not set
  • KT-70428 AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegation
  • KT-36740 MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealias
  • KT-67749 Analysis API: Symbol Light classes should be available only to pure JVM sources
  • KT-85040 [Analysis API] Improve Java / Kotlin interop in KMP projects
  • KT-68169 K2 IDE. KMP. False positive type mismatch in java file of jvm source-set when using common declaration which expects String
  • KT-37783 KMP Java Interop: JVM-only methods on actual superclass not resolved in Java for common subclass
  • KT-40059 Provide type correction for expect/actual types used from Java-code
  • KT-71429 MPP: False positive "Function1 is not a functional interface" when calling code from Common in Java
  • KT-70426 SLC: kotlin.Collection#size is not exposed by default
  • KT-60480 Symbol Light Classes: Classes implementing kotlin.collections.* interfaces don't implement all methods from the corresponding java.util.* interfaces
  • KT-36991 IDE: "both methods have same erasure" for Java classes directly or indirectly extending Kotlin collections
  • KT-22594 KotlinCollection.getSize is not highlighted as an error in Java
Analysis API. PSI
  • KT-85052 Move mutation methods out of the Kotlin PSI
  • KT-84925 Move KtReference to the Kotlin IntelliJ plugin
  • KT-85427 Use factory-like pattern instead of reflection in KtNodeType
  • KT-84789 Ensure all KtClassBody.parent usages are correct
  • KT-85154 PSI: "AE: parent is ERROR_ELEMENT" with top-level destructuring declaration
Analysis API. Providers and Caches
  • KT-82220 Analysis API: Support platform-specific session components and checkers in metadata sessions
  • KT-82731 Analysis API: Limit granular tree change processing to a few files
Analysis API. Standalone
  • KT-85112 AA does not see packages from unpacked klibs
  • KT-86417 Support parameters in 'getExpectsForActual()'
  • KT-84916 Metadata stub deserializers aren't properly set up for Analysis API Standalone
  • KT-83191 Analysis API: JvmDependenciesIndexImpl performs very poorly for large classpaths
Analysis API. Stubs and Decompilation
  • KT-86520 KotlinDeclarationInCompiledFileSearcher doesn't support visibility-mangled declarations
  • KT-64901 Inconsistency between AST and Stub tree in the case of non-local destructuring declarations
  • KT-84444 Support stubs for companion blocks & extensions
Analysis API. Surface
New Features
  • KT-73214 Add KaScope#declarations with name filter
  • KT-69085 Provide API to retrieve label/name from KtFunctionLikeSymbol
  • KT-70771 KaLocalVariableSymbol: support isDelegatedProperty
  • KT-85239 Streaming version of collectDiagnostics()
  • KT-85037 Add API for KaFunctionType's returnType modification
  • KT-80460 AA: Introduce KtExpression.isStableForSmartCasting API
  • KT-82519 Automatically recognize the appropriate analysis mode for in-memory file copies based on their content
  • KT-65912 Analysis API: Implement type building API for all KtType
Fixes
  • KT-66039 K2: Analysis API: redesign resolution API
  • KT-70794 K2 IDE: Reference to object does not resolve as LHS in "plusAssign" assignment expression
  • KT-70774 Unary operators on literals are not resolvable
  • KT-86757 Flaky annotations result for @all annotation on a backing field
  • KT-85382 Remove the FE10 implementation
  • KT-86681 [Analysis API] Move isDelegated to KaVariableSymbol
  • KT-86685 collectCallCandidates works incorrectly for a constructor vs. a companion invoke
  • KT-86514 No expected type within collection literal in annotation entry using array rather than varargs
  • KT-76076 K2 AA: safe call expression navigates to parent array index access expression
  • KT-86418 Support property accessors in 'getExpectsForActual()'
  • KT-71312 KaFirPsiJavaClassSymbol.{hasAnnotations, annotationSimpleNames} is inconsistent with FirJavaClass implementation
  • KT-86394 Resolve from KDoc reference is inconsistent with source code
  • KT-86248 isUsedAsExpression true for typealias lhs in ::
  • KT-85778 Analysis API: Ensure that all public endpoints in implementation modules are internal or opt-in
  • KT-78285 resolveToCallCandidates inconsistent behaviour with invoke operator and constructor
  • KT-85852 CCE in buildClassType
  • KT-85989 Super type references should be aware of type alias constructors
  • KT-84184 [Analysis API] Provide a unification substitutor API
  • KT-84584 Support companion extensions and blocks in the Analysis API
  • KT-84932 Deprecate utilities exposed through analysis-internal-utils
  • KT-73059 Consider dropping of KaOriginalPsiProvider
  • KT-84737 KaCallableSymbol#directlyOverriddenSymbols doesn't work for java overrides of kotlin properties
  • KT-71101 [AA] Consider getting rid of KaTypeNullability
Backend. J2KLIB
  • KT-86368 [JKLIB] MetadataJVMModuleDeserializer tries to deserialize all symbols
  • KT-86367 [JKLIB] kotlin.Cloneable built-in class not found
Backend. Native. Debug
  • KT-85264 [Native] Stepping trace starts with // test.kt:1 box in some debug stepping tests
  • KT-81740 Native: importing konan_lldb.py to lldb prints a warning
Backend. Wasm
Fixes
  • KT-83159 K/Wasm: generate one common base class fun interfaces (including Function*)
  • KT-86123 [Wasm] Callable reference refactoring (KT-83159) broke klib binary compatibility with libraries compiled by Kotlin 2.0.x
  • KT-83171 K/Wasm: Investigate import.meta usage in mjs files
  • KT-84267 K/Wasm: init order of companion objects is different from JVM
  • KT-86192 K/Wasm: Raise a warning on usage of top-level require in JsFun
  • KT-83356 K/Wasm: Difference in behavior on nested class initialization (for enums?)
  • KT-71505 [Wasm, IC] Incremental step can produce wrong main function call
  • KT-86822 K/Wasm: don't cast the result of calling callable references with Unit return type
  • KT-86180 [Wasm] backward compatibility is broken in 2.1->2.2 by changed order of type parameters
  • KT-86640 [wasm]: Single-module test failures with companion object initializers
  • KT-71039 [Wasm, IC] Investigate synthetic function types loading
  • KT-66105 Wasm: SyntaxError: Identifier 'box' has already been declared
  • KT-82843 K/Wasm: pass a lambda call helpers to convert funs as an argument instead of exporting them
  • KT-83245 K/Wasm: Run stepping tests with local variables with K/Wasm
  • KT-86166 [Wasm] Make possible to have passing test in multimodule but having it fail in monolith
  • KT-84667 wasm: Add general support for custom sections/annotations
  • KT-85506 [Wasm/WASI] Stdlib readLn and readlnOrNull implementation
  • KT-85270 K/Wasm: incremental compilation fails with NoSuchElementException when a stdlib call is removed
Compiler
New Features
  • KT-86410 [KMP] Implement acceptance of JVM IC metadata from previous compilation
  • KT-84295 Support Companion Block of Operator for Collection Literals
  • KT-86657 Native: turn on incremental compilation by default
  • KT-84956 Resolve of references to static & companion object members of generic class
  • KT-86409 [KMP] Create JVM IC metadata output
  • KT-85593 ELA: Support multiple lambda arguments
  • KT-84618 Emit a warning when an undesrcore variable is assigned to a Unit expression
  • KT-83040 Collection literals: ensure normal interaction with CFG
  • KT-84333 Collection literals: type inference in delegate expression
  • KT-84289 Resolution to Companion Block & Extension Invoke Operator
  • KT-82961 Type inference from upper type for type parameters designed for tracking of checked exceptions
  • KT-81444 False positive: "Overload resolution ambiguity" with @OverloadResolutionByLambdaReturnType and multiple lambda parameters
  • KT-84393 Support Unit-conversions and Unit-adaptations for arbitrary expressions in argument positions
  • KT-84319 Add JVM target bytecode version 26
Performance Improvements
  • KT-69758 FastJarFS - avoid copying data on inflating (JDK 16+)
  • KT-85647 Compilation performance regression in AbstractFirDeserializedSymbolProvider since 2.3.20
  • KT-86104 [JVM] use static methods/fields of KTypeProjection in typeOf generated bytecode
  • KT-86084 IDEA freezes when a lot of properties are modified to lazy delegates
  • KT-83068 Investigate long compilation times with many generics & overloads
  • KT-66469 Long compilation with mockk import
  • KT-79677 Remove meaningless LVT records
Fixes
  • KT-84802 Add new synthetic class flag to JVM metadata
  • KT-83766 K2: Wrong sourcePsi is set for SymbolPsiLiteral in SLC for annotation arguments referencing a const val
  • KT-86728 Reified type inference: expected type not propagated into inline call inside lambda with elvis operator
  • KT-82510 K/N, IC: "Undefined symbols for architecture arm64" for iosSimulatorArm64 with kotlin.incremental.native=true
  • KT-84185 Type arguments are wrongly allowed in receivers of static calls
  • KT-84154 Invalid qualifiers with type arguments in package parts compile without diagnostics
  • KT-80227 Support unnamed context parameters in evaluation
  • KT-86751 IntroducedAt: Do not generate @IntroducedAt overrides as synthetic
  • KT-85816 Drop remaining usages of ComponentRegistrar
  • KT-86534 Extract reworked annotations resolution under separate language feature
  • KT-84626 Try to combine FirConstChecks and FirExpressionEvaluator
  • KT-85291 MFVC: consider analyzing the type of declaration instead of use-site target in AnnotationChecker
  • KT-86755 False negative NATIVE_SPECIFIC_ATOMIC in type arguments
  • KT-86752 K2: False negative NO_REFLECTION_IN_CLASS_PATH on type parameters, intersection types, captured types
  • KT-85972 [ArrayEqualityCanBeReplacedWithContentEquals checker] Checker misses smart-cast array operands when the original type is a type parameter
  • KT-85970 [ArrayEqualityCanBeReplacedWithContentEquals checker] Warning message mentions ==/=== instead of !=/!== for inequality operator
  • KT-86705 False positive REDUNDANT_SINGLE_EXPRESSION_STRING_TEMPLATE for nullable String? expressions with -Wextra
  • KT-86798 Native: don't use stale incremental cache when a new compiler version is used
  • KT-86524 JvmExposeBoxed: Collection does not implement abstract method
  • KT-86526 JvmExposeBoxed: Sequence contains more than one matching element
  • KT-86298 LEAKED_IN_PLACE_LAMBDA when a lambda parameter is forwarded into an inline function parameter
  • KT-76632 K2: False positive "Assigned value is never read" with 'flatMap()'
  • KT-86699 Kotlin/Native: get rid of OptimizeTLSDataLoads
  • KT-86646 IllegalStateException "unknown supertype kind null" when compiling data class with definitely non-nullable type parameter (U : T & Any)
  • KT-86662 Check for loss of ConeIntersectionType.upperBoundForApproximation
  • KT-86629 Approximation of Intersection Type to Upper Bound is Broken by Bang Bang Operator
  • KT-86115 Platform declaration clash on no-arg constructor with @JvmExposeBoxed and @IntroducedAt
  • KT-78079 Enable generation of when using invokedynamic by default for JVM targets 21+
  • KT-86643 Warning for returning callsInPlace lambda
  • KT-86609 Make KDocSection implement PsiLanguageInjectionHost
  • KT-86642 Flexible type with nullable intersection types in both bounds
  • KT-85148 Native: check/fix KT-72710 Incorrect behaviour of tail call suspend functions optimization
  • KT-85641 Nullable-marked object qualifiers in LHSs of callable references
  • KT-86464 Support isPublicAbi JVM metadata flag for anonymous and synthetic local classes
  • KT-82216 Sanitize '.kotlin_module' filename
  • KT-85230 False negative deprecation diagnostics on import of member of nested class
  • KT-62467 K2: Result type of elvis operator should be flexible if rhs is flexible
  • KT-86319 K2: StackOverflowError in AbstractConeSubstitutor with recursive Java type bound under mixed JSpecify @NullMarked/@NullUnmarked
  • KT-86512 K2: Bad IR for adapted callable reference to function with generic vararg and optional parameter
  • KT-77726 Move FirUnusedExpressionChecker to the default checkers list
  • KT-85947 Collection literals: internal failure when SAM is expected
  • KT-85842 Collection literals (and CSR): internal failure when lambda is analyzed during inference of outer call
  • KT-85535 Collection literals: Migrate to new resolve in annotations under "-Xcollection-literals"
  • KT-84559 @OptIn on collection literal and context-sensitive does not work
  • KT-86468 K2: False negative DSL_SCOPE_VIOLATION when type parameter has DSL-annotated bound
  • KT-86292 False negative: INFERRED_TYPE_VARIABLE_INTO_EMPTY_INTERSECTION_WARNING reported for direct getValue call but not for equivalent by delegation
  • KT-86467 K2: False negative ILLEGAL_RESTRICTED_SUSPENDING_FUNCTION_CALL with DNN, flexible, captured and intersection receiver types
  • KT-85848 Recursion on value classes through type parameters
  • KT-75874 K2: Adjust the type mismatch diagnostic on lambda parameters
  • KT-86110 K/N Incremental compilation: stale cache is reused after enum entry reorder
  • KT-82456 K2. Missing deprecation for object with invoke
  • KT-85656 [NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS] False negative for nested type alias
  • KT-86184 KDoc: syntax highlighting incorrect when @param, @return, or summary line begins with a backtick
  • KT-85454 Make :compiler:android-tests:test cacheable
  • KT-85955 Implicit JvmExposeBoxed: double default constructor parameter leads to IOOBE
  • KT-51400 Additional independent candidate with @OverloadResolutionByLambdaReturnType could change inference results
  • KT-86042 Inference fixes lambda's return type variable too early
  • KT-86327 Add flag to LanguageFeature enum to enable it in the latest language version tests
  • KT-86133 K/N IC: stale cache is reused after reified inline body change
  • KT-84718 Provide information for simple names resolved through imports which might be resolved via context-sensitive in IDE mode
  • KT-75112 FE resolves wrong receivers order for property passed to delegate
  • KT-86130 False positive UNINITIALIZED_ENUM_COMPANION on LV 2.3 and lower
  • KT-84860 False positive UNINITIALIZED_ENUM_COMPANION in enum access with explicit receiver in enum initializer when enum class has a companion
  • KT-85300 Improve message for UNRESOLVED_REFERENCE_WRONG_RECEIVER
  • KT-80590 Drop language version 1.9 for JVM
  • KT-86191 Check not null on a dynamic-typed property leads to malformed CFG
  • KT-85957 Contract on function is getting discarded if any of effect declarations is unknown
  • KT-86143 operator keyword is allowed on arbitrary equals in enum entries
  • KT-73197 Order-dependent choice of overload by lambda return type with Unit
  • KT-86144 Unresolved code in ambiguous plus assign is not reported
  • KT-86006 CFG: Exponential growth when visiting unresolved delegates in FirLocalVariableAssignmentAnalyzer
  • KT-86103 Incorrectly reported CONFLICTING_OVERLOAD on companion member
  • KT-84344 Disambiguate fake source elements for source-based symbol IDs
  • KT-85965 Native: incremental compilation blows up with NoSuchFileException: class_fields
  • KT-86005 Fix misuse of DeferredMethodVisitor.intermediate in AnonymousObjectTransformer
  • KT-72840 [JVM Inliner] Two fails AFTER mandatory stack transformations: incorrect bytecode
  • KT-30728 "VerifyError: Operand stack underflow" on crossinline lambda usage inside inline function in anonymous object
  • KT-84589 Prohibit Array<Nothing> in lhs of ::class
  • KT-85825 Context parameter lambda loses context type when wrapped in nested run blocks
  • KT-84766 Kotlin/Native: separate compiler cache for latin1Strings=true
  • KT-82899 Native IC: AIOOBE on coroutines
  • KT-85188 Don't poison binaries with companion blocks & extensions for LV >= 2.5
  • KT-80176 ASSERT FAILED: SDE.c : 296 - bad SourceDebugExtension syntax - position 376 - expected ':'
  • KT-84581 Inline function with @JvmOverloads produces SourceDebugExtension attribute with invalid line numbers
  • KT-85954 Implicit JvmExposeBoxed leads to IOOBE when data class constructor accepts nullable inline class
  • KT-84960 Property contract leaks unsubstituted type parameter in smart cast
  • KT-85203 Kotlin/Native: "Invalid LLVM module - Instruction does not dominate all uses" with nested inline suspend functions and withContext
  • KT-84280 Standalone Unit qualifier allows type arguments: Unit<Any>
  • KT-85766 Confusing error message "'this' is not defined in this context" on companion extension delegated property
  • KT-72706 Confusing "INVISIBLE_REFERENCE" when calling private constructor
  • KT-85888 Native: incremental compilation blows up when a method changes from open to final
  • KT-85720 K2: Missing null check in generic vararg function call when passing value of flexible type
  • KT-85701 K2: Type parameter is out of bounds for IMPLICIT_DYNAMIC_CAST
  • KT-80841 Confusing positioning of NO_VALUE_FOR_PARAMETER
  • KT-82196 False positive: "Recursive call is not a tail call" inside when/if with lambda and elvis
  • KT-85841 Error message for NULLABLE_ON_DEFINITELY_NOT_NULLABLE uses obsolete term for DNN types
  • KT-81932 False positive TAIL_RECURSION_IN_TRY_IS_NOT_SUPPORTED caused by try in another branch inside tailrec function
  • KT-85661 Lazy resolve for substituted property accessors with a contract doesn't work
  • KT-84719 Provide information for qualified types that might be replaced with context-sensitive simple names in IDE mode
  • KT-85667 Add experimental language version 2.6
  • KT-85770 Support companion block properties in interfaces
  • KT-85168 Generate static initializers as proper IR functions
  • KT-85703 Drop pre-2.0 language features from K2 & common compiler code
  • KT-74516 False negative TYPE_PARAMETER_AS_REIFIED for DNN type
  • KT-85733 Illegal unqualified resolution to companion extension through scope linking
  • KT-85679 Internal Compiler Error when trying to access a value parameter from companion block
  • KT-81814 Field name '$$context-Functor#1' cannot be represented in dex format
  • KT-81708 K/N incremental compilation: No module deserializer for FUN name:writeObject
  • KT-6071 Change USELESS_CAST warning message
  • KT-85527 Unmute Android tests after removing IGNORE_BACKEND_K1 directive
  • KT-84939 Kotlin/Native: support llvm passes in -Xsave-llvm-ir-after
  • KT-85341 K2."TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM" false positive on accesses to properties of an anonymous object
  • KT-84861 Support Companion Blocks & Extensions in Scripts/REPL
  • KT-72999 K/N: Do not consider IrTypeOperatorCall as a tail call expression
  • KT-84327 Name-based destructuring conflicts with in-scope functions
  • KT-78678 Checking for nullable type against nullable type falls back to inline-when generation mechanism
  • KT-83652 Confusing messages when using package parts with type arguments in qualifiers
  • KT-85479 Improve diagnostic messages for upper bound violations
  • KT-84717 Provide information for qualified expressions that might be replaced with context-sensitive simple names in IDE mode
  • KT-84859 Skip deprecation phase for generic arguments in qualifier receiver of static call for companion block members and extensions
  • KT-75372 Deprecate K1 compiler
  • KT-80093 Type inference depends on the presence of transitive dependency
  • KT-68933 CompilationException: Back-end: Could not get inlined class
  • KT-70461 K2: "Inline class types should have the same representation" caused by value class and smart check
  • KT-63746 K2: JSpecify: If a class has a @Nullable type-parameter bound, Kotlin should still treat unbounded wildcards like platform types
  • KT-17738 Java cannot extend class implementing kotlin.collections.Map
Compose compiler
  • b/489339299 Move Compose runtime to a stable version
  • b/509945632 Always wrap inline lambdas with a composable group with a group
  • b/422193018 Cherry-pick "Fix callableInferenceNodeOf in ComposableTargetChecker.kt"
IR. Inlining
  • KT-85605 "Local delegated property has not delegate" exception when calling inline function containing delegated property in a lambda from within an inline lambda
  • KT-79065 Try to remove NativeRuntimeReflectionIrBuilder
  • KT-72464 [Native][JS][Wasm] Non-local return through suspend conversion breaks the IR inliner
IR. Interpreter
  • KT-86083 Create a new CLI flag to enable IntrinsicConstEvaluation feature
IR. Tree
  • KT-86527 Remove unreachable code from UpgradeCallableReferences
  • KT-85673 Replace classId with IrClassSymbol in IrAnnotation
  • KT-85572 KLIBs: New signatures for companion funs/vals
  • KT-74938 Use SYNTHETIC_OFFSET in IR fake overrides
  • KT-78175 Remove remaining usages of attributeOwnerId outside of JVM backend
  • KT-85573 Store "companion parameter" in IR of funs/vals declared as companion extensions
  • KT-85896 Type parameter is out of bounds (in setter) for a property with context parameters
  • KT-85698 Type parameter is out of bounds (in setter) for an extension property with type parameter
  • KT-76934 Drop old IR parameter API
JVM. Reflection
New Features
  • KT-73657 Fix kotlin-reflect performance issues for reflection operations common for both reflection implementation: stdlib and kotlin-reflect
Fixes
  • KT-86709 Reflection: KRIE with Reaktor on fresh master
  • KT-85903 Reflection: do not inherit companion block members from supertypes in KClass.members
  • KT-85902 Reflection: support call/callBy for companion blocks & extensions
  • KT-86477 Reflection: test builtin class contents
  • KT-86545 Reflection: extra Serializable supertype for non-mapped enum classes in "kotlin" package
  • KT-83677 Reflection: aliased extension function type is rendered as non-extension in toString
  • KT-85836 Reflection: KotlinReflectionInternalError on isSubtypeOf with definitely-not-null type
  • KT-83986 Reflection: java.io.Serializable is not shown in supertypes of Int type in new reflection
  • KT-84495 Reflection: "KotlinReflectionInternalError: Annotation class not found: kotlin/jvm/internal/EnhancedNullability" on Java Optional type
  • KT-86017 KClass.constructors returns all java.lang.String constructors for mapped type kotlin.String
  • KT-85550 Reflection: KParameter.type.classifier returns boxed KClass for non-nullable primitive types
  • KT-86177 Reflection: incorrect modality of Java constructors in the new implementation
  • KT-85999 Reflection: ByteArray KType incorrectly has type arguments in Kotlin 2.4.0
JavaScript
New Features
  • KT-56493 KJS: Export documentation to generated d.ts files
  • KT-51292 Proposed behavior of @JsExport on interfaces and classes with companion objects
  • KT-21626 Support ES2015 syntax in js function
Fixes
  • KT-80188 Design exporting of suspend lambdas into JS/TS
  • KT-84710 Kotlin/JS: Suspending default interface methods are not accessible on subclasses from JS
  • KT-19819 JS: source maps: write the longest common prefix of all paths to "sourceRoot" field
  • KT-85990 K/JS: Default parameter values ignored in @JsStatic suspend functions when class is exported
  • KT-82266 Support transitive export in Analysis API-based TypeScript export
  • KT-85616 [K/JS] Add synthetic and internal compiler APIs into sourcemap's ignoreList
  • KT-84090 Save variance in the generated TypeScript
  • KT-56618 KJS/IR: Support external interfaces from common code (via annotation?)
  • KT-80991 K/JS/Wasm interop: JsReference.get is easy to accidentally use in JS target
  • KT-85424 Replace each js call with jsClassIntrinsic after bootstrapping
  • KT-84457 KJS: Support implementable interfaces in Analysis API-based TypeScript Export
  • KT-85452 K/JS: Cannot create static member with @JsStatic in non-companion object
  • KT-83462 Usage of star projection makes any generic type not-exportable
  • KT-85599 Allow exporting annotation classes into JS/TS
  • KT-85563 Kotlin/JS: TypeScript mts files do not properly escape enum values
  • KT-85411 Fix conversionCombinations.kt tests for the JS target
  • KT-60899 K2 JS: Implement warning NO_REFLECTION_IN_CLASS_PATH
Klibs
Performance Improvements
  • KT-84837 Introduce an index in IR linker for faster look up of suitable module deserializers
Fixes
  • KT-86501 Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64
  • KT-85578 KLIBs: New manifest property to indicate "new initialization order"
  • KT-84836 Minimize usages of IrBuiltIns in the KotlinIrLinker
  • KT-86037 [Tests] Split test directive IGNORE_KLIB_BACKEND_ERRORS_WITH_CUSTOM_FIRST_STAGE
  • KT-81947 [Wasm] Klib backward and forward compatibility testing
  • KT-86228 Simplify Klib's ReadBuffer
  • KT-58409 [KLIB Reproducibility] File path separators should be platform-independent in KLIBs
  • KT-78188 [JS] Klib backward and forward compatibility testing
  • KT-76195 Combine toJvmMetadataVersion and toKlibMetadataVersion
  • KT-84750 [K/N] Set "kotlin.native.home" appropriately in forward testing of master -> 2.4.0-Beta2
  • KT-85805 AtomicfuNativeKlibSyntheticAccessorTestGenerated broken
  • KT-85359 ExportKlibToOlderAbiVersion with LV=2.2 is silently ignored
  • KT-85290 Make :native:native.tests:klib-compatibility:testMinimalInAggregate cachable
  • KT-85080 Klib/IR Tests TC configuration -- need to explicitly download the necessary dependencies
  • KT-84990 Investigate the usage of allDependencyModules in IR linker
  • KT-84349 [Wasm] Implement forward klib compatibility testing
Language Design
  • KT-86089 Explicit context arguments: Stable release
  • KT-86201 Name-based destructuring stable release of only-syntax in 2.5
  • KT-7882 Generic vs Non-Generic and implicit Unit return type
  • KT-78796 Decide the future of the AllowEagerSupertypeAccessibilityChecks language feature
  • KT-73821 Decide the future of the ForbidUsingSupertypesWithInaccessibleContentInTypeArguments language feature
Libraries
New Features
  • KT-86595 Introduce StackTraceRecoverable interface into the standard library
  • KT-10380 allEqual function for Iterable
Performance Improvements
  • KT-86032 K/N, K/Wasm: BitSet::get allocates objects for each access
Fixes
  • KT-86027 Hide returnsResultOf under a separate flag and remove its usages from kotlin stdlib
  • KT-86696 return-value-checker: false positive Path.setPosixFilePermissions and Path.setLastModifiedTime
  • KT-86470 Stdlib doc: Wrong timestamp in kotlin.time.Instant.parse example (leads to InstantFormatException)
  • KT-86053 Update kotlin-metadata-jvm for the companion blocks and extensions
  • KT-80654 K/N and K/Wasm: implement missing Regex tests
  • KT-85326 Libraries: rangeUntil docs sample code uses a rangeTo example
  • KT-82505 API reference: add links to array transformations returning arrays from their list-returning counterparts
  • KT-62423 Consider providing Common atomic types
Native
  • KT-74844 kotlin.native.internal.FileFailedToInitializeException when running native tests with Kotlin 2.1.20-Beta2
  • KT-83914 Native: when loading JNI libraries, java.library.path can contain system directories with libraries with same names
Native. Build Infrastructure
  • KT-82607 [K/N] Dist build fails when gradle daemon was started on a JRE (i.e., without JNI headers)
  • KT-85451 Native: migrate the remaining tests to testFixtures
  • KT-86725 Kotlin/Native: make KonanCacheTask aware of per-file caches
  • KT-85803 K/N: build not reproducible - platformLibs caches
  • KT-85823 Kotlin/Native: delete outputs in :kotlin-native:distNativeLibs
  • KT-85522 Kotlin/Native: llvmLinkBreakpadMainMacos_arm64 fails
Native. C and ObjC Import
  • KT-83940 Generate IR from C-interop KLIBs without descriptors
  • KT-86871 C-interop Klib caches are not deterministic after KT-83940
  • KT-86559 [K/N] More stable @CCall ids
  • KT-73656 Native: @OverrideInit on a capturing local class constructor causes a compiler crash
  • KT-85765 Prohibit emitting C-interop KLIBs with kotlin or kotlinx.cinterop packages
  • KT-84043 Native: findMacros takes a lot of time with -fmodules in cinterop
  • KT-85705 Swift-generated headers with external_source_symbol produce duplicate enum declarations
Native. ObjC Export
  • KT-86069 Native: the annotation target for @ObjCEnum.EntryName` is wrong
  • KT-83504 ObjCExport: Source unresolved dependency
  • KT-83505 ObjCExport: Transitive unresolved dependency
Native. Runtime
  • KT-85897 [K/N] C Export sometimes hangs on termination on mingw
  • KT-85811 K/N: FirNativeGCTestGenerated.testMemoryDump fails
  • KT-85882 Performance improvement in Kotlin_getCurrentStackTrace: use vectorized/range-checkless copy
  • KT-85077 Native: if CoreSymbolication fails, report this to users with a troubleshooting guide
Native. Runtime. Memory
  • KT-85457 Native: TSAN tests fail with Xcode 26.4
Native. Swift Export
New Features
  • KT-79477 Make Swift Export work handle @OptIn declarations well
Fixes
  • KT-86650 [Swift Export] Trampoulinebuilding for a function with changed argument name produces incorrect code.
  • KT-85870 [Swift Export] Invalid unavailability propagation to protocol members
  • KT-85918 [Swift Export] unavailable operator function fails to compile
  • KT-85869 [Swift Export] release function conflicts with unavailable NSObject.release
  • KT-85868 [Swift Export] Factory function conflicts with class name
  • KT-85871 [Swift Export] 'AbstractCoroutineContextKey' is inaccessible due to '@_spi' protection level
  • KT-85788 [Swift Export] Doesn't resolve generic upper bound
  • KT-85534 [Swift Export] Fails to bind private class implementing deprecated public interface
  • KT-85784 [Swift Export] generic class with multiple upper bounds fails
  • KT-85704 [Swift Export] cannot infer generic type of function returning a generic type
  • KT-85711 [Swift Export] suspend function returning non-null generic fails to compile
  • KT-85715 [Swift Export] generic interface in typealias fails to compile
  • KT-85714 [Swift Export] unsupported input type param in functional receiver
  • KT-85458 [Swift Export] value of a closure returning a closure generates invalid swift code
Tools. BCV
  • KT-83476 Use Maven publications as dump input [ABI Validation]
Tools. Build Tools API
New Features
  • KT-85663 Make BTA JS Compiler Arguments Type-Safe
  • KT-66425 BTA: implement ClasspathEntrySnapshot.hashCode
  • KT-84598 [BTA] Expose API Version via Public Property
  • KT-85421 BTA: validate arguments for invalid characters and guide users to feedback issue
  • KT-78207 BTA: implement basic Kotlin/Wasm binaries linking support
  • KT-78206 BTA: implement basic Kotlin/Wasm compilation support
  • KT-83794 Make BTA JVM Compiler Arguments Type-Safe
  • KT-84401 BTA: implement Kotlin/JS incremental compilation support
  • KT-78204 BTA: implement basic Kotlin/JS compilation support
Fixes
  • KT-82986 BTA: setting unknown options may pass silently
  • KT-86734 Add Kotlin 2.4.0 into backward-compatibility tests
  • KT-86785 [KGP] Compilation logs are not prefixed with taskPath in BTA mode
  • KT-85093 [BTA] Resolve Forward Compatibility Test Blocker for X_IGNORED_ANNOTATIONS_FOR_BRIDGES
  • KT-85787 BTA: Distinguish typed argument values from raw string values in compatibility test descriptors
  • KT-85504 Kotlin Daemon crashes if there is a typo in compiler args added as key-value freeCompilerArgs
  • KT-85736 BTA tests: automate detection of missing versions in compatibilityTestsVersions
  • KT-78208 BTA: split Kotlin/JS compilation and linking arguments
  • KT-78209 BTA: split Kotlin/Wasm compilation and linking arguments
  • KT-86395 [BTA] forward-compatibility violation: NoSuchMethodError on JvmSnapshotBasedIncrementalCompilationConfiguration. breaks IC
  • KT-80679 Add support for the Build Tools API [ABI Validation]
  • KT-86156 BTA: report all invalid argument values at once instead of stopping at the first one
  • KT-85505 Kotlin daemon crashes if "-Xwarning-level=" compiler option is added with a syntax error
  • KT-85958 argumentsToStrings produces corrupted arguments when value starts with "@"
  • KT-86059 [BTA] Handle enum parsing errors related to case sensitivity
  • KT-86243 [BTA] Compat package has wrong version of compiler on compile classpath
  • KT-86247 [BTA] Improve -Xjsr305 parser error message: include the full failing entry
  • KT-85556 BTA: SearchPathType compiler arguments (classpath, -Xklib, -Xmodule-path) not resolved to absolute paths
  • KT-85167 Make Xjsr305 type safe
  • KT-86117 CRI: fileId is hashed from the absolute source path, not the stored relative path
  • KT-85696 BTA: deepCopy() in JvmCompilerArgumentsImpl uses string round-trip, corrupting delimiter characters
  • KT-85738 BTA forward compatibility: NoSuchFieldError on X_IGNORED_ANNOTATIONS_FOR_BRIDGES when API 2.3.0 is used with impl 2.4.0
  • KT-85722 [SSoT, JS/Wasm] Switch to "nopack" naming for argument controlling packing of klibs to unify with Native backend
  • KT-85702 [SSoT] Simplify compiler argument enum serialization by replacing per-type serializers with a generic contextual serializer
  • KT-85607 [BTA] -Xignored-annotations-for-bridges missing forward compatibility support (API 2.3.20 + impl 2.4.x+)
Tools. CLI
  • KT-56850 Separate K/Wasm CLI entry point from K/JS CLI
  • KT-86202 Warn against disabling a language feature with a parametrized compiler argument that's already stable
  • KT-86746 Drop all org.jetbrains.kotlin.asJava usages from CLI
  • KT-85813 Inconsistent behavior of -Xcontext-parameters warning depending on daemon/in-process
  • KT-85414 Argument DSL: delimiter = KotlinCompilerArgument.Delimiter.PathSeparator generates invalid Kotlin code
  • KT-85920 Remove MessageCollector Usage from ErrorReportingContext
  • KT-85898 Register all KtDiagnosticsContainers
  • KT-85187 Add compiler argument for companion blocks & extensions
Tools. CLI. Native
  • KT-85538 Native: allow using JNI in CLI tools on JDK 24+ and Unsafe on JDK 24
Tools. Compiler Plugin API
  • KT-85969 KtLint incompatible with Kotlin 2.4.0-Beta2 (parsing errors / Extensions storage issue)
Tools. Compiler Plugins
New Features
  • KT-85758 Support for @Log annotation on Kotlin classes
Fixes
  • KT-86286 all-open plugin makes @JvmRecord classes non-final, causing compilation error "'@JvmRecord' class must be final"
  • KT-86620 Lombok incorrectly detects clashing constructor with varargs argument
  • KT-86773 PowerAssert: sorting of possible overloads
  • KT-86225 Atomicfu generates IR with out-of-scope type parameters
  • KT-83121 Lombok. A constructor without parameters is available for a class with @Data and staticConstructor
  • KT-84059 Lombok. CANNOT_INFER_PARAMETER_TYPE for toBuilder function if @Builder is applied to a generic class
  • KT-84058 Lombok. NoSuchMethodError for the builder function when @Builder is applied to the method
  • KT-81622 Support @Slf4j and other logging annotations (@CommonsLog, @Flogger, @JBossLog, @Log4j, @Log4j2, @XSlf4j)
  • KT-86170 PowerAssert: Stabilize runtime ABI for initial release
  • KT-86058 Check the frontend-owned plugins for the Companion blocks and extensions
  • KT-85762 Support for @ToString annotation on kotlin classes
  • KT-86065 Scripting plugin adds HashMap<K, V> (with HashMap's own out-of-scope type parameters) as a supertype of the synthetic REPL state class
  • KT-86064 Plugin sandbox generates IrClassReferenceImpl typed as KClass<T> where T is KClass's own type parameter
  • KT-86063 PowerAssert plugin generates IR call to listOf<T> with an out-of-scope type parameter as its type
  • KT-86070 PowerAssert: Enum entries should not be displayed
  • KT-85250 PowerAssert: Automatically add runtime library dependency
  • KT-85472 Compiler crash if use unexpected value of AccessLevel in a lombok annotation
  • KT-85693 Don't generate declarations with NONE access level
Tools. Compiler plugins. Serialization
  • KT-85963 IncompatibleClassChangeError: Expected non-static field $stable on deserialization of @Serializable data class when Compose compiler plugin is applied before Serialization plugin
  • KT-85554 Serialization: "IndexOutOfBoundsException" on property generated by Compose plugin
Tools. Daemon
  • KT-85634 -Xwarning-level warnings are escalated to errors when -Werror is enabled in BTA daemon mode
  • KT-71048 KotlinCompileDaemon compatibility not discriminated by JVM version
  • KT-75840 Almost dead daemons are considered in the daemon elections
Tools. Gradle
New Features
  • KT-78214 Gradle: implement Kotlin/JS compilation and linking through BTA
  • KT-80509 Gradle: implement metadata compilation through BTA
  • KT-78216 Gradle: implement Kotlin/Wasm compilation and linking through BTA
Fixes
  • KT-83679 Add ERROR deprecation for CleanableStore and CleanDataTask
  • KT-85689 Delete prepareDeps from kotlin repo
  • KT-86118 CRI: Enabling kotlin.compiler.generateCompilerRefIndex does not invalidate compileKotlin UP-TO-DATE state
  • KT-85942 Carry compiler diagnostic identifiers through MessageCollector infrastructure
  • KT-85568 Use compiler diagnostic identifiers in KGP Problems API reporting
  • KT-86346 Compiler warnings printed twice in console — once as w: and again as Gradle "Problem found:" block
  • KT-85567 Carry compiler diagnostic identifiers through Build Tools API messages
  • KT-85901 [Gradle] Refactor KGP functional test task configuration to use file-backed system properties
  • KT-85373 Compile against Gradle API 9.5.0
  • KT-85374 Run tests against Gradle 9.5.0
  • KT-86429 Deprecate KGP contentEquals() utility, move it to internal utility function
  • KT-66381 Build reports in JSON: incorrect path to a json build report is printed to build output if a relative path defined as a value for kotlin.build.report.json.directory property
  • KT-85590 Gradle: cannot create task MainKt.main() due to missing defaultSourceSetName
  • KT-85412 Module name is not sanitized with older Kotlin compiler versions
Tools. Gradle. Compiler plugins
  • KT-84811 PowerAssert: Gradle configuration option for default sourcesets to transform
Tools. Gradle. JS
  • KT-86630 Introduce mocha browser runner for kotlin test as part of kotlin-web-helpers
  • KT-86260 Integrate Playwright with JS Tests pipeline
  • KT-86106 Fix task dependency in KGP lockfile generation
  • KT-86271 [WasmJs/Js] 2.4.0-Beta2 - Node version not compatible with popular JS dependencies
  • KT-85854 Improve AbstractSetupTask logging
  • KT-64275 Gradle: remove deprecated symbols related to the legacy JS target
  • KT-84790 Use package.json as 'source of truth' for KGP npm tooling dependencies
Tools. Gradle. Multiplatform
  • KT-69571 compileNativeMainKotlinMetadata not handling project/prebuilt substitutions
  • KT-84533 KMP: compileCommonMainKotlinMetadata: "Unresolved reference" for androidx.savedstate from Maven (works with project() dependency)
  • KT-84767 K/N: associateWith triggers warning about friend-modules libs not included in -library argument
  • KT-81117 With android.builtInKotlin=true (AGP 9.0), using kotlin-multiplatform plugin will fail with Cannot add extension with name 'kotlin'
  • KT-83370 Incorrect metadata transformation for stdlib's webMain source set
  • KT-84669 SPM import: If iosApp dir located outside of the project, checkSyntheticImportProjectIsCorrectlyIntegrated will fail
Tools. Gradle. Native
New Features
  • KT-86047 Suggest CocoaPods -> SwiftPM migration skill and documentation on cocoapods plugin application
  • KT-86155 Print what changed in the linkage package
  • KT-85797 Use faster findMacros in SwiftPM import cinterops
  • KT-83873 Redo how dynamic library linkage and promotion are handled
Fixes
  • KT-85961 integrateLinkagePackage without parameters fails with an obscure error
  • KT-84238 SPM Import: Ensure generated Package.swift preserves symlinks in local package paths
  • KT-86015 Swift export binary doesn't see main compilation cinterop output
  • KT-85502 Swift PM Import: "Library not loaded": KotlinMultiplatformLinkedPackage.framework is not copied next to the executable
  • KT-86024 Empty main compilations cause w: [COMPILER_ARGUMENTS_WARNING] There are libraries in -friend-modules CLI argument that are not included in -library CLI argument:
  • KT-69896 Native: output to stderr ends up in the Gradle log
  • KT-85708 [KGP] dSYM copy task ignores isStatic due to eager read before framework configuration
  • KT-84262 integrateEmbedAndSign produces an incorrect Gradle call for the root project
  • KT-84730 Add Kdocs to SwiftPM import APIs
Tools. Gradle. Wasm
  • KT-86457 [Wasm, Gradle] BinaryenExec.standardOutput is silently ignored after migration to Gradle Workers
  • KT-85688 K/Wasm: Remove setting of failOnNoDiscoveredTests in Wasm Gradle tests
  • KT-86054 K/Wasm: Not set sourceMapBaseDir if there is no sourceMap property in JS and Wasm
  • KT-85974 K/Wasm: Do not set -Xir-per-module for Wasm tasks
  • KT-85861 K/Wasm: Upgrade NPM dependencies
  • KT-85806 K/Wasm: Do not rewrite native_implementations.kt file path in source map
Tools. Incremental Compile
  • KT-84271 Kotlin Incremental compilation failure "The following FqNames can't be derived from DirtyData.dirtyLookupSymbols"
  • KT-85740 Incremental compilation misses classpath removal when removed type is used only in a dependency's method signature
  • KT-85074 IC: false build success when anonymous class fails to implement new abstract member from another module's interface
  • KT-85642 IC: Classpath snapshot cache may serve stale entries when snapshot file is overwritten at the same path
Tools. Kapt
  • KT-85195 KAPT: IntroducedAt is not supported in KAPT
  • KT-86003 Remove MessageCollector usage from kapt
  • KT-85453 Make :kotlin-annotation-processing-cli:test cacheable
Tools. Maven
  • KT-85622 [Maven] setting kotlin.compiler.jdkRelease without explicit jvmTarget causes compilation failure due to conflicting default
  • KT-61667 Maven: -Xjdk-release=20 leads to "'-Xjdk-release=20' option conflicts with '-jvm-target 1.8'. Please remove the '-jvm-target' option"
  • KT-84163 Maven smart defaults: and overrides not respected
Tools. Performance benchmarks
  • KT-85233 Refine benchmarks module and add new custom long-running tests to it
Tools. REPL
  • KT-86290 Drop GenericReplTest & LegacyReplTest
Tools. Scripts
  • KT-86391 Drop SkipStandaloneScriptsInSourceRoots
Tools. Wasm
  • KT-83434 K/Wasm: add wasm-wasi stdlib into compiler distribution (dist/)
v2.4.0

Kotlin 2.4.0

Changed 3
  • Enable experimental KDoc resolver by default in Analysis API
  • Improve K2 Jooq completion performance
  • Move CommonDefaultImportsProvider to the frontend independent module
Fixed 17
  • Fix OVERLOAD_RESOLUTION_AMBIGUITY false positive with assertEquals
  • Analysis API: properly support KMP in KotlinPackageProvider
  • Analysis API: prevent dangling file session creation that causes computeIfAbsent contract violation
  • Fix evaluation of variable with local class in type parameter that leads to InventNamesForLocalClasses exception
  • Fix InvalidFirElementTypeException with illegal callable reference call in K2 Analysis API
  • Fix false positive deprecation warning with override of built-in method in JDK mapped class
Changelog
Analysis API
  • KT-83867 OVERLOAD_RESOLUTION_AMBIGUITY false positive with assertEquals in IJ repo
  • KT-83723 [Analysis API] Enable experimental KDoc resolver by default
  • KT-83388 Analysis API: properly support KMP in KotlinPackageProvider
  • KT-65683 Analysis API: Dangling file session creation causes a computeIfAbsent contract violation
Analysis API. Code Compilation
  • KT-78946 Evaluation of variable with local class in type parameter leads to InventNamesForLocalClasses exception
Analysis API. FIR
  • KT-68260 K2 AA: InvalidFirElementTypeException “For CALLABLE_REFERENCE_EXPRESSION with text ::lam1, unexpected element of type: no element found” with illegal callable reference call
  • KT-70896 AA: False positive deprecation warning with override of built-in method in JDK mapped class
  • KT-84711 K2 IDE sometimes loses FIR plugin-generated declarations after file changes
  • KT-84625 Analysis API: collectDesignationPath fails for nested classes inside plugin-generated top-level classes
  • KT-84596 Improve K2 Jooq completion performance
  • KT-84525 KaValueParameterSymbol#getHasSynthesizedName returns false for FirDeclarationOrigin.SubstitutionOverride.DeclarationSite
  • KT-83546 Kotlin analysis reach ClsCustomNavigationPolicy
  • KT-84259 Move CommonDefaultImportsProvider to the frontend independent module
  • KT-82945 Analysis API: KotlinIllegalArgumentExceptionWithAttachments: Expected FirResolvedTypeRef with ConeKotlinType but was FirUserTypeRefImpl
  • KT-71135 AA: exception from sealed inheritors checker when analyzeCopy
Analysis API. Infrastructure
Fixes
  • KT-83905 Analysis API: Improve UX with test data
  • KT-84913 Extract compiler classes used by the PSI & Analysis API to a separate module
  • KT-64986 Analysis API: Implement Analysis API tests for different KMP Platforms
  • KT-84776 The test data manager misses the redundancy check in the update mode
  • KT-84962 The test data manager misses -ea flag
  • KT-84388 Preserve the EOF status in the test data manager to avoid extra changes
  • KT-84362 Analysis API tests produce many warnings due to "not yet loaded registry"
  • KT-84279 Test Data Manager fails on a clean build
  • KT-83913 Exclude compiler-based Analysis API tests from Git tracking
  • KT-80379 Extract per-module test generators for AA tests
  • KT-84120 Move CLI modules out of kotlin-compiler-fe10-for-ide
  • KT-83200 Track external dependencies of the Analysis API modules
Analysis API. Light Classes
  • KT-82434 Light classes should prefer enum entries to properties
  • KT-84200 SLC: return type is not boxed for delegated methods with generic original method
  • KT-72451 "CCE: class PsiPrimitiveType cannot be cast to class PsiClassType" with same-named enum class and typealias
Analysis API. PSI
  • KT-84715 removeModifier doesn't delete whitespaces around the removed modifier
  • KT-84564 KtEnumEntry.delete deletes semicolon
  • KT-84781 Use computed properties in KotlinElementTypeProviderImpl
  • KT-83846 Set up guidelines for PSI
  • KT-84135 Deprecate KtSelfType
Analysis API. Providers and Caches
  • KT-82731 Analysis API: Limit granular tree change processing to a few files
  • KT-79234 Analysis API: Usage of asMap() on Caffeine caches bypasses stats counters
  • KT-74090 Analysis API: Support dumb mode (restricted analysis)
Analysis API. Standalone
  • KT-83801 Nested typealiases are not correctly indexed in standalone mode
Analysis API. Stubs and Decompilation
  • KT-85371 StackOverflowError from LLKotlinStubBasedLibrarySymbolProvider and StubBasedClassDeserialization
  • KT-83935 Support KDoc loading in decompiled stubs
Analysis API. Surface
New Features
  • KT-85239 Streaming version of collectDiagnostics()
  • KT-82519 Automatically recognize the appropriate analysis mode for in-memory file copies based on their content
  • KT-73534 SAM method API
  • KT-82993 Support explicit backing fields in the Analysis API
Fixes
  • KT-79186 KtCompletionExtensionCandidateChecker does not work for extensions when using callable references of a type
  • KT-83759 Analysis API: Mark platform interface APIs with @KaPlatformInterface
  • KT-83921 Extend KaKDocProvider to read Kdoc from KLIB metadata
  • KT-77426 KaFirCompilerFacility uses an arbitrary JVM counterpart for common sources
  • KT-84737 KaCallableSymbol#directlyOverriddenSymbols doesn't work for java overrides of kotlin properties
  • KT-84621 Migrate symbol tests to ManagedTest properly
  • KT-80575 KaFirJavaInteroperabilityComponent#getJavaGetterName should not throw exception on incomplete code
  • KT-84397 KtDefaultAnnotationArgumentReference should return only results with value name
  • KT-84804 buildSubstitutor does not work correctly with Java type parameters
  • KT-84389 Cover references with ABI and documentation checks
  • KT-57042 K2, Analysis API: KaJavaInteroperabilityComponent#callableSymbol returns null for a Java getter implementing Kotlin property
  • KT-80856 Analysis API: analysisContextModule incorrectly determines the module of an original file when used for dangling file context assignment
  • KT-84363 AA, isUsedAsExpression: Unhandled Non-KtExpression parent of KtExpression: class org.jetbrains.kotlin.psi.KtContractEffect
  • KT-70476 Analysis API: "KtDefaultAnnotationArgumentReference.resolveToSymbols" does not work in FIR implementation
  • KT-68499 Split KtDefaultAnnotationArgumentReference on K1 and K2 implementation
  • KT-70521 Analysis API: Impossible to distinguish between 'iterator' operator calls dispatched with imports from objects
  • KT-77669 Context arguments are missed on implicit invoke calls
  • KT-77670 resolveToCall: extensionReceiver is incorrectly chosed due to a conflict with context parameters for an implicit invoke call
  • KT-68633 K2 AA: IAE "Expected class KaClassSymbol instead of class KaFirEnumEntrySymbol" with enum entry initializer
  • KT-83777 Analysis API: The resolution scope of a context module accepts elements from associated dangling files
  • KT-82571 No expected type for overridden property without explicit type
  • KT-83223 Support "Explicit context arguments" in the Analysis API
  • KT-65186 K2: Analysis API: KtExpressionTypeProvider.getExpectedType works incorrectly for the right hand side of assignment expressions
  • KT-76011 KaFirNamedClassSymbol#companionObject doesn't provide generated objects generated by compiled plugins
  • KT-73290 Analysis API: Improve the architecture of content scopes and resolution scopes
Backend. J2KLIB
  • KT-86368 [JKLIB] MetadataJVMModuleDeserializer tries to deserialize all symbols
  • KT-86367 [JKLIB] kotlin.Cloneable built-in class not found
  • KT-84877 [J2KLIB] Remove withKotlinBuiltinsHack present in JKlibIrLinker.kt
  • KT-85846 Tests failing with fake override property missing accessors or backing field
  • KT-85717 IllegalStateException due to already bound symbol
  • KT-86204 [JKlib] Propagate private members from dependecies in the IR tree
Backend. Native. Debug
  • KT-83804 Native: debug information generator converts relative paths to absolute ones
Backend. Wasm
  • KT-83162 K/Wasm: renaming temporary and synthetic variables in the Chrome debugger
  • KT-85008 Develop and publish a demo app using an early version of the component model support
  • KT-76205 K/Wasm: stabilize and turn on incremental compilation by default
  • KT-83728 [Wasm] Invalid Ir type while suspend call with blocked if null comprehansion
  • KT-81637 K/JS/Wasm interop: Inconsistent behavior of is/as operations for JsReference<C> and C
  • KT-65030 K/Wasm: memory allocator for Component Model ABI
  • KT-83607 WasmJS: Production build eliminates 'else if' branch when 'else' is not wrapped with curly braces
  • KT-82803 Kotlin/WASM: Failed to compile the doResume function with if inside catch block
  • KT-83800 [Wasm] Closed world per-module compilation
Compiler
New Features
  • KT-84487 "-Xcollection-literals" compiler flag
  • KT-84072 Collection literals: treat visibility of of during resolve correctly
  • KT-83165 Collection literals: treat Deprecated(HIDDEN) operators of reasonably
  • KT-80500 Collection literals: Analyze ConeCollectionLiteralAtom in cases their expected type is not fully known
  • KT-80491 Implement fallback mechanism for collection literals
  • KT-80490 Implement overload resolution mechanism for collection literals
  • KT-84298 K2: Generate IR for Companion Blocks & Extensions
  • KT-83765 Make -Xsuppress-version-warnings have a diagnostic ID
  • KT-84484 Companion Extensions Analysis & Resolution
  • KT-84199 Implement DontMakeExplicitNullableJavaTypeArgumentsFlexible feature
  • KT-84319 Add JVM target bytecode version 26
  • KT-84297 Serialize & Deserialize Companion Block Declarations & Extensions to/from Metadata
  • KT-84288 Companion Blocks Analysis & Resolution
  • KT-84286 Parse Companion Blocks & Extensions
  • KT-84292 Enforce Companion Blocks & Extensions Language Feature during Resolution
  • KT-84291 Companion Blocks & Extensions Checkers
  • KT-84290 Callable References to Companion Block Declarations & Extensions
  • KT-84287 Build Raw FIR for Companion Blocks & Extensions
  • KT-73256 Implement all meta-target for annotations
  • KT-66344 K1 & K2: False positive WRONG_NUMBER_OF_TYPE_ARGUMENTS in callable reference to inner class member
  • KT-76766 Warning is missing for wrong subclass checking
  • KT-74049 Introduce special override rule to allow overriding T! with T & Any
Performance Improvements
  • KT-84941 Skip linking klibs for generating ObjC headers
  • KT-80367 Reduce memory consumption of DevirtualizationAnalysis
  • KT-84412 iOS release build time dramatically increases with 2.3.20-Beta2 compared to 2.3.10
  • KT-82559 linkDebugTest*X64 tasks are slower for Kotlin 2.3 than for 2.2
  • KT-84095 Improve Unit tail-call optimization to support inline generic functions similar to suspendCoroutine
Fixes
  • KT-77726 Move FirUnusedExpressionChecker to the default checkers list
  • KT-84841 Collection literals: Drop special treatment of when with expected type
  • KT-84732 Collection literals: "Expected FirCollectionLiteralImpl to be resolved" in RHS of equality operator
  • KT-84675 Collection literals: 'Not singleClassifierType superType: TypeVariable(S)' in PCLA
  • KT-84559 @OptIn on collection literal and context-sensitive does not work
  • KT-84547 Collection literals: "Expected expression 'FirCollectionLiteralImpl' to be resolved" in elvis expression
  • KT-80489 Collection literals: experimental version (Frontend)
  • KT-84768 [K/N] switch thread state in org_jetbrains_skia_Canvas__1nDrawPicture to workaround the deadlock
  • KT-52673 Don't report deprecation warning/error on last segments of imports
  • KT-83988 Remove extraneous POP+GETSTATIC Unit for calls of Unit-returning suspend functions
  • KT-77584 Support scripts built from LT in scripting API
  • KT-80113 Consider improving diagnostic messages related to ==/===/is/as
  • KT-85392 Native: concurrency issues in per-file caches
  • KT-83938 Missing Tail call optimization in reference classes returning Unit
  • KT-78432 No-arg constructor should be generated for regular classes with a value class parameter in case of JvmExposeBoxed
  • KT-86130 False positive UNINITIALIZED_ENUM_COMPANION on LV 2.3 and lower
  • KT-84860 False positive UNINITIALIZED_ENUM_COMPANION in enum access with explicit receiver in enum initializer when enum class has a companion
  • KT-86210 Update -Xannotation-default-target CLI parameter doc
  • KT-80590 Drop language version 1.9 for JVM
  • KT-85948 Contracts in 2.4 stdlib is not compatible with 2.3 compiler
  • KT-82123 KDoc: references that goes after markdown blocks don't have links
  • KT-85957 Contract on function is getting discarded if any of effect declarations is unknown
  • KT-84931 Incorrect type nullability in SAM super type in anonymous class-based SAM conversion
  • KT-83766 K2: Wrong sourcePsi is set for SymbolPsiLiteral in SLC for annotation arguments referencing a const val
  • KT-85062 Deprecate language version 2.1
  • KT-79729 Kotlin should warn about orphaned block expressions, e.g. // if () \n { .... }
  • KT-83884 The unused return value checker doesn't report a coercion from reference to Unit
  • KT-85825 Context parameter lambda loses context type when wrapped in nested run blocks
  • KT-37179 false-positive shadowing warning on local and member extension functions in presence of member extension property with invoke operator
  • KT-84366 Invalid name for captured this in bytecode
  • KT-84960 Property contract leaks unsubstituted type parameter in smart cast
  • KT-84281 Standalone typealias-to-object qualifier allows type arguments and has type Unit in this case
  • KT-84280 Standalone Unit qualifier allows type arguments: Unit<Any>
  • KT-84380 Type alias to non-generic class can have (arbitrary number of) type arguments in LHS of ::class
  • KT-84190 Implement basic functionality for returnsResultOf contract
  • KT-83920 False positive "modifier 'value' is not applicable to 'local variable'" with soft keyword in positional destructuring (square bracket) declaration
  • KT-84991 Improve Argument type mismatch diagnostics
  • KT-82216 Sanitize '.kotlin_module' filename
  • KT-85354 checkPsiTypeConsistency: add psi text attachments
  • KT-85479 Improve diagnostic messages for upper bound violations
  • KT-84585 Upper bound violated warning for expansion of type alias in LHS
  • KT-84924 Native: stdlib-cache.lock used by mulitple processes
  • KT-85244 False positive DUPLICATE_BRANCH_CONDITION_IN_WHEN with guard condition
  • KT-85487 Investigate why WrapContinuationForTailCallFunctions does not work in Android Test
  • KT-59633 K2: Implement running AndroidRunner tests with FIR
  • KT-76237 Store File-level annotations in KLIB metadata separately
  • KT-84198 Support multiple embedded .let-like calls with returnsResultOf contract
  • KT-84196 Handle multiple entry/exit points for returnsResultOf functions
  • KT-84195 Handle function references in returnsResultOf
  • KT-85162 Introduce diagnostics to refine numeric types casting
  • KT-80060 False positive REDUNDANT_CALL_OF_CONVERSION_METHOD in case of overloads
  • KT-85289 False-positive smartcast from == with type parameter based variable
  • KT-83890 return-value-checker: false positive "Unused return value of 'context'" on kotlin.context() functions
  • KT-84106 False negative "NON_EXHAUSTIVE_WHEN": "NoWhenBranchMatchedException" at runtime with sealed and platform type
  • KT-84717 Provide information for qualified expressions that might be replaced with context-sensitive simple names in IDE mode
  • KT-38983 Bridges are not generated in interfaces, which leads to counterintuitive behavior of java.lang.reflect.Proxy
  • KT-85005 Consider all: target in the checker of repeatable annotations
  • KT-85210 Enabling -XXLanguage:+IntrinsicConstEvaluation breaks highlighting on some broken code
  • KT-85217 Rework implementation supporting simple-to-suspend function conversion
  • KT-85036 Introduce a proper handling of optional expectation annotations in platform checkers during metadata compilation
  • KT-85086 False-negative JVM_EXPOSE_BOXED_CANNOT_BE_THE_SAME
  • KT-84082 [OPT_IN_USAGE_ERROR] duplicates for destructuring declaration
  • KT-85007 Properly implement special rules for kotlin.Result in @JvmExposeBoxed support
  • KT-74383 Support new callable reference nodes in JVM backend
  • KT-84828 Cleanup JVM backend from the old callable references-related code
  • KT-85006 Refine error messages for INAPPLICABLE_ALL_TARGET diagnostic
  • KT-84296 Support Companion Blocks in CFG
  • KT-85058 Remove final field modification in DescriptorRendererOptionsImpl to prevent warnings on JDK 26+
  • KT-72710 Incorrect behaviour of tail call suspend functions optimization
  • KT-84727 [K/N] Segfault when returning null as generic Int type from dynamic framework
  • KT-83460 Deprecation from @all:Deprecated is not propagated to property accessors/backing fields
  • KT-84859 Skip deprecation phase for generic arguments in qualifier receiver of static call for companion block members and extensions
  • KT-85050 [Swift Export] usage of inline classes with ref types crashes at runtime
  • KT-84983 Type parameter annotations are lost for local functions
  • KT-78800 Investigate FirMissingDependencySupertypeInQualifiedAccessExpressionsChecker
  • KT-73945 K2 IDE: Duplicated inspections for redundant 'open' in interface member
  • KT-84294 Ensure Context Sensitive Resolution works with Companion Blocks & Extensions
  • KT-83904 [Inliner] Inline function overrides an abstract method with a default value in an inheritance chain
  • KT-81675 Improve message for CONTEXTUAL_OVERLOAD_SHADOWED
  • KT-84994 Rework optimization for companion extension resolution
  • KT-81598 incorrect type mismatch error messages for generic calls with explicit type arguments
  • KT-84185 Type arguments are wrongly allowed in receivers of static calls
  • KT-83441 False positive: REDUNDANT_CALL_OF_CONVERSION_METHOD
  • KT-83587 K2: Missing null-check when using == on Short! and Byte! platform types
  • KT-84405 ClassCastException with conflicting projection on the LHS of a callable reference
  • KT-84866 Reserve CoroutineContext as context parameter for future use
  • KT-65239 K2: Render FIR declaration instead of IR-based descriptors in IR signature clash diagnostics
  • KT-84743 Type parameter declared as 'in' can be used in 'out' position in DNN & flexible types
  • KT-84720 "Unused return value" is not reported inside used if/when multi-statement blocks
  • KT-84310 No Warning Emitted For Deprecated Java Enum Value Usage
  • KT-81871 Drop context receiver tests
  • KT-84714 KJS: Forbid exporting properties with context parameters
  • KT-80701 Native: -Xbinary=cCallMode is not integrated with compiler caches
  • KT-84000 Native: test pre-codegen inliner on CI
  • KT-57557 Implement getAndSet for AtomicNativePtr via getAndSetField intrinsic
  • KT-84352 createUninitializedInstance generates invalid LLVM for value classes
  • KT-84234 Rename CONST_VAL_WITHOUT_INITIALIZER diagnostic for properties with EBF
  • KT-84411 Confusing message for the class reference of the inner class with the type parameter
  • KT-84594 EBF is smartcasted in inline function with @PiblishedApi
  • KT-83989 Update coroutines-codegen.md after changes of Unit tailcall optimization
  • KT-84452 EBF is smartcasted in the default argument with noinline modifier
  • KT-80925 Replace "useless" in diagnostic messages
  • KT-83646 Native: don't use sun.misc.Unsafe in ByteArrayStream when running on JVM 24+
  • KT-82122 Prohibit arbitrary placement of type parameters in callable reference LHS
  • KT-82574 Fixation: consider preferring EQUALS constraints to LOWER ones
  • KT-83564 Consider dropping HAS_PROPER_NON_NOTHING_NON_ILT_LOWER_CONSTRAINT
  • KT-84213 Flaky incremental compilation behaviour with EBF
  • KT-84133 Adopt initInstance to handle value classes
  • KT-24840 Square bracket escaping in KDoc
  • KT-84167 Invalid type references with type arguments in package parts compile without diagnostics
  • KT-84209 False negative ACTUAL_ANNOTATIONS_NOT_MATCH_EXPECT on context parameters of function types
  • KT-83354 Wrong position for lambda context type error
  • KT-84206 Remove forcesPreReleaseBinaries = true from ExplicitBackingFields
  • KT-83524 An anonymous function with named parameters throws FileAnalysisException
  • KT-84155 K2: NO_CONTEXT_ARGUMENT caused by stale value in NewConstraintSystemImpl.hasContradictionInForkPointsCache
  • KT-83829 False-negative INVALID_DEFAULT_FUNCTIONAL_PARAMETER_FOR_INLINE
  • KT-83842 KIAEWA: Exception in expression checkers for @OptIn(markerClass=[…])
  • KT-84045 Evaluate default arguments of annotation's parameters using FIR evaluator
  • KT-83987 Refactor/fix CoroutineCodegen.isReadOfInlineLambda()
  • KT-83772 Create a language feature for wrapContinuationForTailCallFunctions
  • KT-84061 K2: IllegalStateException: FirResolvedNamedReference expected on plusAssign for array element with unresolved initializer inside buildList
  • KT-83985 Drop arrayOf check from EscapeAnalysisChecker after bootstrap update
  • KT-78885 Current frame disappears from stack trace when debugging inline-heavy suspend code
  • KT-78727 Split KonanConfig into NativeFrontendConfig and NativeBackendConfig
  • KT-83755 Support rendering of evaluated and original arguments in FirAnnotationRenderer#renderAnnotation
  • KT-17763 Inner class constructor has incorrect generic signature in the bytecode
  • KT-83625 Initialize annotations on Java record components
  • KT-83795 Compiler crash on suspend lambda as default parameter of inline function
  • KT-72880 Calls with incorrect VarHandle method signatures are generated with -Xjdk-release being used
  • KT-67809 Native: remove support for non-opaque LLVM pointer types
  • KT-82148 Suspend function returns the wrong value and not Unit
  • KT-55559 JVM: ClassCastException with Unit returning suspend function and tail-call Non-Unit returning suspend function and callable reference
  • KT-70995 Kotlin/Native: Treat all @HasFinalizer types as escaping in Escape Analysis
  • KT-83903 'when' with 'val' does not take previous nullability check into account
  • KT-83952 StackEntries for tail-call suspend functions have internal names for classes instead of FQ names
  • KT-83377 Investigate usage of declarationSymbols in resolve of local user type
  • KT-83770 Smartcast doesn't work for an explicit backing field with multiple intersections
  • KT-83650 Native: don't use sun.misc.Unsafe in CastsOptimization when running on JVM 24+
  • KT-83754 KotlinIllegalArgumentExceptionWithAttachments for explicit backing field with annotated type
  • KT-83756 Error while resolving FirNamedFunctionImpl with explicit backing field and implicit type
  • KT-83563 Consider dropping fixation readiness REIFIED
  • KT-83713 K2: No error with external primary constructor parameter
  • KT-83104 K2: No error with external enum entry
  • KT-83696 Consider dropping HAS_NO_RELATION_TO_ANY_OUTPUT_TYPE readiness
  • KT-83308 K/N: "IllegalArgumentException: An interface expected but was Any"
  • KT-81590 Switch latest stable version in Kotlin project to 2.4
  • KT-66701 K2: Java interface method override via Kotlin class rejected
  • KT-56563 Inference within if stops working when changing expected type from Any to a different type
  • KT-261 Can't specify function return type in a subclass
Compose compiler
New features
  • c1bbb47 Started inferring the stability of all interfaces to be Stability.Unknown, expect for those explicitly marked as known stable.
Fixes
  • b/511102714 Made the default stability of non-final classes Unknown instead of Stable
  • b/509945632 Do not generate groups in inline lambdas without @Composable calls.
  • b/504284805 Fix indentation for generated proguard mappings.
  • b/422193018 Fix applier inference for nested composables of different types.
  • b/497751457 Prevent a $stable property from being added to any object.
  • b/427530633 Do not infer a getter call as static across when it is defined in another file.
  • b/427530633 Started using Stability.Runtime more broadly. Now, when an element depends on the stability of an internal or public class defined in another file, the element will no longer infer the stability of that class and will depend on the runtime stability of that class instead.
IR. Actualizer
  • KT-84293 Expect Actual Matching for Companion Block Declarations & Extensions
IR. Inlining
  • KT-73708 Use some marker in KLIBs produced with IR inliner
  • KT-85605 "Local delegated property has not delegate" exception when calling inline function containing delegated property in a lambda from within an inline lambda
  • KT-84112 Intra-module inliner: No container found for type parameter 'T'
  • KT-84416 High memory usage for IrFileEntry after enabling inliner
  • KT-75396 [IR] Pass LoweringContext to inline and serialization checkers
IR. Interpreter
  • KT-86083 Create a new CLI flag to enable IntrinsicConstEvaluation feature
  • KT-80804 Enable constant evaluation for more standard library
  • KT-83514 Get rid of EvaluatedConstTracker
  • KT-84561 K2: Convert evaluated constant by default in FIR2IR
IR. Tree
  • KT-79663 KLIB-based compilers: Promote partial linkage to "always on"
  • KT-76934 Drop old IR parameter API
  • KT-72950 Partial Linkage: Change the semantics of -Xpartial-linkage-loglevel
  • KT-74763 Build: refactor ':compiler:backend.common' and ':compiler:ir.backend.common' modules
  • KT-76634 PL: Don't report warnings in cases that don't lead to runtime errors
  • KT-79801 KLIBs: Implement checks for symbols loaded by the compiler on 1st and 2nd phases
  • KT-72812 IR serializer: Don't serialize any cinterop fake overrides to Klibs
JVM. Reflection
Fixes
  • KT-86017 KClass.constructors returns all java.lang.String constructors for mapped type kotlin.String
  • KT-85550 Reflection: KParameter.type.classifier returns boxed KClass for non-nullable primitive types
  • KT-82659 Reflection: IAE on a call to a Java inner class constructor
  • KT-85999 Reflection: ByteArray KType incorrectly has type arguments in Kotlin 2.4.0
  • KT-85285 Reflection: InvocationTargetException (UInt cannot be cast to Integer) when reading UInt annotation property via getter
  • KT-85091 Reflection: "KotlinReflectionInternalError: Unsupported parameter owner: null" on attempt to get annotations of annotation constructor parameter
  • KT-85322 Reflection: KotlinReflectionInternalError when loading ProGuard-obfuscated code compiled before 2.3.20
  • KT-84679 Reflection: confusing "Kotlin reflection is not yet supported for synthetic Java properties" for reference to Java enum's entries property
  • KT-85025 KTypeParameter instances not equal to each other for the same type parameter in member specialization KFunction
  • KT-84796 Reflection: mutable flexibility is lost for K1-based types in KClass.allSupertypes
  • KT-84494 Reflection: Java Collections have differences in kotlin supertypes from old K1 reflection
  • KT-84382 Reflection: raw list in Java type is transformed to List instead of MutableList
  • KT-84492 Reflection: supertypes of raw list in Java type are not raw
  • KT-84076 Reflection: list in Java type is transformed to flexible instead of mutable list
  • KT-14990 'callBy' for inner class constructor fails at run-time
  • KT-82881 Reflection: update KCallable.callBy kdoc to mention vararg parameters
  • KT-84075 Reflection: wildcard in Java type is transformed to out Any! instead of star projection
JavaScript
New Features
  • KT-51292 Proposed behavior of @JsExport on interfaces and classes with companion objects
  • KT-21626 Support ES2015 syntax in js function
  • KT-83451 K/JS: Support ES6 object destructuring in js() calls
  • KT-83452 K/JS: Support ES6 array destructuring in js() calls
  • KT-82128 [K/JS] Allow named companion objects in exported interfaces
Performance Improvements
  • KT-77646 KJS: optimize Byte/Char/Short/Int/Float/DoubleArray.copyOf(newSize)
Fixes
  • KT-84332 KJS: Reconsider disallowing nested classes in exported interfaces
  • KT-72198 KJS: ES2015 interop with ValueClass
  • KT-84090 Save variance in the generated TypeScript
  • KT-56618 KJS/IR: Support external interfaces from common code (via annotation?)
  • KT-85038 Kotlin/JS: @JsExport on sealed external interface with companion object causes NPE
  • KT-81787 KJS: Value class type lost when using JsExport on interface
  • KT-85411 Fix conversionCombinations.kt tests for the JS target
  • KT-83701 Escaped identifier with a quote cause an invalid d.ts file
  • KT-68281 K/JS: Order of classes in initMetadataForClass are not deterministic
  • KT-15101 js: Same callable references are not equal
  • KT-84810 [K/JS] Callable references operator produces duplicates
  • KT-85323 JsClass optimization doesn't work well for primitives
  • KT-60651 KJS / ES6: init block and constructor are not called
  • KT-84601 K/JS: KClass<> reference doesn't work in JS counterside as a new target in ES6 mode
  • KT-85099 KotlinJS: JsPlainObject from the js-plain-objects plugin does not respect overrides
  • KT-84615 KJS: Forbid @JsStatic on extension functions/properties
  • KT-84002 Bump version from 2.3 to 2.4 for JsNoRuntime-related annotations
  • KT-84474 Kotlin/JS: Long::class becomes null when passing the value to a generic function with -Xes-long-as-bigint
  • KT-84647 K/JS: Class expressions are not supported in js() calls
  • KT-84458 KJS: Fully support @JsStatic in Analysis API-based TypeScript Export
  • KT-84454 KJS: Generate protected overrides for abstract class inheritors in Analysis API-based TypeScript Export
  • KT-84490 KJS: Fix mutability of exported top-level variables Analysis API-based TS export with ES modules
  • KT-84459 KJS: Support default exportability in Analysis API-based TypeScript Export
  • KT-84456 KJS: Support deprecation comments in Analysis API-based TypeScript export
  • KT-82264 Implement exporting classes in Analysis API-based TypeScript Export
  • KT-84233 K/JS: exported collection views doesn't provide Iterator methods
  • KT-82127 Remove generator-based coroutines intrinsics after bootstrap
  • KT-84003 Remove @Suppress from JsReference after bootstrap
  • KT-44753 KJS / IR: @JsExport non-public fun exports nothing
  • KT-83992 Drop K1 JS entry point and IC code
  • KT-83722 K/JS: NON_EXPORTABLE_TYPE in the exported file with name-based destructuring declarations
  • KT-69353 KJS / d.ts: Kotlin does not export base collection classes along with their mutable collection counterparts
Klibs
Performance Improvements
  • KT-84415 Ineffective hashMap usage in IrSymbolDeserializer
  • KT-80903 [Klib] Optimize size of serialized IR element coordinates
  • KT-84451 [Klib] Use varint encoding for element sizes in IR tables
  • KT-84400 [Klib] Optimize size of serialized IrExpression
  • KT-79675 K/N: Uncached ZipFIleSystemAccessor
Fixes
  • KT-78188 [JS] Klib backward and forward compatibility testing
  • KT-82471 [K/N] Klib forward compatibility testing with codegen tests
  • KT-83929 Add tests for IR signatures of static properties and functions
  • KT-81411 Merge KonanLibrary to KotlinLibrary to simplify adoption of KlibLoader in the Kotlin/Native compiler
  • KT-82469 [K/N] Klib backward compatibility testing with codegen tests
  • KT-84511 [Native][Tests] Improve descriptor-related logic in NativeCliBasedFacades.kt
  • KT-85017 [PL] Add test for added internal abstract fun
  • KT-84488 Export in previous version: Prohibit using on 2nd stage
  • KT-85149 Klib Dump parser: fix parsing of qualified names adjacent to vararg symbol
  • KT-85129 Klib Dump parser: fix enum names parsing
  • KT-84684 Remove UserVisibleIrModulesSupport from IR linker
  • KT-84820 [K/N] Load libcallbacks and libllvmstubs from configured path
  • KT-84819 K/N: Segfault on xctest when using internal abstract on a parent class
  • KT-83807 Restore non-nullability of symbols not available in 2.3.0 stdlib
  • KT-83012 Export in previous version (Native): add the checker for incompatible Kotlin stdlib/compiler pairs
  • KT-84341 Fix detection of box function in forward compatibility tests
  • KT-83748 Bump versions in JS Klib compatibility testing
  • KT-83724 Fix & unmute stdlib & kotlin-test compatibility tests
  • KT-83151 Restore non-nullability of symbols available since 2.3
Language Design
  • KT-14663 Support having a "public" and a "private" type for the same property
  • KT-80852 Version overloading: generate overloads corresponding to different versions of a function whose parameters are annotated with @IntroducedAt()
  • KT-73821 Decide the future of the ForbidUsingSupertypesWithInaccessibleContentInTypeArguments language feature
  • KT-85120 @IntroducedAt on expect parameter cannot be properly actualized
Libraries
New Features
  • KT-84921 Add 'returnsResultOf' contract to appropriate declarations in the stdlib
  • KT-73111 No UInt.toBigInteger() and ULong.toBigInteger() conversion function
  • KT-78499 Add isSorted() extension to standard library
Performance Improvements
  • KT-70750 Kotlin's Regex implementation on Kotlin Native is painfully slow
  • KT-67731 Regular expressions works slowly on iOS
  • KT-80772 K/N: Regex: improve look behind matching performance for "fixed-length" patterns
Fixes
  • KT-83525 Introduce support window for Kotlin Stdlib versions
  • KT-86027 Hide returnsResultOf under a separate flag and remove its usages from kotlin stdlib
  • KT-84818 [Regex] Native and Wasm: Decomposed Unicode character are incorrectly process with CANON_EQ flag
  • KT-83131 Testing: assertNull has no contract
  • KT-85122 Deprecate kotlin.io.readLine with WARNING
  • KT-84970 Deprecate AbstractCoroutineContextKey and associated API
  • KT-81395 Stabilize kotlin.uuid.Uuid API
  • KT-85127 Remove kotlin.test.assert*NoInline hidden functions
  • KT-84264 Add appropiate @SinceKotlin to new contracts
  • KT-84697 Update the list of JDKs the stdlib is tested with
  • KT-83956 Clarify joinToString behavior when the receiver is empty
  • KT-61180 kotlin.ArrayIndexOutOfBoundsException on Native with Regex, works on Android/JVM though
  • KT-84871 compareValues, nullsFirst, nullsLast return 0 for -0.0 and 0.0 on JS
  • KT-84691 Add samples for toBigInteger extension functions
  • KT-84372 PathExtensionsTest.copyToRestrictedReadSource fails with JDK22+
  • KT-84369 StringJVMTest.formatter fails with JDK13+
  • KT-84613 String.toDouble() produces incorrect results on Wasm for large exponent values
  • KT-76905 Add samples for kotlin.math functions
  • KT-84355 Reduce the number of iterations for the removeHashAtStressTest
  • KT-83962 List.listIterator(Int) KDoc's exception condition is incorrect
  • KT-83958 Improve enumValueOf documentation
  • KT-83953 Add samples for kotlin.time extension functions
  • KT-83951 Rewrite stdlib samples to use assertPrints instead of assertEquals
Native
New Features
  • KT-78686 LLVM update Q1 2026
  • KT-84826 Bump the minimum deployment version of Apple targets
Fixes
  • KT-84686 Removing x64 in gradle file breaks builds on certain platforms
  • KT-71278 Enable Concurrent Mark and Sweep (CMS) GC by default
  • KT-81748 Create a phased CLI for Native klib compilation
  • KT-84733 LLVM Update: rebase LLVM once the upstream stabilizes
  • KT-83914 Native: when loading JNI libraries, java.library.path can contain system directories with libraries with same names
  • KT-83133 Native: don't use sun.misc.Unsafe in the compiler and cinterop when running on JDK 25+
  • KT-83648 Native: don't use sun.misc.Unsafe in NativeMemoryAllocator when running on JDK 25+
  • KT-83647 Native: don't use sun.misc.Unsafe in nativeMemUtils when running on JDK 25+
  • KT-82674 Native: dyld[...]: Symbol not found: _mach_vm_reclaim_update_kernel_accounting_trap on macOS
  • KT-82879 Native: DLLs in the Windows distribution are not reproducible
  • KT-83283 Test Kotlin/Native performance tests compilation in Gradle 9.0
  • KT-82872 Native: make Kotlin/Native distribution compiler cache reproducible for Linux
  • KT-82871 Native: cstubs.bc for android_* platform libraries contain absolute paths in string literals
  • KT-34467 Cinterop: Clang crashes when -fmodule-map-file is specified (SIGSEGV)
Native. Build Infrastructure
  • KT-85803 K/N: build not reproducible - platformLibs caches
  • KT-84503 Duplicate META-INF/serialization.shadow.kotlin_module entry in kotlin-native-compiler-embeddable jar
  • KT-85191 K/N: Dependency cycle in libclangInterop
  • KT-84937 Kotlin/Native: non-reproducible .bc for mingw_x64
  • KT-80072 Make Kotlin/Native distribution reproducible
  • KT-81771 konanc failing to load native libraries
Native. C Export
  • KT-61748 KMM- warnings when compiling native targets (Kotlin 1.9.0)
Native. C and ObjC Import
  • KT-85705 Swift-generated headers with external_source_symbol produce duplicate enum declarations
  • KT-82379 Introduce lenient modular cinterop mode
  • KT-81695 Repeated typedefs across multiple clang modules break cinterop with -fmodules
  • KT-82766 K/N: external_source_symbol clang attribute causes cinterops with -fmodules to downgrade to forward declaration
  • KT-84023 Modular import fails with an obscure error when the failing module is not the last one
  • KT-81433 Generate C-interop KLIBs in previous ABI version in Kotlin 2.4.0
  • KT-82402 Inter-cinterop type reuse with -fmodules uses forward declaration when an actual declaration is available
  • KT-82377 Fix ObjC forward declaration handling in modular cinterops
  • KT-81752 Native: investigate and remove filtering of -fmodule-map-file in cinterop
  • KT-83814 Native: includedHeaders= in platform libs manifests is not reproducible when modules= is used
Native. ObjC Export
  • KT-86068 Native: add support for ObjCEnum.EntryName
  • KT-85171 Red Swift code in Native UI Multiplatform App project from Template Gallery
Native. Runtime
  • KT-84331 Kotlin/Native: RunLoopFinalizerProcessor needs initialized runtime before it has any jobs
Native. Runtime. Memory
  • KT-83670 K/N: gc concurrent mark phase assert Failed to terminate mark in STW in a single iteration
  • KT-80770 Kotlin/Native: revise ObjC refcount methods called in runnable state
  • KT-84640 Native: comment for kotlin.native.runtime.SweepStatistics misses the word "number"
Native. Swift Export
New Features
  • KT-84361 [Swift Export] Preserve TypeInfo on StateFlow
  • KT-85130 [Swift Export] Preserve TypeInfo on SharedFlow
  • KT-82705 Support convenient export of Flow types in Swift export
  • KT-66821 Swift Export: value class
  • KT-82598 Swift Export: Custom name translation
  • KT-69431 Swift export: inline functions
  • KT-84263 [Swift Export] Context Parameters on Functional Types
Fixes
  • KT-80305 Support coroutines in Swift Export
  • KT-85380 [Swift Export] Attempt to bridge unbridgeable type: SirUnsupportedType
  • KT-84317 Swift Export: "protocol members can only be marked unavailable in an '@objc' protocol" in generated code for kotlinx-coroutines
  • KT-85704 [Swift Export] cannot infer generic type of function returning a generic type
  • KT-85711 [Swift Export] suspend function returning non-null generic fails to compile
  • KT-85715 [Swift Export] generic interface in typealias fails to compile
  • KT-85714 [Swift Export] unsupported input type param in functional receiver
  • KT-83743 Swift export: type arguments expected for generic typealias
  • KT-85458 [Swift Export] value of a closure returning a closure generates invalid swift code
  • KT-85521 [Swift Export] conflicting overloads for generated Kotlin bridges
  • KT-85293 SwiftExportCoroutinesWithResultValidationTest.testCoroutines fails after cross-push
  • KT-84515 [Swift Export] suspend functional parameter generates invalid Swift code
  • KT-82282 Swift Export: suspend function returning Array leads to incompilable code
  • KT-81540 Swift Export: using interface in Set generates incompilable code
  • KT-66873 Swift Export: suspendable contravariant functional type
  • KT-85272 [Swift Export] conflicting imports for kotlinx-coroutines
  • KT-85163 [Swift Export] Flow of Unit values crashes
  • KT-85159 [Swift Export] Flow is not properly being cancelled
  • KT-84226 [Swift Export] Flow in contrvariant position is not allowed
  • KT-84485 [Swift Export] Flow with nullable elements
  • KT-83730 Generated Swift switch on bridged Kotlin enum crashes with fatalError
  • KT-85016 [Swift Export] it's not OK to expose Flow as AsyncSequence
  • KT-84979 Swift Export Nullability: Unit
  • KT-83821 Swift Export: suspend function returning Nothing leads to incompilable code
  • KT-81593 Swift Export: suspend function returning Unit leads to incompilable code
  • KT-84359 [Swift Export] nested functional type with Unit parameter
  • KT-84358 [Swift Export] functional type with Unit parameter
  • KT-84356 [Swift Export] functional type with single Unit parameter
  • KT-83567 Swift Export: "IllegalStateException: Internal compiler error: doesn't correspond to any C type: kotlin.Unit": invalid closure is generated for suspend function which returns Unit
  • KT-83397 [Swift Export] Functional return type with Unit parameter is emitted as invalid void parameter list ('void' must be the first and only parameter)
  • KT-84243 [Swift Export] Returning value of suspending functional type from suspending function yields invalid code
  • KT-82568 Swift Export: Context Parameters
  • KT-83398 [Swift export] converting non-escaping parameter to generic parameter may allow it to escape
  • KT-83389 Swift Export: "ClassCastException" caused by suspend fun throwing Error
  • KT-83116 Swift export generates bridges incompatible with language version 2.4
  • KT-83749 [Swift Export] varargs and List uses the same mangling on bridges
  • KT-83712 Swift Export ignores internal setter and generates invalid bridge code
Tools. BCV
  • KT-83476 Use Maven publications as dump input [ABI Validation]
  • KT-78341 Outer scope's visibility is not considered when dumping const vals [ABI Validation JVM]
  • KT-78305 Private constructor is written in ABI dump
  • KT-82724 BCV incorrectly reports generated @JvmOverloads declarations as public
  • KT-78367 Internal constructor infiltrated into a dump
  • KT-78366 Protected method of enum should not be included into a dump
Tools. Build Tools API
New Features
  • KT-83794 Make BTA JVM Compiler Arguments Type-Safe
  • KT-80963 BTA: Add structured information about reported messages to KotlinLogger
  • KT-73037 Add input (like compiler arguments) changes tracking
  • KT-82791 BTA: introduce an option for ExecutionPolicy.WithDaemon to control the daemon log files path
  • KT-84453 SSoT: provide a unified way to convert Enums to Strings
Fixes
  • KT-86395 [BTA] forward-compatibility violation: NoSuchMethodError on JvmSnapshotBasedIncrementalCompilationConfiguration. breaks IC
  • KT-80679 Add support for the Build Tools API [ABI Validation]
  • KT-85294 BTA: Replace hardcoded @since in KDoc with dynamic versioning
  • KT-85035 Don't expose X_COMPILER_PLUGIN_ORDER in CommonCompilerArguments
  • KT-85391 [BTA] Hide boilerplate required to load isolated BTA implementation
  • KT-85447 BTA: deprecate JvmCompilerArguments.contains (warning)
  • KT-82390 [BTA] Remove deprecated non-builder factory functions and classes
  • KT-84850 Make kotlin-home type safe
  • KT-84867 Make Xphases-to-* arguments type-safe
  • KT-85094 Make Xwarning-level type safe
  • KT-85205 Make Xdump-perf type safe
  • KT-85204 Make Xdump-directory type safe
  • KT-84906 Make enum-based common arguments type-safe
  • KT-84322 Make X_PROFILE BTA compiler argument type safe
  • KT-84825 Make script-templates type safe
  • KT-84546 Replace raw string path arguments with type-safe PathListType
  • KT-84705 Make Xjdk-release to type-safe
  • KT-85167 Make Xjsr305 type safe
  • KT-85069 Make Xnullability-annotations type safe
  • KT-84738 Make Xscript-resolver-environment type safe
  • KT-85082 Make Xignored-annotations-for-bridges type safe
  • KT-84324 Make X_ADD_MODULES BTA compiler argument type safe
  • KT-84338 Make enum BTA JVM compiler argument type safe
  • KT-84325 Make JVM_DEFAULT BTA compiler argument type safe
  • KT-75837 IC: Shrunk classpath snapshot name is hardcoded
  • KT-84228 BTA: Improving KDoc generation for Enums and Custom Types
  • KT-85738 BTA forward compatibility: NoSuchFieldError on X_IGNORED_ANNOTATIONS_FOR_BRIDGES when API 2.3.0 is used with impl 2.4.0
  • KT-84436 Сompiler warnings are missing under Gradle -q option with -Werror
  • KT-85072 AbstractMethodError when calling discoverScriptExtensionsOperationBuilder with pre-2.4.0 compiler
  • KT-84523 Add more forward compatibility tests
  • KT-84187 [BTA] Add more build operation immutability tests
  • KT-84219 [BTA] Add additional tests on basic metrics collection
  • KT-83781 Add additional tests for KT-79975 (BTA ability to cancel build operations)
  • KT-85092 [BTA] Update BTA Backward Compatibility Testing: 2.3.20-RC → 2.3.20
  • KT-85439 BTA: Warn or error when incompatible compiler arguments are passed via applyArgumentStrings
  • KT-75540 Build Tools API Should Reject -Xbuild-file Argument
  • KT-85333 Add BTA tests for BACKUP_CLASSES and KEEP_IC_CACHES_IN_MEMORY behavior after compilation error
  • KT-84770 BTA: default options cannot be retrieved from many option objects
  • KT-85224 Add @ExperimentalArgumentApi to compiler argument DSL types
  • KT-84953 Fail TC build if generated files change
  • KT-85189 Refactor path argument types: flatten hierarchy and improve naming
  • KT-82335 Promote the deprecation level for BTA prototype to the ERROR level
  • KT-84984 Runtime NPEs caused by null return in CompilerMessageRenderer implementation
  • KT-84015 Introduce detection of custom script names to new BTA API
  • KT-83972 BTA: use isolated classloader for loading the BTA implementation in integration tests
  • KT-84181 More verbose warning when CRI is enabled without using BTA
  • KT-84449 Platform-Specific File.pathSeparator Hardcoded During SSOT Generation
  • KT-84249 Fix hardcoded path separator in -Xprofile argument to support absolute paths on Windows
Tools. CLI
Fixes
  • KT-84609 Remove Nullability from Array-based CLI Compiler Arguments
  • KT-85414 Argument DSL: delimiter = KotlinCompilerArgument.Delimiter.PathSeparator generates invalid Kotlin code
  • KT-85004 Set proper since version for language feature about property annotation targeting
  • KT-84220 Enable Context Parameters by default in LV 2.4
  • KT-84188 Create CLI argument for explicit context parameters
  • KT-84999 Don't poison binaries with ImplicitJvmExposeBoxed language feature
  • KT-85001 Convert ImplicitJvmExposeBoxed language feature to analysis flag
  • KT-83341 Don't use the extension point registration mechanism from Intellij for K2 extensions
  • KT-56850 Separate K/Wasm CLI entry point from K/JS CLI
  • KT-84132 CLI: regression in deduplication of same-value arguments
  • KT-83261 No error if pass an arbitrary string to a CLI argument that changes language features
  • KT-83172 Boolean CLI argument for a language feature with explicit false value is allowed but has no effect
Tools. CLI. Native
  • KT-82482 Compiler plugins are not propagated to frontend environment in ONE_STAGE_MULTI_MODULE Native mode
Tools. Compiler Plugin API
  • KT-85969 KtLint incompatible with Kotlin 2.4.0-Beta2 (parsing errors / Extensions storage issue)
  • KT-85133 Drop deprecated K1 specific methods from IrPluginContext
Tools. Compiler Plugins
New Features
  • KT-66808 PowerAssert: Add support for third-party assertion libraries
  • KT-69036 Power-Assert indent multiline values
  • KT-75656 PowerAssert: Create runtime library
Fixes
  • KT-83931 Power Assert: Compilation fails when using the metro plugin
  • KT-86170 PowerAssert: Stabilize runtime ABI for initial release
  • KT-85250 PowerAssert: Automatically add runtime library dependency
  • KT-75873 PowerAssert: display callable reference value under '::'
  • KT-85151 PowerAssert: Surround string and character values with quotes
  • KT-85184 PowerAssert: Annotation may only be used on expect and non-override functions
  • KT-85178 PowerAssert: Crash when transforming IrCall without CallableId
  • KT-66807 PowerAssert: Improve output diagram formatting
  • KT-85089 PowerAssert: Wasm CompileError when using PowerAssert.explanation
  • KT-75266 PowerAssert: arrayOf() isn't displayed on the diagram
  • KT-67332 "IndexOutOfBoundsException: Cannot pop operand off an empty stack." caused by function reference
  • KT-83330 Lombok. An add methods with @Singular annotation in Java record doesn't work from kotlin
  • KT-83204 Lombok. If @Data and @NoArgsConstructor are used together, then the constructor from @Data shouldn't be available
  • KT-83336 Lombok. IllegalAccessError for constructor if @Value and @Builder are applied and used from another package
  • KT-83352 Lombok. FileAnalysisException when @SuperBuilder is used with @Builder
  • KT-83325 Lombok. Constructor with parameters is unavailable for a class with @Builder
Tools. Compiler plugins. Serialization
  • KT-85963 IncompatibleClassChangeError: Expected non-static field $stable on deserialization of @Serializable data class when Compose compiler plugin is applied before Serialization plugin
  • KT-85554 Serialization: "IndexOutOfBoundsException" on property generated by Compose plugin
Tools. Gradle
New Features
  • KT-76197 Write Kotlin compiler warnings and errors to Problems API
Fixes
  • KT-86346 Compiler warnings printed twice in console — once as w: and again as Gradle "Problem found:" block
  • KT-69701 Gradle: module name is passed inconsistently to different types of compilations
  • KT-85373 Compile against Gradle API 9.5.0
  • KT-85374 Run tests against Gradle 9.5.0
  • KT-80448 Remove internal & deprecated API from ExtrasProperty.kt
  • KT-69830 Support Gradle com.gradle.develocity plugin in KGP
  • KT-85509 Remove deprecated API in the 2.4.0 release
  • KT-83858 Compatibility with Gradle 9.4.0 release
  • KT-84144 Bump the minimal supported AGP version to 8.5.2
  • KT-85562 Failed to invoke getCompilation on org.jetbrains.kotlin.gradle.tasks.KotlinNativeLink_Decorated on project import
  • KT-85590 Gradle: cannot create task MainKt.main() due to missing defaultSourceSetName
  • KT-74451 Deprecate access to Kotlin source sets in Android extension
  • KT-82960 Remove deprecated enableKotlinToolingMetadataArtifact in 2.4.0
  • KT-84377 Broken package-list file on KGP/CMPG documentation page
  • KT-85412 Module name is not sanitized with older Kotlin compiler versions
  • KT-65566 Use the new ConfigurationContainer consumable method to create consumable configurations
  • KT-83775 Migrate KGP functionalTest to junit5
  • KT-85433 Gradle: deprecate non-BTA JVM compiler execution mode
  • KT-83860 Run tests against Gradle 9.4.0
  • KT-75004 KGP: improve messaging when multiplatform tasks are disabled on incompatible OSes
  • KT-83859 Compile against Gradle API 9.4.0
  • KT-82847 Raise deprecation to error for LanguageSettings.enableLanguageFeature DSL
  • KT-84053 Deprecate support for Gradle 7.6-8.13 versions
  • KT-78659 Remove 'kotlin-android-extensions' plugin id
  • KT-79924 Make enableKotlinToolingMetadataArtifact deprecated
  • KT-82933 Add a tab with results in TC
  • KT-83130 [ToolingDiagnostic] incorrect problem ID formatting for acronyms and undefined locations in Gradle8 problems reports
  • KT-84143 Reduce usage of Project in Tooling Diagnostics
  • KT-83126 Remove out-of-process compilation mode
  • KT-80466 Gradle: remove getPluginArtifactForNative()
  • KT-81834 Compile against AGP 8.13 API
  • KT-77498 Test .swiftmodules more accurate in SwiftExportIT
  • KT-84141 Add convenient host check
  • KT-83592 Enable AFU in FusStatisticsIT.testKotlinxPlugins test after next AFU release
Tools. Gradle. BCV
  • KT-86268 ABI validation tasks fail with Unsupported platform toolchain type when using kotlin.compilerVersion pointing to an older compiler after BTA migration in 2.4.0-Beta2
  • KT-80685 Simplify Gradle DSL [ABI Validation]
  • KT-83486 Create tasks only if abiValidation block called explicitly [ABI Validation]
  • KT-82410 Remove word legacy from DSL [ABI Validation]
  • KT-83999 ABI validation: Groovy DSL doesn’t deprecate included/excluded filters, allowing four filter configs instead of two
  • KT-84461 Remove the use of abi-tools-api from KGP [ABI Validation]
  • KT-84100 Add Deprecated annotation to legacyDump block and property [ABI Validation]
  • KT-84365 Gradle plugin of abi-validation should precisely define output files
  • KT-83898 Classes produced by JvmMultifileClass ignore filters
Tools. Gradle. Compiler plugins
  • KT-85343 Update Compose Gradle plugin deprecations before 2.4
Tools. Gradle. Dokka
  • KT-82984 Support AGP9 in Dokka Gradle Plugin
Tools. Gradle. JS
  • KT-81037 K/JS, Wasm: Remove deprecated internal JS functions
  • KT-81034 K/JS, Wasm: Remove deprecated public constructors of JS declarations
  • KT-81030 K/JS, Wasm: remove deprecated NodeJsExec.create
  • KT-81036 K/JS, Wasm: Remove deprecated ExperimentalDceDsl
  • KT-81040 Gradle: Remove deprecated Kotlin/JS tasks constructors
  • KT-64275 Gradle: remove deprecated symbols related to the legacy JS target
  • KT-84753 Deprecate KotlinJsCompilerType and KotlinProjectExtension methods using it
  • KT-81033 K/JS, Wasm: Remove deprecated wasm declarations in "js" package
Tools. Gradle. Multiplatform
Fixes
  • KT-84767 K/N: associateWith triggers warning about friend-modules libs not included in -library argument
  • KT-82265 Remove Android source set layout v1
  • KT-82230 Cleanup 'org.jetbrains.gradle.apple.applePlugin' plugin usage
  • KT-81117 With android.builtInKotlin=true (AGP 9.0), using kotlin-multiplatform plugin will fail with Cannot add extension with name 'kotlin'
  • KT-86174 Project sync from cached checkout fails in convertSyntheticImportProjectIntoDefFileIphoneos with 'fatal: Needed a single revision'
  • KT-85877 The number of SPM direct dependencies is multiplied on number on targets
  • KT-85706 SwiftPM Import: Updating package version in build script updates version in the lock file
  • KT-84085 Remove deprecated gradle property kotlin.kmp.isolated-projects.support
  • KT-83370 Incorrect metadata transformation for stdlib's webMain source set
  • KT-69571 compileNativeMainKotlinMetadata not handling project/prebuilt substitutions
  • KT-84533 KMP: compileCommonMainKotlinMetadata: "Unresolved reference" for androidx.savedstate from Maven (works with project() dependency)
  • KT-84669 SPM import: If iosApp dir located outside of the project, checkSyntheticImportProjectIsCorrectlyIntegrated will fail
  • KT-84597 Remove trailing comma for dependencies blocks settings in Package.swift
  • KT-82895 kotlin-stdlib import is flaky in commonTest in 2.1.21
  • KT-81958 Redundant “android target already exists” error when migrating to com.android.kotlin.multiplatform.library with androidTarget {}
Tools. Gradle. Native
New Features
  • KT-83873 Redo how dynamic library linkage and promotion are handled
  • KT-83863 Persist Package.resolved files and reuse them in incremental SwiftPM import
Fixes
  • KT-85984 linkReleaseFrameworkIosSimulatorArm64 is executed during Debug iOS build since 2.4.0-Beta2
  • KT-85510 Cleanup native tasks API
  • KT-84656 Concurrent issue in downloadKotlinNativeDistribution
  • KT-85502 Swift PM Import: "Library not loaded": KotlinMultiplatformLinkedPackage.framework is not copied next to the executable
  • KT-85561 SwiftPM lock-files metadata resolution fails with NoMatchingGraphVariantsException in external KMP projects
  • KT-85128 Refactor SwiftPM import lock tests and test utils
  • KT-83681 Parallelize parts of SwiftPM import pipeline that are called during import
  • KT-83874 Linker hack doesn't work when clang uses response files
  • KT-86024 Empty main compilations cause w: [COMPILER_ARGUMENTS_WARNING] There are libraries in -friend-modules CLI argument that are not included in -library CLI argument:
  • KT-69896 Native: output to stderr ends up in the Gradle log
  • KT-85708 [KGP] dSYM copy task ignores isStatic due to eager read before framework configuration
  • KT-84262 integrateEmbedAndSign produces an incorrect Gradle call for the root project
  • KT-84730 Add Kdocs to SwiftPM import APIs
  • KT-84558 Upstream SwiftPM import work
  • KT-82824 Make linker hack path relative
  • KT-84508 Add a warning on usage macos_x64 as host
  • KT-84692 Misleading error message for disableNativeCache DSL without required Opt-In
  • KT-83680 Remove trailing commas from the package manifest to be compatible with pre-16.3 Xcode
Tools. Gradle. Wasm
  • KT-86457 [Wasm, Gradle] BinaryenExec.standardOutput is silently ignored after migration to Gradle Workers
  • KT-84137 K/Wasm: Support binaryen run with multiple files
  • KT-85974 K/Wasm: Do not set -Xir-per-module for Wasm tasks
  • KT-83566 K/Wasm: Support Wasm per module/klib compilation in Gradle plugin
  • KT-85046 K/Wasm: Wasm per-module Gradle integration tests on Windows
  • KT-84230 Wasm: Fix test WasmYarnGradlePluginIT.testWasmUsePredefinedTooling
Tools. Incremental Compile
  • KT-85387 BTA: switch the default value of MONOTONOUS_INCREMENTAL_COMPILE_SET_EXPANSION to true
  • KT-85386 BTA JVM IC: 'moduleName' is null!
  • KT-84450 Star imports are not reported via FirImportTrackerComponent
Tools. JPS
  • KT-81579 JPS: -Xwarning-level=DEPRECATION:warning not supported
Tools. Kapt
  • KT-84094 Kotlin daemon holds file locks for too long
  • KT-32743 Kapt, Maven: Do not include compile classpath entries in the annotation processing classpath
  • KT-41217 Running kapt with Maven does not seem to include the compilation classpath
  • KT-80569 K2 KAPT: Class Literals Missing in Explicit Annotation Value Parameters
  • KT-18791 Kapt: Constants from R class should not be inlined
Tools. Maven
New Features
  • KT-85121 Maven: enable configuration inputs tracking in BTA
  • KT-84386 Support Maven Toolchains in kotlin-maven-plugin
  • KT-85317 Auto‑align jvmTarget with the project’s Java level
Fixes
  • KT-74001 Support monotonous dirtySet expansion in Maven
  • KT-76062 Maven: remove Kotlin script execution support
  • KT-84101 Maven: compile and test-compile handle sourceDirs inconsistently
  • KT-84653 Add integration test for KAPT with smart defaults in mixed Kotlin+Java projects
  • KT-84778 Add integration test for auto-bind execution order in mixed Kotlin+Java projects
  • KT-85146 Maven: Adding stdlib as smart-default may break maven dependency resolution for other plugins
  • KT-84793 Use kotlin bootstrap to build kotlin-maven-plugin
  • KT-83109 Remove beanshell and groovy verification in kotlin-maven-plugin-test
  • KT-83110 Remove dependency to intellij platform from kotlin-maven-plugin-test
  • KT-83113 Configure kotlin.git/.idea to work nicely with maven-kotlin-plugin-test tests
  • KT-83114 Migrate kotlin-maven-plugin-test from maven.invoker to junit6 + maven-verifier
Tools. Performance benchmarks
  • KT-82928 Support local run for new benchmarks infra
  • KT-84283 Add scenario generator for performance tests
  • KT-83257 Parse gradle profile report
Tools. REPL
  • KT-77816 REPL: Support for const properties
  • KT-74683 [K2 Repl] Does not support suspend functions
  • KT-84483 [K2 Repl] NullPointerException in Analysis when using custom classes
  • KT-84803 [REPL] FirReplSnippet: provide the eval function symbol instead of the name (evalFunctionName)
  • KT-84160 [REPL] Resolve eval function during implicit body
  • KT-83689 [K2 REPL] Create raw FIR tests for repl snippets
  • KT-82554 [REPL] Fix unresolved reference when using dataframe compiler-plugin
  • KT-82578 [K2 REPL] Split snippet property declaration and initialization
  • KT-82503 [K2 Repl] Nested class annotations are not available in the next snippet
Tools. Wasm
  • KT-84396 [Wasm] Support multimodule in incremental compilation
  • KT-75086 Wasm: Deprecate and remove D8 in js packages
v2.4.0-RC2Pre-release

Kotlin 2.4.0-RC2

Changelog
Backend. J2KLIB
  • KT-86367 [JKLIB] kotlin.Cloneable built-in class not found
Compose compiler
  • b/511102714 Made the default stability of non-final classes Unknown instead of Stable
Tools. Build Tools API
  • KT-86395 [BTA] forward-compatibility violation: NoSuchMethodError on JvmSnapshotBasedIncrementalCompilationConfiguration. breaks IC
Tools. Gradle
  • KT-86346 Compiler warnings printed twice in console — once as w: and again as Gradle "Problem found:" block
Tools. Gradle. BCV
  • KT-86268 ABI validation tasks fail with Unsupported platform toolchain type when using kotlin.compilerVersion pointing to an older compiler after BTA migration in 2.4.0-Beta2
Tools. Gradle. Wasm
  • KT-86457 [Wasm, Gradle] BinaryenExec.standardOutput is silently ignored after migration to Gradle Workers
v2.4.0-RCPre-release

Kotlin 2.4.0-RC

Changelog
Backend. J2KLIB
  • KT-84877 [J2KLIB] Remove withKotlinBuiltinsHack present in JKlibIrLinker.kt
  • KT-85846 Tests failing with fake override property missing accessors or backing field
  • KT-85717 IllegalStateException due to already bound symbol
  • KT-86204 [JKlib] Propagate private members from dependecies in the IR tree
Compiler
  • KT-86210 Update -Xannotation-default-target CLI parameter doc
  • KT-85948 Contracts in 2.4 stdlib is not compatible with 2.3 compiler
  • KT-85957 Contract on function is getting discarded if any of effect declarations is unknown
  • KT-86130 False positive UNINITIALIZED_ENUM_COMPANION on LV 2.3 and lower
  • KT-84860 False positive UNINITIALIZED_ENUM_COMPANION in enum access with explicit receiver in enum initializer when enum class has a companion
  • KT-84319 Add JVM target bytecode version 26
  • KT-85825 Context parameter lambda loses context type when wrapped in nested run blocks
  • KT-84960 Property contract leaks unsubstituted type parameter in smart cast
Compose compiler
  • b/509945632 Do not generate groups in inline lambdas without @Composable calls
IR. Interpreter
  • KT-86083 Create a new CLI flag to enable IntrinsicConstEvaluation feature
JVM. Reflection
  • KT-86017 KClass.constructors returns all java.lang.String constructors for mapped type kotlin.String
  • KT-85999 Reflection: ByteArray KType incorrectly has type arguments in Kotlin 2.4.0
Libraries
  • KT-86027 Hide returnsResultOf under a separate flag and remove its usages from kotlin stdlib
Native
  • KT-84733 LLVM Update: rebase LLVM once the upstream stabilizes
Tools. Compiler Plugin API
  • KT-85969 KtLint incompatible with Kotlin 2.4.0-Beta2 (parsing errors / Extensions storage issue)
Tools. Compiler Plugins
  • KT-86170 PowerAssert: Stabilize runtime ABI for initial release
  • KT-85250 PowerAssert: Automatically add runtime library dependency
Tools. Compiler plugins. Serialization
  • KT-85554 Serialization: "IndexOutOfBoundsException" on property generated by Compose plugin
  • KT-85963 IncompatibleClassChangeError: Expected non-static field $stable on deserialization of @Serializable data class when Compose compiler plugin is applied before Serialization plugin
Tools. Gradle
  • KT-85373 Compile against Gradle API 9.5.0
  • KT-85374 Run tests against Gradle 9.5.0
Tools. Gradle. Multiplatform
  • KT-85877 The number of SPM direct dependencies is multiplied on number on targets
  • KT-85706 SwiftPM Import: Updating package version in build script updates version in the lock file
  • KT-83370 Incorrect metadata transformation for stdlib's webMain source set
Tools. Gradle. Native
  • KT-85984 linkReleaseFrameworkIosSimulatorArm64 is executed during Debug iOS build since 2.4.0-Beta2
  • KT-86024 Empty main compilations cause w: [COMPILER_ARGUMENTS_WARNING] There are libraries in -friend-modules CLI argument that are not included in -library CLI argument:
Tools. Gradle. Wasm
  • KT-85974 K/Wasm: Do not set -Xir-per-module for Wasm tasks
v2.3.21

Kotlin 2.3.21

Changelog
Backend. Wasm
  • KT-84610 [Wasm] Failed to compile klibs in IC mode
Compiler
  • KT-84566 Prevent launching Default dispatcher threads from IJ SDK in kotlin compiler
  • KT-85358 Native: roll back the workaround for KT-84678 once MapLibre has been properly fixed
  • KT-85626 @JvmRecord in commonMain breaks compileCommonMainKotlinMetadata with "Cannot access 'java.lang.Record'"
  • KT-85405 Postpone/Revert DontIgnoreUpperBoundViolatedOnImplicitArguments
  • KT-84678 K/N: Undefined symbol from SPM-added ObjC frameworks when linking iOS target
  • KT-85021 False positive SUBCLASS_CANT_CALL_COMPANION_PROTECTED_NON_STATIC error in multi-module project
JavaScript
  • KT-82395 Support top-level declarations from compiler plugins in JS incremental compilation
  • KT-84475 K/JS: false-positive exportability warnings in multi-module project
  • KT-84633 Kotlin/JS: "Serializer for class not found" error when IR output granularity is whole-program
  • KT-85047 Kotlin/JS: @JsStatic on suspend fun of class companion generates incorrect d.ts
  • KT-84517 K/JS: bad mappings data in outputted Kotlin stdlib source map
Libraries
  • KT-71848 Kotlinx.metadata: Add CompilerPluginData into Km API
Native. C and ObjC Import
  • KT-85399 Kotlin/Native: TypeCastException when casting ObjC Protocol MetaClass with genericSafeCasts enabled
  • KT-85508 K/N: TypeCastException when using nw_parameters_create_secure_tcp block parameter on 2.3.20
Tools. Gradle
  • KT-84729 Update Gradle plugin-publish version to enable configuration cache badge on Gradle plugins portal
Tools. Gradle. Compiler plugins
  • KT-85257 AGP/Compose: MergeMappingFileTask clears R8 artifacts due to @OutputDirectory annotation on AGP 9.1+
Tools. Scripts
  • KT-85105 Scripts: JVM backend internal error (IR lowering) when scratch file contains anonymous object
  • KT-85103 Exception while generating code when explain destructuring decls
  • KT-84842 scriptCompilationClasspathFromContext behavior changed from 2.3.10 to 2.3.20
  • KT-85029 Kotlin Scripting: ScriptDiagnostic reports "at null" instead of error location
Tools. Statistics (FUS)
  • KT-85628 KGP: composite build FUS metrics fail on access of 'configurationTimeMetrics'
v2.4.0-Beta2Pre-release

Kotlin 2.4.0-Beta2

Changelog
Analysis API
  • KT-65683 Analysis API: Dangling file session creation causes a computeIfAbsent contract violation
Analysis API. FIR
  • KT-70896 AA: False positive deprecation warning with override of built-in method in JDK mapped class
  • KT-84625 Analysis API: collectDesignationPath fails for nested classes inside plugin-generated top-level classes
Analysis API. Infrastructure
  • KT-84913 Extract compiler classes used by the PSI & Analysis API to a separate module
  • KT-64986 Analysis API: Implement Analysis API tests for different KMP Platforms
  • KT-80379 Extract per-module test generators for AA tests
Analysis API. PSI
  • KT-84715 removeModifier doesn't delete whitespaces around the removed modifier
  • KT-84564 KtEnumEntry.delete deletes semicolon
  • KT-84781 Use computed properties in KotlinElementTypeProviderImpl
Analysis API. Stubs and Decompilation
  • KT-85371 StackOverflowError from LLKotlinStubBasedLibrarySymbolProvider and StubBasedClassDeserialization
  • KT-83935 Support KDoc loading in decompiled stubs
Analysis API. Surface
  • KT-82519 Automatically recognize the appropriate analysis mode for in-memory file copies based on their content
  • KT-85239 Streaming version of collectDiagnostics()
  • KT-83921 Extend KaKDocProvider to read Kdoc from KLIB metadata
  • KT-77426 KaFirCompilerFacility uses an arbitrary JVM counterpart for common sources
  • KT-84737 KaCallableSymbol#directlyOverriddenSymbols doesn't work for java overrides of kotlin properties
  • KT-84621 Migrate symbol tests to ManagedTest properly
  • KT-80575 KaFirJavaInteroperabilityComponent#getJavaGetterName should not throw exception on incomplete code
Backend. Wasm
  • KT-76205 K/Wasm: stabilize and turn on incremental compilation by default
  • KT-83728 [Wasm] Invalid Ir type while suspend call with blocked if null comprehansion
  • KT-81637 K/JS/Wasm interop: Inconsistent behavior of is/as operations for JsReference<C> and C
Compiler
New Features
  • KT-84484 Companion Extensions Analysis & Resolution
  • KT-84298 K2: Generate IR for Companion Blocks & Extensions
  • KT-84292 Enforce Companion Blocks & Extensions Language Feature during Resolution
  • KT-84291 Companion Blocks & Extensions Checkers
  • KT-84290 Callable References to Companion Block Declarations & Extensions
  • KT-84287 Build Raw FIR for Companion Blocks & Extensions
  • KT-73256 Implement all meta-target for annotations
  • KT-84319 Add JVM target bytecode version 26
  • KT-84297 Serialize & Deserialize Companion Block Declarations & Extensions to/from Metadata
  • KT-84199 Implement DontMakeExplicitNullableJavaTypeArgumentsFlexible feature
Fixes
  • KT-80489 Collection literals: experimental version (Frontend)
  • KT-84566 Prevent launching Default dispatcher threads from IJ SDK in kotlin compiler
  • KT-85358 Native: roll back the workaround for KT-84678 once MapLibre has been properly fixed
  • KT-84931 Incorrect type nullability in SAM super type in anonymous class-based SAM conversion
  • KT-83920 False positive "modifier 'value' is not applicable to 'local variable'" with soft keyword in positional destructuring (square bracket) declaration
  • KT-85626 @JvmRecord in commonMain breaks compileCommonMainKotlinMetadata with "Cannot access 'java.lang.Record'"
  • KT-52673 Don't report deprecation warning/error on imports
  • KT-84991 Improve Argument type mismatch diagnostics
  • KT-82216 Sanitize '.kotlin_module' filename
  • KT-84678 K/N: Undefined symbol from SPM-added ObjC frameworks when linking iOS target
  • KT-77726 Move FirUnusedExpressionChecker to the default checkers list
  • KT-85354 checkPsiTypeConsistency: add psi text attachments
  • KT-85479 Improve diagnostic messages for upper bound violations
  • KT-84585 Upper bound violated warning for expansion of type alias in LHS
  • KT-84924 Native: stdlib-cache.lock used by mulitple processes
  • KT-85244 False positive DUPLICATE_BRANCH_CONDITION_IN_WHEN with guard condition
  • KT-78432 No-arg constructor should be generated for regular classes with a value class parameter in case of JvmExposeBoxed
  • KT-85487 Investigate why WrapContinuationForTailCallFunctions does not work in Android Test
  • KT-59633 K2: Implement running AndroidRunner tests with FIR
  • KT-85392 Native: concurrency issues in per-file caches
  • KT-76237 Store File-level annotations in KLIB metadata separately
  • KT-85162 Introduce diagnostics to refine numeric types casting
  • KT-80060 False positive REDUNDANT_CALL_OF_CONVERSION_METHOD in case of overloads
  • KT-85289 False-positive smartcast from == with type parameter based variable
  • KT-83890 return-value-checker: false positive "Unused return value of 'context'" on kotlin.context() functions
  • KT-84106 False negative "NON_EXHAUSTIVE_WHEN": "NoWhenBranchMatchedException" at runtime with sealed and platform type
  • KT-85005 Consider all: target in the checker of repeatable annotations
  • KT-85210 Enabling -XXLanguage:+IntrinsicConstEvaluation breaks highlighting on some broken code
  • KT-85217 Rework implementation supporting simple-to-suspend function conversion
  • KT-85036 Introduce a proper handling of optional expectation annotations in platform checkers during metadata compilation
  • KT-85086 False-negative JVM_EXPOSE_BOXED_CANNOT_BE_THE_SAME
  • KT-84082 [OPT_IN_USAGE_ERROR] duplicates for destructuring declaration
  • KT-84732 Collection literals: "Expected FirCollectionLiteralImpl to be resolved" in RHS of equality operator
  • KT-84841 Collection literals: Drop special treatment of when with expected type
  • KT-85007 Properly implement special rules for kotlin.Result in @JvmExposeBoxed support
  • KT-74383 Support new callable reference nodes in JVM backend
  • KT-84828 Cleanup JVM backend from the old callable references-related code
  • KT-85006 Refine error messages for INAPPLICABLE_ALL_TARGET diagnostic
  • KT-84296 Support Companion Blocks in CFG
  • KT-85058 Remove final field modification in DescriptorRendererOptionsImpl to prevent warnings on JDK 26+
  • KT-85021 False positive SUBCLASS_CANT_CALL_COMPANION_PROTECTED_NON_STATIC error in multi-module project
  • KT-84727 [K/N] Segfault when returning null as generic Int type from dynamic framework
  • KT-85062 Deprecate language version 2.1
  • KT-83460 Deprecation from @all:Deprecated is not propagated to property accessors/backing fields
  • KT-84859 Skip deprecation phase for generic arguments in qualifier receiver of static call for companion block members and extensions
  • KT-85050 [Swift Export] usage of inline classes with ref types crashes at runtime
  • KT-84983 Type parameter annotations are lost for local functions
  • KT-78800 Investigate FirMissingDependencySupertypeInQualifiedAccessExpressionsChecker
  • KT-73945 K2 IDE: Duplicated inspections for redundant 'open' in interface member
  • KT-84294 Ensure Context Sensitive Resolution works with Companion Blocks & Extensions
  • KT-81675 Improve message for CONTEXTUAL_OVERLOAD_SHADOWED
  • KT-84994 Rework optimization for companion extension resolution
  • KT-81598 incorrect type mismatch error messages for generic calls with explicit type arguments
  • KT-83587 K2: Missing null-check when using == on Short! and Byte! platform types
  • KT-261 Can't specify function return type in a subclass
Compose compiler
New features
  • c1bbb47 Started inferring the stability of all interfaces to be Stability.Unknown, expect for those explicitly marked as known stable.
Fixes
  • b/504284805 Fix indentation for generated proguard mappings
  • b/422193018 Fix applier inference for nested composables of different types.
  • b/497751457 Prevent a $stable property from being added to any object.
  • b/427530633 Do not infer a getter call as static across when it is defined in another file.
  • b/427530633 Started using Stability.Runtime more broadly. Now, when an element depends on the stability of an internal or public class defined in another file, the element will no longer infer the stability of that class and will depend on the runtime stability of that class instead.
IR. Actualizer
  • KT-84293 Expect Actual Matching for Companion Block Declarations & Extensions
IR. Inlining
  • KT-85605 "Local delegated property has not delegate" exception when calling inline function containing delegated property in a lambda from within an inline lambda
IR. Interpreter
  • KT-80804 Enable constant evaluation for more standard library
  • KT-83514 Get rid of EvaluatedConstTracker
IR. Tree
  • KT-79663 KLIB-based compilers: Promote partial linkage to "always on"
  • KT-76934 Drop old IR parameter API
  • KT-74763 Build: refactor ':compiler:backend.common' and ':compiler:ir.backend.common' modules
JVM. Reflection
  • KT-85550 Reflection: KParameter.type.classifier returns boxed KClass for non-nullable primitive types
  • KT-85285 Reflection: InvocationTargetException (UInt cannot be cast to Integer) when reading UInt annotation property via getter
  • KT-85322 Reflection: KotlinReflectionInternalError when loading ProGuard-obfuscated code compiled before 2.3.20
  • KT-84679 Reflection: confusing "Kotlin reflection is not yet supported for synthetic Java properties" for reference to Java enum's entries property
  • KT-85025 KTypeParameter instances not equal to each other for the same type parameter in member specialization KFunction
  • KT-85091 Reflection: "KotlinReflectionInternalError: Unsupported parameter owner: null" on attempt to get annotations of annotation constructor parameter
  • KT-84382 Reflection: raw list in Java type is transformed to List instead of MutableList
JavaScript
Fixes
  • KT-82395 Support top-level declarations from compiler plugins in JS incremental compilation
  • KT-81787 KJS: Value class type lost when using JsExport on interface
  • KT-85411 Fix conversionCombinations.kt tests for the JS target
  • KT-72198 KJS: ES2015 interop with ValueClass
  • KT-15101 js: Same callable references are not equal
  • KT-84810 [K/JS] Callable references operator produces duplicates
  • KT-85323 JsClass optimization doesn't work well for primitives
  • KT-60651 KJS / ES6: init block and constructor are not called
  • KT-84601 K/JS: KClass<> reference doesn't work in JS counterside as a new target in ES6 mode
  • KT-85099 KotlinJS: JsPlainObject from the js-plain-objects plugin does not respect overrides
  • KT-84615 KJS: Forbid @JsStatic on extension functions/properties
  • KT-84633 Kotlin/JS: "Serializer for class not found" error when IR output granularity is whole-program
  • KT-85038 Kotlin/JS: @JsExport on sealed external interface with companion object causes NPE
  • KT-85047 Kotlin/JS: @JsStatic on suspend fun of class companion generates incorrect d.ts
  • KT-84517 K/JS: bad mappings data in outputted Kotlin stdlib source map
Klibs
  • KT-84415 Ineffective hashMap usage in IrSymbolDeserializer
  • KT-84511 [Native][Tests] Improve descriptor-related logic in NativeCliBasedFacades.kt
  • KT-85017 [PL] Add test for added internal abstract fun
  • KT-84488 Export in previous version: Prohibit using on 2nd stage
  • KT-85149 Klib Dump parser: fix parsing of qualified names adjacent to vararg symbol
  • KT-85129 Klib Dump parser: fix enum names parsing
  • KT-84684 Remove UserVisibleIrModulesSupport from IR linker
  • KT-84820 [K/N] Load libcallbacks and libllvmstubs from configured path
Language Design
  • KT-73821 Decide the future of the ForbidUsingSupertypesWithInaccessibleContentInTypeArguments language feature
  • KT-80852 Version overloading: generate overloads corresponding to different versions of a function whose parameters are annotated with @IntroducedAt()
  • KT-85120 @IntroducedAt on expect parameter cannot be properly actualized
Libraries
  • KT-85122 Deprecate kotlin.io.readLine with WARNING
  • KT-84970 Deprecate AbstractCoroutineContextKey and associated API
  • KT-84818 [Regex] Native and Wasm: Decomposed Unicode character are incorrectly process with CANON_EQ flag
  • KT-80772 K/N: Regex: improve look behind matching performance for "fixed-length" patterns
  • KT-81395 Stabilize kotlin.uuid.Uuid API
  • KT-85127 Remove kotlin.test.assert*NoInline hidden functions
  • KT-84264 Add appropiate @SinceKotlin to new contracts
  • KT-84921 Add 'returnsResultOf' contract to appropriate declarations in the stdlib
  • KT-84697 Update the list of JDKs the stdlib is tested with
Native
  • KT-83914 Native: when loading JNI libraries, java.library.path can contain system directories with libraries with same names
  • KT-84826 Bump the minimum deployment version of Apple targets
  • KT-83133 Native: don't use sun.misc.Unsafe in the compiler and cinterop when running on JDK 25+
  • KT-84686 Removing x64 in gradle file breaks builds on certain platforms
  • KT-83648 Native: don't use sun.misc.Unsafe in NativeMemoryAllocator when running on JDK 25+
  • KT-83647 Native: don't use sun.misc.Unsafe in nativeMemUtils when running on JDK 25+
Native. Build Infrastructure
  • KT-85191 K/N: Dependency cycle in libclangInterop
  • KT-84937 Kotlin/Native: non-reproducible .bc for mingw_x64
Native. C Export
  • KT-61748 KMM- warnings when compiling native targets (Kotlin 1.9.0)
Native. C and ObjC Import
  • KT-85705 Swift-generated headers with external_source_symbol produce duplicate enum declarations
  • KT-85399 Kotlin/Native: TypeCastException when casting ObjC Protocol MetaClass with genericSafeCasts enabled
  • KT-85508 K/N: TypeCastException when using nw_parameters_create_secure_tcp block parameter on 2.3.20
  • KT-84023 Modular import fails with an obscure error when the failing module is not the last one
Native. ObjC Export
  • KT-85171 Red Swift code in Native UI Multiplatform App project from Template Gallery
Native. Runtime
  • KT-84331 Kotlin/Native: RunLoopFinalizerProcessor needs initialized runtime before it has any jobs
Native. Runtime. Memory
  • KT-83670 K/N: gc concurrent mark phase assert Failed to terminate mark in STW in a single iteration
Native. Swift Export
New Features
  • KT-82705 Support convenient export of Flow types in Swift export
  • KT-85130 [Swift Export] Preserve TypeInfo on SharedFlow
  • KT-84361 [Swift Export] Preserve TypeInfo on StateFlow
Fixes
  • KT-84317 Swift Export: "protocol members can only be marked unavailable in an '@objc' protocol" in generated code for kotlinx-coroutines
  • KT-85380 [Swift Export] Attempt to bridge unbridgeable type: SirUnsupportedType
  • KT-85704 [Swift Export] cannot infer generic type of function returning a generic type
  • KT-85711 [Swift Export] suspend function returning non-null generic fails to compile
  • KT-85715 [Swift Export] generic interface in typealias fails to compile
  • KT-85714 [Swift Export] unsupported input type param in functional receiver
  • KT-85458 [Swift Export] value of a closure returning a closure generates invalid swift code
  • KT-85521 [Swift Export] conflicting overloads for generated Kotlin bridges
  • KT-85293 SwiftExportCoroutinesWithResultValidationTest.testCoroutines fails after cross-push
  • KT-84515 [Swift Export] suspend functional parameter generates invalid Swift code
  • KT-82282 Swift Export: suspend function returning Array leads to incompilable code
  • KT-81540 Swift Export: using interface in Set generates incompilable code
  • KT-80305 Support coroutines in Swift Export
  • KT-66873 Swift Export: suspendable contravariant functional type
  • KT-85272 [Swift Export] conflicting imports for kotlinx-coroutines
  • KT-85163 [Swift Export] Flow of Unit values crashes
  • KT-85159 [Swift Export] Flow is not properly being cancelled
  • KT-84226 [Swift Export] Flow in contrvariant position is not allowed
  • KT-84485 [Swift Export] Flow with nullable elements
  • KT-83730 Generated Swift switch on bridged Kotlin enum crashes with fatalError
  • KT-85016 [Swift Export] it's not OK to expose Flow as AsyncSequence
  • KT-84979 Swift Export Nullability: Unit
  • KT-83821 Swift Export: suspend function returning Nothing leads to incompilable code
Tools. BCV
  • KT-83476 Use Maven publications as dump input [ABI Validation]
Tools. Build Tools API
New Features
  • KT-82791 BTA: introduce an option for ExecutionPolicy.WithDaemon to control the daemon log files path
  • KT-80963 BTA: Add structured information about reported messages to KotlinLogger
  • KT-73037 Add input (like compiler arguments) changes tracking
Fixes
  • KT-84228 BTA: Improving KDoc generation for Enums and Custom Types
  • KT-85738 BTA forward compatibility: NoSuchFieldError on X_IGNORED_ANNOTATIONS_FOR_BRIDGES when API 2.3.0 is used with impl 2.4.0
  • KT-85082 Make Xignored-annotations-for-bridges type safe
  • KT-82390 [BTA] Remove deprecated non-builder factory functions and classes
  • KT-85072 AbstractMethodError when calling discoverScriptExtensionsOperationBuilder with pre-2.4.0 compiler
  • KT-85447 BTA: deprecate JvmCompilerArguments.contains (warning)
  • KT-85092 [BTA] Update BTA Backward Compatibility Testing: 2.3.20-RC → 2.3.20
  • KT-85439 BTA: Warn or error when incompatible compiler arguments are passed via applyArgumentStrings
  • KT-75540 Build Tools API Should Reject -Xbuild-file Argument
  • KT-85391 [BTA] Hide boilerplate required to load isolated BTA implementation
  • KT-80679 Add support for the Build Tools API [ABI Validation]
  • KT-85035 Don't expose X_COMPILER_PLUGIN_ORDER in CommonCompilerArguments
  • KT-84738 Make Xscript-resolver-environment type safe
  • KT-85204 Make Xdump-directory type safe
  • KT-85205 Make Xdump-perf type safe
  • KT-85069 Make Xnullability-annotations type safe
  • KT-85167 Make Xjsr305 type safe
  • KT-85094 Make Xwarning-level type safe
  • KT-85294 BTA: Replace hardcoded @since in KDoc with dynamic versioning
  • KT-85333 Add BTA tests for BACKUP_CLASSES and KEEP_IC_CACHES_IN_MEMORY behavior after compilation error
  • KT-84770 BTA: default options cannot be retrieved from many option objects
  • KT-85224 Add @ExperimentalArgumentApi to compiler argument DSL types
  • KT-84322 Make X_PROFILE BTA compiler argument type safe
  • KT-84953 Fail TC build if generated files change
  • KT-85189 Refactor path argument types: flatten hierarchy and improve naming
  • KT-84984 Runtime NPEs caused by null return in CompilerMessageRenderer implementation
  • KT-84015 Introduce detection of custom script names to new BTA API
Tools. CLI
  • KT-85414 Argument DSL: delimiter = KotlinCompilerArgument.Delimiter.PathSeparator generates invalid Kotlin code
  • KT-85001 Convert ImplicitJvmExposeBoxed language feature to analysis flag
  • KT-84999 Don't poison binaries with ImplicitJvmExposeBoxed language feature
  • KT-85004 Set proper since version for language feature about property annotation targeting
  • KT-56850 Separate K/Wasm CLI entry point from K/JS CLI
Tools. Compiler Plugin API
  • KT-85133 Drop deprecated K1 specific methods from IrPluginContext
Tools. Compiler Plugins
  • KT-75656 PowerAssert: Create runtime library
  • KT-75873 PowerAssert: display callable reference value under '::'
  • KT-85151 PowerAssert: Surround string and character values with quotes
  • KT-85184 PowerAssert: Annotation may only be used on expect and non-override functions
  • KT-69036 Power-Assert indent multiline values
  • KT-85089 PowerAssert: Wasm CompileError when using PowerAssert.explanation
Tools. Gradle
New Features
  • KT-76197 Write Kotlin compiler warnings and errors to Problems API
Fixes
  • KT-85412 Module name is not sanitized with older Kotlin compiler versions
  • KT-65566 Use the new ConfigurationContainer consumable method to create consumable configurations
  • KT-85509 Remove deprecated API in the 2.4.0 release
  • KT-83858 Compatibility with Gradle 9.4.0 release
  • KT-69830 Support Gradle com.gradle.develocity plugin in KGP
  • KT-85433 Gradle: deprecate non-BTA JVM compiler execution mode
  • KT-80448 Remove internal & deprecated API from ExtrasProperty.kt
  • KT-69701 Gradle: module name is passed inconsistently to different types of compilations
  • KT-83860 Run tests against Gradle 9.4.0
  • KT-83859 Compile against Gradle API 9.4.0
  • KT-84729 Update Gradle plugin-publish version to enable configuration cache badge on Gradle plugins portal
Tools. Gradle. BCV
  • KT-83999 ABI validation: Groovy DSL doesn’t deprecate included/excluded filters, allowing four filter configs instead of two
  • KT-84461 Remove the use of abi-tools-api from KGP [ABI Validation]
  • KT-84100 Add Deprecated annotation to legacyDump block and property [ABI Validation]
Tools. Gradle. Compiler plugins
  • KT-85343 Update Compose Gradle plugin deprecations before 2.4
Tools. Gradle. JS
  • KT-84753 Deprecate KotlinJsCompilerType and KotlinProjectExtension methods using it
  • KT-81033 K/JS, Wasm: Remove deprecated wasm declarations in "js" package
  • KT-81034 K/JS, Wasm: Remove deprecated public constructors of JS declarations
  • KT-81030 K/JS, Wasm: remove deprecated NodeJsExec.create
  • KT-81037 K/JS, Wasm: Remove deprecated internal JS functions
Tools. Gradle. Multiplatform
  • KT-84767 K/N: associateWith triggers warning about friend-modules libs not included in -library argument
  • KT-69571 compileNativeMainKotlinMetadata not handling project/prebuilt substitutions
  • KT-84533 KMP: compileCommonMainKotlinMetadata: "Unresolved reference" for androidx.savedstate from Maven (works with project() dependency)
  • KT-84669 SPM import: If iosApp dir located outside of the project, checkSyntheticImportProjectIsCorrectlyIntegrated will fail
  • KT-84085 Remove deprecated gradle property kotlin.kmp.isolated-projects.support
  • KT-84597 Remove trailing comma for dependencies blocks settings in Package.swift
  • KT-82895 kotlin-stdlib import is flaky in commonTest in 2.1.21
Tools. Gradle. Native
New Features
  • KT-83873 Redo how dynamic library linkage and promotion are handled
Fixes
  • KT-69896 Native: output to stderr ends up in the Gradle log
  • KT-85708 [KGP] dSYM copy task ignores isStatic due to eager read before framework configuration
  • KT-84262 integrateEmbedAndSign produces an incorrect Gradle call for the root project
  • KT-84730 Add Kdocs to SwiftPM import APIs
  • KT-85502 Swift PM Import: "Library not loaded": KotlinMultiplatformLinkedPackage.framework is not copied next to the executable
  • KT-85510 Cleanup native tasks API
  • KT-82824 Make linker hack path relative
  • KT-85128 Refactor SwiftPM import lock tests and test utils
  • KT-83874 Linker hack doesn't work when clang uses response files
  • KT-83681 Parallelize parts of SwiftPM import pipeline that are called during import
Tools. Gradle. Wasm
  • KT-85046 K/Wasm: Wasm per-module Gradle integration tests on Windows
Tools. Incremental Compile
  • KT-85387 BTA: switch the default value of MONOTONOUS_INCREMENTAL_COMPILE_SET_EXPANSION to true
  • KT-85386 BTA JVM IC: 'moduleName' is null!
  • KT-84450 Star imports are not reported via FirImportTrackerComponent
Tools. JPS
  • KT-81579 JPS: -Xwarning-level=DEPRECATION:warning not supported
Tools. Kapt
  • KT-32743 Kapt, Maven: Do not include compile classpath entries in the annotation processing classpath
  • KT-41217 Running kapt with Maven does not seem to include the compilation classpath
Tools. Maven
  • KT-84386 Support Maven Toolchains in kotlin-maven-plugin
  • KT-76062 Maven: remove Kotlin script execution support
  • KT-85317 Auto‑align jvmTarget with the project’s Java level
  • KT-84101 Maven: compile and test-compile handle sourceDirs inconsistently
  • KT-84653 Add integration test for KAPT with smart defaults in mixed Kotlin+Java projects
  • KT-85121 Maven: enable configuration inputs tracking in BTA
  • KT-84778 Add integration test for auto-bind execution order in mixed Kotlin+Java projects
  • KT-85146 Maven: Adding stdlib as smart-default may break maven dependency resolution for other plugins
  • KT-83109 Remove beanshell and groovy verification in kotlin-maven-plugin-test
Tools. REPL
  • KT-77816 REPL: Support for const properties
  • KT-84483 [K2 Repl] NullPointerException in Analysis when using custom classes
  • KT-84803 [REPL] FirReplSnippet: provide the eval function symbol instead of the name (evalFunctionName)
Tools. Scripts
  • KT-85105 Scripts: JVM backend internal error (IR lowering) when scratch file contains anonymous object
  • KT-85103 Exception while generating code when explain destructuring decls
  • KT-85029 Kotlin Scripting: ScriptDiagnostic reports "at null" instead of error location
Tools. Statistics (FUS)
  • KT-85628 KGP: composite build FUS metrics fail on access of 'configurationTimeMetrics'
Tools. Wasm
  • KT-75086 Wasm: Deprecate and remove D8 in js packages

Discussion