Changelog
Analysis API
KT-86546Check suspicious when over ConeKotlinType in ConeTypeCompatibilityCheckerKT-85418Implement an API for accessing deserialized file annotations in Analysis APIKT-74448K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutinesKT-85856containingSymbol of constructor property differs for local and non-local classesKT-65417K2 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-76457K2 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-70552No expects for actualKT-69727K2 IDE. Wrong error in the editor on callingclonefunction of actual enum instance in non-jvm platformKT-69726FP errors on declaringfun clone()in actual enum in not-jvm source-setKT-86014Types are broken after remove parameter through change signatureKT-86363KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocksKT-86147Dropkotlin.parallel.resolve.under.global.lockregistry keyKT-85543Avoid lazy resolve for the contracts phase if no constracts might be resolved
Analysis API. Infrastructure
KT-84914Do not publish analysis-api-test-frameworkKT-86986kotlin-compiler-common-for-idebundles unrelated Analysis API modulesKT-86186Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrateKT-85360Drop kotlin-compiler-testdata-for-ide artifactKT-85585Simplify the dependencies graph for the Analysis API modulesKT-85381Remove tests for the FE10 implementation
Analysis API. Light Classes
New Features
KT-84645Support resolving to companion block members & extensions from Java (light classes)KT-80775Support PsiClass#getRecordComponents in light classes
Fixes
KT-57537SLC: propagate default parameter value from (@JvmOverloads)expectdeclarations toactualdeclarationsKT-85040[Analysis API] Improve Java / Kotlin interop in KMP projectsKT-87301SymbolLightAccessorMethod#isValid returns false for delegated propertiesKT-87171SLC: non-mapped Kotlin collection supertype is dropped from supertype listKT-87250JvmExposeBoxed: light classes shouldn't be autogenerated for private declarationsKT-70428AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegationKT-63568Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not setKT-36740MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealiasKT-67749Analysis API: Symbol Light classes should be available only to pure JVM sourcesKT-68169K2 IDE. KMP. False positive type mismatch in java file of jvm source-set when using common declaration which expects StringKT-37783KMP Java Interop: JVM-only methods on actual superclass not resolved in Java for common subclassKT-40059Provide type correction for expect/actual types used from Java-codeKT-71429MPP: False positive "Function1 is not a functional interface" when calling code from Common in JavaKT-70426SLC: kotlin.Collection#size is not exposed by defaultKT-60480Symbol Light Classes: Classes implementing kotlin.collections.* interfaces don't implement all methods from the corresponding java.util.* interfacesKT-36991IDE: "both methods have same erasure" for Java classes directly or indirectly extending Kotlin collectionsKT-22594KotlinCollection.getSize is not highlighted as an error in Java
Analysis API. PSI
KT-84925Move KtReference to the Kotlin IntelliJ pluginKT-85052Move mutation methods out of the Kotlin PSIKT-85427Use factory-like pattern instead of reflection in KtNodeTypeKT-84789Ensure allKtClassBody.parentusages are correctKT-85154PSI: "AE: parent is ERROR_ELEMENT" with top-level destructuring declaration
Analysis API. Providers and Caches
KT-82220Analysis API: Support platform-specific session components and checkers in metadata sessionsKT-76526Incorrect built-in module is provided for non-JVM sources in Standalone
Analysis API. Standalone
KT-83191Analysis API: JvmDependenciesIndexImpl performs very poorly for large classpathsKT-61404Analysis API: implement proper library publishing structureKT-85112AA does not see packages from unpacked klibsKT-86417Support parameters in 'getExpectsForActual()'KT-84916Metadata stub deserializers aren't properly set up for Analysis API Standalone
Analysis API. Stubs and Decompilation
KT-86250KotlinIllegalArgumentExceptionWithAttachments: No fir element was found for KtDestructuringDeclaration on destructuring declaration typingKT-86520KotlinDeclarationInCompiledFileSearcher doesn't support visibility-mangled declarationsKT-64901Inconsistency between AST and Stub tree in the case of non-local destructuring declarationsKT-84444Support stubs for companion blocks & extensions
Analysis API. Surface
New Features
KT-73214AddKaScope#declarationswith name filterKT-69085Provide API to retrieve label/name from KtFunctionLikeSymbolKT-70771KaLocalVariableSymbol: supportisDelegatedPropertyKT-85037Add API for KaFunctionType's returnType modificationKT-80460AA: IntroduceKtExpression.isStableForSmartCastingAPIKT-66566AA: api to create functional typesKT-65912Analysis API: Implement type building API for all KtType
Performance Improvements
KT-70021Analysis API: optimize KaFirExpressionTypeProvider.expressionType for simple cases
Fixes
KT-66039K2: Analysis API: redesign resolution APIKT-86394Resolve from KDoc reference is inconsistent with source codeKT-87337Integrate KaContextParameterOwnerSymbol into KaCallableSymbolKT-78234Analysis API: Context parameters for accessorsKT-86786Investigate suspicious when over ConeKotlinType in ConeKotlinType.getDirectSupertypesKT-72902Shouldn'tKaSymbolProvider#findClassreturnKaNamedClassSymbol?KT-87237No expected type insidearrayOfin annotation entriesKT-87143findKDocreturns parent property KDoc for accessors of an overriding propertyKT-83224Support "Compile-time functions" in the Analysis APIKT-87174Expected class KaFirSymbol instead of class KaFirPackageSymbol exceptionKT-87199[Analysis API] RemoveKaEnumEntryInitializerSymbolKT-85382Remove the FE10 implementationKT-70774Unary operators on literals are not resolvableKT-85206Provide information about potentially removable context-sensitive resolution qualifiers via Analysis APIKT-86872KtOperationReferenceExpressionshould beKtResolvableCallKT-85800Analysis API: The internal utilityPrettyPrinteris used in the public API surfaceKT-73796Consider "KaAnnotation#useSiteTarget" removalKT-70794K2 IDE: Reference to object does not resolve as LHS in "plusAssign" assignment expressionKT-86757Flaky annotations result for@allannotation on a backing fieldKT-86681[Analysis API] MoveisDelegatedtoKaVariableSymbolKT-86685collectCallCandidates works incorrectly for a constructor vs. a companion invokeKT-86514No expected type within collection literal in annotation entry using array rather than varargsKT-76076K2 AA: safe call expression navigates to parent array index access expressionKT-86418Support property accessors in 'getExpectsForActual()'KT-71312KaFirPsiJavaClassSymbol.{hasAnnotations, annotationSimpleNames}is inconsistent withFirJavaClassimplementationKT-86248isUsedAsExpressiontrue for typealias lhs in ::KT-85778Analysis API: Ensure that all public endpoints in implementation modules are internal or opt-inKT-78285resolveToCallCandidates inconsistent behaviour with invoke operator and constructorKT-85852CCE in buildClassTypeKT-85989Super type references should be aware of type alias constructorsKT-84184[Analysis API] Provide a unification substitutor APIKT-84584Support companion extensions and blocks in the Analysis APIKT-84932Deprecate utilities exposed through analysis-internal-utilsKT-73059Consider dropping of KaOriginalPsiProviderKT-73050KaFirSymbolRelationProvider#expectsForActual: suspicius logic for KaReceiverParameterSymbolKT-71101[AA] Consider getting rid of KaTypeNullability
Backend. J2KLIB
KT-88165Add 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-88163Allow to disable firAggressivePrunner for Jklib
Backend. Native. Debug
KT-85264[Native] Stepping trace starts with// test.kt:1 boxin some debug stepping testsKT-81740Native: importing konan_lldb.py to lldb prints a warning
Backend. Wasm
Fixes
KT-73452K/Wasm: turning on range checks by defaultKT-83171K/Wasm: Investigate import.meta usage in mjs filesKT-83159K/Wasm: generate one common base class fun interfaces (including Function*)KT-82843K/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-83356K/Wasm: Difference in behavior on nested class initialization (for enums?)KT-87639[Wasm] Multimodule wasm fails on Pointer usagesKT-87583Wasm IC cache is not invalidated when kotlin.wasm.compilationMode changes causing IndexOutOfBoundsException in WasmDeserializerKT-84267K/Wasm: init order of companion objects is different from JVMKT-86192K/Wasm: Raise a warning on usage of top-level require in JsFunKT-86242K/Wasm: deprecate and prohibit usingwasmExportsKT-86245K/Wasm: provide an API to get a reference to wasm memoryKT-84610[Wasm] Failed to compile klibs in IC modeKT-87078Wasm/JS: OutOfMemoryError (or BufferUnderflowException) during incremental compilation of multiple files with@JsExportKT-76207K/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-86822K/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-66105Wasm: SyntaxError: Identifier 'box' has already been declaredKT-83245K/Wasm: Run stepping tests with local variables with K/WasmKT-86478K/Wasm JS: StringBuilder.setLength crashes when growing with js-string builtinsKT-84667wasm: Add general support for custom sections/annotationsKT-85506[Wasm/WASI] Stdlib readLn and readlnOrNull implementationKT-85270K/Wasm: incremental compilation fails with NoSuchElementException when a stdlib call is removed
Compiler
New Features
KT-73431Unresolved reference errors should state the type they're acting onKT-80373Add initial support for release compiler cachesKT-84618Emit a warning when an undesrcore variable is assigned to a Unit expressionKT-86409[KMP] Create JVM IC metadata outputKT-84295Support Companion BlockofOperator for Collection LiteralsKT-84956Resolve of references to static & companion object members of generic classKT-85925Native: rework virtual trampolines machineryKT-86657Native: turn on incremental compilation by defaultKT-86018Short-form of name-based destructuring for multi-field value classesKT-86406Swift Export: support supercalls for cross-language inheritanceKT-77616Native: consider adding an annotation that enforces thread state switching for a@SymbolNameexternal fun`KT-86410[KMP] Implement acceptance of JVM IC metadata from previous compilationKT-85593ELA: Support multiple lambda argumentsKT-83040Collection literals: ensure normal interaction with CFGKT-84333Collection literals: type inference in delegate expressionKT-84289Resolution to Companion Block & Extension Invoke OperatorKT-82961Type inference from upper type for type parameters designed for tracking of checked exceptionsKT-81444False positive: "Overload resolution ambiguity" with@OverloadResolutionByLambdaReturnTypeand multiple lambda parametersKT-75736Enable reading/writing annotations in metadata on JVM by default
Performance Improvements
KT-85621Native: fix optimization in CastsOptimizationKT-69758FastJarFS - avoid copying data on inflating (JDK 16+)KT-85647Compilation performance regression in AbstractFirDeserializedSymbolProvider since 2.3.20KT-86104[JVM] use static methods/fields of KTypeProjection in typeOf generated bytecodeKT-86084IDEA freezes when a lot of properties are modified to lazy delegatesKT-83068Investigate long compilation times with many generics & overloadsKT-66469Long compilation with mockk importKT-79677Remove meaningless LVT records
Fixes
KT-88953CCE caused by suspend conversion of nullable argument to nullable expected typeKT-85842Collection literals (and CSR): internal failure when lambda is analyzed during inference of outer callKT-86751IntroducedAt: Do not generate@IntroducedAtoverloads as syntheticKT-81708K/N incremental compilation:No module deserializer for FUN name:writeObjectKT-82510K/N, IC: "Undefined symbols for architecture arm64" for iosSimulatorArm64 withkotlin.incremental.native=trueKT-88316K/N: StackOverflowError in CastsOptimization when two nullable local variables are assigned to each other across nested loopsKT-80841Confusing positioning of NO_VALUE_FOR_PARAMETERKT-85300Improve message for UNRESOLVED_REFERENCE_WRONG_RECEIVERKT-87983CCE on member extension property delegated to bound property referenceKT-85403kotlin.NoWhenBranchMatchedException on Kotlin Native with sealed interfaceKT-87922K1FakeDescriptorsForReferencesKt classes duplicated between kotlin-scripting-compiler-embeddable and kotlin-build-tools-implKT-87499ClassCastException "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-85641Nullable-marked object qualifiers in LHSs of callable referencesKT-86957Warning on the underscore variable is not reported for java.lang.Void callKT-87261K/N debug: 'is' check miscompilation — local variable reports wrong type when two smart-cast extractions precede an inline loopKT-87577Compiler crash on red code with ambiguous type parameter used as expressionKT-80867[Native] Stack allocation is blocked after cross-module inlining of stdlibKT-86949Native: ComputeTypesPass handles type checks across loop iterations wrongKT-86959Native: OptimizeCasts gets confused by "complex" terms leaking between different loop iterationsKT-78079Enable generation ofwhenusing invokedynamic by default for JVM targets 21+KT-86525JvmExposeBoxed: Inconsistent number of parameters during reflectionKT-72999K/N: Do not considerIrTypeOperatorCallas a tail call expressionKT-84802Add new synthetic class flag to JVM metadataKT-87606Compiler crash on red code with redeclaration of type parameter which is used as expressionKT-85888Native: incremental compilation blows up when a method changes from open to finalKT-87335Context parameters: wrong LINENUMBER emitted for context argument loads in JVM bytecodeKT-84344Disambiguate fake source elements for source-based symbol IDsKT-86618Collection literals: internal PCLA failure with reassignmentKT-85703Drop pre-2.0 language features from K2 & common compiler codeKT-87245Report UnsupportedFeature on ExplicitContextArgumentKT-80227Support unnamed context parameters in evaluationKT-72706Confusing "INVISIBLE_REFERENCE" when calling private constructorKT-86110K/N Incremental compilation: stale cache is reused after enum entry reorderKT-86133K/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-87507False-positiveABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTEDon fake-override with value parameter of type missing in dependenciesKT-87439Postpone UnitConversionsOnArbitraryExpressions indefinetelyKT-87434JAVA_CLASS_ON_COMPANION not reported when companion accessed through typealiasKT-64622[K/N]arutility fails with symbol@in module/klib name on Linux with static cacheKT-84037Native: reworkarinvocations in the compilerKT-87339JVM: Support recursive type provided as an argument of typeOfKT-86551Check suspicious when over ConeKotlinType in FirExposedVisibilityDeclarationChecker#findVisibilityExposureKT-87395StackOverflowError in return value checker when a Java class member is annotated with the class's own nested annotationKT-87290Investigate possible bug in value class deserializationKT-61141K/N: irText tests failed with K/N irText first runKT-85764Native: Prohibit compiling sources in 'kotlin' package by defaultKT-86469Check 'when's over 'ConeKotlinType' which could miss some branches in DFAKT-87253MissedConeCapturedTypecheck in processing ofequalscontractsKT-84522Refactor FirResolvedQualifierKT-84299resolvedToCompanionObjectis not set in some situationsKT-87327JVM IR: NullPointerException in JvmInlineClassLowering when using == between value of generic value class and another value classKT-86948Native: CastsOptimization merges results of type checks across loop iterations wrongKT-86947Native: CastsOptimization drops side effects of always-nullsafe castsKT-87276Drop or move ConeTypeCompatibilityCheckerKT-78623No-arg constructor should be generated if all parameters are optional, even when one of the parameters is inline typeKT-86886Kotlin Lombok: compiler crash with IllegalArgumentException on builder with a single type parameterKT-83880Consider makingOPERATOR_RENAMED_ON_IMPORTa warning (instead of error)KT-70461K2: "Inline class types should have the same representation" caused by value class and smart checkKT-87140K/N: Test generation leaksBaseClassSuite'sINSTANCEtype parameterKT-87291Enable ProhibitScriptTopLevelInnerClasses in 2.5KT-87226CompanionBlocksAndExtensions: COMPANION_EXTENSION_RECEIVER_IS_OBJECT diagnostic is absent when object used via typealiasKT-87058Investigate abandoned language featuresKT-86655mismatched mutability annotations in overriding lead to misaligned behavior in warn-mode and strict-modeKT-85169Return value checker: RETURN_VALUE_NOT_USED: object expression highlighted entirely instead of just the keywordKT-86464SupportisPublicAbiJVM metadata flag for anonymous and synthetic local classesKT-87083JVM: AssertionError in if UIntArray is declared in sourcesKT-87032JvmExposeBoxed: forbid private@JvmExposeBoxeddeclarationsKT-85954Implicit JvmExposeBoxed leads to IOOBE when data class constructor accepts nullable inline classKT-85955Implicit JvmExposeBoxed: double default constructor parameter leads to IOOBEKT-86523JvmExposeBoxed: Cannot generate code for exposed constructor with default parameter referencing another default parameterKT-86524JvmExposeBoxed: Collection does not implement abstract methodKT-86526JvmExposeBoxed: Sequence contains more than one matching elementKT-86865Support abstract full value classes with non-trivial constructorsKT-87016DropANNOTATION_ON_ANNOTATION_ARGUMENTdiagnosticKT-86615K2: Missing INVALID_CHARACTERS diagnostic for enum entry name with illegal JVM characters, leading to runtime ClassFormatErrorKT-86849Remove old@JvmInlinemulti-field value classesKT-87014[KGP] failing testSwiftExportCoroutinesKT-86481Compilation failure with spreadarrayOfinsidearrayOfKT-86996unwrapVarargValuedoes not consider some casesKT-86955K2: Companion block funs in interfaces have OPEN modality after Fir2IRKT-87035K2: Context parameter type leaks unsubstituted into callable-reference adapterKT-86940Diagnostic range of NONE_APPLICABLE in enum entry is hard to seeKT-86046Put@K1Deprecationto all public declarations of K1 modulesKT-86555CL-based annotation resolve: clean up CFG-related hacksKT-86482Collection literals: do not fallback if not supertype ofListis expectedKT-84154Invalid qualifiers with type arguments in package parts compile without diagnosticsKT-85288Consider dropping use-site target checks in checkRepeatedAnnotation and similar placesKT-85469Native: potential concurrency problem with cachesKT-81567Add a use-site warning if a@DslMarker-marked annotation is used on entities where it is a no-opKT-86853FIR:Char.codenot being const-evaluated under IntrinsicConstEvaluation featureKT-86877Postpone ELA-related language featuresKT-86852Initialize full value classes fields before calling superKT-86824Native: support spaces in paths for LinuxKT-85816Drop remaining usages of ComponentRegistrarKT-86534Extract reworked annotations resolution under separate language featureKT-82555@Deprecated(HIDDEN)` objects not skipped when resolving qualifiersKT-84626Try to combineFirConstChecksandFirExpressionEvaluatorKT-85291MFVC: consider analyzing the type of declaration instead of use-site target in AnnotationCheckerKT-86755False negative NATIVE_SPECIFIC_ATOMIC in type argumentsKT-86752K2: 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-86705False positive REDUNDANT_SINGLE_EXPRESSION_STRING_TEMPLATE for nullable String? expressions with -WextraKT-86798Native: don't use stale incremental cache when a new compiler version is usedKT-86298LEAKED_IN_PLACE_LAMBDA when a lambda parameter is forwarded into an inline function parameterKT-76632K2: False positive "Assigned value is never read" with 'flatMap()'KT-86699Kotlin/Native: get rid of OptimizeTLSDataLoadsKT-86577Companion block member is determined as a fake overrideKT-86646IllegalStateException "unknown supertype kind null" when compiling data class with definitely non-nullable type parameter (U : T & Any)KT-86662Check for loss of ConeIntersectionType.upperBoundForApproximationKT-86629Approximation of Intersection Type to Upper Bound is Broken by Bang Bang OperatorKT-86115Platform declaration clash on no-arg constructor with@JvmExposeBoxedand@IntroducedAtKT-86643Warning for returning callsInPlace lambdaKT-86609MakeKDocSectionimplementPsiLanguageInjectionHostKT-86642Flexible type with nullable intersection types in both boundsKT-85148Native: check/fix KT-72710 Incorrect behaviour of tail call suspend functions optimizationKT-85230False negative deprecation diagnostics on import of member of nested classKT-62467K2: Result type of elvis operator should be flexible if rhs is flexibleKT-86319K2: StackOverflowError in AbstractConeSubstitutor with recursive Java type bound under mixed JSpecify@NullMarked/@NullUnmarkedKT-86512K2: Bad IR for adapted callable reference to function with generic vararg and optional parameterKT-85947Collection literals: internal failure when SAM is expectedKT-85535Collection literals: Migrate to new resolve in annotations under "-Xcollection-literals"KT-86468K2: False negative DSL_SCOPE_VIOLATION when type parameter has DSL-annotated boundKT-86292False negative: INFERRED_TYPE_VARIABLE_INTO_EMPTY_INTERSECTION_WARNING reported for direct getValue call but not for equivalent by delegationKT-86467K2: False negative ILLEGAL_RESTRICTED_SUSPENDING_FUNCTION_CALL with DNN, flexible, captured and intersection receiver typesKT-85848Recursion on value classes through type parametersKT-75874K2: Adjust the type mismatch diagnostic on lambda parametersKT-82456K2. Missing deprecation for object with invokeKT-86184KDoc: syntax highlighting incorrect when@param,@return, or summary line begins with a backtickKT-85454Make :compiler:android-tests:test cacheableKT-51400Additional independent candidate with@OverloadResolutionByLambdaReturnTypecould change inference resultsKT-86042Inference fixes lambda's return type variable too earlyKT-86327Add flag toLanguageFeatureenum to enable it in the latest language version testsKT-84718Provide information for simple names resolved through imports which might be resolved via context-sensitive in IDE modeKT-75112FE resolves wrong receivers order for property passed to delegateKT-86191Check not null on a dynamic-typed property leads to malformed CFGKT-86143operatorkeyword is allowed on arbitrary equals in enum entriesKT-73197Order-dependent choice of overload by lambda return type with UnitKT-86144Unresolved code in ambiguous plus assign is not reportedKT-86006CFG: Exponential growth when visiting unresolved delegates in FirLocalVariableAssignmentAnalyzerKT-86103Incorrectly reportedCONFLICTING_OVERLOADon companion memberKT-85965Native: incremental compilation blows up with NoSuchFileException: class_fieldsKT-86005Fix misuse of DeferredMethodVisitor.intermediate in AnonymousObjectTransformerKT-72840[JVM Inliner] Two failsAFTER mandatory stack transformations: incorrect bytecodeKT-84589ProhibitArray<Nothing>in lhs of::classKT-84766Kotlin/Native: separate compiler cache for latin1Strings=trueKT-82899Native IC: AIOOBE on coroutinesKT-85188Don't poison binaries with companion blocks & extensions for LV >= 2.5KT-80176ASSERT FAILED: SDE.c : 296 - bad SourceDebugExtension syntax - position 376 - expected ':'KT-84581Inline function with@JvmOverloadsproduces SourceDebugExtension attribute with invalid line numbersKT-85203Kotlin/Native: "Invalid LLVM module - Instruction does not dominate all uses" with nested inline suspend functions and withContextKT-85766Confusing error message "'this' is not defined in this context" on companion extension delegated propertyKT-85720K2: Missing null check in generic vararg function call when passing value of flexible typeKT-85701K2: Type parameter is out of bounds forIMPLICIT_DYNAMIC_CASTKT-82196False positive: "Recursive call is not a tail call" inside when/if with lambda and elvisKT-85841Error message for NULLABLE_ON_DEFINITELY_NOT_NULLABLE uses obsolete term for DNN typesKT-81932False positive TAIL_RECURSION_IN_TRY_IS_NOT_SUPPORTED caused by try in another branch inside tailrec functionKT-78443Refactor session component initialization for multi-target compilationKT-85661Lazy resolve for substituted property accessors with a contract doesn't workKT-84719Provide information for qualified types that might be replaced with context-sensitive simple names in IDE modeKT-85667Add experimental language version 2.6KT-85770Support companion block properties in interfacesKT-85168Generate static initializers as proper IR functionsKT-74516False negative TYPE_PARAMETER_AS_REIFIED for DNN typeKT-85733Illegal unqualified resolution to companion extension through scope linkingKT-85679Internal Compiler Error when trying to access a value parameter from companion blockKT-85358Native: roll back the workaround for KT-84678 once MapLibre has been properly fixedKT-81814Field name '$$context-Functor#1' cannot be represented in dex formatKT-6071Change USELESS_CAST warning messageKT-85626@JvmRecordin commonMain breaks compileCommonMainKotlinMetadata with "Cannot access 'java.lang.Record'"KT-85527Unmute Android tests after removing IGNORE_BACKEND_K1 directiveKT-84939Kotlin/Native: support llvm passes in -Xsave-llvm-ir-afterKT-85341K2."TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM" false positive on accesses to properties of an anonymous objectKT-84861Support Companion Blocks & Extensions in Scripts/REPLKT-84327Name-based destructuring conflicts with in-scope functionsKT-78678Checking for nullable type against nullable type falls back to inline-when generation mechanismKT-83652Confusing messages when using package parts with type arguments in qualifiersKT-75372Deprecate K1 compilerKT-80093Type inference depends on the presence of transitive dependencyKT-68933CompilationException: Back-end: Could not get inlined classKT-63746K2: JSpecify: If a class has a@Nullabletype-parameter bound, Kotlin should still treat unbounded wildcards like platform typesKT-17738Java cannot extend class implementing kotlin.collections.Map
Compose compiler
Fixes
b/549552317Fixed a bug that, in certain cases, prevented execution of
non-local returnstatementsinside lambdas called fromwhen
expressions.b/543684938Fix composable singleton in function with type parametersb/537617330Fixed a bug that caused miscompilation of cross-module calls
to getters and setters, causing spurious runtime errors.b/522127447Fixed a bug that was making the stability of pre-cast types be
used in certain skipping checks instead of the stability of post-cast
typesb/489339299Move Compose runtime to a stable versionb/509945632Always wrap inline lambdas with a composable group with a groupb/422193018FixcallableInferenceNodeOfinComposableTargetChecker.kt
IR. Inlining
KT-86558Forbid accesing volatile references after inliningKT-87272IR: Function value is inlined with out-of-scope type parameterKT-87274IR: Synthetic accessors are generated with out of scope type parametersKT-79065Try to removeNativeRuntimeReflectionIrBuilderKT-72464[Native][JS][Wasm] Non-local return through suspend conversion breaks the IR inliner
IR. Tree
Fixes
KT-69305Re-enable reporting out-of-scope type parameter usages during pre-lowering IR validationKT-86943Investigate if lambdas must be transformed into static or regular functionsKT-73921False negative: tailrec checkers with recursive functions (without tail recursion)KT-85896Type parameter is out of bounds (in setter) for a property with context parametersKT-85698Type parameter is out of bounds (in setter) for an extension property with type parameterKT-85575KLIBs: Add IR text & ABI dump tests for companion blocks and companion extensionsKT-87138IR: Rich callable reference to an inner-class member leaks outer class type parameters into the generated adapterKT-74938Use SYNTHETIC_OFFSET in IR fake overridesKT-87105[Tests][IR] Unify or split IR dump for different backendsKT-87292IR: Droplateinitmodifier fromIrFile.modulepropertyKT-86884IrTreeSymbolVisitor is not visiting symbols declared in non-final classKT-85147K/N: Segfault when calling SAM instance converted to type with nullable type parameter upper boundKT-86527Remove unreachable code from UpgradeCallableReferencesKT-85673ReplaceclassIdwithIrClassSymbolinIrAnnotationKT-85572KLIBs: New signatures for companion funs/valsKT-78175Remove remaining usages of attributeOwnerId outside of JVM backendKT-85573Store "companion parameter" in IR of funs/vals declared as companion extensions
JVM. Reflection
New Features
KT-73657Fix kotlin-reflect performance issues for reflection operations common for both reflection implementation: stdlib and kotlin-reflect
Fixes
KT-86477Reflection: test builtin class contentsKT-87369Reflection: KClass.members fails on Java class with self-referential raw type boundsKT-76521Reflection: change KType representation to avoid dependency on K1KT-85902Reflection: support call/callBy for companion blocks & extensionsKT-85903Reflection: do not inherit companion block members from supertypes inKClass.membersKT-86709Reflection: KRIE with Reaktor on fresh masterKT-86101Reflection: additional Java constructors are not added for mapped builtins in the new implementationKT-86545Reflection: extra Serializable supertype for non-mapped enum classes in "kotlin" packageKT-83677Reflection: aliased extension function type is rendered as non-extension in toStringKT-85836Reflection: KotlinReflectionInternalError on isSubtypeOf with definitely-not-null typeKT-83986Reflection: java.io.Serializable is not shown in supertypes of Int type in new reflectionKT-84495Reflection: "KotlinReflectionInternalError: Annotation class not found: kotlin/jvm/internal/EnhancedNullability" on Java Optional typeKT-86177Reflection: incorrect modality of Java constructors in the new implementation
JavaScript
Fixes
KT-88571K/JS: "llegalStateException: Internal error: cannot find external signature" caused by@Serializableenum 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-85599Allow exporting annotation classes into JS/TSKT-86934K/JS: Stack overflow when implementing interface with suspend fun using anonymous objectKT-80188Design exporting of suspend lambdas into JS/TSKT-87127KJS:@JsPlainObjectfactory contains duplicated parametersKT-70622Kotlin/JS: Incremental compilation doesn't recompile kotlin js stdlib while changing a collectionKT-87307[JS] Reflection: runtime KClass of a Long value differs from Long::classKT-85990K/JS: Default parameter values ignored in@JsStaticsuspend functions when class is exportedKT-84992Remove body of isLongCompiledToBigInt intrinsic after boostrap version updatedKT-40768KJS: initialization order for companion objects (inherited classes) different from K/JVMKT-87074KJS: Fix inheritance issues in Analysis API-based TypeScript exportKT-75176Add infrastructure for bundle size testingKT-85616[K/JS] Add synthetic and internal compiler APIs into sourcemap'signoreListKT-70223Delete the source code for the legacy JS backendKT-73067Drop support for the legacy JS metadata from the metadata decompilerKT-82224Respect file-level annotations in Analysis API-based TypeScript exportKT-82340Implement supertype approximation in Analysis API-based TypeScript ExportKT-82317Support Kotlin collections in Analysis API-based TypeScript ExportKT-84710Kotlin/JS: Suspending default interface methods are not accessible on subclasses from JSKT-19819JS: source maps: write the longest common prefix of all paths to "sourceRoot" fieldKT-82266Support transitive export in Analysis API-based TypeScript exportKT-80991K/JS/Wasm interop: JsReference.get is easy to accidentally use in JS targetKT-85424Replace eachjscall withjsClassIntrinsicafter bootstrappingKT-84457KJS: Support implementable interfaces in Analysis API-based TypeScript ExportKT-85452K/JS: Cannot create static member with@JsStaticin non-companion objectKT-83462Usage of star projection makes any generic type not-exportableKT-85563Kotlin/JS: TypeScript mts files do not properly escape enum valuesKT-60899K2 JS: Implement warning NO_REFLECTION_IN_CLASS_PATH
Klibs
Performance Improvements
KT-84837Introduce an index in IR linker for faster look up of suitable module deserializers
Fixes
KT-84821[K/N] Loadlibclangstubsfrom configured pathKT-87294[Wasm] Implement Wasi Klib backward compatibility testingKT-86320[PL] Replacing unusable classifiers with Any? type may cause a signature clashKT-86632KLIBs: Rework serialization logic for IrTypeAliasKT-87006Extract/remove K1-specific parts from :kotlin-util-klib-metadataKT-81947[Wasm] Klib backward and forward compatibility testingKT-81659Load symbols on 2nd compilation stage without frontend involvementKT-85611Change usage ofKlibCompilerDeserializationConfigurationin IntelliJ toCommonCompilerDeserializationConfigurationKT-86451Get rid of deprecated '-no-endorsed-libs' usages in Kotlin projectKT-85578KLIBs: New manifest property to indicate "new initialization order"KT-84836Minimize usages of IrBuiltIns in the KotlinIrLinkerKT-86037[Tests] Split test directive IGNORE_KLIB_BACKEND_ERRORS_WITH_CUSTOM_FIRST_STAGEKT-86228Simplify Klib's ReadBufferKT-58409[KLIB Reproducibility] File path separators should be platform-independent in KLIBsKT-74417Deduce the metadata version based on LV in KLIB-based backendsKT-76195CombinetoJvmMetadataVersionandtoKlibMetadataVersionKT-84750[K/N] Set "kotlin.native.home" appropriately in forward testing ofmaster-> 2.4.0-Beta2KT-85805AtomicfuNativeKlibSyntheticAccessorTestGenerated brokenKT-85587[Tests] Update test data so it ignores failing compatibility tests correctlyKT-85359ExportKlibToOlderAbiVersion with LV=2.2 is silently ignoredKT-85290Make :native:native.tests:klib-compatibility:testMinimalInAggregate cachableKT-85080Klib/IR Tests TC configuration -- need to explicitly download the necessary dependenciesKT-84990Investigate the usage ofallDependencyModulesin IR linkerKT-84349[Wasm] Implement forward klib compatibility testingKT-71414KotlinLibraryResolver.resolveWithDependencies was evolved in binary incompatible way
Language Design
KT-86089Explicit context arguments: Stable releaseKT-11914Confusing data class copy with private constructorKT-86761DM 2026-06-08: Another round on ELA (2)KT-86895Make full value classes poison buildsKT-86201Name-based destructuring stable release ofonly-syntaxin 2.5KT-7882Generic vs Non-Generic and implicit Unit return typeKT-78796Decide the future of the AllowEagerSupertypeAccessibilityChecks language feature
Libraries
New Features
KT-30270Provide allDistinct() and allDistinctBy{} for iterablesKT-10380allEqual function for IterableKT-31305Support JUnit5-like assertions with message suppliers in kotlin-testKT-86595Introduce StackTraceRecoverable interface into the standard libraryKT-86766Add@EqualityBounddeclaration to stdlib
Performance Improvements
KT-86010K/N, K/Wasm: MatchResultImpl function arguments checks takes significant portion of time for regex with capturing groupsKT-86032K/N, K/Wasm: BitSet::get allocates objects for each access
Fixes
KT-86329Update kotlinx.collections.immutable in Kotlin project to 0.5.0KT-86053Update kotlin-metadata-jvm for the companion blocks and extensionsKT-87173isSortedBy and isSortedByDescending inline their selector twice at every call siteKT-87166allEqualBy inlines its selector twice at every call siteKT-85020Path.copyToRecursively silently corrupts directory structure when copying across file systems with different path separatorsKT-86696return-value-checker: false positive Path.setPosixFilePermissions and Path.setLastModifiedTimeKT-86470Stdlib doc: Wrong timestamp in kotlin.time.Instant.parse example (leads to InstantFormatException)KT-80654K/N and K/Wasm: implement missing Regex testsKT-85326Libraries: rangeUntil docs sample code uses a rangeTo exampleKT-82505API reference: add links to array transformations returning arrays from their list-returning counterpartsKT-57883Description and code mismatch in CoroutineContextImpl.ktKT-65526Rewrite builtins as expect-actual
Native
KT-74844kotlin.native.internal.FileFailedToInitializeExceptionwhen running native tests with Kotlin 2.1.20-Beta2KT-80830[K/N] -Xruntime-logs doesn't work with cachesKT-36076KotlinNullPointerException: Gradle parallel compilation fails on 1.3.70
Native. Build Infrastructure
KT-86889Kotlin/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-85451Native: migrate the remaining tests to testFixturesKT-86725Kotlin/Native: make KonanCacheTask aware of per-file cachesKT-85823Kotlin/Native: delete outputs in :kotlin-native:distNativeLibsKT-85522Kotlin/Native: llvmLinkBreakpadMainMacos_arm64 fails
Native. C and ObjC Import
New Features
KT-86654[K/N]CValuesRefoverload for c-string parameters
Performance Improvements
KT-84043Native: findMacros takes a lot of time with -fmodules in cinterop
Fixes
KT-33092Kotlin/Native doesn't mangle names clashing with standard macros when generating Objective-C headersKT-85765Prohibit emitting C-interop KLIBs withkotlinorkotlinx.cinteroppackagesKT-87461Native: platform.darwin cache build failure with symbol is already boundKT-83940Generate IR from C-interop KLIBs without descriptorsKT-84665Don't use KLIB resolver in the CInterop toolKT-86263Generate IR for forward-declared classes without descriptorsKT-86871C-interop Klib caches are not deterministic after KT-83940KT-86559[K/N] More stable@CCallidsKT-73656Native:@OverrideIniton a capturing local class constructor causes a compiler crashKT-85399Kotlin/Native: TypeCastException when casting ObjC Protocol MetaClass with genericSafeCasts enabledKT-85508K/N: TypeCastException when using nw_parameters_create_secure_tcp block parameter on 2.3.20
Native. ObjC Export
KT-86443Native: crash in SwitchThreadState when KotlinBase methods are called from a thread without an initialized Kotlin runtimeKT-85423Native: ObjC export throws and breaks IDE highlighting and navigation support due to mangling inconsistencyKT-86069Native: the annotation target for@ObjCEnum.EntryName` is wrongKT-83504ObjCExport: Source unresolved dependencyKT-83505ObjCExport: Transitive unresolved dependency
Native. Runtime
KT-85897[K/N] C Export sometimes hangs on termination on mingwKT-85811K/N: FirNativeGCTestGenerated.testMemoryDump failsKT-85882Performance improvement in Kotlin_getCurrentStackTrace: use vectorized/range-checkless copyKT-85077Native: if CoreSymbolication fails, report this to users with a troubleshooting guide
Native. Runtime. Memory
KT-86432Native: PMCS GC bug - alive object seems to be freed prematurelyKT-85457Native: TSAN tests fail with Xcode 26.4
Native. Swift Export
New Features
KT-80000Swift Export: Sealed ClassesKT-66888Swift Export: cross-language subtypingKT-87503Swift Export: Support properties in cross-language inheritanceKT-87068Swift Export: default interface method implementationsKT-86890Swift Export: Support async calls in cross-language subtypingKT-79477Make Swift Export work handle@OptIndeclarations well
Fixes
KT-66890Swift Export: cross-language protocol conformanceKT-66889Swift 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-86463Swift Export: nested sealed interface in kotlinx-datetime (DateTimeFormatBuilder.WithDate) is referenced but never emitted, causing Swift compile errorKT-87088Protocols that came from cinterop should lose theProtocolsuffixKT-87150[Swift Export] member function with param named result fails to compileKT-87144[Swift Export] nullable closure in member function fails to compileKT-87106[Swift Export] suspend closure with context parameter fails to compileKT-86780Native: Swift Export coroutines tests are flaky on the CIKT-87022[Swift Export] Optional Range results in incompilable 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]releasefunction conflicts with unavailableNSObject.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-85950Add support of "com.android.kotlin.multiplatform.library" plugin [ABI validation]
Tools. Build Tools API
New Features
KT-84401BTA: implement Kotlin/JS incremental compilation supportKT-78206BTA: implement basic Kotlin/Wasm compilation supportKT-78204BTA: implement basic Kotlin/JS compilation supportKT-78207BTA: implement basic Kotlin/Wasm binaries linking supportKT-78205BTA: implement basic Kotlin/JS binaries linking supportKT-78224BTA: implement support for metadata compilationsKT-85663Make BTA JS Compiler Arguments Type-SafeKT-66425BTA: implementClasspathEntrySnapshot.hashCodeKT-84598[BTA] Expose API Version via Public PropertyKT-85421BTA: validate arguments for invalid characters and guide users to feedback issue
Fixes
KT-85556BTA: SearchPathType compiler arguments (classpath, -Xklib, -Xmodule-path) not resolved to absolute pathsKT-86703Support JVM classpath metadata for KMP incremental compilationKT-86876Migrate WasmBinaryTransform to BTAKT-78209BTA: split Kotlin/Wasm compilation and linking argumentsKT-86916[BTA] adopt availableSinceVersion for WASM option holdersKT-85696BTA: deepCopy() in JvmCompilerArgumentsImpl uses string round-trip, corrupting delimiter charactersKT-85958argumentsToStrings produces corrupted arguments when value starts with "@"KT-86059[BTA] Handle enum parsing errors related to case sensitivityKT-86156BTA: report all invalid argument values at once instead of stopping at the first oneKT-86702[BTA] Drop JVM classpath metadata argumentsKT-86676Add Gradle property to control KMP JVM metadata usage in incremental compilationKT-87040Track source-file-to-metadata-fragment mapping when writing KLIB metadataKT-78208BTA: split Kotlin/JS compilation and linking argumentsKT-86243[BTA] Compat package has wrong version of compiler on compile classpathKT-88348MessageCollector in IncrementalCompilerRunner drops diagnostics IDsKT-87743MakeKotlinCoreEnvironment.disposeApplicationEnvironment()unnecessary for K2 BTA compilationKT-87370JS/Wasm history IC fails when compiler plugin generates callablesKT-87597[BTA] KotlinCompilationProcessFailedException causes LinkageErrorKT-87034Introduce SerializedFirMetadata to track source file per metadata fragmentKT-87152Decouple JVM IC-specific metadata writing logic from common metadata componentsKT-85504Kotlin Daemon crashes if there is a typo in compiler args added as key-value freeCompilerArgsKT-82986BTA: setting unknown options may pass silentlyKT-86734Add Kotlin 2.4.0 into backward-compatibility testsKT-85093[BTA] Resolve Forward Compatibility Test Blocker for X_IGNORED_ANNOTATIONS_FOR_BRIDGESKT-85787BTA: Distinguish typed argument values from raw string values in compatibility test descriptorsKT-85736BTA tests: automate detection of missing versions in compatibilityTestsVersionsKT-85505Kotlin 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-86117CRI:fileIdis 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-86473Report usages of removed CLI arguments as warningsKT-86202Warn against disabling a language feature with a parametrized compiler argument that's already stable
Performance Improvements
KT-87868In-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-88475IncrementalCompilationComponents instances are not being called anymoreKT-85591RemoveXklib-normalize-absolute-pathcompiler argumentKT-86314Add a CLI flag which controls ELA statusKT-86284Deprecate using PSI mode from compiler CLIKT-86405Generalize reporting of deprecated CLI argumentsKT-87057Return a legacy JVM KMP IC implementation until the proper one is implementedKT-85003Fix name check for@JvmNameand@JvmExposeBoxedKT-86746Drop all org.jetbrains.kotlin.asJava usages from CLIKT-85813Inconsistent behavior of -Xcontext-parameters warning depending on daemon/in-processKT-85920Remove MessageCollector Usage from ErrorReportingContextKT-85898Register all KtDiagnosticsContainersKT-85187Add compiler argument for companion blocks & extensions
Tools. CLI. Native
KT-87123Phased klib compiler does not read-native-libraryargumentsKT-85538Native: allow using JNI in CLI tools on JDK 24+ and Unsafe on JDK 24
Tools. Compiler Plugin API
KT-63881Allow registering generated properties in IrGeneratedDeclarationsRegistrarKT-86860GeneralizegeneratePropertiesto supportFirVariableSymbolbut not onlyFirPropertySymbol
Tools. Compiler Plugins
New Features
KT-86842Lombok: introduceARGUMENT_IS_NOT_SUPPORTEDdiagnostic
Fixes
KT-86145Support for@EqualsAndHashCodeannotation on kotlin classesKT-81622Support@Slf4jand other logging annotations (@CommonsLog,@Flogger,@JBossLog,@Log4j,@Log4j2,@XSlf4j)KT-85758Support for@Logannotation on Kotlin classesKT-88179Power-assert: IrGenerationExtensionException (StringIndexOutOfBoundsException) when assert() wraps a context-parameter function callKT-87137Lombok: builder methods aren't resolved if use an existing builder and genericsKT-87044[DataFrame] Plugin generates a spurious backing field for generated column accessorsKT-86225Atomicfu generates IR with out-of-scope type parametersKT-87153Lombok: merge modulecommonintok2KT-86980Delete sources of K1 parts of compiler pluginsKT-87053Lombok:@NoArgsConstructorfactory references an out-of-scope type parameter of a generic classKT-86839Handle@Logon Java classesKT-86985Can't use@JvmNameon class member properties of JPA entities even when using the 'final' modifierKT-86286all-openplugin makes@JvmRecordclasses non-final, causing compilation error "'@JvmRecord' class must be final"KT-86774PowerAssert: allow changing the last parameter to a different type if not specifiedKT-86620Lombok incorrectly detects clashing constructor with varargs argumentKT-86773PowerAssert: sorting of possible overloadsKT-83121Lombok. A constructor without parameters is available for a class with@Dataand staticConstructorKT-84059Lombok. CANNOT_INFER_PARAMETER_TYPE for toBuilder function if@Builderis applied to a generic classKT-84058Lombok. NoSuchMethodError for the builder function when@Builderis applied to the methodKT-86058Check the frontend-owned plugins for the Companion blocks and extensionsKT-86065Scripting plugin addsHashMap<K, V>(with HashMap's own out-of-scope type parameters) as a supertype of the synthetic REPL state classKT-86064Plugin sandbox generatesIrClassReferenceImpltyped asKClass<T>whereTis KClass's own type parameterKT-86063PowerAssert plugin generates IR call tolistOf<T>with an out-of-scope type parameter as its typeKT-86070PowerAssert: Enum entries should not be displayedKT-85472Compiler crash if use unexpected value of AccessLevel in a lombok annotationKT-85693Don't generate declarations withNONEaccess level
Tools. Compiler plugins. Compose
KT-88028Compose compiler: IndexOutOfBoundsException in ComposableTargetAnnotationsTransformer when overriding a@Composablefunction with default parameter in another moduleKT-87326Compose compiler plugin: NoClassDefFoundError / IrLinkageError at runtime when calling@Composableinterface method with default parameter across modules
Tools. Compiler plugins. Serialization
KT-86224Serialization plugin generates IR with out-of-scope type parameters
Tools. Daemon
KT-71048KotlinCompileDaemon compatibility not discriminated by JVM versionKT-75840Almost 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-80509Gradle: implement metadata compilation through BTAKT-78216Gradle: implement Kotlin/Wasm compilation and linking through BTAKT-78214Gradle: implement Kotlin/JS compilation and linking through BTAKT-87481Introduce DelicateKotlinGradlePluginApi Opt-InKT-85709Write Kotlin Daemon warnings and Errors to Problems API
Performance Improvements
KT-88084Each build leaves a strong reference to an instance of BuildMetricsService
Fixes
KT-83679Add ERROR deprecation for CleanableStore and CleanDataTaskKT-87992Compatibility with Gradle 9.7 releaseKT-87256KotlincOutputParser fails to parse compilation errors under Gradle when task path prefixes are enabled (Kotlin 2.4.20-Beta1)KT-87509Stop using Gradle Problems API severity fieldKT-87508Wire buildNeeded/buildDependent only for Gradle <9.5.0KT-87994Run Gradle integration tests against Gradle 9.7KT-87993Compile against Gradle API 9.7KT-85568Use compiler diagnostic identifiers in KGP Problems API reportingKT-85567Carry compiler diagnostic identifiers through Build Tools API messagesKT-85942Carry compiler diagnostic identifiers through MessageCollector infrastructureKT-84957Add configuration time build metricKT-87911Report an actionable diagnostic when .kar files reach compilation classpaths in Kotlin 2.4.20KT-86435ReplaceFile.ensureParentDirsCreated()with NIO PathcreateDirectories()KT-86827[KGP] Add KgpJson helper and bump kotlinx-serialization-json 1.4.0→1.4.1KT-86039Compile against Gradle 9.6.0 APIKT-86040Run tests against the Gradle 9.6.0 releaseKT-78294Applying kotlin-dsl in buildSrc with org.jetbrains.kotlin.ecosystem in settings.gradle.kts causes sync failureKT-87241CleanDataTask.exec() deprecation message unreachable - task fails with cryptic UninitializedPropertyAccessException insteadKT-87187Bump Apple deployment targets to match Xcode 27KT-86515Replace mavenLocal() with build-dir repo in KGP functional testsKT-86429Deprecate KGPcontentEquals()utility, move it to internal utility functionKT-76515IC misses dependency to recompile when named kt file with JvmField instructed property was replaced with an object with the same nameKT-87186Fix failing testSwiftExportCoroutinesKT-87160Fix failing Swift Export testExportingTransitiveDependencies testKT-85689DeleteprepareDepsfrom kotlin repoKT-86118CRI: Enablingkotlin.compiler.generateCompilerRefIndexdoes not invalidatecompileKotlinUP-TO-DATE stateKT-85901[Gradle] Refactor KGP functional test task configuration to use file-backed system propertiesKT-66381Build 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-55452Values of the compiler arguments set via KotlinCompile task configuration are duplicated by the KaptGenerateStubs taskKT-57653Explicit API mode is not enabled when free compiler arguments are specified in Gradle project
Tools. Gradle. Compiler plugins
KT-84811PowerAssert: Gradle configuration option for default sourcesets to transform
Tools. Gradle. JS
New Features
KT-87484Update Browser JS Test DSL after DM for 2.4.20-Beta2KT-86260Integrate Playwright with JS Tests pipelineKT-86707Cover new Browser Js Test DSL with diagnostics and invariant checksKT-86715Add ability to configure Dev-server URL (or specification) to run browser tests fromKT-87483Mark parts of JS Test DSL with DelicateAPIKT-86630Introduce mocha browser runner for kotlin test as part of kotlin-web-helpers
Fixes
KT-87647Upgrade tooling NPM dependencies versions for 2.4.20KT-85854Improve AbstractSetupTask loggingKT-84724NPM dependency versions do not invalidate KotlinWebpack task cache key in kotlin multiplatform projectKT-84790Use package.json as 'source of truth' for KGP npm tooling dependenciesKT-87052JS tests: browser downloading hangs in WindowsKT-86958Unclear error for js test failure on timeoutKT-87674JsBrowserTestsIT test fails with an error on LinuxKT-86911Configured post-processing for playwright reports missing an input or output annotationKT-87501Throw an error if new JS test DSL is used with WasmKT-87600Playwright install on multiple subprojects cause Gradle build to failKT-87023Add ability to change / set path to custom browser executableKT-86922Correct browserDefaults timeoutKT-86106Fix 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-82398KMP Separate Compilation: missing fragment dependencies to commonized cinteropKT-88154Swift PM lock file is ignored on switching version fromexacttofromKT-88107clean task leave swiftpm checkout in root build directoryKT-88104dumpXcodebuildArgs task fails if the root build directory is removedKT-87790Kotlin 2.4.0 increases Gradle sync timesKT-83917compileCommonMainKotlinMetadata 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-84852Wire linkage package integration check with Swift Export's embedAndSignKT-84420Figure out the handling of XCFramework when SwiftPM dependencies are involvedKT-85797Use faster findMacros in SwiftPM import cinteropsKT-86155Print what changed in the linkage packageKT-86667Switch off sandboxing in integrateEmbedAndSignKT-86047Suggest CocoaPods -> SwiftPM migration skill and documentation on cocoapods plugin application
Fixes
KT-86995Cocoapods plugin: pass all frameworks to the compilerKT-86015Swift export binary doesn't see main compilation cinterop outputKT-85468Don't fail IDE import if the SwiftPM import pipeline has failed somewhereKT-86288Eliminate redundant SwiftPM fetch tasks using shared fingerprinting strategyKT-87196Ld override falls apart in Xcode 27KT-87667SwiftPM import can deadlock when joiner tasks submit blocking workers before owner startsKT-84223Move local SwiftPM package IO validation and name inference from configuration time to execution timeKT-85961integrateLinkagePackage without parameters fails with an obscure errorKT-84238SPM Import: Ensure generated Package.swift preserves symlinks in local package paths
Tools. Gradle. Wasm
New Features
KT-86633K/Wasm: Introduce wasmtime support as a runtime for wasm-wasi target in KGPKT-87258K/Wasm: Introduce a way to use multimodule compilation only for developmentKT-86919K/Wasm: Allow to configure wasm compilation mode
Fixes
KT-88566K/Wasm: Webpack configuration generated after user defined chunks from the webpack.config.d directoryKT-88285WasmJS tooling version overrides are ignoredKT-88115"Your lockfile needs to be updated": Outdated bundled yarn.lock breaks kotlinWasmToolingSetup with --frozen-lockfileKT-86878K/Wasm: Update wasmtime to 46.0.0KT-86673K/Wasm: update binaryen to 130KT-82419wasm failed to compile on windows arm64KT-85688K/Wasm: Remove setting of failOnNoDiscoveredTests in Wasm Gradle testsKT-86054K/Wasm: Not set sourceMapBaseDir if there is no sourceMap property in JS and WasmKT-85861K/Wasm: Upgrade NPM dependenciesKT-85806K/Wasm: Do not rewrite native_implementations.kt file path in source map
Tools. Gradle. Xcode
KT-86858Eager SwiftPM check in XCFramework task crashes if Kotlin extension is not yet registered
Tools. Incremental Compile
KT-85074IC: false build success when anonymous class fails to implement new abstract member from another module's interfaceKT-86781Deprecate FIR based incremental runnerKT-87217JS/Wasm IC: "Could not close incremental caches" with "Storage is already registered"KT-85241IC: star-import conflicts are not re-evaluated after adding new declarations, leading to missed ambiguity errorsKT-60584IC does not propagate RequiresOptIn level change effect transitivelyKT-84271Kotlin Incremental compilation failure "The following FqNames can't be derived from DirtyData.dirtyLookupSymbols"KT-85740Incremental compilation misses classpath removal when removed type is used only in a dependency's method signatureKT-85642IC: Classpath snapshot cache may serve stale entries when snapshot file is overwritten at the same path
Tools. Kapt
KT-85195KAPT: IntroducedAt is not supported in KAPTKT-86550Kapt: properties with context parameters are translated incorrectlyKT-86003Remove MessageCollector usage from kaptKT-85453Make :kotlin-annotation-processing-cli:test cacheable
Tools. Maven
KT-83374CRI: 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-61667Maven: -Xjdk-release=20 leads to "'-Xjdk-release=20' option conflicts with '-jvm-target 1.8'. Please remove the '-jvm-target' option"KT-84163Maven smart defaults: and overrides not respected
Tools. Performance benchmarks
KT-85233Refine benchmarks module and add new custom long-running tests to it
Tools. REPL
KT-86290Drop GenericReplTest & LegacyReplTest
Tools. Scripts
KT-87958K2 scripting: FirPropertyImpl transformation crash when using class from@file:Import-ed script in 2.4.0+KT-87041Scripting: classpath extraction fails to extract stdlib from kotlincKT-87331Scripting: compiling scripts with kotlinc doesn't update the compilation config after refinementKT-87042Scripting cache test fails on thekotlinrunnerKT-86391Drop SkipStandaloneScriptsInSourceRootsKT-85105Scripts: JVM backend internal error (IR lowering) when scratch file contains anonymous objectKT-85103Exception while generating code when explain destructuring decls