2.4.20
Analysis API
KT-86546 Check suspicious when over ConeKotlinType in ConeTypeCompatibilityCheckerKT-85418 Implement an API for accessing deserialized file annotations in Analysis APIKT-74448 K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutinesKT-85856 containingSymbol of constructor property differs for local and non-local classesKT-65417 K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets
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 actualKT-69727 K2 IDE. Wrong error in the editor on calling clone function of actual enum instance in non-jvm platformKT-69726 FP errors on declaring fun clone() in actual enum in not-jvm source-setKT-86014 Types are broken after remove parameter through change signatureKT-86363 KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocksKT-86147 Drop kotlin.parallel.resolve.under.global.lock registry keyKT-85543 Avoid lazy resolve for the contracts phase if no constracts might be resolved
Analysis API. Infrastructure
KT-84914 Do not publish analysis-api-test-frameworkKT-86986 kotlin-compiler-common-for-ide bundles unrelated Analysis API modulesKT-86186 Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrateKT-85360 Drop kotlin-compiler-testdata-for-ide artifactKT-85585 Simplify the dependencies graph for the Analysis API modulesKT-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 declarationsKT-85040 [Analysis API] Improve Java / Kotlin interop in KMP projectsKT-87301 SymbolLightAccessorMethod#isValid returns false for delegated propertiesKT-87171 SLC: non-mapped Kotlin collection supertype is dropped from supertype listKT-87250 JvmExposeBoxed: light classes shouldn't be autogenerated for private declarationsKT-70428 AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegationKT-63568 Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not setKT-36740 MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealiasKT-67749 Analysis API: Symbol Light classes should be available only to pure JVM sourcesKT-68169 K2 IDE. KMP. False positive type mismatch in java file of jvm source-set when using common declaration which expects StringKT-37783 KMP Java Interop: JVM-only methods on actual superclass not resolved in Java for common subclassKT-40059 Provide type correction for expect/actual types used from Java-codeKT-71429 MPP: False positive “Function1 is not a functional interface” when calling code from Common in JavaKT-70426 SLC: kotlin.Collection#size is not exposed by defaultKT-60480 Symbol Light Classes: Classes implementing kotlin.collections.* interfaces don't implement all methods from the corresponding java.util.* interfacesKT-36991 IDE: “both methods have same erasure” for Java classes directly or indirectly extending Kotlin collectionsKT-22594 KotlinCollection.getSize is not highlighted as an error in Java
Analysis API. PSI
KT-84925 Move KtReference to the Kotlin IntelliJ pluginKT-85052 Move mutation methods out of the Kotlin PSIKT-85427 Use factory-like pattern instead of reflection in KtNodeTypeKT-84789 Ensure all KtClassBody.parent usages are correctKT-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 sessionsKT-76526 Incorrect built-in module is provided for non-JVM sources in Standalone
Analysis API. Standalone
KT-83191 Analysis API: JvmDependenciesIndexImpl performs very poorly for large classpathsKT-61404 Analysis API: implement proper library publishing structureKT-85112 AA does not see packages from unpacked klibsKT-86417 Support parameters in ‘getExpectsForActual()’KT-84916 Metadata stub deserializers aren't properly set up for Analysis API Standalone
Analysis API. Stubs and Decompilation
KT-86250 KotlinIllegalArgumentExceptionWithAttachments: No fir element was found for KtDestructuringDeclaration on destructuring declaration typingKT-86520 KotlinDeclarationInCompiledFileSearcher doesn't support visibility-mangled declarationsKT-64901 Inconsistency between AST and Stub tree in the case of non-local destructuring declarationsKT-84444 Support stubs for companion blocks & extensions
Analysis API. Surface
New Features
KT-73214 Add KaScope#declarations with name filterKT-69085 Provide API to retrieve label/name from KtFunctionLikeSymbolKT-70771 KaLocalVariableSymbol: support isDelegatedPropertyKT-85037 Add API for KaFunctionType's returnType modificationKT-80460 AA: Introduce KtExpression.isStableForSmartCasting APIKT-66566 AA: api to create functional typesKT-65912 Analysis API: Implement type building API for all KtType
Performance Improvements
KT-70021 Analysis API: optimize KaFirExpressionTypeProvider.expressionType for simple cases
Fixes
KT-66039 K2: Analysis API: redesign resolution APIKT-86394 Resolve from KDoc reference is inconsistent with source codeKT-87337 Integrate KaContextParameterOwnerSymbol into KaCallableSymbolKT-78234 Analysis API: Context parameters for accessorsKT-86786 Investigate suspicious when over ConeKotlinType in ConeKotlinType.getDirectSupertypesKT-72902 Shouldn't KaSymbolProvider#findClass return KaNamedClassSymbol?KT-87237 No expected type inside arrayOf in annotation entriesKT-87143 findKDoc returns parent property KDoc for accessors of an overriding propertyKT-83224 Support “Compile-time functions” in the Analysis APIKT-87174 Expected class KaFirSymbol instead of class KaFirPackageSymbol exceptionKT-87199 [Analysis API] Remove KaEnumEntryInitializerSymbolKT-85382 Remove the FE10 implementationKT-70774 Unary operators on literals are not resolvableKT-85206 Provide information about potentially removable context-sensitive resolution qualifiers via Analysis APIKT-86872 KtOperationReferenceExpression should be KtResolvableCallKT-85800 Analysis API: The internal utility PrettyPrinter is used in the public API surfaceKT-73796 Consider “KaAnnotation#useSiteTarget” removalKT-70794 K2 IDE: Reference to object does not resolve as LHS in “plusAssign” assignment expressionKT-86757 Flaky annotations result for @all annotation on a backing fieldKT-86681 [Analysis API] Move isDelegated to KaVariableSymbolKT-86685 collectCallCandidates works incorrectly for a constructor vs. a companion invokeKT-86514 No expected type within collection literal in annotation entry using array rather than varargsKT-76076 K2 AA: safe call expression navigates to parent array index access expressionKT-86418 Support property accessors in ‘getExpectsForActual()’KT-71312 KaFirPsiJavaClassSymbol.{hasAnnotations, annotationSimpleNames} is inconsistent with FirJavaClass implementationKT-86248 isUsedAsExpression true for typealias lhs in ::KT-85778 Analysis API: Ensure that all public endpoints in implementation modules are internal or opt-inKT-78285 resolveToCallCandidates inconsistent behaviour with invoke operator and constructorKT-85852 CCE in buildClassTypeKT-85989 Super type references should be aware of type alias constructorsKT-84184 [Analysis API] Provide a unification substitutor APIKT-84584 Support companion extensions and blocks in the Analysis APIKT-84932 Deprecate utilities exposed through analysis-internal-utilsKT-73059 Consider dropping of KaOriginalPsiProviderKT-73050 KaFirSymbolRelationProvider#expectsForActual: suspicius logic for KaReceiverParameterSymbolKT-71101 [AA] Consider getting rid of KaTypeNullability
Backend. J2KLIB
KT-88165 Add Support for -XheaderModeType=compilation to improve header compilation performanceKT-86239 [JKLIB] Investigate which type system context is needed in JklibIrLinkerKT-88306 [JKLIB] Unbound symbols for kotlin.coroutines.SuspendFunctionNKT-88120 [JKLIB] Add -jvm-target to K2JKlibCompilerArgumentsKT-88176 [JKLIB] DeserializationStrategy.WITH_INLINE_BODIES when deserializaing dependenciesKT-88163 Allow to disable firAggressivePrunner for Jklib
Backend. Native. Debug
KT-85264 [Native] Stepping trace starts with // test.kt:1 box in some debug stepping testsKT-81740 Native: importing konan_lldb.py to lldb prints a warning
Backend. Wasm
Fixes
KT-73452 K/Wasm: turning on range checks by defaultKT-83171 K/Wasm: Investigate import.meta usage in mjs filesKT-83159 K/Wasm: generate one common base class fun interfaces (including Function*)KT-82843 K/Wasm: pass a lambda call helpers to convert funs as an argument instead of exporting themKT-86123 [Wasm] Callable reference refactoring (KT-83159) broke klib binary compatibility with libraries compiled by Kotlin 2.0.xKT-83356 K/Wasm: Difference in behavior on nested class initialization (for enums?)KT-87639 [Wasm] Multimodule wasm fails on Pointer usagesKT-87583 Wasm IC cache is not invalidated when kotlin.wasm.compilationMode changes causing IndexOutOfBoundsException in WasmDeserializerKT-84267 K/Wasm: init order of companion objects is different from JVMKT-86192 K/Wasm: Raise a warning on usage of top-level require in JsFunKT-86242 K/Wasm: deprecate and prohibit using wasmExportsKT-86245 K/Wasm: provide an API to get a reference to wasm memoryKT-84610 [Wasm] Failed to compile klibs in IC modeKT-87078 Wasm/JS: OutOfMemoryError (or BufferUnderflowException) during incremental compilation of multiple files with @JsExportKT-76207 K/Wasm: prototype generating suspend functions with stack-switching proposalKT-86166 [Wasm] Make possible to have passing test in multimodule but having it fail in monolithKT-71039 [Wasm, IC] Investigate synthetic function types loadingKT-71505 [Wasm, IC] Incremental step can produce wrong main function callKT-86822 K/Wasm: don't cast the result of calling callable references with Unit return typeKT-86180 [Wasm] backward compatibility is broken in 2.1->2.2 by changed order of type parametersKT-86640 [wasm]: Single-module test failures with companion object initializersKT-66105 Wasm: SyntaxError: Identifier ‘box’ has already been declaredKT-83245 K/Wasm: Run stepping tests with local variables with K/WasmKT-86478 K/Wasm JS: StringBuilder.setLength crashes when growing with js-string builtinsKT-84667 wasm: Add general support for custom sections/annotationsKT-85506 [Wasm/WASI] Stdlib readLn and readlnOrNull implementationKT-85270 K/Wasm: incremental compilation fails with NoSuchElementException when a stdlib call is removed
Compiler
New Features
KT-73431 Unresolved reference errors should state the type they're acting onKT-80373 Add initial support for release compiler cachesKT-84618 Emit a warning when an undesrcore variable is assigned to a Unit expressionKT-86409 [KMP] Create JVM IC metadata outputKT-84295 Support Companion Block of Operator for Collection LiteralsKT-84956 Resolve of references to static & companion object members of generic classKT-85925 Native: rework virtual trampolines machineryKT-86657 Native: turn on incremental compilation by defaultKT-86018 Short-form of name-based destructuring for multi-field value classesKT-86406 Swift Export: support supercalls for cross-language inheritanceKT-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 compilationKT-85593 ELA: Support multiple lambda argumentsKT-83040 Collection literals: ensure normal interaction with CFGKT-84333 Collection literals: type inference in delegate expressionKT-84289 Resolution to Companion Block & Extension Invoke OperatorKT-82961 Type inference from upper type for type parameters designed for tracking of checked exceptionsKT-81444 False positive: “Overload resolution ambiguity” with @OverloadResolutionByLambdaReturnType and multiple lambda parametersKT-75736 Enable reading/writing annotations in metadata on JVM by default
Performance Improvements
KT-85621 Native: fix optimization in CastsOptimizationKT-69758 FastJarFS - avoid copying data on inflating (JDK 16+)KT-85647 Compilation performance regression in AbstractFirDeserializedSymbolProvider since 2.3.20KT-86104 [JVM] use static methods/fields of KTypeProjection in typeOf generated bytecodeKT-86084 IDEA freezes when a lot of properties are modified to lazy delegatesKT-83068 Investigate long compilation times with many generics & overloadsKT-66469 Long compilation with mockk importKT-79677 Remove meaningless LVT records
Fixes
KT-88953 CCE caused by suspend conversion of nullable argument to nullable expected typeKT-85842 Collection literals (and CSR): internal failure when lambda is analyzed during inference of outer callKT-86751 IntroducedAt: Do not generate @IntroducedAt overloads as syntheticKT-81708 K/N incremental compilation: No module deserializer for FUN name:writeObjectKT-82510 K/N, IC: “Undefined symbols for architecture arm64” for iosSimulatorArm64 with kotlin.incremental.native=trueKT-88316 K/N: StackOverflowError in CastsOptimization when two nullable local variables are assigned to each other across nested loopsKT-80841 Confusing positioning of NO_VALUE_FOR_PARAMETERKT-85300 Improve message for UNRESOLVED_REFERENCE_WRONG_RECEIVERKT-87983 CCE on member extension property delegated to bound property referenceKT-85403 kotlin.NoWhenBranchMatchedException on Kotlin Native with sealed interfaceKT-87922 K1FakeDescriptorsForReferencesKt classes duplicated between kotlin-scripting-compiler-embeddable and kotlin-build-tools-implKT-87499 ClassCastException “Float cannot be cast to Unit” when a suspend function's result is discarded in a when-branchKT-85656 [NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS] False negative for nested type aliasKT-85641 Nullable-marked object qualifiers in LHSs of callable referencesKT-86957 Warning on the underscore variable is not reported for java.lang.Void callKT-87261 K/N debug: ‘is’ check miscompilation — local variable reports wrong type when two smart-cast extractions precede an inline loopKT-87577 Compiler crash on red code with ambiguous type parameter used as expressionKT-80867 [Native] Stack allocation is blocked after cross-module inlining of stdlibKT-86949 Native: ComputeTypesPass handles type checks across loop iterations wrongKT-86959 Native: OptimizeCasts gets confused by “complex” terms leaking between different loop iterationsKT-78079 Enable generation of when using invokedynamic by default for JVM targets 21+KT-86525 JvmExposeBoxed: Inconsistent number of parameters during reflectionKT-72999 K/N: Do not consider IrTypeOperatorCall as a tail call expressionKT-84802 Add new synthetic class flag to JVM metadataKT-87606 Compiler crash on red code with redeclaration of type parameter which is used as expressionKT-85888 Native: incremental compilation blows up when a method changes from open to finalKT-87335 Context parameters: wrong LINENUMBER emitted for context argument loads in JVM bytecodeKT-84344 Disambiguate fake source elements for source-based symbol IDsKT-86618 Collection literals: internal PCLA failure with reassignmentKT-85703 Drop pre-2.0 language features from K2 & common compiler codeKT-87245 Report UnsupportedFeature on ExplicitContextArgumentKT-80227 Support unnamed context parameters in evaluationKT-72706 Confusing “INVISIBLE_REFERENCE” when calling private constructorKT-86110 K/N Incremental compilation: stale cache is reused after enum entry reorderKT-86133 K/N IC: stale cache is reused after reified inline body changeKT-30728 “VerifyError: Operand stack underflow” on crossinline lambda usage inside inline function in anonymous objectKT-87507 False-positive ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED on fake-override with value parameter of type missing in dependenciesKT-87439 Postpone UnitConversionsOnArbitraryExpressions indefinetelyKT-87434 JAVA_CLASS_ON_COMPANION not reported when companion accessed through typealiasKT-64622 [K/N] ar utility fails with symbol @ in module/klib name on Linux with static cacheKT-84037 Native: rework ar invocations in the compilerKT-87339 JVM: Support recursive type provided as an argument of typeOfKT-86551 Check suspicious when over ConeKotlinType in FirExposedVisibilityDeclarationChecker#findVisibilityExposureKT-87395 StackOverflowError in return value checker when a Java class member is annotated with the class's own nested annotationKT-87290 Investigate possible bug in value class deserializationKT-61141 K/N: irText tests failed with K/N irText first runKT-85764 Native: Prohibit compiling sources in ‘kotlin’ package by defaultKT-86469 Check ‘when’s over ‘ConeKotlinType’ which could miss some branches in DFAKT-87253 Missed ConeCapturedType check in processing of equals contractsKT-84522 Refactor FirResolvedQualifierKT-84299 resolvedToCompanionObject is not set in some situationsKT-87327 JVM IR: NullPointerException in JvmInlineClassLowering when using == between value of generic value class and another value classKT-86948 Native: CastsOptimization merges results of type checks across loop iterations wrongKT-86947 Native: CastsOptimization drops side effects of always-null safe castsKT-87276 Drop or move ConeTypeCompatibilityCheckerKT-78623 No-arg constructor should be generated if all parameters are optional, even when one of the parameters is inline typeKT-86886 Kotlin Lombok: compiler crash with IllegalArgumentException on builder with a single type parameterKT-83880 Consider making OPERATOR_RENAMED_ON_IMPORT a warning (instead of error)KT-70461 K2: “Inline class types should have the same representation” caused by value class and smart checkKT-87140 K/N: Test generation leaks BaseClassSuite's INSTANCE type parameterKT-87291 Enable ProhibitScriptTopLevelInnerClasses in 2.5KT-87226 CompanionBlocksAndExtensions: COMPANION_EXTENSION_RECEIVER_IS_OBJECT diagnostic is absent when object used via typealiasKT-87058 Investigate abandoned language featuresKT-86655 mismatched mutability annotations in overriding lead to misaligned behavior in warn-mode and strict-modeKT-85169 Return value checker: RETURN_VALUE_NOT_USED: object expression highlighted entirely instead of just the keywordKT-86464 Support isPublicAbi JVM metadata flag for anonymous and synthetic local classesKT-87083 JVM: AssertionError in if UIntArray is declared in sourcesKT-87032 JvmExposeBoxed: forbid private @JvmExposeBoxed declarationsKT-85954 Implicit JvmExposeBoxed leads to IOOBE when data class constructor accepts nullable inline classKT-85955 Implicit JvmExposeBoxed: double default constructor parameter leads to IOOBEKT-86523 JvmExposeBoxed: Cannot generate code for exposed constructor with default parameter referencing another default parameterKT-86524 JvmExposeBoxed: Collection does not implement abstract methodKT-86526 JvmExposeBoxed: Sequence contains more than one matching elementKT-86865 Support abstract full value classes with non-trivial constructorsKT-87016 Drop ANNOTATION_ON_ANNOTATION_ARGUMENT diagnosticKT-86615 K2: Missing INVALID_CHARACTERS diagnostic for enum entry name with illegal JVM characters, leading to runtime ClassFormatErrorKT-86849 Remove old @JvmInline multi-field value classesKT-87014 [KGP] failing testSwiftExportCoroutinesKT-86481 Compilation failure with spread arrayOf inside arrayOfKT-86996 unwrapVarargValue does not consider some casesKT-86955 K2: Companion block funs in interfaces have OPEN modality after Fir2IRKT-87035 K2: Context parameter type leaks unsubstituted into callable-reference adapterKT-86940 Diagnostic range of NONE_APPLICABLE in enum entry is hard to seeKT-86046 Put @K1Deprecation to all public declarations of K1 modulesKT-86555 CL-based annotation resolve: clean up CFG-related hacksKT-86482 Collection literals: do not fallback if not supertype of List is expectedKT-84154 Invalid qualifiers with type arguments in package parts compile without diagnosticsKT-85288 Consider dropping use-site target checks in checkRepeatedAnnotation and similar placesKT-85469 Native: potential concurrency problem with cachesKT-81567 Add a use-site warning if a @DslMarker-marked annotation is used on entities where it is a no-opKT-86853 FIR: Char.code not being const-evaluated under IntrinsicConstEvaluation featureKT-86877 Postpone ELA-related language featuresKT-86852 Initialize full value classes fields before calling superKT-86824 Native: support spaces in paths for LinuxKT-85816 Drop remaining usages of ComponentRegistrarKT-86534 Extract reworked annotations resolution under separate language featureKT-82555 @Deprecated(HIDDEN)` objects not skipped when resolving qualifiersKT-84626 Try to combine FirConstChecks and FirExpressionEvaluatorKT-85291 MFVC: consider analyzing the type of declaration instead of use-site target in AnnotationCheckerKT-86755 False negative NATIVE_SPECIFIC_ATOMIC in type argumentsKT-86752 K2: False negative NO_REFLECTION_IN_CLASS_PATH on type parameters, intersection types, captured typesKT-85972 [ArrayEqualityCanBeReplacedWithContentEquals checker] Checker misses smart-cast array operands when the original type is a type parameterKT-85970 [ArrayEqualityCanBeReplacedWithContentEquals checker] Warning message mentions ==/=== instead of !=/!== for inequality operatorKT-86705 False positive REDUNDANT_SINGLE_EXPRESSION_STRING_TEMPLATE for nullable String? expressions with -WextraKT-86798 Native: don't use stale incremental cache when a new compiler version is usedKT-86298 LEAKED_IN_PLACE_LAMBDA when a lambda parameter is forwarded into an inline function parameterKT-76632 K2: False positive “Assigned value is never read” with ‘flatMap()’KT-86699 Kotlin/Native: get rid of OptimizeTLSDataLoadsKT-86577 Companion block member is determined as a fake overrideKT-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.upperBoundForApproximationKT-86629 Approximation of Intersection Type to Upper Bound is Broken by Bang Bang OperatorKT-86115 Platform declaration clash on no-arg constructor with @JvmExposeBoxed and @IntroducedAtKT-86643 Warning for returning callsInPlace lambdaKT-86609 Make KDocSection implement PsiLanguageInjectionHostKT-86642 Flexible type with nullable intersection types in both boundsKT-85148 Native: check/fix KT-72710 Incorrect behaviour of tail call suspend functions optimizationKT-85230 False negative deprecation diagnostics on import of member of nested classKT-62467 K2: Result type of elvis operator should be flexible if rhs is flexibleKT-86319 K2: StackOverflowError in AbstractConeSubstitutor with recursive Java type bound under mixed JSpecify @NullMarked/@NullUnmarkedKT-86512 K2: Bad IR for adapted callable reference to function with generic vararg and optional parameterKT-85947 Collection literals: internal failure when SAM is expectedKT-85535 Collection literals: Migrate to new resolve in annotations under “-Xcollection-literals”KT-86468 K2: False negative DSL_SCOPE_VIOLATION when type parameter has DSL-annotated boundKT-86292 False negative: INFERRED_TYPE_VARIABLE_INTO_EMPTY_INTERSECTION_WARNING reported for direct getValue call but not for equivalent by delegationKT-86467 K2: False negative ILLEGAL_RESTRICTED_SUSPENDING_FUNCTION_CALL with DNN, flexible, captured and intersection receiver typesKT-85848 Recursion on value classes through type parametersKT-75874 K2: Adjust the type mismatch diagnostic on lambda parametersKT-82456 K2. Missing deprecation for object with invokeKT-86184 KDoc: syntax highlighting incorrect when @param, @return, or summary line begins with a backtickKT-85454 Make :compiler:android-tests:test cacheableKT-51400 Additional independent candidate with @OverloadResolutionByLambdaReturnType could change inference resultsKT-86042 Inference fixes lambda's return type variable too earlyKT-86327 Add flag to LanguageFeature enum to enable it in the latest language version testsKT-84718 Provide information for simple names resolved through imports which might be resolved via context-sensitive in IDE modeKT-75112 FE resolves wrong receivers order for property passed to delegateKT-86191 Check not null on a dynamic-typed property leads to malformed CFGKT-86143 operator keyword is allowed on arbitrary equals in enum entriesKT-73197 Order-dependent choice of overload by lambda return type with UnitKT-86144 Unresolved code in ambiguous plus assign is not reportedKT-86006 CFG: Exponential growth when visiting unresolved delegates in FirLocalVariableAssignmentAnalyzerKT-86103 Incorrectly reported CONFLICTING_OVERLOAD on companion memberKT-85965 Native: incremental compilation blows up with NoSuchFileException: class_fieldsKT-86005 Fix misuse of DeferredMethodVisitor.intermediate in AnonymousObjectTransformerKT-72840 [JVM Inliner] Two fails AFTER mandatory stack transformations: incorrect bytecodeKT-84589 Prohibit Array<Nothing> in lhs of ::classKT-84766 Kotlin/Native: separate compiler cache for latin1Strings=trueKT-82899 Native IC: AIOOBE on coroutinesKT-85188 Don't poison binaries with companion blocks & extensions for LV >= 2.5KT-80176 ASSERT FAILED: SDE.c : 296 - bad SourceDebugExtension syntax - position 376 - expected ‘:’KT-84581 Inline function with @JvmOverloads produces SourceDebugExtension attribute with invalid line numbersKT-85203 Kotlin/Native: “Invalid LLVM module - Instruction does not dominate all uses” with nested inline suspend functions and withContextKT-85766 Confusing error message “‘this’ is not defined in this context” on companion extension delegated propertyKT-85720 K2: Missing null check in generic vararg function call when passing value of flexible typeKT-85701 K2: Type parameter is out of bounds for IMPLICIT_DYNAMIC_CASTKT-82196 False positive: “Recursive call is not a tail call” inside when/if with lambda and elvisKT-85841 Error message for NULLABLE_ON_DEFINITELY_NOT_NULLABLE uses obsolete term for DNN typesKT-81932 False positive TAIL_RECURSION_IN_TRY_IS_NOT_SUPPORTED caused by try in another branch inside tailrec functionKT-78443 Refactor session component initialization for multi-target compilationKT-85661 Lazy resolve for substituted property accessors with a contract doesn't workKT-84719 Provide information for qualified types that might be replaced with context-sensitive simple names in IDE modeKT-85667 Add experimental language version 2.6KT-85770 Support companion block properties in interfacesKT-85168 Generate static initializers as proper IR functionsKT-74516 False negative TYPE_PARAMETER_AS_REIFIED for DNN typeKT-85733 Illegal unqualified resolution to companion extension through scope linkingKT-85679 Internal Compiler Error when trying to access a value parameter from companion blockKT-85358 Native: roll back the workaround for KT-84678 once MapLibre has been properly fixedKT-81814 Field name ‘$$context-Functor#1’ cannot be represented in dex formatKT-6071 Change USELESS_CAST warning messageKT-85626 @JvmRecord in commonMain breaks compileCommonMainKotlinMetadata with “Cannot access ‘java.lang.Record’”KT-85527 Unmute Android tests after removing IGNORE_BACKEND_K1 directiveKT-84939 Kotlin/Native: support llvm passes in -Xsave-llvm-ir-afterKT-85341 K2.“TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM” false positive on accesses to properties of an anonymous objectKT-84861 Support Companion Blocks & Extensions in Scripts/REPLKT-84327 Name-based destructuring conflicts with in-scope functionsKT-78678 Checking for nullable type against nullable type falls back to inline-when generation mechanismKT-83652 Confusing messages when using package parts with type arguments in qualifiersKT-75372 Deprecate K1 compilerKT-80093 Type inference depends on the presence of transitive dependencyKT-68933 CompilationException: Back-end: Could not get inlined classKT-63746 K2: JSpecify: If a class has a @Nullable type-parameter bound, Kotlin should still treat unbounded wildcards like platform typesKT-17738 Java cannot extend class implementing kotlin.collections.Map
Compose compiler
Fixes
b/549552317 Fixed a bug that, in certain cases, prevented execution of non-local return statements inside lambdas called from when expressions.b/543684938 Fix composable singleton in function with type parametersb/537617330 Fixed a bug that caused miscompilation of cross-module calls to getters and setters, causing spurious runtime errors.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 typesb/489339299 Move Compose runtime to a stable versionb/509945632 Always wrap inline lambdas with a composable group with a groupb/422193018 Fix callableInferenceNodeOf in ComposableTargetChecker.kt
IR. Inlining
KT-86558 Forbid accesing volatile references after inliningKT-87272 IR: Function value is inlined with out-of-scope type parameterKT-87274 IR: Synthetic accessors are generated with out of scope type parametersKT-79065 Try to remove NativeRuntimeReflectionIrBuilderKT-72464 [Native][JS][Wasm] Non-local return through suspend conversion breaks the IR inliner
IR. Tree
Fixes
KT-69305 Re-enable reporting out-of-scope type parameter usages during pre-lowering IR validationKT-86943 Investigate if lambdas must be transformed into static or regular functionsKT-73921 False negative: tailrec checkers with recursive functions (without tail recursion)KT-85896 Type parameter is out of bounds (in setter) for a property with context parametersKT-85698 Type parameter is out of bounds (in setter) for an extension property with type parameterKT-85575 KLIBs: Add IR text & ABI dump tests for companion blocks and companion extensionsKT-87138 IR: Rich callable reference to an inner-class member leaks outer class type parameters into the generated adapterKT-74938 Use SYNTHETIC_OFFSET in IR fake overridesKT-87105 [Tests][IR] Unify or split IR dump for different backendsKT-87292 IR: Drop lateinit modifier from IrFile.module propertyKT-86884 IrTreeSymbolVisitor is not visiting symbols declared in non-final classKT-85147 K/N: Segfault when calling SAM instance converted to type with nullable type parameter upper boundKT-86527 Remove unreachable code from UpgradeCallableReferencesKT-85673 Replace classId with IrClassSymbol in IrAnnotationKT-85572 KLIBs: New signatures for companion funs/valsKT-78175 Remove remaining usages of attributeOwnerId outside of JVM backendKT-85573 Store “companion parameter” in IR of funs/vals declared as companion extensions
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-86477 Reflection: test builtin class contentsKT-87369 Reflection: KClass.members fails on Java class with self-referential raw type boundsKT-76521 Reflection: change KType representation to avoid dependency on K1KT-85902 Reflection: support call/callBy for companion blocks & extensionsKT-85903 Reflection: do not inherit companion block members from supertypes in KClass.membersKT-86709 Reflection: KRIE with Reaktor on fresh masterKT-86101 Reflection: additional Java constructors are not added for mapped builtins in the new implementationKT-86545 Reflection: extra Serializable supertype for non-mapped enum classes in “kotlin” packageKT-83677 Reflection: aliased extension function type is rendered as non-extension in toStringKT-85836 Reflection: KotlinReflectionInternalError on isSubtypeOf with definitely-not-null typeKT-83986 Reflection: java.io.Serializable is not shown in supertypes of Int type in new reflectionKT-84495 Reflection: “KotlinReflectionInternalError: Annotation class not found: kotlin/jvm/internal/EnhancedNullability” on Java Optional typeKT-86177 Reflection: incorrect modality of Java constructors in the new implementation
JavaScript
Fixes
KT-88571 K/JS: “llegalStateException: Internal error: cannot find external signature” caused by @Serializable enum in 2.4.20-RCKT-87410 [K/JS] Companion block initialization order of super types differs from JVMKT-86273 @JsExport.Ignore does not work properly with data classes propertiesKT-85599 Allow exporting annotation classes into JS/TSKT-86934 K/JS: Stack overflow when implementing interface with suspend fun using anonymous objectKT-80188 Design exporting of suspend lambdas into JS/TSKT-87127 KJS: @JsPlainObject factory contains duplicated parametersKT-70622 Kotlin/JS: Incremental compilation doesn't recompile kotlin js stdlib while changing a collectionKT-87307 [JS] Reflection: runtime KClass of a Long value differs from Long::classKT-85990 K/JS: Default parameter values ignored in @JsStatic suspend functions when class is exportedKT-84992 Remove body of isLongCompiledToBigInt intrinsic after boostrap version updatedKT-40768 KJS: initialization order for companion objects (inherited classes) different from K/JVMKT-87074 KJS: Fix inheritance issues in Analysis API-based TypeScript exportKT-75176 Add infrastructure for bundle size testingKT-85616 [K/JS] Add synthetic and internal compiler APIs into sourcemap's ignoreListKT-70223 Delete the source code for the legacy JS backendKT-73067 Drop support for the legacy JS metadata from the metadata decompilerKT-82224 Respect file-level annotations in Analysis API-based TypeScript exportKT-82340 Implement supertype approximation in Analysis API-based TypeScript ExportKT-82317 Support Kotlin collections in Analysis API-based TypeScript ExportKT-84710 Kotlin/JS: Suspending default interface methods are not accessible on subclasses from JSKT-19819 JS: source maps: write the longest common prefix of all paths to “sourceRoot” fieldKT-82266 Support transitive export in Analysis API-based TypeScript exportKT-80991 K/JS/Wasm interop: JsReference.get is easy to accidentally use in JS targetKT-85424 Replace each js call with jsClassIntrinsic after bootstrappingKT-84457 KJS: Support implementable interfaces in Analysis API-based TypeScript ExportKT-85452 K/JS: Cannot create static member with @JsStatic in non-companion objectKT-83462 Usage of star projection makes any generic type not-exportableKT-85563 Kotlin/JS: TypeScript mts files do not properly escape enum valuesKT-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-84821 [K/N] Load libclangstubs from configured pathKT-87294 [Wasm] Implement Wasi Klib backward compatibility testingKT-86320 [PL] Replacing unusable classifiers with Any? type may cause a signature clashKT-86632 KLIBs: Rework serialization logic for IrTypeAliasKT-87006 Extract/remove K1-specific parts from :kotlin-util-klib-metadataKT-81947 [Wasm] Klib backward and forward compatibility testingKT-81659 Load symbols on 2nd compilation stage without frontend involvementKT-85611 Change usage of KlibCompilerDeserializationConfiguration in IntelliJ to CommonCompilerDeserializationConfigurationKT-86451 Get rid of deprecated ‘-no-endorsed-libs’ usages in Kotlin projectKT-85578 KLIBs: New manifest property to indicate “new initialization order”KT-84836 Minimize usages of IrBuiltIns in the KotlinIrLinkerKT-86037 [Tests] Split test directive IGNORE_KLIB_BACKEND_ERRORS_WITH_CUSTOM_FIRST_STAGEKT-86228 Simplify Klib's ReadBufferKT-58409 [KLIB Reproducibility] File path separators should be platform-independent in KLIBsKT-74417 Deduce the metadata version based on LV in KLIB-based backendsKT-76195 Combine toJvmMetadataVersion and toKlibMetadataVersionKT-84750 [K/N] Set “kotlin.native.home” appropriately in forward testing of master -> 2.4.0-Beta2KT-85805 AtomicfuNativeKlibSyntheticAccessorTestGenerated brokenKT-85587 [Tests] Update test data so it ignores failing compatibility tests correctlyKT-85359 ExportKlibToOlderAbiVersion with LV=2.2 is silently ignoredKT-85290 Make :native:native.tests:klib-compatibility:testMinimalInAggregate cachableKT-85080 Klib/IR Tests TC configuration -- need to explicitly download the necessary dependenciesKT-84990 Investigate the usage of allDependencyModules in IR linkerKT-84349 [Wasm] Implement forward klib compatibility testingKT-71414 KotlinLibraryResolver.resolveWithDependencies was evolved in binary incompatible way
Language Design
KT-86089 Explicit context arguments: Stable releaseKT-11914 Confusing data class copy with private constructorKT-86761 DM 2026-06-08: Another round on ELA (2)KT-86895 Make full value classes poison buildsKT-86201 Name-based destructuring stable release of only-syntax in 2.5KT-7882 Generic vs Non-Generic and implicit Unit return typeKT-78796 Decide the future of the AllowEagerSupertypeAccessibilityChecks language feature
Libraries
New Features
KT-30270 Provide allDistinct() and allDistinctBy{} for iterablesKT-10380 allEqual function for IterableKT-31305 Support JUnit5-like assertions with message suppliers in kotlin-testKT-86595 Introduce StackTraceRecoverable interface into the standard libraryKT-86766 Add @EqualityBound declaration to stdlib
Performance Improvements
KT-86010 K/N, K/Wasm: MatchResultImpl function arguments checks takes significant portion of time for regex with capturing groupsKT-86032 K/N, K/Wasm: BitSet::get allocates objects for each access
Fixes
KT-86329 Update kotlinx.collections.immutable in Kotlin project to 0.5.0KT-86053 Update kotlin-metadata-jvm for the companion blocks and extensionsKT-87173 isSortedBy and isSortedByDescending inline their selector twice at every call siteKT-87166 allEqualBy inlines its selector twice at every call siteKT-85020 Path.copyToRecursively silently corrupts directory structure when copying across file systems with different path separatorsKT-86696 return-value-checker: false positive Path.setPosixFilePermissions and Path.setLastModifiedTimeKT-86470 Stdlib doc: Wrong timestamp in kotlin.time.Instant.parse example (leads to InstantFormatException)KT-80654 K/N and K/Wasm: implement missing Regex testsKT-85326 Libraries: rangeUntil docs sample code uses a rangeTo exampleKT-82505 API reference: add links to array transformations returning arrays from their list-returning counterpartsKT-57883 Description and code mismatch in CoroutineContextImpl.ktKT-65526 Rewrite builtins as expect-actual
Native
KT-74844 kotlin.native.internal.FileFailedToInitializeException when running native tests with Kotlin 2.1.20-Beta2KT-80830 [K/N] -Xruntime-logs doesn't work with cachesKT-36076 KotlinNullPointerException: Gradle parallel compilation fails on 1.3.70
Native. Build Infrastructure
KT-86889 Kotlin/Native: restore benchmarks after bootstrap updateKT-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 testFixturesKT-86725 Kotlin/Native: make KonanCacheTask aware of per-file cachesKT-85823 Kotlin/Native: delete outputs in :kotlin-native:distNativeLibsKT-85522 Kotlin/Native: llvmLinkBreakpadMainMacos_arm64 fails
Native. C and ObjC Import
New Features
KT-86654 [K/N] CValuesRef overload for c-string parameters
Performance Improvements
KT-84043 Native: findMacros takes a lot of time with -fmodules in cinterop
Fixes
KT-33092 Kotlin/Native doesn't mangle names clashing with standard macros when generating Objective-C headersKT-85765 Prohibit emitting C-interop KLIBs with kotlin or kotlinx.cinterop packagesKT-87461 Native: platform.darwin cache build failure with symbol is already boundKT-83940 Generate IR from C-interop KLIBs without descriptorsKT-84665 Don't use KLIB resolver in the CInterop toolKT-86263 Generate IR for forward-declared classes without descriptorsKT-86871 C-interop Klib caches are not deterministic after KT-83940KT-86559 [K/N] More stable @CCall idsKT-73656 Native: @OverrideInit on a capturing local class constructor causes a compiler crashKT-85399 Kotlin/Native: TypeCastException when casting ObjC Protocol MetaClass with genericSafeCasts enabledKT-85508 K/N: TypeCastException when using nw_parameters_create_secure_tcp block parameter on 2.3.20
Native. ObjC Export
KT-86443 Native: crash in SwitchThreadState when KotlinBase methods are called from a thread without an initialized Kotlin runtimeKT-85423 Native: ObjC export throws and breaks IDE highlighting and navigation support due to mangling inconsistencyKT-86069 Native: the annotation target for @ObjCEnum.EntryName` is wrongKT-83504 ObjCExport: Source unresolved dependencyKT-83505 ObjCExport: Transitive unresolved dependency
Native. Runtime
KT-85897 [K/N] C Export sometimes hangs on termination on mingwKT-85811 K/N: FirNativeGCTestGenerated.testMemoryDump failsKT-85882 Performance improvement in Kotlin_getCurrentStackTrace: use vectorized/range-checkless copyKT-85077 Native: if CoreSymbolication fails, report this to users with a troubleshooting guide
Native. Runtime. Memory
KT-86432 Native: PMCS GC bug - alive object seems to be freed prematurelyKT-85457 Native: TSAN tests fail with Xcode 26.4
Native. Swift Export
New Features
KT-80000 Swift Export: Sealed ClassesKT-66888 Swift Export: cross-language subtypingKT-87503 Swift Export: Support properties in cross-language inheritanceKT-87068 Swift Export: default interface method implementationsKT-86890 Swift Export: Support async calls in cross-language subtypingKT-79477 Make Swift Export work handle @OptIn declarations well
Fixes
KT-66890 Swift Export: cross-language protocol conformanceKT-66889 Swift Export: cross-language inheritanceKT-86509 [Swift Export] Probable race in testsKT-87340 [Swift Export] runtime crash during existential creationKT-87462 [Swift Export] variadic params in functions requiring reverse bridges generates incomparable codeKT-87221 [Swift Export] abstract class with inherited interface fails to compileKT-87229 [Swift Export] OptIn property inside interface fails to compileKT-86463 Swift Export: nested sealed interface in kotlinx-datetime (DateTimeFormatBuilder.WithDate) is referenced but never emitted, causing Swift compile errorKT-87088 Protocols that came from cinterop should lose the Protocol suffixKT-87150 [Swift Export] member function with param named result fails to compileKT-87144 [Swift Export] nullable closure in member function fails to compileKT-87106 [Swift Export] suspend closure with context parameter fails to compileKT-86780 Native: Swift Export coroutines tests are flaky on the CIKT-87022 [Swift Export] Optional Range results in incompilable codeKT-86650 [Swift Export] Trampoulinebuilding for a function with changed argument name produces incorrect code.KT-85870 [Swift Export] Invalid unavailability propagation to protocol membersKT-85918 [Swift Export] unavailable operator function fails to compileKT-85869 [Swift Export] release function conflicts with unavailable NSObject.releaseKT-85868 [Swift Export] Factory function conflicts with class nameKT-85871 [Swift Export] ‘AbstractCoroutineContextKey’ is inaccessible due to ‘@_spi’ protection levelKT-85788 [Swift Export] Doesn't resolve generic upper boundKT-85534 [Swift Export] Fails to bind private class implementing deprecated public interfaceKT-85784 [Swift Export] generic class with multiple upper bounds fails
Tools. BCV
KT-85950 Add support of “com.android.kotlin.multiplatform.library” plugin [ABI validation]
Tools. Build Tools API
New Features
KT-84401 BTA: implement Kotlin/JS incremental compilation supportKT-78206 BTA: implement basic Kotlin/Wasm compilation supportKT-78204 BTA: implement basic Kotlin/JS compilation supportKT-78207 BTA: implement basic Kotlin/Wasm binaries linking supportKT-78205 BTA: implement basic Kotlin/JS binaries linking supportKT-78224 BTA: implement support for metadata compilationsKT-85663 Make BTA JS Compiler Arguments Type-SafeKT-66425 BTA: implement ClasspathEntrySnapshot.hashCodeKT-84598 [BTA] Expose API Version via Public PropertyKT-85421 BTA: validate arguments for invalid characters and guide users to feedback issue
Fixes
KT-85556 BTA: SearchPathType compiler arguments (classpath, -Xklib, -Xmodule-path) not resolved to absolute pathsKT-86703 Support JVM classpath metadata for KMP incremental compilationKT-86876 Migrate WasmBinaryTransform to BTAKT-78209 BTA: split Kotlin/Wasm compilation and linking argumentsKT-86916 [BTA] adopt availableSinceVersion for WASM option holdersKT-85696 BTA: deepCopy() in JvmCompilerArgumentsImpl uses string round-trip, corrupting delimiter charactersKT-85958 argumentsToStrings produces corrupted arguments when value starts with “@”KT-86059 [BTA] Handle enum parsing errors related to case sensitivityKT-86156 BTA: report all invalid argument values at once instead of stopping at the first oneKT-86702 [BTA] Drop JVM classpath metadata argumentsKT-86676 Add Gradle property to control KMP JVM metadata usage in incremental compilationKT-87040 Track source-file-to-metadata-fragment mapping when writing KLIB metadataKT-78208 BTA: split Kotlin/JS compilation and linking argumentsKT-86243 [BTA] Compat package has wrong version of compiler on compile classpathKT-88348 MessageCollector in IncrementalCompilerRunner drops diagnostics IDsKT-87743 Make KotlinCoreEnvironment.disposeApplicationEnvironment() unnecessary for K2 BTA compilationKT-87370 JS/Wasm history IC fails when compiler plugin generates callablesKT-87597 [BTA] KotlinCompilationProcessFailedException causes LinkageErrorKT-87034 Introduce SerializedFirMetadata to track source file per metadata fragmentKT-87152 Decouple JVM IC-specific metadata writing logic from common metadata componentsKT-85504 Kotlin Daemon crashes if there is a typo in compiler args added as key-value freeCompilerArgsKT-82986 BTA: setting unknown options may pass silentlyKT-86734 Add Kotlin 2.4.0 into backward-compatibility testsKT-85093 [BTA] Resolve Forward Compatibility Test Blocker for X_IGNORED_ANNOTATIONS_FOR_BRIDGESKT-85787 BTA: Distinguish typed argument values from raw string values in compatibility test descriptorsKT-85736 BTA tests: automate detection of missing versions in compatibilityTestsVersionsKT-85505 Kotlin daemon crashes if “-Xwarning-level=” compiler option is added with a syntax errorKT-86247 [BTA] Improve -Xjsr305 parser error message: include the full failing entryKT-86117 CRI: fileId is hashed from the absolute source path, not the stored relative pathKT-85722 [SSoT, JS/Wasm] Switch to “nopack” naming for argument controlling packing of klibs to unify with Native backendKT-85702 [SSoT] Simplify compiler argument enum serialization by replacing per-type serializers with a generic contextual serializerKT-85607 [BTA] -Xignored-annotations-for-bridges missing forward compatibility support (API 2.3.20 + impl 2.4.x+)
Tools. CLI
New Features
KT-86473 Report usages of removed CLI arguments as warningsKT-86202 Warn against disabling a language feature with a parametrized compiler argument that's already stable
Performance Improvements
KT-87868 In-process compilation via CLI/Build Tools API pays a large ThreadMXBean.getCurrentThreadUserTime penalty on Linux: PerformanceManager.measureSideTime measures unconditionally around every class file read
Fixes
KT-88475 IncrementalCompilationComponents instances are not being called anymoreKT-85591 Remove Xklib-normalize-absolute-path compiler argumentKT-86314 Add a CLI flag which controls ELA statusKT-86284 Deprecate using PSI mode from compiler CLIKT-86405 Generalize reporting of deprecated CLI argumentsKT-87057 Return a legacy JVM KMP IC implementation until the proper one is implementedKT-85003 Fix name check for @JvmName and @JvmExposeBoxedKT-86746 Drop all org.jetbrains.kotlin.asJava usages from CLIKT-85813 Inconsistent behavior of -Xcontext-parameters warning depending on daemon/in-processKT-85920 Remove MessageCollector Usage from ErrorReportingContextKT-85898 Register all KtDiagnosticsContainersKT-85187 Add compiler argument for companion blocks & extensions
Tools. CLI. Native
KT-87123 Phased klib compiler does not read -native-library argumentsKT-85538 Native: allow using JNI in CLI tools on JDK 24+ and Unsafe on JDK 24
Tools. Compiler Plugin API
KT-63881 Allow registering generated properties in IrGeneratedDeclarationsRegistrarKT-86860 Generalize generateProperties to support FirVariableSymbol but not only FirPropertySymbol
Tools. Compiler Plugins
New Features
KT-86842 Lombok: introduce ARGUMENT_IS_NOT_SUPPORTED diagnostic
Fixes
KT-86145 Support for @EqualsAndHashCode annotation on kotlin classesKT-81622 Support @Slf4j and other logging annotations (@CommonsLog, @Flogger, @JBossLog, @Log4j, @Log4j2, @XSlf4j)KT-85758 Support for @Log annotation on Kotlin classesKT-88179 Power-assert: IrGenerationExtensionException (StringIndexOutOfBoundsException) when assert() wraps a context-parameter function callKT-87137 Lombok: builder methods aren't resolved if use an existing builder and genericsKT-87044 [DataFrame] Plugin generates a spurious backing field for generated column accessorsKT-86225 Atomicfu generates IR with out-of-scope type parametersKT-87153 Lombok: merge module common into k2 KT-86980 Delete sources of K1 parts of compiler pluginsKT-87053 Lombok: @NoArgsConstructor factory references an out-of-scope type parameter of a generic classKT-86839 Handle @Log on Java classesKT-86985 Can't use @JvmName on class member properties of JPA entities even when using the ‘final’ modifierKT-86286 all-open plugin makes @JvmRecord classes non-final, causing compilation error “‘@JvmRecord’ class must be final”KT-86774 PowerAssert: allow changing the last parameter to a different type if not specifiedKT-86620 Lombok incorrectly detects clashing constructor with varargs argumentKT-86773 PowerAssert: sorting of possible overloadsKT-83121 Lombok. A constructor without parameters is available for a class with @Data and staticConstructorKT-84059 Lombok. CANNOT_INFER_PARAMETER_TYPE for toBuilder function if @Builder is applied to a generic classKT-84058 Lombok. NoSuchMethodError for the builder function when @Builder is applied to the methodKT-86058 Check the frontend-owned plugins for the Companion blocks and extensionsKT-86065 Scripting plugin adds HashMap<K, V> (with HashMap's own out-of-scope type parameters) as a supertype of the synthetic REPL state classKT-86064 Plugin sandbox generates IrClassReferenceImpl typed as KClass<T> where T is KClass's own type parameterKT-86063 PowerAssert plugin generates IR call to listOf<T> with an out-of-scope type parameter as its typeKT-86070 PowerAssert: Enum entries should not be displayedKT-85472 Compiler crash if use unexpected value of AccessLevel in a lombok annotationKT-85693 Don't generate declarations with NONE access level
Tools. Compiler plugins. Compose
KT-88028 Compose compiler: IndexOutOfBoundsException in ComposableTargetAnnotationsTransformer when overriding a @Composable function with default parameter in another moduleKT-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. Daemon
KT-71048 KotlinCompileDaemon compatibility not discriminated by JVM versionKT-75840 Almost dead daemons are considered in the daemon electionsKT-85634 -Xwarning-level warnings are escalated to errors when -Werror is enabled in BTA daemon mode
Tools. Gradle
New Features
KT-80509 Gradle: implement metadata compilation through BTAKT-78216 Gradle: implement Kotlin/Wasm compilation and linking through BTAKT-78214 Gradle: implement Kotlin/JS compilation and linking through BTAKT-87481 Introduce DelicateKotlinGradlePluginApi Opt-InKT-85709 Write Kotlin Daemon warnings and Errors to Problems API
Performance Improvements
KT-88084 Each build leaves a strong reference to an instance of BuildMetricsService
Fixes
KT-83679 Add ERROR deprecation for CleanableStore and CleanDataTaskKT-87992 Compatibility with Gradle 9.7 releaseKT-87256 KotlincOutputParser fails to parse compilation errors under Gradle when task path prefixes are enabled (Kotlin 2.4.20-Beta1)KT-87509 Stop using Gradle Problems API severity fieldKT-87508 Wire buildNeeded/buildDependent only for Gradle <9.5.0KT-87994 Run Gradle integration tests against Gradle 9.7KT-87993 Compile against Gradle API 9.7KT-85568 Use compiler diagnostic identifiers in KGP Problems API reportingKT-85567 Carry compiler diagnostic identifiers through Build Tools API messagesKT-85942 Carry compiler diagnostic identifiers through MessageCollector infrastructureKT-84957 Add configuration time build metricKT-87911 Report an actionable diagnostic when .kar files reach compilation classpaths in Kotlin 2.4.20KT-86435 Replace File.ensureParentDirsCreated() with NIO Path createDirectories()KT-86827 [KGP] Add KgpJson helper and bump kotlinx-serialization-json 1.4.0→1.4.1KT-86039 Compile against Gradle 9.6.0 APIKT-86040 Run tests against the Gradle 9.6.0 releaseKT-78294 Applying kotlin-dsl in buildSrc with org.jetbrains.kotlin.ecosystem in settings.gradle.kts causes sync failureKT-87241 CleanDataTask.exec() deprecation message unreachable - task fails with cryptic UninitializedPropertyAccessException insteadKT-87187 Bump Apple deployment targets to match Xcode 27KT-86515 Replace mavenLocal() with build-dir repo in KGP functional testsKT-86429 Deprecate KGP contentEquals() utility, move it to internal utility functionKT-76515 IC misses dependency to recompile when named kt file with JvmField instructed property was replaced with an object with the same nameKT-87186 Fix failing testSwiftExportCoroutinesKT-87160 Fix failing Swift Export testExportingTransitiveDependencies testKT-85689 Delete prepareDeps from kotlin repoKT-86118 CRI: Enabling kotlin.compiler.generateCompilerRefIndex does not invalidate compileKotlin UP-TO-DATE stateKT-85901 [Gradle] Refactor KGP functional test task configuration to use file-backed system propertiesKT-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 propertyKT-55452 Values of the compiler arguments set via KotlinCompile task configuration are duplicated by the KaptGenerateStubs taskKT-57653 Explicit API mode is not enabled when free compiler arguments are specified in Gradle project
Tools. Gradle. Compiler plugins
KT-84811 PowerAssert: Gradle configuration option for default sourcesets to transform
Tools. Gradle. JS
New Features
KT-87484 Update Browser JS Test DSL after DM for 2.4.20-Beta2KT-86260 Integrate Playwright with JS Tests pipelineKT-86707 Cover new Browser Js Test DSL with diagnostics and invariant checksKT-86715 Add ability to configure Dev-server URL (or specification) to run browser tests fromKT-87483 Mark parts of JS Test DSL with DelicateAPIKT-86630 Introduce mocha browser runner for kotlin test as part of kotlin-web-helpers
Fixes
KT-87647 Upgrade tooling NPM dependencies versions for 2.4.20KT-85854 Improve AbstractSetupTask loggingKT-84724 NPM dependency versions do not invalidate KotlinWebpack task cache key in kotlin multiplatform projectKT-84790 Use package.json as ‘source of truth’ for KGP npm tooling dependenciesKT-87052 JS tests: browser downloading hangs in WindowsKT-86958 Unclear error for js test failure on timeoutKT-87674 JsBrowserTestsIT test fails with an error on LinuxKT-86911 Configured post-processing for playwright reports missing an input or output annotationKT-87501 Throw an error if new JS test DSL is used with WasmKT-87600 Playwright install on multiple subprojects cause Gradle build to failKT-87023 Add ability to change / set path to custom browser executableKT-86922 Correct browserDefaults timeoutKT-86106 Fix task dependency in KGP lockfile generationKT-86271 [WasmJs/Js] 2.4.0-Beta2 - Node version not compatible with popular JS dependencies
Tools. Gradle. Multiplatform
KT-82398 KMP Separate Compilation: missing fragment dependencies to commonized cinteropKT-88154 Swift PM lock file is ignored on switching version from exact to fromKT-88107 clean task leave swiftpm checkout in root build directoryKT-88104 dumpXcodebuildArgs task fails if the root build directory is removedKT-87790 Kotlin 2.4.0 increases Gradle sync timesKT-83917 compileCommonMainKotlinMetadata fails in CMP core repository with Kotlin 2.3.20-Beta1KT-81434 [uklib] androidCompileClasspath resolves java compatibility variant instead of android for uklib library
Tools. Gradle. Native
New Features
KT-84852 Wire linkage package integration check with Swift Export's embedAndSignKT-84420 Figure out the handling of XCFramework when SwiftPM dependencies are involvedKT-85797 Use faster findMacros in SwiftPM import cinteropsKT-86155 Print what changed in the linkage packageKT-86667 Switch off sandboxing in integrateEmbedAndSignKT-86047 Suggest CocoaPods -> SwiftPM migration skill and documentation on cocoapods plugin application
Fixes
KT-86995 Cocoapods plugin: pass all frameworks to the compilerKT-86015 Swift export binary doesn't see main compilation cinterop outputKT-85468 Don't fail IDE import if the SwiftPM import pipeline has failed somewhereKT-86288 Eliminate redundant SwiftPM fetch tasks using shared fingerprinting strategyKT-87196 Ld override falls apart in Xcode 27KT-87667 SwiftPM import can deadlock when joiner tasks submit blocking workers before owner startsKT-84223 Move local SwiftPM package IO validation and name inference from configuration time to execution timeKT-85961 integrateLinkagePackage without parameters fails with an obscure errorKT-84238 SPM Import: Ensure generated Package.swift preserves symlinks in local package paths
Tools. Gradle. Wasm
New Features
KT-86633 K/Wasm: Introduce wasmtime support as a runtime for wasm-wasi target in KGPKT-87258 K/Wasm: Introduce a way to use multimodule compilation only for developmentKT-86919 K/Wasm: Allow to configure wasm compilation mode
Fixes
KT-88566 K/Wasm: Webpack configuration generated after user defined chunks from the webpack.config.d directoryKT-88285 WasmJS tooling version overrides are ignoredKT-88115 “Your lockfile needs to be updated”: Outdated bundled yarn.lock breaks kotlinWasmToolingSetup with --frozen-lockfileKT-86878 K/Wasm: Update wasmtime to 46.0.0KT-86673 K/Wasm: update binaryen to 130KT-82419 wasm failed to compile on windows arm64KT-85688 K/Wasm: Remove setting of failOnNoDiscoveredTests in Wasm Gradle testsKT-86054 K/Wasm: Not set sourceMapBaseDir if there is no sourceMap property in JS and WasmKT-85861 K/Wasm: Upgrade NPM dependenciesKT-85806 K/Wasm: Do not rewrite native_implementations.kt file path in source map
Tools. Gradle. Xcode
KT-86858 Eager SwiftPM check in XCFramework task crashes if Kotlin extension is not yet registered
Tools. Incremental Compile
KT-85074 IC: false build success when anonymous class fails to implement new abstract member from another module's interfaceKT-86781 Deprecate FIR based incremental runnerKT-87217 JS/Wasm IC: “Could not close incremental caches” with “Storage is already registered”KT-85241 IC: star-import conflicts are not re-evaluated after adding new declarations, leading to missed ambiguity errorsKT-60584 IC does not propagate RequiresOptIn level change effect transitivelyKT-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 signatureKT-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 KAPTKT-86550 Kapt: properties with context parameters are translated incorrectlyKT-86003 Remove MessageCollector usage from kaptKT-85453 Make :kotlin-annotation-processing-cli:test cacheable
Tools. Maven
KT-83374 CRI: it is not clear that CRI generation requires IC being enabled in MavenKT-85622 [Maven] setting kotlin.compiler.jdkRelease without explicit jvmTarget causes compilation failure due to conflicting defaultKT-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-87958 K2 scripting: FirPropertyImpl transformation crash when using class from @file:Import-ed script in 2.4.0+KT-87041 Scripting: classpath extraction fails to extract stdlib from kotlincKT-87331 Scripting: compiling scripts with kotlinc doesn't update the compilation config after refinementKT-87042 Scripting cache test fails on the kotlin runnerKT-86391 Drop SkipStandaloneScriptsInSourceRootsKT-85105 Scripts: JVM backend internal error (IR lowering) when scratch file contains anonymous objectKT-85103 Exception while generating code when explain destructuring decls
Tools. Wasm
KT-86407 Get rid of ‘-Xwasm’ usages in Kotlin projectKT-83434 K/Wasm: add wasm-wasi stdlib into compiler distribution (dist/)
2.4.10
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 argumentKT-83766 K2: Wrong sourcePsi is set for SymbolPsiLiteral in SLC for annotation arguments referencing a const valKT-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.8KT-86352 K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts
2.4.0
Analysis API
KT-83867 OVERLOAD_RESOLUTION_AMBIGUITY false positive with assertEquals in IJ repoKT-83723 [Analysis API] Enable experimental KDoc resolver by defaultKT-83388 Analysis API: properly support KMP in KotlinPackageProviderKT-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 callKT-70896 AA: False positive deprecation warning with override of built-in method in JDK mapped classKT-84711 K2 IDE sometimes loses FIR plugin-generated declarations after file changesKT-84625 Analysis API: collectDesignationPath fails for nested classes inside plugin-generated top-level classesKT-84596 Improve K2 Jooq completion performanceKT-84525 KaValueParameterSymbol#getHasSynthesizedName returns false for FirDeclarationOrigin.SubstitutionOverride.DeclarationSiteKT-83546 Kotlin analysis reach ClsCustomNavigationPolicyKT-84259 Move CommonDefaultImportsProvider to the frontend independent moduleKT-82945 Analysis API: KotlinIllegalArgumentExceptionWithAttachments: Expected FirResolvedTypeRef with ConeKotlinType but was FirUserTypeRefImplKT-71135 AA: exception from sealed inheritors checker when analyzeCopy
Analysis API. Infrastructure
Fixes
KT-83905 Analysis API: Improve UX with test dataKT-84913 Extract compiler classes used by the PSI & Analysis API to a separate moduleKT-64986 Analysis API: Implement Analysis API tests for different KMP PlatformsKT-84776 The test data manager misses the redundancy check in the update modeKT-84962 The test data manager misses -ea flagKT-84388 Preserve the EOF status in the test data manager to avoid extra changesKT-84362 Analysis API tests produce many warnings due to “not yet loaded registry”KT-84279 Test Data Manager fails on a clean buildKT-83913 Exclude compiler-based Analysis API tests from Git trackingKT-80379 Extract per-module test generators for AA testsKT-84120 Move CLI modules out of kotlin-compiler-fe10-for-ideKT-83200 Track external dependencies of the Analysis API modules
Analysis API. Light Classes
KT-82434 Light classes should prefer enum entries to propertiesKT-84200 SLC: return type is not boxed for delegated methods with generic original methodKT-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 modifierKT-84564 KtEnumEntry.delete deletes semicolonKT-84781 Use computed properties in KotlinElementTypeProviderImplKT-83846 Set up guidelines for PSIKT-84135 Deprecate KtSelfType
Analysis API. Providers and Caches
KT-82731 Analysis API: Limit granular tree change processing to a few filesKT-79234 Analysis API: Usage of asMap() on Caffeine caches bypasses stats countersKT-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 StubBasedClassDeserializationKT-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 contentKT-73534 SAM method APIKT-82993 Support explicit backing fields in the Analysis API
Fixes
KT-79186 KtCompletionExtensionCandidateChecker does not work for extensions when using callable references of a typeKT-83759 Analysis API: Mark platform interface APIs with @KaPlatformInterfaceKT-83921 Extend KaKDocProvider to read Kdoc from KLIB metadataKT-77426 KaFirCompilerFacility uses an arbitrary JVM counterpart for common sourcesKT-84737 KaCallableSymbol#directlyOverriddenSymbols doesn't work for java overrides of kotlin propertiesKT-84621 Migrate symbol tests to ManagedTest properlyKT-80575 KaFirJavaInteroperabilityComponent#getJavaGetterName should not throw exception on incomplete codeKT-84397 KtDefaultAnnotationArgumentReference should return only results with value nameKT-84804 buildSubstitutor does not work correctly with Java type parametersKT-84389 Cover references with ABI and documentation checksKT-57042 K2, Analysis API: KaJavaInteroperabilityComponent#callableSymbol returns null for a Java getter implementing Kotlin propertyKT-80856 Analysis API: analysisContextModule incorrectly determines the module of an original file when used for dangling file context assignmentKT-84363 AA, isUsedAsExpression: Unhandled Non-KtExpression parent of KtExpression: class org.jetbrains.kotlin.psi.KtContractEffectKT-70476 Analysis API: “KtDefaultAnnotationArgumentReference.resolveToSymbols” does not work in FIR implementationKT-68499 Split KtDefaultAnnotationArgumentReference on K1 and K2 implementationKT-70521 Analysis API: Impossible to distinguish between ‘iterator’ operator calls dispatched with imports from objectsKT-77669 Context arguments are missed on implicit invoke callsKT-77670 resolveToCall: extensionReceiver is incorrectly chosed due to a conflict with context parameters for an implicit invoke callKT-68633 K2 AA: IAE “Expected class KaClassSymbol instead of class KaFirEnumEntrySymbol” with enum entry initializerKT-83777 Analysis API: The resolution scope of a context module accepts elements from associated dangling filesKT-82571 No expected type for overridden property without explicit typeKT-83223 Support “Explicit context arguments” in the Analysis APIKT-65186 K2: Analysis API: KtExpressionTypeProvider.getExpectedType works incorrectly for the right hand side of assignment expressionsKT-76011 KaFirNamedClassSymbol#companionObject doesn't provide generated objects generated by compiled pluginsKT-73290 Analysis API: Improve the architecture of content scopes and resolution scopes
Backend. J2KLIB
KT-86368 [JKLIB] MetadataJVMModuleDeserializer tries to deserialize all symbolsKT-86367 [JKLIB] kotlin.Cloneable built-in class not foundKT-84877 [J2KLIB] Remove withKotlinBuiltinsHack present in JKlibIrLinker.ktKT-85846 Tests failing with fake override property missing accessors or backing fieldKT-85717 IllegalStateException due to already bound symbolKT-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 debuggerKT-85008 Develop and publish a demo app using an early version of the component model supportKT-76205 K/Wasm: stabilize and turn on incremental compilation by defaultKT-83728 [Wasm] Invalid Ir type while suspend call with blocked if null comprehansionKT-81637 K/JS/Wasm interop: Inconsistent behavior of is/as operations for JsReference<C> and CKT-65030 K/Wasm: memory allocator for Component Model ABIKT-83607 WasmJS: Production build eliminates ‘else if’ branch when ‘else’ is not wrapped with curly bracesKT-82803 Kotlin/WASM: Failed to compile the doResume function with if inside catch blockKT-83800 [Wasm] Closed world per-module compilation
Compiler
New Features
KT-84487 “-Xcollection-literals” compiler flagKT-84072 Collection literals: treat visibility of of during resolve correctlyKT-83165 Collection literals: treat Deprecated(HIDDEN) operators of reasonablyKT-80500 Collection literals: Analyze ConeCollectionLiteralAtom in cases their expected type is not fully knownKT-80491 Implement fallback mechanism for collection literalsKT-80490 Implement overload resolution mechanism for collection literalsKT-84298 K2: Generate IR for Companion Blocks & ExtensionsKT-83765 Make -Xsuppress-version-warnings have a diagnostic IDKT-84484 Companion Extensions Analysis & ResolutionKT-84199 Implement DontMakeExplicitNullableJavaTypeArgumentsFlexible featureKT-84319 Add JVM target bytecode version 26KT-84297 Serialize & Deserialize Companion Block Declarations & Extensions to/from MetadataKT-84288 Companion Blocks Analysis & ResolutionKT-84286 Parse Companion Blocks & ExtensionsKT-84292 Enforce Companion Blocks & Extensions Language Feature during ResolutionKT-84291 Companion Blocks & Extensions CheckersKT-84290 Callable References to Companion Block Declarations & ExtensionsKT-84287 Build Raw FIR for Companion Blocks & ExtensionsKT-73256 Implement all meta-target for annotationsKT-66344 K1 & K2: False positive WRONG_NUMBER_OF_TYPE_ARGUMENTS in callable reference to inner class memberKT-76766 Warning is missing for wrong subclass checkingKT-74049 Introduce special override rule to allow overriding T! with T & Any
Performance Improvements
KT-84941 Skip linking klibs for generating ObjC headersKT-80367 Reduce memory consumption of DevirtualizationAnalysisKT-84412 iOS release build time dramatically increases with 2.3.20-Beta2 compared to 2.3.10KT-82559 linkDebugTest*X64 tasks are slower for Kotlin 2.3 than for 2.2KT-84095 Improve Unit tail-call optimization to support inline generic functions similar to suspendCoroutine
Fixes
KT-77726 Move FirUnusedExpressionChecker to the default checkers listKT-84841 Collection literals: Drop special treatment of when with expected typeKT-84732 Collection literals: “Expected FirCollectionLiteralImpl to be resolved” in RHS of equality operatorKT-84675 Collection literals: ‘Not singleClassifierType superType: TypeVariable(S)’ in PCLAKT-84559 @OptIn on collection literal and context-sensitive does not workKT-84547 Collection literals: “Expected expression ‘FirCollectionLiteralImpl’ to be resolved” in elvis expressionKT-80489 Collection literals: experimental version (Frontend)KT-84768 [K/N] switch thread state in org_jetbrains_skia_Canvas__1nDrawPicture to workaround the deadlockKT-52673 Don't report deprecation warning/error on last segments of importsKT-83988 Remove extraneous POP+GETSTATIC Unit for calls of Unit-returning suspend functionsKT-77584 Support scripts built from LT in scripting APIKT-80113 Consider improving diagnostic messages related to ==/===/is/asKT-85392 Native: concurrency issues in per-file cachesKT-83938 Missing Tail call optimization in reference classes returning UnitKT-78432 No-arg constructor should be generated for regular classes with a value class parameter in case of JvmExposeBoxedKT-86130 False positive UNINITIALIZED_ENUM_COMPANION on LV 2.3 and lowerKT-84860 False positive UNINITIALIZED_ENUM_COMPANION in enum access with explicit receiver in enum initializer when enum class has a companionKT-86210 Update -Xannotation-default-target CLI parameter docKT-80590 Drop language version 1.9 for JVMKT-85948 Contracts in 2.4 stdlib is not compatible with 2.3 compilerKT-82123 KDoc: references that goes after markdown blocks don't have linksKT-85957 Contract on function is getting discarded if any of effect declarations is unknownKT-84931 Incorrect type nullability in SAM super type in anonymous class-based SAM conversionKT-83766 K2: Wrong sourcePsi is set for SymbolPsiLiteral in SLC for annotation arguments referencing a const valKT-85062 Deprecate language version 2.1KT-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 UnitKT-85825 Context parameter lambda loses context type when wrapped in nested run blocksKT-37179 false-positive shadowing warning on local and member extension functions in presence of member extension property with invoke operatorKT-84366 Invalid name for captured this in bytecodeKT-84960 Property contract leaks unsubstituted type parameter in smart castKT-84281 Standalone typealias-to-object qualifier allows type arguments and has type Unit in this caseKT-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 ::classKT-84190 Implement basic functionality for returnsResultOf contractKT-83920 False positive “modifier ‘value’ is not applicable to ‘local variable’” with soft keyword in positional destructuring (square bracket) declarationKT-84991 Improve Argument type mismatch diagnosticsKT-82216 Sanitize ‘.kotlin_module’ filenameKT-85354 checkPsiTypeConsistency: add psi text attachmentsKT-85479 Improve diagnostic messages for upper bound violationsKT-84585 Upper bound violated warning for expansion of type alias in LHSKT-84924 Native: stdlib-cache.lock used by mulitple processesKT-85244 False positive DUPLICATE_BRANCH_CONDITION_IN_WHEN with guard conditionKT-85487 Investigate why WrapContinuationForTailCallFunctions does not work in Android TestKT-59633 K2: Implement running AndroidRunner tests with FIRKT-76237 Store File-level annotations in KLIB metadata separatelyKT-84198 Support multiple embedded .let-like calls with returnsResultOf contractKT-84196 Handle multiple entry/exit points for returnsResultOf functionsKT-84195 Handle function references in returnsResultOfKT-85162 Introduce diagnostics to refine numeric types castingKT-80060 False positive REDUNDANT_CALL_OF_CONVERSION_METHOD in case of overloadsKT-85289 False-positive smartcast from == with type parameter based variableKT-83890 return-value-checker: false positive “Unused return value of ‘context’” on kotlin.context() functionsKT-84106 False negative “NON_EXHAUSTIVE_WHEN”: “NoWhenBranchMatchedException” at runtime with sealed and platform typeKT-84717 Provide information for qualified expressions that might be replaced with context-sensitive simple names in IDE modeKT-38983 Bridges are not generated in interfaces, which leads to counterintuitive behavior of java.lang.reflect.ProxyKT-85005 Consider all: target in the checker of repeatable annotationsKT-85210 Enabling -XXLanguage:+IntrinsicConstEvaluation breaks highlighting on some broken codeKT-85217 Rework implementation supporting simple-to-suspend function conversionKT-85036 Introduce a proper handling of optional expectation annotations in platform checkers during metadata compilationKT-85086 False-negative JVM_EXPOSE_BOXED_CANNOT_BE_THE_SAMEKT-84082 [OPT_IN_USAGE_ERROR] duplicates for destructuring declarationKT-85007 Properly implement special rules for kotlin.Result in @JvmExposeBoxed supportKT-74383 Support new callable reference nodes in JVM backendKT-84828 Cleanup JVM backend from the old callable references-related codeKT-85006 Refine error messages for INAPPLICABLE_ALL_TARGET diagnosticKT-84296 Support Companion Blocks in CFGKT-85058 Remove final field modification in DescriptorRendererOptionsImpl to prevent warnings on JDK 26+KT-72710 Incorrect behaviour of tail call suspend functions optimizationKT-84727 [K/N] Segfault when returning null as generic Int type from dynamic frameworkKT-83460 Deprecation from @all:Deprecated is not propagated to property accessors/backing fieldsKT-84859 Skip deprecation phase for generic arguments in qualifier receiver of static call for companion block members and extensionsKT-85050 [Swift Export] usage of inline classes with ref types crashes at runtimeKT-84983 Type parameter annotations are lost for local functionsKT-78800 Investigate FirMissingDependencySupertypeInQualifiedAccessExpressionsCheckerKT-73945 K2 IDE: Duplicated inspections for redundant ‘open’ in interface memberKT-84294 Ensure Context Sensitive Resolution works with Companion Blocks & ExtensionsKT-83904 [Inliner] Inline function overrides an abstract method with a default value in an inheritance chainKT-81675 Improve message for CONTEXTUAL_OVERLOAD_SHADOWEDKT-84994 Rework optimization for companion extension resolutionKT-81598 incorrect type mismatch error messages for generic calls with explicit type argumentsKT-84185 Type arguments are wrongly allowed in receivers of static callsKT-83441 False positive: REDUNDANT_CALL_OF_CONVERSION_METHODKT-83587 K2: Missing null-check when using == on Short! and Byte! platform typesKT-84405 ClassCastException with conflicting projection on the LHS of a callable referenceKT-84866 Reserve CoroutineContext as context parameter for future useKT-65239 K2: Render FIR declaration instead of IR-based descriptors in IR signature clash diagnosticsKT-84743 Type parameter declared as ‘in’ can be used in ‘out’ position in DNN & flexible typesKT-84720 “Unused return value” is not reported inside used if/when multi-statement blocksKT-84310 No Warning Emitted For Deprecated Java Enum Value UsageKT-81871 Drop context receiver testsKT-84714 KJS: Forbid exporting properties with context parametersKT-80701 Native: -Xbinary=cCallMode is not integrated with compiler cachesKT-84000 Native: test pre-codegen inliner on CIKT-57557 Implement getAndSet for AtomicNativePtr via getAndSetField intrinsicKT-84352 createUninitializedInstance generates invalid LLVM for value classesKT-84234 Rename CONST_VAL_WITHOUT_INITIALIZER diagnostic for properties with EBFKT-84411 Confusing message for the class reference of the inner class with the type parameterKT-84594 EBF is smartcasted in inline function with @PiblishedApiKT-83989 Update coroutines-codegen.md after changes of Unit tailcall optimizationKT-84452 EBF is smartcasted in the default argument with noinline modifierKT-80925 Replace “useless” in diagnostic messagesKT-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 LHSKT-82574 Fixation: consider preferring EQUALS constraints to LOWER onesKT-83564 Consider dropping HAS_PROPER_NON_NOTHING_NON_ILT_LOWER_CONSTRAINTKT-84213 Flaky incremental compilation behaviour with EBFKT-84133 Adopt initInstance to handle value classesKT-24840 Square bracket escaping in KDocKT-84167 Invalid type references with type arguments in package parts compile without diagnosticsKT-84209 False negative ACTUAL_ANNOTATIONS_NOT_MATCH_EXPECT on context parameters of function typesKT-83354 Wrong position for lambda context type errorKT-84206 Remove forcesPreReleaseBinaries = true from ExplicitBackingFieldsKT-83524 An anonymous function with named parameters throws FileAnalysisExceptionKT-84155 K2: NO_CONTEXT_ARGUMENT caused by stale value in NewConstraintSystemImpl.hasContradictionInForkPointsCacheKT-83829 False-negative INVALID_DEFAULT_FUNCTIONAL_PARAMETER_FOR_INLINEKT-83842 KIAEWA: Exception in expression checkers for @OptIn(markerClass=[…])KT-84045 Evaluate default arguments of annotation's parameters using FIR evaluatorKT-83987 Refactor/fix CoroutineCodegen.isReadOfInlineLambda()KT-83772 Create a language feature for wrapContinuationForTailCallFunctionsKT-84061 K2: IllegalStateException: FirResolvedNamedReference expected on plusAssign for array element with unresolved initializer inside buildListKT-83985 Drop arrayOf check from EscapeAnalysisChecker after bootstrap updateKT-78885 Current frame disappears from stack trace when debugging inline-heavy suspend codeKT-78727 Split KonanConfig into NativeFrontendConfig and NativeBackendConfigKT-83755 Support rendering of evaluated and original arguments in FirAnnotationRenderer#renderAnnotationKT-17763 Inner class constructor has incorrect generic signature in the bytecodeKT-83625 Initialize annotations on Java record componentsKT-83795 Compiler crash on suspend lambda as default parameter of inline functionKT-72880 Calls with incorrect VarHandle method signatures are generated with -Xjdk-release being usedKT-67809 Native: remove support for non-opaque LLVM pointer typesKT-82148 Suspend function returns the wrong value and not UnitKT-55559 JVM: ClassCastException with Unit returning suspend function and tail-call Non-Unit returning suspend function and callable referenceKT-70995 Kotlin/Native: Treat all @HasFinalizer types as escaping in Escape AnalysisKT-83903 ‘when’ with ‘val’ does not take previous nullability check into accountKT-83952 StackEntries for tail-call suspend functions have internal names for classes instead of FQ namesKT-83377 Investigate usage of declarationSymbols in resolve of local user typeKT-83770 Smartcast doesn't work for an explicit backing field with multiple intersectionsKT-83650 Native: don't use sun.misc.Unsafe in CastsOptimization when running on JVM 24+KT-83754 KotlinIllegalArgumentExceptionWithAttachments for explicit backing field with annotated typeKT-83756 Error while resolving FirNamedFunctionImpl with explicit backing field and implicit typeKT-83563 Consider dropping fixation readiness REIFIEDKT-83713 K2: No error with external primary constructor parameterKT-83104 K2: No error with external enum entryKT-83696 Consider dropping HAS_NO_RELATION_TO_ANY_OUTPUT_TYPE readinessKT-83308 K/N: “IllegalArgumentException: An interface expected but was Any”KT-81590 Switch latest stable version in Kotlin project to 2.4KT-66701 K2: Java interface method override via Kotlin class rejectedKT-56563 Inference within if stops working when changing expected type from Any to a different typeKT-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 Stableb/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 inlinerKT-85605 “Local delegated property has not delegate” exception when calling inline function containing delegated property in a lambda from within an inline lambdaKT-84112 Intra-module inliner: No container found for type parameter ‘T’KT-84416 High memory usage for IrFileEntry after enabling inlinerKT-75396 [IR] Pass LoweringContext to inline and serialization checkers
IR. Interpreter
KT-86083 Create a new CLI flag to enable IntrinsicConstEvaluation featureKT-80804 Enable constant evaluation for more standard libraryKT-83514 Get rid of EvaluatedConstTrackerKT-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 APIKT-72950 Partial Linkage: Change the semantics of -Xpartial-linkage-loglevelKT-74763 Build: refactor ‘:compiler:backend.common’ and ‘:compiler:ir.backend.common’ modulesKT-76634 PL: Don‘t report warnings in cases that don’t lead to runtime errorsKT-79801 KLIBs: Implement checks for symbols loaded by the compiler on 1st and 2nd phasesKT-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.StringKT-85550 Reflection: KParameter.type.classifier returns boxed KClass for non-nullable primitive typesKT-82659 Reflection: IAE on a call to a Java inner class constructorKT-85999 Reflection: ByteArray KType incorrectly has type arguments in Kotlin 2.4.0KT-85285 Reflection: InvocationTargetException (UInt cannot be cast to Integer) when reading UInt annotation property via getterKT-85091 Reflection: “KotlinReflectionInternalError: Unsupported parameter owner: null” on attempt to get annotations of annotation constructor parameterKT-85322 Reflection: KotlinReflectionInternalError when loading ProGuard-obfuscated code compiled before 2.3.20KT-84679 Reflection: confusing “Kotlin reflection is not yet supported for synthetic Java properties” for reference to Java enum's entries propertyKT-85025 KTypeParameter instances not equal to each other for the same type parameter in member specialization KFunctionKT-84796 Reflection: mutable flexibility is lost for K1-based types in KClass.allSupertypesKT-84494 Reflection: Java Collections have differences in kotlin supertypes from old K1 reflectionKT-84382 Reflection: raw list in Java type is transformed to List instead of MutableListKT-84492 Reflection: supertypes of raw list in Java type are not rawKT-84076 Reflection: list in Java type is transformed to flexible instead of mutable listKT-14990 ‘callBy’ for inner class constructor fails at run-timeKT-82881 Reflection: update KCallable.callBy kdoc to mention vararg parametersKT-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 objectsKT-21626 Support ES2015 syntax in js functionKT-83451 K/JS: Support ES6 object destructuring in js() callsKT-83452 K/JS: Support ES6 array destructuring in js() callsKT-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 interfacesKT-72198 KJS: ES2015 interop with ValueClassKT-84090 Save variance in the generated TypeScriptKT-56618 KJS/IR: Support external interfaces from common code (via annotation?)KT-85038 Kotlin/JS: @JsExport on sealed external interface with companion object causes NPEKT-81787 KJS: Value class type lost when using JsExport on interfaceKT-85411 Fix conversionCombinations.kt tests for the JS targetKT-83701 Escaped identifier with a quote cause an invalid d.ts fileKT-68281 K/JS: Order of classes in initMetadataForClass are not deterministicKT-15101 js: Same callable references are not equalKT-84810 [K/JS] Callable references operator produces duplicatesKT-85323 JsClass optimization doesn't work well for primitivesKT-60651 KJS / ES6: init block and constructor are not calledKT-84601 K/JS: KClass<> reference doesn't work in JS counterside as a new target in ES6 modeKT-85099 KotlinJS: JsPlainObject from the js-plain-objects plugin does not respect overridesKT-84615 KJS: Forbid @JsStatic on extension functions/propertiesKT-84002 Bump version from 2.3 to 2.4 for JsNoRuntime-related annotationsKT-84474 Kotlin/JS: Long::class becomes null when passing the value to a generic function with -Xes-long-as-bigintKT-84647 K/JS: Class expressions are not supported in js() callsKT-84458 KJS: Fully support @JsStatic in Analysis API-based TypeScript ExportKT-84454 KJS: Generate protected overrides for abstract class inheritors in Analysis API-based TypeScript ExportKT-84490 KJS: Fix mutability of exported top-level variables Analysis API-based TS export with ES modulesKT-84459 KJS: Support default exportability in Analysis API-based TypeScript ExportKT-84456 KJS: Support deprecation comments in Analysis API-based TypeScript exportKT-82264 Implement exporting classes in Analysis API-based TypeScript ExportKT-84233 K/JS: exported collection views doesn't provide Iterator methodsKT-82127 Remove generator-based coroutines intrinsics after bootstrapKT-84003 Remove @Suppress from JsReference after bootstrapKT-44753 KJS / IR: @JsExport non-public fun exports nothingKT-83992 Drop K1 JS entry point and IC codeKT-83722 K/JS: NON_EXPORTABLE_TYPE in the exported file with name-based destructuring declarationsKT-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 IrSymbolDeserializerKT-80903 [Klib] Optimize size of serialized IR element coordinatesKT-84451 [Klib] Use varint encoding for element sizes in IR tablesKT-84400 [Klib] Optimize size of serialized IrExpressionKT-79675 K/N: Uncached ZipFIleSystemAccessor
Fixes
KT-78188 [JS] Klib backward and forward compatibility testingKT-82471 [K/N] Klib forward compatibility testing with codegen testsKT-83929 Add tests for IR signatures of static properties and functionsKT-81411 Merge KonanLibrary to KotlinLibrary to simplify adoption of KlibLoader in the Kotlin/Native compilerKT-82469 [K/N] Klib backward compatibility testing with codegen testsKT-84511 [Native][Tests] Improve descriptor-related logic in NativeCliBasedFacades.ktKT-85017 [PL] Add test for added internal abstract funKT-84488 Export in previous version: Prohibit using on 2nd stageKT-85149 Klib Dump parser: fix parsing of qualified names adjacent to vararg symbolKT-85129 Klib Dump parser: fix enum names parsingKT-84684 Remove UserVisibleIrModulesSupport from IR linkerKT-84820 [K/N] Load libcallbacks and libllvmstubs from configured pathKT-84819 K/N: Segfault on xctest when using internal abstract on a parent classKT-83807 Restore non-nullability of symbols not available in 2.3.0 stdlibKT-83012 Export in previous version (Native): add the checker for incompatible Kotlin stdlib/compiler pairsKT-84341 Fix detection of box function in forward compatibility testsKT-83748 Bump versions in JS Klib compatibility testingKT-83724 Fix & unmute stdlib & kotlin-test compatibility testsKT-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 propertyKT-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 featureKT-85120 @IntroducedAt on expect parameter cannot be properly actualized
Libraries
New Features
KT-84921 Add ‘returnsResultOf’ contract to appropriate declarations in the stdlibKT-73111 No UInt.toBigInteger() and ULong.toBigInteger() conversion functionKT-78499 Add isSorted() extension to standard library
Performance Improvements
KT-70750 Kotlin's Regex implementation on Kotlin Native is painfully slowKT-67731 Regular expressions works slowly on iOSKT-80772 K/N: Regex: improve look behind matching performance for “fixed-length” patterns
Fixes
KT-83525 Introduce support window for Kotlin Stdlib versionsKT-86027 Hide returnsResultOf under a separate flag and remove its usages from kotlin stdlibKT-84818 [Regex] Native and Wasm: Decomposed Unicode character are incorrectly process with CANON_EQ flagKT-83131 Testing: assertNull has no contractKT-85122 Deprecate kotlin.io.readLine with WARNINGKT-84970 Deprecate AbstractCoroutineContextKey and associated APIKT-81395 Stabilize kotlin.uuid.Uuid APIKT-85127 Remove kotlin.test.assert*NoInline hidden functionsKT-84264 Add appropiate @SinceKotlin to new contractsKT-84697 Update the list of JDKs the stdlib is tested withKT-83956 Clarify joinToString behavior when the receiver is emptyKT-61180 kotlin.ArrayIndexOutOfBoundsException on Native with Regex, works on Android/JVM thoughKT-84871 compareValues, nullsFirst, nullsLast return 0 for -0.0 and 0.0 on JSKT-84691 Add samples for toBigInteger extension functionsKT-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 valuesKT-76905 Add samples for kotlin.math functionsKT-84355 Reduce the number of iterations for the removeHashAtStressTestKT-83962 List.listIterator(Int) KDoc's exception condition is incorrectKT-83958 Improve enumValueOf documentationKT-83953 Add samples for kotlin.time extension functionsKT-83951 Rewrite stdlib samples to use assertPrints instead of assertEquals
Native
New Features
KT-78686 LLVM update Q1 2026KT-84826 Bump the minimum deployment version of Apple targets
Fixes
KT-84686 Removing x64 in gradle file breaks builds on certain platformsKT-71278 Enable Concurrent Mark and Sweep (CMS) GC by defaultKT-81748 Create a phased CLI for Native klib compilationKT-84733 LLVM Update: rebase LLVM once the upstream stabilizesKT-83914 Native: when loading JNI libraries, java.library.path can contain system directories with libraries with same namesKT-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 macOSKT-82879 Native: DLLs in the Windows distribution are not reproducibleKT-83283 Test Kotlin/Native performance tests compilation in Gradle 9.0KT-82872 Native: make Kotlin/Native distribution compiler cache reproducible for LinuxKT-82871 Native: cstubs.bc for android_* platform libraries contain absolute paths in string literalsKT-34467 Cinterop: Clang crashes when -fmodule-map-file is specified (SIGSEGV)
Native. Build Infrastructure
KT-85803 K/N: build not reproducible - platformLibs cachesKT-84503 Duplicate META-INF/serialization.shadow.kotlin_module entry in kotlin-native-compiler-embeddable jarKT-85191 K/N: Dependency cycle in libclangInteropKT-84937 Kotlin/Native: non-reproducible .bc for mingw_x64KT-80072 Make Kotlin/Native distribution reproducibleKT-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 declarationsKT-82379 Introduce lenient modular cinterop modeKT-81695 Repeated typedefs across multiple clang modules break cinterop with -fmodulesKT-82766 K/N: external_source_symbol clang attribute causes cinterops with -fmodules to downgrade to forward declarationKT-84023 Modular import fails with an obscure error when the failing module is not the last oneKT-81433 Generate C-interop KLIBs in previous ABI version in Kotlin 2.4.0KT-82402 Inter-cinterop type reuse with -fmodules uses forward declaration when an actual declaration is availableKT-82377 Fix ObjC forward declaration handling in modular cinteropsKT-81752 Native: investigate and remove filtering of -fmodule-map-file in cinteropKT-83814 Native: includedHeaders= in platform libs manifests is not reproducible when modules= is used
Native. ObjC Export
KT-86068 Native: add support for ObjCEnum.EntryNameKT-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 iterationKT-80770 Kotlin/Native: revise ObjC refcount methods called in runnable stateKT-84640 Native: comment for kotlin.native.runtime.SweepStatistics misses the word “number”
Native. Swift Export
New Features
KT-84361 [Swift Export] Preserve TypeInfo on StateFlowKT-85130 [Swift Export] Preserve TypeInfo on SharedFlowKT-82705 Support convenient export of Flow types in Swift exportKT-66821 Swift Export: value classKT-82598 Swift Export: Custom name translationKT-69431 Swift export: inline functionsKT-84263 [Swift Export] Context Parameters on Functional Types
Fixes
KT-80305 Support coroutines in Swift ExportKT-85380 [Swift Export] Attempt to bridge unbridgeable type: SirUnsupportedTypeKT-84317 Swift Export: “protocol members can only be marked unavailable in an ‘@objc’ protocol” in generated code for kotlinx-coroutinesKT-85704 [Swift Export] cannot infer generic type of function returning a generic typeKT-85711 [Swift Export] suspend function returning non-null generic fails to compileKT-85715 [Swift Export] generic interface in typealias fails to compileKT-85714 [Swift Export] unsupported input type param in functional receiverKT-83743 Swift export: type arguments expected for generic typealiasKT-85458 [Swift Export] value of a closure returning a closure generates invalid swift codeKT-85521 [Swift Export] conflicting overloads for generated Kotlin bridgesKT-85293 SwiftExportCoroutinesWithResultValidationTest.testCoroutines fails after cross-pushKT-84515 [Swift Export] suspend functional parameter generates invalid Swift codeKT-82282 Swift Export: suspend function returning Array leads to incompilable codeKT-81540 Swift Export: using interface in Set generates incompilable codeKT-66873 Swift Export: suspendable contravariant functional typeKT-85272 [Swift Export] conflicting imports for kotlinx-coroutinesKT-85163 [Swift Export] Flow of Unit values crashesKT-85159 [Swift Export] Flow is not properly being cancelledKT-84226 [Swift Export] Flow in contrvariant position is not allowedKT-84485 [Swift Export] Flow with nullable elementsKT-83730 Generated Swift switch on bridged Kotlin enum crashes with fatalErrorKT-85016 [Swift Export] it's not OK to expose Flow as AsyncSequenceKT-84979 Swift Export Nullability: UnitKT-83821 Swift Export: suspend function returning Nothing leads to incompilable codeKT-81593 Swift Export: suspend function returning Unit leads to incompilable codeKT-84359 [Swift Export] nested functional type with Unit parameterKT-84358 [Swift Export] functional type with Unit parameterKT-84356 [Swift Export] functional type with single Unit parameterKT-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 UnitKT-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 codeKT-82568 Swift Export: Context ParametersKT-83398 [Swift export] converting non-escaping parameter to generic parameter may allow it to escapeKT-83389 Swift Export: “ClassCastException” caused by suspend fun throwing ErrorKT-83116 Swift export generates bridges incompatible with language version 2.4KT-83749 [Swift Export] varargs and List uses the same mangling on bridgesKT-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 dumpKT-82724 BCV incorrectly reports generated @JvmOverloads declarations as publicKT-78367 Internal constructor infiltrated into a dumpKT-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-SafeKT-80963 BTA: Add structured information about reported messages to KotlinLoggerKT-73037 Add input (like compiler arguments) changes trackingKT-82791 BTA: introduce an option for ExecutionPolicy.WithDaemon to control the daemon log files pathKT-84453 SSoT: provide a unified way to convert Enums to Strings
Fixes
KT-86395 [BTA] forward-compatibility violation: NoSuchMethodError on JvmSnapshotBasedIncrementalCompilationConfiguration. breaks ICKT-80679 Add support for the Build Tools API [ABI Validation]KT-85294 BTA: Replace hardcoded @since in KDoc with dynamic versioningKT-85035 Don't expose X_COMPILER_PLUGIN_ORDER in CommonCompilerArgumentsKT-85391 [BTA] Hide boilerplate required to load isolated BTA implementationKT-85447 BTA: deprecate JvmCompilerArguments.contains (warning)KT-82390 [BTA] Remove deprecated non-builder factory functions and classesKT-84850 Make kotlin-home type safeKT-84867 Make Xphases-to-* arguments type-safeKT-85094 Make Xwarning-level type safeKT-85205 Make Xdump-perf type safeKT-85204 Make Xdump-directory type safeKT-84906 Make enum-based common arguments type-safeKT-84322 Make X_PROFILE BTA compiler argument type safeKT-84825 Make script-templates type safeKT-84546 Replace raw string path arguments with type-safe PathListTypeKT-84705 Make Xjdk-release to type-safeKT-85167 Make Xjsr305 type safeKT-85069 Make Xnullability-annotations type safeKT-84738 Make Xscript-resolver-environment type safeKT-85082 Make Xignored-annotations-for-bridges type safeKT-84324 Make X_ADD_MODULES BTA compiler argument type safeKT-84338 Make enum BTA JVM compiler argument type safeKT-84325 Make JVM_DEFAULT BTA compiler argument type safeKT-75837 IC: Shrunk classpath snapshot name is hardcodedKT-84228 BTA: Improving KDoc generation for Enums and Custom TypesKT-85738 BTA forward compatibility: NoSuchFieldError on X_IGNORED_ANNOTATIONS_FOR_BRIDGES when API 2.3.0 is used with impl 2.4.0KT-84436 Сompiler warnings are missing under Gradle -q option with -WerrorKT-85072 AbstractMethodError when calling discoverScriptExtensionsOperationBuilder with pre-2.4.0 compilerKT-84523 Add more forward compatibility testsKT-84187 [BTA] Add more build operation immutability testsKT-84219 [BTA] Add additional tests on basic metrics collectionKT-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.20KT-85439 BTA: Warn or error when incompatible compiler arguments are passed via applyArgumentStringsKT-75540 Build Tools API Should Reject -Xbuild-file ArgumentKT-85333 Add BTA tests for BACKUP_CLASSES and KEEP_IC_CACHES_IN_MEMORY behavior after compilation errorKT-84770 BTA: default options cannot be retrieved from many option objectsKT-85224 Add @ExperimentalArgumentApi to compiler argument DSL typesKT-84953 Fail TC build if generated files changeKT-85189 Refactor path argument types: flatten hierarchy and improve namingKT-82335 Promote the deprecation level for BTA prototype to the ERROR levelKT-84984 Runtime NPEs caused by null return in CompilerMessageRenderer implementationKT-84015 Introduce detection of custom script names to new BTA APIKT-83972 BTA: use isolated classloader for loading the BTA implementation in integration testsKT-84181 More verbose warning when CRI is enabled without using BTAKT-84449 Platform-Specific File.pathSeparator Hardcoded During SSOT GenerationKT-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 ArgumentsKT-85414 Argument DSL: delimiter = KotlinCompilerArgument.Delimiter.PathSeparator generates invalid Kotlin codeKT-85004 Set proper since version for language feature about property annotation targetingKT-84220 Enable Context Parameters by default in LV 2.4KT-84188 Create CLI argument for explicit context parametersKT-84999 Don't poison binaries with ImplicitJvmExposeBoxed language featureKT-85001 Convert ImplicitJvmExposeBoxed language feature to analysis flagKT-83341 Don't use the extension point registration mechanism from Intellij for K2 extensionsKT-56850 Separate K/Wasm CLI entry point from K/JS CLIKT-84132 CLI: regression in deduplication of same-value argumentsKT-83261 No error if pass an arbitrary string to a CLI argument that changes language featuresKT-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 librariesKT-69036 Power-Assert indent multiline valuesKT-75656 PowerAssert: Create runtime library
Fixes
KT-83931 Power Assert: Compilation fails when using the metro pluginKT-86170 PowerAssert: Stabilize runtime ABI for initial releaseKT-85250 PowerAssert: Automatically add runtime library dependencyKT-75873 PowerAssert: display callable reference value under ‘::’KT-85151 PowerAssert: Surround string and character values with quotesKT-85184 PowerAssert: Annotation may only be used on expect and non-override functionsKT-85178 PowerAssert: Crash when transforming IrCall without CallableIdKT-66807 PowerAssert: Improve output diagram formattingKT-85089 PowerAssert: Wasm CompileError when using PowerAssert.explanationKT-75266 PowerAssert: arrayOf() isn't displayed on the diagramKT-67332 “IndexOutOfBoundsException: Cannot pop operand off an empty stack.” caused by function referenceKT-83330 Lombok. An add methods with @Singular annotation in Java record doesn't work from kotlinKT-83204 Lombok. If @Data and @NoArgsConstructor are used together, then the constructor from @Data shouldn't be availableKT-83336 Lombok. IllegalAccessError for constructor if @Value and @Builder are applied and used from another packageKT-83352 Lombok. FileAnalysisException when @SuperBuilder is used with @BuilderKT-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 pluginKT-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:” blockKT-69701 Gradle: module name is passed inconsistently to different types of compilationsKT-85373 Compile against Gradle API 9.5.0KT-85374 Run tests against Gradle 9.5.0KT-80448 Remove internal & deprecated API from ExtrasProperty.ktKT-69830 Support Gradle com.gradle.develocity plugin in KGPKT-85509 Remove deprecated API in the 2.4.0 releaseKT-83858 Compatibility with Gradle 9.4.0 releaseKT-84144 Bump the minimal supported AGP version to 8.5.2KT-85562 Failed to invoke getCompilation on org.jetbrains.kotlin.gradle.tasks.KotlinNativeLink_Decorated on project importKT-85590 Gradle: cannot create task MainKt.main() due to missing defaultSourceSetNameKT-74451 Deprecate access to Kotlin source sets in Android extensionKT-82960 Remove deprecated enableKotlinToolingMetadataArtifact in 2.4.0KT-84377 Broken package-list file on KGP/CMPG documentation pageKT-85412 Module name is not sanitized with older Kotlin compiler versionsKT-65566 Use the new ConfigurationContainer consumable method to create consumable configurationsKT-83775 Migrate KGP functionalTest to junit5KT-85433 Gradle: deprecate non-BTA JVM compiler execution modeKT-83860 Run tests against Gradle 9.4.0KT-75004 KGP: improve messaging when multiplatform tasks are disabled on incompatible OSesKT-83859 Compile against Gradle API 9.4.0KT-82847 Raise deprecation to error for LanguageSettings.enableLanguageFeature DSLKT-84053 Deprecate support for Gradle 7.6-8.13 versionsKT-78659 Remove ‘kotlin-android-extensions’ plugin idKT-79924 Make enableKotlinToolingMetadataArtifact deprecatedKT-82933 Add a tab with results in TCKT-83130 [ToolingDiagnostic] incorrect problem ID formatting for acronyms and undefined locations in Gradle8 problems reportsKT-84143 Reduce usage of Project in Tooling DiagnosticsKT-83126 Remove out-of-process compilation modeKT-80466 Gradle: remove getPluginArtifactForNative()KT-81834 Compile against AGP 8.13 APIKT-77498 Test .swiftmodules more accurate in SwiftExportITKT-84141 Add convenient host checkKT-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-Beta2KT-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 twoKT-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 filesKT-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 functionsKT-81034 K/JS, Wasm: Remove deprecated public constructors of JS declarationsKT-81030 K/JS, Wasm: remove deprecated NodeJsExec.createKT-81036 K/JS, Wasm: Remove deprecated ExperimentalDceDslKT-81040 Gradle: Remove deprecated Kotlin/JS tasks constructorsKT-64275 Gradle: remove deprecated symbols related to the legacy JS targetKT-84753 Deprecate KotlinJsCompilerType and KotlinProjectExtension methods using itKT-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 argumentKT-82265 Remove Android source set layout v1KT-82230 Cleanup ‘org.jetbrains.gradle.apple.applePlugin’ plugin usageKT-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 targetsKT-85706 SwiftPM Import: Updating package version in build script updates version in the lock fileKT-84085 Remove deprecated gradle property kotlin.kmp.isolated-projects.supportKT-83370 Incorrect metadata transformation for stdlib's webMain source setKT-69571 compileNativeMainKotlinMetadata not handling project/prebuilt substitutionsKT-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 failKT-84597 Remove trailing comma for dependencies blocks settings in Package.swiftKT-82895 kotlin-stdlib import is flaky in commonTest in 2.1.21KT-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 handledKT-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-Beta2KT-85510 Cleanup native tasks APIKT-84656 Concurrent issue in downloadKotlinNativeDistributionKT-85502 Swift PM Import: “Library not loaded”: KotlinMultiplatformLinkedPackage.framework is not copied next to the executableKT-85561 SwiftPM lock-files metadata resolution fails with NoMatchingGraphVariantsException in external KMP projectsKT-85128 Refactor SwiftPM import lock tests and test utilsKT-83681 Parallelize parts of SwiftPM import pipeline that are called during importKT-83874 Linker hack doesn't work when clang uses response filesKT-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 logKT-85708 [KGP] dSYM copy task ignores isStatic due to eager read before framework configurationKT-84262 integrateEmbedAndSign produces an incorrect Gradle call for the root projectKT-84730 Add Kdocs to SwiftPM import APIsKT-84558 Upstream SwiftPM import workKT-82824 Make linker hack path relativeKT-84508 Add a warning on usage macos_x64 as hostKT-84692 Misleading error message for disableNativeCache DSL without required Opt-InKT-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 WorkersKT-84137 K/Wasm: Support binaryen run with multiple filesKT-85974 K/Wasm: Do not set -Xir-per-module for Wasm tasksKT-83566 K/Wasm: Support Wasm per module/klib compilation in Gradle pluginKT-85046 K/Wasm: Wasm per-module Gradle integration tests on WindowsKT-84230 Wasm: Fix test WasmYarnGradlePluginIT.testWasmUsePredefinedTooling
Tools. Incremental Compile
KT-85387 BTA: switch the default value of MONOTONOUS_INCREMENTAL_COMPILE_SET_EXPANSION to trueKT-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 longKT-32743 Kapt, Maven: Do not include compile classpath entries in the annotation processing classpathKT-41217 Running kapt with Maven does not seem to include the compilation classpathKT-80569 K2 KAPT: Class Literals Missing in Explicit Annotation Value ParametersKT-18791 Kapt: Constants from R class should not be inlined
Tools. Maven
New Features
KT-85121 Maven: enable configuration inputs tracking in BTAKT-84386 Support Maven Toolchains in kotlin-maven-pluginKT-85317 Auto‑align jvmTarget with the project’s Java level
Fixes
KT-74001 Support monotonous dirtySet expansion in MavenKT-76062 Maven: remove Kotlin script execution supportKT-84101 Maven: compile and test-compile handle sourceDirs inconsistentlyKT-84653 Add integration test for KAPT with smart defaults in mixed Kotlin+Java projectsKT-84778 Add integration test for auto-bind execution order in mixed Kotlin+Java projectsKT-85146 Maven: Adding stdlib as smart-default may break maven dependency resolution for other pluginsKT-84793 Use kotlin bootstrap to build kotlin-maven-pluginKT-83109 Remove beanshell and groovy verification in kotlin-maven-plugin-testKT-83110 Remove dependency to intellij platform from kotlin-maven-plugin-testKT-83113 Configure kotlin.git/.idea to work nicely with maven-kotlin-plugin-test testsKT-83114 Migrate kotlin-maven-plugin-test from maven.invoker to junit6 + maven-verifier
Tools. Performance benchmarks
KT-82928 Support local run for new benchmarks infraKT-84283 Add scenario generator for performance testsKT-83257 Parse gradle profile report
Tools. REPL
KT-77816 REPL: Support for const propertiesKT-74683 [K2 Repl] Does not support suspend functionsKT-84483 [K2 Repl] NullPointerException in Analysis when using custom classesKT-84803 [REPL] FirReplSnippet: provide the eval function symbol instead of the name (evalFunctionName)KT-84160 [REPL] Resolve eval function during implicit bodyKT-83689 [K2 REPL] Create raw FIR tests for repl snippetsKT-82554 [REPL] Fix unresolved reference when using dataframe compiler-pluginKT-82578 [K2 REPL] Split snippet property declaration and initializationKT-82503 [K2 Repl] Nested class annotations are not available in the next snippet
Tools. Wasm
KT-84396 [Wasm] Support multimodule in incremental compilationKT-75086 Wasm: Deprecate and remove D8 in js packages
Previous ChangeLogs: