2.3.0
Analysis API
KT-80082 K2. False positive “Cannot resolve method” for self-bounded generic with wildcard return type in Java interopKT-80303 Move :native:analysis-api-klib-reader to :libraries:tools
Analysis API. Code Compilation
KT-70860 K2 IDE / Kotlin Debugger: CCE “java.lang.String cannot be cast to java.lang.Void” on evaluating not-null variable on the line with assigning null to that varKT-78554 K2 IDE / Kotlin Debugger: ISE “No override for FUN IR_EXTERNAL_DECLARATION_STUB” on calling toString() for local class instance during evaluationKT-73201 K2 IDE: Error while evaluating expressions with local classes
Analysis API. FIR
KT-81378 Expected expression ‘FirFunctionCallImpl’ to be resolved caused by suspend {}KT-80473 Add events for tracking LL activitiesKT-46375 Analysis API: Support cross-file class redeclaration checks using indicesKT-80471 Analysis API: Deduplicate equivalent call candidates in resolveToCallCandidatesKT-79653 [Analysis API] ContextCollector: BODY context of enum classes doesn't contain enum entriesKT-75858 K2 AA: False positive ‘property must be initialized’ on incremental analysis with ‘field’ usage and semicolon in setterKT-80231 AnnotationArgumentsStateKeepers doesn't restore the initial annotation in some casesKT-80233 Pull mutation out of AnnotationArgumentsStateKeepersKT-71466 LLFirBuiltinsSessionFactory uses createCompositeSymbolProviderKT-76432 JavaClassUseSiteMemberScope: Expected FirResolvedTypeRef with ConeKotlinType but was FirUserTypeRefImpl
Analysis API. Infrastructure
KT-80717 Support IntelliJ Bazel build in the Kotlin Coop development mode
Analysis API. Light Classes
KT-80656 Duplicate no-args constructor in PSIKT-60490 Symbol Light Classes: Property accessors from a delegated interface don't present in the delegating classKT-79689 SymbolLightClassForClassLike.toString() causes PSI tree loadingKT-80690 Private interface functions are not present in light classesKT-80256 K2: Certain actions in JPA code causes infinite PIEAE: “Element class CompositeElement of type REFERENCE_EXPRESSION (class KtNameReferenceExpressionElementType)”KT-79012 Add a high-level overview of light classes
Analysis API. Providers and Caches
Fixes
KT-81476 Analysis API: AlreadyDisposedException from low-memory cache cleanupKT-80911 Analysis API: Execute session invalidation in a non-cancelable sectionKT-81242 Analysis API: Add UUID/lifetime properties to LL FIR session structure loggingKT-80622 Analysis API: Visualise LL FIR session structure & weightKT-80904 Analysis API: “Invalid dangling file module” exception during session invalidationKT-78882 K2 AA: Calling containingSymbol on getProgressionLastElement causes exceptionKT-58325 Analysis API: Combine LLKotlinStubBasedLibrarySymbolProviders in session dependencies (optimization)KT-77825 Analysis API: CheckersComponent consumes a lot of memory while being unused in LL FIR sessionsKT-76526 Incorrect built-in module is provided for non-JVM sources in StandaloneKT-62549 Analysis API: Cache callables in combined Kotlin symbol providersKT-70721 LL FIR: investigate possibility of moving LLFirFirClassByPsiClassProvider . getClassByPsiClass (PsiClass) to symbol providersKT-72998 Analysis API: Introduce getClassLikeSymbolByPsi to LL FIR symbol providers
Analysis API. Standalone
KT-81108 AA: java.lang.ClassCastException: class org.jetbrains.kotlin.fir.FirBinaryDependenciesModuleData cannot be cast to class org.jetbrains.kotlin.analysis.low.level.api.fir.projectStructure.LLFirModuleDataKT-80573 Potential performance issue on class ID computationKT-80559 Try to optimize KotlinStandaloneDeclarationProviderFactory startup for testsKT-71706 Analysis API Standalone: StandaloneProjectFactory.createSearchScopeByLibraryRoots creates inefficient file-based search scopes
Analysis API. Stubs and Decompilation
Performance Improvements
KT-77097 Support ReplaceWith deprecation annotation argument via stubs
Fixes
KT-80350 Drop K1 decompilerKT-77082 StackOverflowError in CreateFreshTypeVariableSubstitutorStage.shouldBeFlexibleKT-80798 Improve stubs tests coverageKT-75318 Read context parameter fields from metadata in CallableClsStubBuilderKT-77874 AA disagrees with the compiler on descriptions of context parameters from binaries in messages for context argument ambiguity errorsKT-80276 Implement native coping for stubsKT-79780 Decompiled MultifileClass has Facade kindKT-79398 isClsStubCompiledToJvmDefaultImplementation flag is inconsistent for compiled and decompiled stubsKT-79798 Prettify stub usages in LL stub-based deserializerKT-78949 AbstractLLStubBasedResolutionTest: tests against real stub-based filesKT-80251 Inconsistent decompiled and compiled stub for properties with an initializer and a delegateKT-74547 Implement decompiler for K2KT-79555 Move KotlinFileStubImpl serialization/deserialization to the Analysis APIKT-79487 “null DefinitelyNotNullType for ‘T’” from decompilerKT-60764 Stub Builder: fix differences between K1 and K2 stub building on decompiled filesKT-79484 An empty enum class with a member decompiles with a synthetic errorKT-79730 Decompiled files have an extra Kt suffixKT-79483 data modifier is not present on object modifierKT-75398 Local classes from scripts have ClassId in stubsKT-79412 Context parameters with type annotations cause inconsistency errors while building stubs
Analysis API. Surface
New Features
KT-80084 Provide endpoints for Analysis API to understand when the context sensitive resolution is usedKT-64340 Analysis API: no way to get a type of vararg parameterKT-68387 AA: provide context for type approximations
Performance Improvements
KT-80713 Optimize KaDeclarationSymbol#visibility for class-like symbolsKT-79097 KaFirNamedFunctionSymbol#isSuspend shouldn't trigger resolutionKT-79095 isOverride shouldn't trigger resolution if not compiler plugins present
Fixes
KT-80234 Incorrect value of isActual for the implicitly actual constructor of annotation classKT-81132 Use KaSession instead of a particular KaSessionComponent for context parameter bridgesKT-81129 K2: KaSymbolInformationProvider#importableFqName: should return null for dynamic declarationsKT-81128 K2: KaSymbolInformationProvider#importableFqName: should return null for error destructuring declarationsKT-81127 K2: KaSymbolInformationProvider#importableFqName: should return null for anonymous functionsKT-81126 K2: KaSymbolInformationProvider#importableFqName: should return null for enum entry initializer constructorsKT-81125 K2: KaSymbolInformationProvider#importableFqName: should return null for property accessorsKT-81124 K2: KaSymbolInformationProvider#importableFqName: type alias constructor should have a reference to the type alias and not to the underlying classKT-70127 Analysis API: ‘KaFirReceiverParameterSymbol’ does not implement ‘KaFirSymbol’; leads to exception from importableFqNameKT-81123 Reimplement KaFirSymbolInformationProvider#importableFqNameKT-81122 Drop KaImportOptimizerKT-78093 Add bridges for context parametersKT-79772 Migrate from ‘validityAsserted’ to ‘withValidityAssertion’KT-79328 K2 AA, isUsedAsExpression: Unhandled Non-KtExpression parent of KtExpression: class org.jetbrains.kotlin.psi.KtImportDirectiveKT-80366 IllegalStateException from KaFirStopWorldCacheCleanerKT-80274 Merge AbstractMultiModuleSymbolByPsiTest to AbstractSymbolByPsiTestKT-80352 KaBaseResolutionScope.contains(PsiElement) always returns false for Android light classes (e.g. synthetic R.java classes)KT-80178 Incorrect modality for an abstract interface function with a redundant open modifierKT-79129 [Analysis API] KaFe10TypeCreator.buildClassType cannot build builtin types by class idsKT-79143 AA: argumentMapping contains an expression that is not an argumentKT-59857 KaExpressionTypeProvider#returnType shouldn't throw an exception for class like declarationsKT-79667 Enable resolve on java record components in standalone modeKT-73050 KaFirSymbolRelationProvider#expectsForActual: suspicius logic for KaReceiverParameterSymbolKT-78904 KaBaseWriteActionStartedChecker throws when no additional WA was doneKT-79281 Add KDoc to KaTypePointer#restoreKT-78597 KaUseSiteVisibilityChecker returns false for internal functions exposed via implicit receiverKT-71705 FIR api impl: Postfix increment expression's expressionType is Unit when incrementing array elementKT-75057 Analysis API: Reference to object through typealias in invoke operator call leads to original type
Backend. Native. Debug
KT-79848 Flaky debugger tests in opt.debug/cache.*/GC.CMS/GC.sch.ad/alloc.custom configuration
Backend. Wasm
New Features
KT-59032 Support instantiation of annotation classes on WASM
Fixes
KT-76204 K/Wasm: support generating a wasm module per kotlin module/klibKT-79357 K/Wasm: store data for string literals in utf8 for Latin1KT-82075 K/Wasm: kotlin.wasm.internal.getSimpleName crashes on iOS Safari older than 26KT-79244 [Wasm] Drop K1-specific tests, testrunners and test directivesKT-69621 K/Wasm: Consider enabling support for KClass.qualifiedName by defaultKT-80397 K/Wasm: turn on by default using a new version of the exception handling proposal for wasm-wasi targetKT-81372 K/Wasm: JsException: Exception was thrown while running JavaScript code on Safari 18.2/18.3KT-80018 K/Wasm: exceptions don't work properly in JavaScriptCore (vm inside Safari, WebKit)KT-66072 K/Wasm: improve how exceptions work in JS interopKT-80106 devServer in Kotlin/Wasm overwrites defaults, causing missing static pathsKT-80210 Wasm: “Unexpected non-external class: kotlin.Nothing” caused by JsExport with JsPromiseKT-80555 WASM IC: Can't link symbol on kotlinx.coroutines on fresh masterKT-80415 WasmJs Number Elvis Operator CrashKT-76509 WasmJS: ReferenceError: Temporal is not defined caused by “Redundant reference to unused external results”KT-79317 [Wasm] Do not throw CCE for ExcludedFromCodegen declarationsKT-78036 K/Wasm: generate a message with “expected” and “actual” types in case of CCE
Compiler
New Features
KT-80461 K2: false positive NO_ELSE_IN_WHEN for complex sealed hierarchyKT-77676 K/N: enable typechecks and the casts optimization pass in debug mode by defaultKT-79185 Support local type aliasesKT-80837 Warn about extension function with a context shadowed by memberKT-80768 Warning on overloading by a superset of context parameters in class contextKT-80031 Check spotbugs‘s @CheckReturnValue in Kotlin’s unused return value checkerKT-79380 Native: add performance measurement for the rest of backend phasesKT-79381 Native: add performance measurement of LLVM phasesKT-80222 Implement the prohibition of always-false is checks for definitely incompatible typesKT-79295 Parse and build raw FIR from new short and full forms of positional destructuring with square bracketsKT-74810 Support typealiased/mapped Java types in unused return value checkerKT-71244 Incorporate existing @CheckReturnValue annotation(s) into Kotlin's unused return value checkerKT-79922 Record ‘MustUse/ExplicitlyIgnorable’ state for overrides even in disabled RVC modeKT-79920 Store ‘Explicitly ignorable’ state of function/property in the metadataKT-79690 Implement a USELESS_ELVIS_LEFT_IS_NULL with elvis expressionKT-79296 Implement/adapt diagnostics for new destructuringKT-79298 Report errors on new destructuring syntax in K1
Performance Improvements
KT-81617 Native: casts optimizations pass explodes on deep nested loopsKT-80554 Kotlin/Native: investigate performance hit from always-on llvm pass profilingKT-81340 K/N: severe compilation time degradation after turning on casts optimization passKT-80370 Add NO_INLINE attribute to some of runtime functionsKT-80167 K/N: condense the nodes and edges in DevirtualizationAnalysis constraint graphKT-79535 Revert incorrect SAM conversion enhancements brought to K2
Fixes
KT-79979 K2: ClassCastException when overriding extension property with delegationKT-82590 ClassCastException when instantiating class with generics implemented by fun interface and lambdaKT-78881 K2: False positive “Assigned value is never read” in composable functionKT-79276 Dexing fails with “Cannot read field X because is null” with 2.2.0KT-79547 “UnsupportedOperationException: Not supported” with inlining and value classesKT-79442 “Multiple annotations of type kotlin.coroutines.jvm.internal.DebugMetadata”: 2.2.0-Beta1 generates broken code with JVM default suspend methods in interfacesKT-80744 Kotlin failure on lambda with type parameterKT-81618 “Number of arguments should not be less than number of parameters” on JVM on Kotlin 2.3.0-Beta1KT-82869 Green-to-Red change in 2.3 after prioritizing non-suspend-function-type overloadsKT-79611 “IllegalStateException: couldn't find inline method”: Exception during incremental compilationKT-78895 Consider dropping isLocalInFunction and FirClassLikeDeclaration.isLocalKT-82040 Native: ClassCastException: PointerInputChangeKT-81924 K2: “Cannot infer type for this parameter”, “Overload resolution ambiguity between candidates”KT-80864 K2: Missing Val cannot be reassigned diagnostic for Java final fields (crashes in runtime with IllegalAccessError)KT-71420 Report error when reified type parameter is inferred to intersection typeKT-79451 Rework approach to recursive types approximationKT-78413 Kotlin Debugger: value classes as context parameters have incorrect names in Variables View during debuggingKT-82138 Debugger: Cannot evaluate JvmInline value class parameterKT-82381 ArrayIndexOutOfBoundsException while FirDiagnosticsCompilerResultsReporter tries to print code as part of a warning logKT-81068 Corrupted Unicode paths passed or used in the compilerKT-79783 KDoc parser: Links aren't rendered if the line has an indent of 4 or moreKT-80549 Call of Java method with type parameter bounds: Expected FirResolvedTypeRef with ConeKotlinType but was FirJavaTypeRefKT-82132 False-positive type mismatch with -language-version 2.2KT-81988 K2: Any?.toString() causes NPE inside lambda with JavaKT-81652 Native: ClassCastException: ApplicationForegroundStateListener.CompanionKT-76479 Backend. JVM: Report errors on exposure of types in inline functionsKT-82022 K/N: Unexpected “Annotation @JvmInline is missing on actual declaration” warning with value classesKT-80250 ISE: flow for PostponedLambdaExitNode not initialized - traversing nodes in wrong order?KT-76344 Drop language version 1.9 for non-JVM platformsKT-76343 Drop language version 1.8KT-80330 K2: NPE at org.jetbrains.kotlin.fir.resolve.calls.FirCallResolver.createResolvedNamedReferenceKT-80400 K2: AbstractMethodError on fun interface implementation inheriting from an interface compiled with -jvm-default=disableKT-9111 Improve diagnostic for call with access to outer class from nested classKT-78280 Implement the sourceless KtDiagnosticsKT-74999 K2: KotlinNothingValueException within Extension FunctionKT-81254 “AssertionError: There should be at least one non-stub type to compute common supertype”: Parser issue during generic type inferenceKT-53237 NI: Frontend ignores generic bound when inferring typesKT-81186 Only allow local type aliases in REPL/scripts until full stabilizationKT-80929 IC Native: Undefined symbols on ktorKT-81657 K2: put warning about “exposing package-private in internal” under experimental language featureKT-81241 Konanc exit while lowering org.jetbrains.kotlin.ir.util.IrUtilsKt.remapTypeParametersKT-74819 K2: False-positive overload resolution ambiguity for flatMap inside PCLAKT-81547 Stabilize DFA-based exhaustivenessKT-79274 Frontend implementation of name-based destructuringKT-79506 Contract for getter and setter doesn't work if a property is called from another moduleKT-58988 K2: Deprecate exposing package-private parameter of internal methodKT-80711 IC Native: NPE during link on ktorKT-77727 Move some of the extra checkers to the default listKT-76136 Switch latest stable version in Kotlin project to 2.3KT-81257 Native: “Unexpected boolean predicate” when generating ‘static_cache’KT-81525 Report REDUNDANT_SPREAD_OPERATOR on (*) instead of argument expressionKT-81522 Fix Light Tree SPREAD_OPERATOR diagnostic positioningKT-77008 K2: Incorrectly force casting to a wrong typeKT-78127 K2: Too precise inference for if/when with expected type in assignmentKT-80208 K2: ClassCastException: “class java.util.ArrayList cannot be cast to class java.lang.Void” type inference picks Void for generic functionKT-75797 Native: find a way to handle generates C bridges in inline functionsKT-78819 K2: False positive ABSTRACT_MEMBER_NOT_IMPLEMENTED in KJK hierarchyKT-80003 Kotlin/Native: deprecate eager GlobalData initializationKT-79231 Inconsistent InnerClass entry flags for abstract inner enumKT-20677 Improve diagnostic about implicit default constructor absence for expected annotation classKT-81385 Missing error of nullable expression in class literal in case of reified type parameterKT-81251 Smartcast doesn't work for an effectively private inline functionKT-81245 Automatic smart cast on properties with EBF is allowed on inlined property accessorsKT-81222 Custom getter is allowed on a property with redundant EBFKT-80795 Wrong type cast is added for IMPLICIT_COERCION_TO_UNITKT-81141 Fix FirUnsupportedArrayLiteralChecker to forbid array literals inside non-annotation contextsKT-81383 Return type of anonymous function used as run argument is incorrectly inferred to NothingKT-80577 “Return type mismatch” for self-referential types used as generic parametersKT-75215 KDoc: references from @param tag are rendered as plain textKT-79887 K2 Compiler Internal Error in ‘FirFakeOverrideGenerator.checkStatusIsResolved’ MethodKT-78125 false-negative shadowed contextual overload warning on local declarationsKT-81198 Move type and type parameter annotations from jvm_metadata.proto to metadata.protoKT-81057 Wrong handling of boxing during redundant casts optimizationKT-81191 K2: “null cannot be cast to non-null type ConeTypeParameterLookupTag” with invalid codeKT-80285 IJ monorepo: broken compilation after 2.2.20-RC updateKT-81115 Allow converting lambda with explicit parameter when assigning to variable of an extension function typeKT-74588 Redundant checkNotNull intrinsics instructions for Java generic methodsKT-78390 Unmute FusStatisticsIT.testKotlinxPlugins() after AtomicFU updates kotlin-metadata-jvmKT-79369 Forbid typealiasing for all compiler-required annotationsKT-69294 K2: Report CONSTRUCTOR_OR_SUPERTYPE_ON_TYPEALIAS_WITH_TYPE_PROJECTION_ERROR instead of EXPANDED_TYPE_CANNOT_BE_INHERITED after switching to LV 2.2KT-81064 Wrong safe call null check handling during redundant casts optimizationKT-80871 StackOverflowError on AnnotationTarget.TYPEKT-80908 K2: Compiling type annotation with self-annotated vararg fail with exceptionKT-81018 ISE “IR class for Foo not found” on missing dependency when lowering SAM constructorKT-80936 NON_PUBLIC_CALL_FROM_PUBLIC_INLINE : @PublishedApi doesn't work for fun interfacesKT-75748 StackOverflowError when reading array from metadata annotationsKT-80606 KotlinIllegalArgumentExceptionWithAttachments when using property itself in explicit backing field initializationKT-80940 K2: Exception in FIR2IR with AnnotationTarget.TYPE with self-annotated non-vararg default argument and usage in child moduleKT-80538 KaFirDiagnostic.EmptyRange doesn't work in most of the casesKT-80524 Class is not abstract and does not implement abstract member when compiling with kotlinc-jklibKT-80597 Apply fix for CVE-2024-7254 to our fork of protobuf 2.6.1KT-80849 K2: ConstValueProviderImpl doesn't distinguish files with same name and packageKT-80602 Exhaustiveness checker improvements for 2.3KT-80735 Support || return/throw shortcut in unsed return value checkerKT-79651 Report a warning about an unused return value only on the function nameKT-80719 False positive: “Redundant visibility modifier”: when overriding protected methods as “public”KT-80434 K2: DSL marker doesn't work with lambda fieldsKT-80383 Getter without a body is allowed on a property with an explicit backing fieldKT-80446 Explicit visibility modifiers are allowed on EBFKT-80378 ClassCastException on callable reference to a property with EBFKT-80377 Fir2Ir: “Cannot determine expected receiver type” for callable reference to a property with EBF outside of classKT-80455 K2: StackOverflowError in when exhaustiveness checker on red codeKT-72862 [Native caches] Umbrella for failing codegen/box tests for corner cases in synthetic accessorsKT-20278 NO_TYPE_ARGUMENTS_ON_RHS: Confusing diagnostic for inner class of generic outer classKT-80418 Property with EBF with functional type isn't resolved if its type is AnyKT-80469 Functional type from property is always used for explicit backing fieldKT-80535 Missing INITIALIZER_TYPE_MISMATCH for EBFKT-80445 Private visibility is possible for a property with EBFKT-80164 Move name generation for unnamed context parameters to frontendKT-80684 Line breaks are lost in multi-line diagnostic messages since 2.3.0KT-78112 RETURN_VALUE_NOT_USED is reported for local function even if it isn't marked with annotation in CHECKER modeKT-48311 Incorrect LINENUMBER after if with a suspend callKT-80688 Bad SourceDebugExtension caused by enhanced coroutines debuggingKT-73851 Native: compilation fails with ClassCastException with genericSafeCasts=trueKT-77593 Add a warning when @IgnorableReturnValue is inconsistent between expect/actual functionsKT-79386 Confusing error message when named parameters are used for java method callsKT-80600 K2: Private and final modifiers are allowed on setter of open delegated propertyKT-77101 Invoke on callable reference is considered ignorableKT-79923 Remove lookup of @IgnorableReturnValue annotation from FirReturnValueOverrideCheckerKT-80517 Synthetic kotlin.Any members in data classes are missing @MustUseReturnValueKT-80194 VAR_TYPE_MISMATCH_ON_OVERRIDE: doesn't mention the inferred typeKT-80484 K2: ClassCastException due to fake source for implicit lambda parameter (RedundantNullableChecker)KT-80592 UninitializedPropertyAccessException when anayzing annotations on members of anonymous classesKT-80399 Anonymous Kotlin class incorrectly warns about deprecated java override despite ‘@Deprecated’ annotationKT-79610 Adding CocoaPod to Kotlin/Native MPP triggers IR serialization failure and commonizer errorsKT-79951 Infinite loop in parsing incomplete full form destructuringKT-79866 kotlinc 2.2.0 silently emits ‘NonExistentClass’ instead of reporting an errorKT-79777 Argument type mismatch on value of complex type with a captured raw type argumentKT-78664 False positive VARIABLE_NEVER_READ and ASSIGNED_VALUE_IS_NEVER_READ on function type variable with splited declaration and assignmentKT-79496 False positive “when must be exhaustive” in triangle interface/class hierarchyKT-79774 KtDestructuringDeclaration.getLPar & getRPar are brokenKT-80391 K2: Only one context parameter is mentioned in the [NO_CONTEXT_ARGUMENT] diagnosticKT-79785 ktypew:kotlin.collections.List already exists error using Swift ExportKT-78879 “Sealed types cannot be instantiated”: Can't instantiate Java-defined sealed Class from KotlinKT-21598 Extension is shadowed by member should not be reported when member is deprecated with HIDDEN levelKT-79622 FUNCTION_EXPECTED: Misleading ‘expression cannot be invoked as a function’ when inaccessible with private lambdaKT-80255 [EXTENSION_FUNCTION_IN_EXTERNAL_DECLARATION] can be attached to the receiver type of a functional typeKT-79816 Java Interfaces implemented by delegation have non-null return checksKT-80177 Improve message of RECEIVER_SHADOWED_BY_CONTEXT_PARAMETER in case of member extensionKT-79770 There is no RECEIVER_SHADOWED_BY_CONTEXT_PARAMETER if the usage of fun is from inside the classKT-79430 False positive EXTENSION_SHADOWED_BY_MEMBER on overridden member extensionKT-62934 Incorrect line mapping inside inline lambda after non-local returnKT-79545 K2: no error on crossinline lambda usage in anonymous object base constructor callKT-79643 HAS_NEXT_FUNCTION_AMBIGUITY and NEXT_AMBIGUITY diagnostics are always ignored in favor of HAS_NEXT_FUNCTION_NONE_APPLICABLE and NEXT_NONE_APPLICABLEKT-79327 Modifier ‘private’ is not applicable to ‘value parameter’ is reported for context parametersKT-76453 K2 IDE: autocomplete freezeKT-77182 A function in a file annotated with @file:MustUseReturnValue doesn't produce a warning when it is used from compiled codeKT-78541 Jspecify: Unsound platform type despite @NullMarked for an override with a generic-subclass return typeKT-79672 ‘when expression must be exhaustive’ even after using ‘require()’KT-71306 K2 IDE / Kotlin Debugger: “Cannot find local variable ‘block’ with type kotlin.jvm.functions.Function0” on evaluating lambda arg inside inline functionKT-76991 K2 IDE / Kotlin Debugger: ISE “Couldn't find declaration file for” on evaluating local fun when the scope has also inline fun from another file callKT-79877 K2 IDE / Kotlin Debugger: failed evaluations of a code fragment capturing local data classKT-77401 [FIR] ParameterNameTypeAttribute.name doesn't support @ParameterName with compile-time constant property argumentKT-79682 Fix partially uninitialized locals after coroutine spills insertionKT-79562 NPE when passing non-lambda argument of nullable non-suspend function type into function that accepts nullable suspend function typeKT-79693 NotImplementedError: An operation is not implemented: Unknown file with KMP separate compilationKT-79662 Unused return value checker doesn't work for com.google.errorprone.annotations.CheckReturnValueKT-79781 Missing MISSING_DEPENDENCY_CLASS when using type alias with inaccessible RHSKT-77772 Only report exposed type on qualifier if it's resolved to an objectKT-79765 K2. Do not report ignore return value for unresolved referenceKT-79017 False negative REDECLARATION on private nested classKT-79519 Nested type alias is unreachable from another moduleKT-72039 StackOverflowError on calling keySet on a Kotlin subclass of Java subclass of ConcurrentHashMapKT-75843 K2: incorrect line numbers in an if-expression with a super-callKT-77504 Add a warning when @IgnorableReturnValue is inconsistent on overridesKT-78389 Perform version 2.3 boostrappingKT-79092 Crash on default argument in function in fun interfaceKT-77729 Package-level @NullMarked does not work when kotlinc sees .java source filesKT-79013 False negative NOT_YET_SUPPORTED_IN_INLINE on inline local functions inside inline functionsKT-79139 False positive CONFLICTING_OVERLOADS for context parameters instead of receiversKT-35305 Address the overload conflict resolution between unsigned and non-primitive typesKT-42096 No diagnostic reported on inline modifier on an enum entryKT-79355 Failed to fix the problem of desugared inc with new reverse implies returns contractKT-79277 Implies returns contract doesn't affect the return type of the function if it is in the argument positionKT-79271 Implies returns contract doesn't impact exhaustivenessKT-79218 SMARTCAST_IMPOSSIBLE for top‑level extension‑property getter despite returnsNotNull contractKT-79220 returnsNotNull contract ignored on extension function with nullable receiverKT-79354 IllegalStateException: Debug metadata version mismatch. Expected: 1, got 2 with compiler 2.2.20-Beta1 and stdlib 2.2.0KT-77986 K2: False negative: “Local classes are not yet supported in inline functions”KT-79456 Redeclaration conflict checks of private top-level classifiers rely on an incorrect containing fileKT-79125 RVC full mode: delegated interfaces are not checkedKT-63720 Coroutine debugger: do not optimise out local variablesKT-78595 type variable leak on a generic property as a call argument given an unstable smart castKT-79076 ‘IllegalStateException: Cannot serialize error type: ERROR CLASS: Uninferred type’ with Exposed column using recursive generic typeKT-59807 K2: Replicate the MUST_BE_LATEINIT logic from K1KT-76782 K2: Incorrect resolve into unrelated invoke operator with wrong diagnosticKT-78066 TYPE_PARAMETER_OF_PROPERTY_NOT_USED_IN_RECEIVER error message does not account for context parametersKT-76065 Drop JavaTypeParameterDefaultRepresentationWithDNN featureKT-77808 Inference: recheck the code about DNN-related hacksKT-24202 NOTHING_TO_OVERRIDE if super-class reference misses generic argumentsKT-78909 K2: Missing diagnostics [CYCLIC_INHERITANCE_HIERARCHY] for recursive class inheritance leads to StackOverflowErrorKT-75969 java.lang.IllegalArgumentException: source must not be null on red codeKT-76902 Omit type-use annotations from diagnosticsKT-17460 Diagnostics and intention on suspend function that is overriden with non-suspend one.KT-56665 K2: false positive RECURSIVE_TYPEALIAS_EXPANSIONKT-78932 Contracts are allowed for open and overridden property accessorsKT-77203 FIR: Consider adding destructured type to all COMPONENT_FUNCTION_* diagnosticsKT-77685 “IllegalArgumentException: Sequence contains more than one matching element”KT-78452 Drop redundant frontend structures after fir2ir conversionKT-70507 Should parentheses prevent from plus/set operator desugaring?
Compose compiler
New features
98d3907 Introduce a compose group analysis module that produces a proguard/R8 mapping from group keys in bytecode.
Fixes
b/419049140 Disabled memoization in try blocksKT-81081 Generate Compose-specific proguard mappings when Compose compiler plugin is applied.b/431025881 [Compose] Clean up runtime version checkerb/365922168 Add java.util.Locale to the list of known stable classesb/407549020 Introduce a registry of known stable markersb/417989445 Added a diagnostic to restrict usages of runCatching in @Composable functionsKT-80294 Fix crash with inline @Composable function referenceb/430140896 Fix IrSourcePrinter output for when branch check and typechecksCMP-9167 iOS: Platform declaration clash: The following functions have the same IR signature
IDE. Gradle Integration
KT-46273 MPP: Don't fail import for case of missed platform in source set structureKT-46417 [UNRESOLVED_REFERENCE] For project to project dependencies of native platform test source setsKT-44845 After update to Kotlin 1.4.30 all external dependencies is unresolved in IDE with kotlin.mpp.enableGranularSourceSetsMetadata=trueKT-46142 K/N distribution is unavailable from IDE with multiplatform hierarchical project structure enabled
IR. Actualizer
KT-77337 IrNoExpectSymbolsHandler finds expect class reference after enabling annotation traversal in IRKT-80002 Investigate the need for map copying in IrCommonToPlatformDependencyExtractor.ktKT-80131 KMP Separate Compilation: No override for FUN IR_EXTERNAL_DECLARATION_STUB name:KT-80064 KMP Separate Compilation: ClassCastException: class org.jetbrains.kotlin.ir.symbols.impl.IrTypeAliasSymbolImpl cannot be cast to class org.jetbrains.kotlin.ir.symbols.IrClassSymbolKT-80051 KMP Separate Compilation: Actualization of common dependencies failed on ‘PROPERTY FAKE_OVERRIDE name:modCount visibility:protected modality:FINAL [fake_override,var]’KT-79998 KMP Separate Compilation: java.lang.IllegalStateException: No override for FUN IR_EXTERNAL_DECLARATION_STUB name:
IR. Inlining
New Features
KT-70360 KLIBs: Uniformly handletypeOf() calls at 1st/2nd stages of compilation
Performance Improvements
KT-69497 Crossinline lambda is allocated on K/N & JS
Fixes
KT-78673 Make fakeOverrideLocalGenericBase not using red codeKT-78537 [Inliner] Incorrect KFunction.name of a reference to inlined local functionKT-74892 Investigate passing inline lambda as argument of another inline functionKT-81673 False warnings about ABI change in dependencies in library mode in 2.3.0-Beta1KT-81713 [Inliner] Compilation of inline function with recursive call applied to TODO() fails with an internal errorKT-80653 [IR Inliner] Space: “Local declarations should've been popped out by this point”KT-78392 CommonPrefix: Add a way of stopping execution when one of the phases is unsuccessfulKT-80927 [Native] Review intrinsics with PublishedApiKT-81070 [Inliner] kotlin/Any is unboundKT-80628 KLIB inliner: Not enough information about the “full” modeKT-69516 Double-inlining for Native: Enable visibility checks after 1st phase of inliningKT-79334 Unify intrinsics used on 1st phase of IR inliner in KLIB-based compilersKT-80610 KLIB inliner: Always apply cross-module inlining to pre-processed inline functionsKT-80565 KLIB Inliner: Add a special annotation to prohibit inlining of marked inline functions in stdlib on 1st compilation phaseKT-80883 [Inliner] Run pre-serialization lowerings in all testrunnersKT-77876 IrVisibilityChecker: Different set of exceptions for 1st and 2nd compilation stagesKT-80693 [IC] Split IC invalidation tests for cross-module IR InlinerKT-79718 KLIB inliner: Emit warning on generation of public synthetic accessor when running in “explicit API mode”KT-80226 [IR Inliner] Generate constructor accessors as constructors, not static functionsKT-80692 [IC] Split IC invalidation tests for intra-module IR InlinerKT-77103 [Inliner] IrLocalDelegatedProperty was not serialized, while its symbol and IrRichPropertyReference were.KT-80537 The expected error is not emitted from FirJsKlibSyntheticAccessorsTestGenerated and NativeKlibSyntheticAccessorsTestGeneratedKT-78903 Unify codegen/boxInline tests with codegen/boxKT-78989 Add missing PL tests for inline functions/property accessorsKT-79771 kotlinx-coroutines-core: Public synthetic accessor generated with enabled KLIB IR inlinerKT-79680 IrConstructorSymbolImpl is unbound in lambdaWithoutNonLocalControlflow.ktKT-70849 Ensure correct debug info for intra-module IR inlining on the first compilation phaseKT-79800 JS BE errors with default values when IR inliner is enabledKT-79352 Remove excessive validations from ValidateAfterAll... on the first stageKT-76599 Migrate IrValidationAfterInliningAllFunctionsPhase to the first stage of compilationKT-78245 Synthetic Accessors incorrectly copies default valuesKT-72594 [JS][Native] Add IrInliningFacade to test runners
IR. Interpreter
KT-72356 K2 Native: IllegalStateException when annotation has the same source range as a constant in another fileKT-72881 K2: incorrect empty array as annotation argument when parameter has default value
IR. Tree
Fixes
KT-79371 Fix handling of broken SAM conversion in PL with enabled Rich ReferencesKT-81952 “IllegalStateException: Callable reference with vararg should not appear at this stage” for callable references to functions with generic vararg parametersKT-79739 Static synthetic accessors inside generic classes access its type parametersKT-78100 Track and annotate internal annotations with @PublishedApi to enable annotation visibility validationKT-80825 Drop IrSerializationSettings.reuseExistingSignaturesForSymbols settingKT-79807 Broken IR tree invariants in IrReplSnippet after FIR2IRKT-77819 [IR] Fine-tune IrValidator's run after Fir2IR and IR pluginsKT-70160 Remove IrDeclaration.parents after Anvil updateKT-80454 LocalDeclarationsLowering: Clean-up the dead codeKT-80819 Rework IrFileValidator to use Hashmap instead of ClassValueKT-80516 Kotlin-like IR dump: Don't render tailrec as lateinitKT-78856 Refactor LocalDeclarationsLowering to split it in smaller partsKT-79439 KLIB stdlib symbols loading: Split the result of merging of IrBuiltins with BuiltinSymbolsBase hierarchy into two parts (for 1st & 2nd phases)KT-79437 KLIB stdlib symbols loading: Drop loading functions from IrBuiltins and migrate usages to SymbolFinder functions and lazy filteringKT-79569 Unexpected error during DFG phase in Native due to PL issue with SAM conversion represented by rich referenceKT-76601 IrValidatorConfig should have all checks disabled by defaultKT-69662 Deduplicate function createTemporaryVariableKT-79440 KLIB stdlib symbols loading: Drop BuiltinSymbolsBase from plugin APIKT-78960 [FO] Limit static fake overrides generation for static functionsKT-76813 IR validator: not all symbols/references are visited
JVM. Reflection
KT-79020 Suspend lambdas return type is shown as ??? in reflectionKT-81967 isSubtypeOf: ClassCastException: CapturedKType cannot be cast to class AbstractKTypeKT-76521 Reflection: change KType representation to avoid dependency on K1KT-81619 Reflection: Function supertype of a FunctionN class has flexible type in new implementationKT-74529 Context parameters support in reflectionKT-80901 Reflection: incorrect translation of raw types in the new implementationKT-74624 Reflection: KClassifier.createType(...) ignores annotations parameterKT-80203 Reflection: provide a way to use legacy K1-based implementationKT-80236 Reflection: KType.toString for raw types no longer renders “(raw)”KT-79206 Reflection: suspend functional type classifier is null
JavaScript
New Features
KT-80401 Kotlin/JS support for default export in generated JavaScriptKT-79284 Use BigInt64Array for LongArrayKT-79222 K/JS: Allow using Long in exported declarationsKT-79394 Add the possibility to write common external declarations between JS and WasmJS targets
Performance Improvements
KT-57128 KJS: Use BigInt to represent Long values in ES6 mode
Fixes
KT-79928 Allow JsModule/JsNonModule/JsQualifier invocation on per-entity levelKT-79514 java.lang.IllegalStateException: IrClassSymbolImpl is unbound. Signature: kotlin.js/Promise|null[0] on running jsBrowserTestKT-82005 KJS: “TypeError: callAgent.jsonRpcCall_ij3z26_k$ is not a function” after code change in 2.3.0-Beta1/2KT-79359 Kotlin/JS: Suspending function doesn’t return Unit on es2015KT-79089 KJS: Could not load reporter / Cannot find module ‘mocha’ when running jsNode testsKT-56281 KJS: Can't export suspend functionsKT-79926 Wrong export of interfaces with companions with ES ModulesKT-80168 Allow @JsStatic inside interface companionsKT-70222 Remove legacy JS BE-related CLI flagsKT-81424 Kotlin/JS: Cannot Get / in a simple running applicationKT-80873 KJS: Stdlib requires ES2020-compatible JS engine due to BigInt type literalKT-81066 Wasm, JS: Remove redundant logging in compiler outputKT-72833 KJS: Source maps have incorrect sources paths in per-fileKT-74055 KJS: @JsPlainObject adds JS code even if marked interface is not usedKT-72474 KJS: @JsPlainObject doesn't honour -XXLanguage:+JsAllowInvalidCharsIdentifiersEscapingKT-79644 BigInt enabled for ES 2015 despite being an ES 2020 featureKT-52771 KJS: Pair should be exported to JavaScriptKT-79704 Unify variance rendering between JS and other backendsKT-69297 Deprecate referencing inlineable lambdas in js() callsKT-80086 [k/js] Resolving imported string literalsKT-79066 [Kotlin/JS] jsNodeTest fails with SyntaxError when a test file has @file:JsExport and useEsModules() is enabledKT-77385 Investigate partial linkage problems for JS HMPP testsKT-79628 Remove IR nodes from ExportModelKT-79916 K/JS: “Uncaught TypeError” when using ‘Xes-long-as-bigint’ in compose-htmlKT-79050 KJS / IC: “Unexpected body of primary constructor for processing irClass”KT-79977 KJS: Long.rotateLeft returns incorrect result when BigInts are enabledKT-78831 AbstractFunctionReferencesLowering: fragile fake override generationKT-52230 KSJ IR: Applying identity equality operator to Longs always returns falseKT-6675 KotlinJS: toInt() on external Long throws errorKT-79184 K/JS: Further intrinsify BigInt-backed Long operations
Klibs
New Features
KT-80761 K2: [K/N] Should reported klib usage include inheritance
Performance Improvements
KT-80861 [Klib] Deduplicate IrFileEntry.nameKT-80866 [Klib] Optimize size of IrFileEntry.line_start_offsetKT-80438 Uncached KlibMetadataClassDataFinder.findClassData
Fixes
KT-64237 Klib metadata: migrate to using the common annotations instead of klib-specific extensions in the compilerKT-80099 KLIB resolver: Could not find file because of missing klib extension in resolved symlink pathKT-80999 Reuse existing IrKotlinLibraryLayout in KotlinLibrary for reading pre-processed functionsKT-80290 Remove if and TODO in countInAsInlinedLambdaArgumentWithPermittedNonLocalReturnsKT-80298 K/N: one-stage compilation is brokenKT-79958 KLIB tool fails to render IR if there is IrErrorType in a lirbraryKT-75241 Move ExperimentalLibraryAbiReader to a publishable artifactKT-76260 Make IrRichCallableReferencesInKlibs lang feature stable in LV=2.3KT-61552 [PL] IndexOutOfBoundsException in SAM conversion with substituted functionKT-74417 Deduce the metadata version based on LV in KLIB-based backendsKT-75980 [Klib] Reduce serialized size of IrFileEntries for sparse usage of another source filesKT-73826 Deduplicate IrFileEntry that is serialized inside IrInlinedFunctionBlock
Language Design
KT-76926 Allow return in expression bodies if return type is specified explicitlyKT-78866 Show an error for implicit receiver shadowed by context parameterKT-81561 Update nested type aliases KEEP to reflect local type aliases supportKT-81015 Stabilize nested type aliasesKT-32619 JS: return Promise when continuation is not providedKT-78976 Decide if K2 should support local functions inside of local inline functionsKT-79308 Ability to actualize empty interfaces as AnyKT-48872 Provide modern and performant replacement for Enum.values()KT-28850 Prohibit protected visibility in final expected classes
Libraries
New Features
KT-81092 Uuid: support generation of version 7 uuids with a given timestampKT-78463 Annotate wasm and JS targets of kotlin-stdlib with @IgnorableReturnValue when appropriateKT-74444 EnumEntries type should implement RandomAccessKT-78462 Annotate kotlin-stdlib-jvm with @IgnorableReturnValue where appropriate
Performance Improvements
KT-72111 Change Duration.parseOrNull logic to not throw exceptions internally
Fixes
KT-82901 Long.MIN_VALUE.milliseconds produces invalid denormalized DurationKT-81995 K/N: CMP: Undefined symbol _kfun:kotlin.time.Duration.kotlin.time.DurationKT-56822 Deprecate Number.toChar() with error deprecation levelKT-81078 Increase kotlin.io.createTempDir and createTempFile deprecation level to ERRORKT-74493 Deprecate String.subSequence(start, end) with error and drop it in the futureKT-79192 Increase InputStream.readBytes(Int) deprecation level to HIDDENKT-80778 Stabilize kotlin.time.Clock and kotlin.time.InstantKT-81043 String.toBigDecimalOrNull rejects strings accepted by String.toBigDecimalKT-81477 Uuid.Companion.generateV* are missing SinceKotlin annotationKT-81478 FileTreeWalkTest.withDirectoryFilter fails on WindowsKT-74411 Introduce Uuid.generateV4() and generateV7()KT-80530 Annotate Kotlin/Native stdlib with must-use value/@IgnorableReturnValue when appropriateKT-79791 Duration.parse incorrectly handles negative decimal seconds in ISO-8601 formatKT-80619 [KLIBs] Enable intra-module inliner in stdlib & kotlin-testKT-76773 stdlib: contextOf‘s type argument can be inferred via contextOf’s context argumentKT-71822 Intersection with (subtraction from) an identity set may produce incorrect resultsKT-80431 Remove suppression of “ACTUAL_ANNOTATIONS_NOT_MATCH_EXPECT” from stdlibKT-80605 Rename MustUseReturnValue -> MustUseReturnValuesKT-69947 KLIB stdlib: All intrinsics that can be used in KLIBs with inlined IR must be included in stdlib ABI dumpKT-59044 Improve various aspects of TimeSource documentationKT-80544 Mark controversial path extensions (like .deleteRecursively()) as ignorableKT-80603 K/N and K/Wasm: \p{N} category is not supportedKT-80661 ArrayDeque.lastIndexOf may return -1 for an element present in the dequeKT-80390 ArrayDeque.indexOf(null) wrongly returns 0 after removalsKT-79094 Change signature of assertFailsWith or make lambda excluded otherwiseKT-72028 Incorrect parameters order in IndexedValue documentationKT-80130 [stdlib] Commonize AssociatedObjects in commonNonJvmMainKT-80107 [stdlib] Move CancellationException to commonNonJvmMainKT-80179 Investigate why StringBuilder.length is not enhanced automaticallyKT-80046 Increase test coverage of Duration.parse[IsoString][OrNull] methodsKT-76459 Remove comments about sorting stability in unsigned-type arraysKT-79489 Generate Stdlib API reference for webMain source setKT-78243 Drop JS- and Wasm-specific IrLinkageError classesKT-79108 Remove the default argument for linkageError from kotlin.js.getPropertyCallableRefKT-79130 K/JS: Remove bodies from intrinsified Long methodsKT-79239 K/Wasm: elementAt extension function of Array/PrimitiveArray/UnsignedArray does not throw IndexOutOfBoundException on incorrect indexKT-79256 K/Wasm: MatchResult.groups raises a trap on invalid group indexKT-57317 Repack EnumEntries from stdlib into the compiler
Native
KT-80620 Bump minimal iOS and tvOS supported versions to 14.0KT-80624 Bump minimal watchOS supported versions to 7.0KT-79384 K/N: Application Not Responding: Thread DeadlockKT-80536 Native: DependencyDownloader seems to have no timeout
Native. Build Infrastructure
KT-80147 Set proper LV and AV for kotlin-native/performance/buildSrcKT-79474 Kotlin/Native: fix breakpad buildKT-79215 Kotlin/Native: fix distInvalidateStaleCaches on windows
Native. C and ObjC Import
KT-79752 Native: make cinterop generate CCall.Direct annotationsKT-79753 Native: support CCall.Direct calls in the compilerKT-81312 Native: when -Xccall-mode direct is used, mark unsupported declarations with unresolvable symbol name instead of @Deprecated(ERROR)KT-79571 Xcode 26 beta 4: CInteropKT39120TestGenerated.testForwardEnum failedKT-80838 Cinterop fails with an error when Compilation works fineKT-49034 Kotlin/Native: cnames.structs.Foo resolves into wrong declaration
Native. ObjC Export
KT-81906 Normalize CFBundleIdentifier when producing Apple frameworkKT-78810 [ObjCExport] Enable explicit ObjC block parameter names by defaultKT-80271 ObjC/Swift Export: Remove Native platform Cloneable checksKT-78604 Consider not inheriting KlibScope from KaScopeKT-79767 ObjCExport: private companion must not be exposedKT-79724 ObjCExport: extensions orderKT-79548 ObjCExport: mangling difference between K1 and K2 when translating KotlinDurationCompanionKT-79475 ObjCExport: invalid property getter translationKT-79346 ObjCExport: Any method overridesKT-78871 ObjCExport: translation of keyword release with parameter generates invalid header
Native. Runtime. Memory
KT-75918 Native: Deprecate -Xallocator=stdKT-80678 Native: pagedAllocator=false sweep is slowKT-75916 Native: Enable sanitizer support with pagedAllocator=false
Native. Swift Export
Fixes
KT-81355 Swift Export: Introduce a flag to turn off coroutines exportKT-80969 Swift Export: Call suspend function as async on swift sideKT-80111 Swift Export Build Fails Due to Errors in KotlinStdlib.swiftKT-80884 Swift Export: support async in SIRKT-80185 Swift Export: IllegalArgumentException – Collection contains more than one matching elementKT-79889 K/N: swift-export fails under several different conditionsKT-79518 Swift export: represent kotlin.Any as swift.anyKT-78603 Do not inherit SirAndKaSession from KaSessionKT-79227 Swift Export: Fix First Release IssuesKT-79521 ‘_CoroutineScope’ is inaccessible due to ‘internal’ protection levelKT-79181 Swift Export Fails When Using T: Comparable Generic Constraint in Kotlin Classes
Tools. Ant
Tools. BCV
KT-80313 Add ability to generate dump from jar files [ABI Tools]
Tools. Build Tools API
New Features
KT-78194 BTA: port the JVM prototype to the new designKT-79409 BTA: Support removed compiler arguments properlyKT-78193 BTA: Implement core infrastructure according to the new designKT-78196 BTA: implement API adapter for the prototype implementationKT-77999 BTA: Generate BTA options from compiler arguments descriptions
Fixes
KT-75357 CompilationService.loadImplementation(loader) Expects a ClassLoader, but Fails if its not a URLClassLoaderKT-73090 Gradle 8.11 kotlin compilation fails when run with -Pkotlin.compiler.runViaBuildToolsApi=trueKT-81321 Deprecate old BTA prototype APIKT-81602 BTA: rename KotlinToolchains.jvm @JvmName for a more Java-friendly APIKT-75356 Failing to pass a -d argument causes Build Tools API to NPEKT-81130 BTA: using KotlinVersion from stdlib in the API breaks when using isolated classloaderKT-78195 BTA: migrate the test infrastructure from the prototype to the new design
Tools. CLI
KT-81077 Add JVM target bytecode version 25KT-79867 CompilerConfiguration.configureSourceRoots puts obfuscated file paths instead of ones passed on classpath to CLIConfigurationKeys.CONTENT_ROOTSKT-80348 Expose ‘XXLanguage’ compiler argument as a normal argumentKT-80428 KMP Separate Compilation: Handle friend dependenciesKT-74590 Deprecate -Xjvm-default in favor of -jvm-defaultKT-80349 KMP Separate Compilation is enabled on non-KMP compilationsKT-79982 Fix description of -Xjspecify-annotationsKT-79403 Improve generator for deprecated CLI argumentsKT-75968 Set proper lifecycle for all existing compiler argumentsKT-79293 Create Language Features and compiler argument with parameter for new destructuring features
Tools. Commonizer
KT-49735 [Commonizer] :commonizeNativeDistribution fails for projects with two or more same native targetsKT-47523 MPP: Unable to resolve c-interop dependency if platform is included in an intermediate source set with the only targetKT-48118 Commonized c-interop lib is not attached to common main source setKT-46248 MPP: Compile KotlinMetadata fails with Unresolved reference if only one native platform from shared source set is available
Tools. Compiler Plugin API
KT-82563 Improve compiler error messages to identify incompatible plugins causing compilation failuresKT-55300 Provide a mechanism to describe ordering and dependencies for compiler pluginsKT-82099 Compiler plugin ordering has no effectKT-74867 LLFirIdePredicateBasedProvider matches local classes when it shouldn'tKT-52665 Deprecate ComponentRegistrarKT-75865 Provide an API for setting the file name for the file with top-level declarations generated by a plugin
Tools. Compiler Plugins
New Features
KT-81091 [DataFrame] Receivers from FirExpressionResolutionExtension are not resolved in CodeFragment
Fixes
KT-64339 Symbol Light Classes: No Arg compiler plugin generates synthethic constructor which is not seen from light classesKT-80429 Power Assert with “Run test using: IntelliJ”: NoClassDefFoundError (org.jetbrains.kotlin.kotlinx.collections.immutable.ExtensionsKt) during compilationKT-79319 Lombok: NullPointerException on mvn compile when importing Java constantsKT-81348 Incorrect bytecode mentioning error class/package is generated by kotlinx-serialization when private serializer in another module is not accessibleKT-80944 FirUserTypeRefImpl cannot be cast to class FirResolvedTypeRef in maven projectKT-80815 NoArg compiler plugin: Promote NO_NOARG_CONSTRUCTOR_IN_SUPERCLASS diagnostic from warning to errorKT-80822 False positive NO_NOARG_CONSTRUCTOR_IN_SUPERCLASS reported for a class with explicit noargs constructor already presentKT-53122 Constructors generated with NoArg have no @Metadata and are invisible for the frontendKT-74687 Kotlin Lombok: False positive when calling builder on Java recordKT-80419 Remove bundled jetbrains annotations from kotlin-dataframe-compiler-pluginKT-79245 [AtomicFU] Drop K1/JS- and K1/Native-specific testrunnersKT-79197 DataFrame: Cannot find local variable ‘this@df’ with type Scope0KT-73865 Incorrect type is generated for irPropertyReference during K/N transformation
Tools. Compiler plugins. Serialization
KT-70345 Promote COMPANION_OBJECT_IS_SERIALIZABLE_INSIDE_SERIALIZABLE_CLASS diagnostic to errorKT-79695 Serialization does not exclude field-less properties in 2.2.20-Beta2KT-79246 [Serialization] Drop K1-specific testrunners
Tools. Gradle
New Features
KT-78199 Gradle: Migrate JVM compilation in KGP to the new BTAKT-45161 Gradle: Support registering generated sources with the Kotlin modelKT-71602 Introduce KotlinTopLevelExtension
Fixes
KT-67290 Deprecate usage of HasKotlinDependencies inside KotlinCompilationKT-80950 KGP breaks configuration cache when signing plugin with GnuPG is appliedKT-64211 Provide support for the kotlin.internal.compiler.arguments.log.level property while running via build tools apiKT-81719 Do not register swift export related configurations when it's not requiredKT-78741 Add FUS analytics for klib cross-compilationKT-75449 Update deprecation of KotlinJsTestFramework#createTestExecutionSpecKT-64273 Gradle: remove symbols deprecated after KT-54312KT-74915 Make ExtrasProperty.kt internalKT-64992 Remove KotlinCompilation.sourceKT-82068 Workaround iOS Simulator start failure in ITKT-79482 Report webMain / webTest usage in FUS metricsKT-81199 Deprecate “org.jetbrains.kotlin.android” pluginKT-82244 Conflicting warnings when using AGP 9.0.0-alpha with built-in Kotlin disabledKT-81161 Gradle plugin api reference: compiler arguments types are not availableKT-70251 Gradle: hide compiler symbols in KGPKT-81837 Run integration tests against AGP 8.13KT-77457 Compile against Gradle API 9.0KT-79238 Bump minimal supported AGP version to 8.2.2KT-75869 KGP JS - Update deprecated constructorsKT-76720 Raise deprecation level to error for Kotlin*Options propertiesKT-79047 Gradle compileKotlin fails with configuration cacheKT-81415 BTA: Duplicate daemons when compiling JVM + JS in KGPKT-80763 Add redirect link to error message when ‘org.jetbrains.kotlin.android’ plugin is used with built-in KotlinKT-81038 Gradle: remove support for properties disabling precise task outputs backupKT-80808 Warning from kotlin-dsl with kotlin(“jvm”) on Gradle < 9.0 doesn’t suggest updating GradleKT-80875 Gradle: runToolInSeparateProcess may fail on Windows with too long command lineKT-79851 Emit an actionable warning/error on unsupported AV/LV configured by kotlin-dslKT-77458 Run Gradle integration tests against Gradle 9.0KT-80172 Error message changes depending on the order of applying ‘org.jetbrains.kotlin.android’ and ‘AGP’ 9.0+ with built-in Kotlin pluginKT-76177 Remove deprecated classpath snapshot task inputsKT-79339 Remove additionalMetadata from compiler options DSLKT-73478 Add module level descriptionKT-80083 KGP IT: fix tests on WindowsKT-79034 Automatically disable cross compilation if it's not supported on the hostKT-79408 A lot of errors files are created when compile KotlinKT-78827 Rewrite Gradle compiler options DSL generator
Tools. Gradle. BCV
KT-80687 Add description to Gradle tasks [ABI Validation]KT-80621 Move Gradle tasks into suitable groups [ABI Validation]KT-78625 Kotlin's built-in BCV generates empty .api files
Tools. Gradle. Compiler plugins
KT-81827 Add a switch for mapping file tasks in Compose Gradle plugin
Tools. Gradle. JS
Fixes
KT-79921 Web Tooling Gradle API does not respect webpack reconfigurationKT-81009 K/JS, Wasm: Promote deprecation of NPM and Yarn package manager internal functionsKT-76019 Wasm/JS: Promote phantom-js for Karma deprecation to ERRORKT-81005 K/JS, Wasm: Promote deprecation of ExperimentalWasmDsl to ErrorKT-81010 K/JS, Wasm: Promote deprecation of internal JS functions to ErrorKT-81008 K/JS, Wasm: Promote deprecation of ExperimentalDceDsl to ErrorKT-81007 K/JS, Wasm: Promote deprecation of public constructors of JS declarations to ErrorKT-81006 K/JS, Wasm: Promote wasm declarations in “js” package deprecation to ErrorKT-81004 K/JS, Wasm: promote deprecation NodeJsExec.create to ErrorKT-75621 KJS / Gradle: Disable npm in --offline modeKT-79910 Wasm, JS: Upgrade NPM versionsKT-76996 Wasm: js tasks triggers wasm subtasksKT-79237 Upgrade NPM dependencies versions
Tools. Gradle. Multiplatform
New Features
KT-76446 Add kotlin-level dependency block to work the same way as commonMain/commonTest dependencies blocks
Fixes
KT-61127 Remove scoped resolvable and intransitive DependenciesMetadata configurations used in the pre-IdeMultiplatformImport IDE importKT-81980 KGP warning gives incorrect suggestion for AGP application compatibilityKT-81601 With android.builtInKotlin=false AGP 9.0+, using kotlin-multiplatform plugin will fail with aClass Cast ExceptionKT-81060 KMP stores common compilation dependency resolution in Configuration cache leading to error when deserializing (Android only)KT-80720 Gradle import of multiplatform project fails: “Failed to invoke getAssociateWith on KotlinJvmCompilation_Decorated”KT-81200 Deprecate ‘androidTarget’KT-74005 Implement a prototype of Unified Klib support in Kotlin Gradle PluginKT-77367 [uklib] Project dependency to kotlin-jvm module leads to failure in transform during IDE importKT-80785 With android.builtInKotlin=false and android.newDsl=true, using kotlin-android plugin will fail with ClassCastExceptionKT-81434 [uklib] androidCompileClasspath resolves java compatibility variant instead of android for uklib libraryKT-81469 [uklib] kmpPublicationStrategy affects resolution during import for androidTargetKT-81249 Kotlin 2.2.20 broke KMP implementation of ParcelizeKT-77066 Promote kotlinArtifacts deprecation to an errorKT-74955 Remove resources resolution strategy completelyKT-62614 Remove legacy kotlin-gradle-plugin-modelKT-79559 AGP complains about configurations resolved at configuration time due to KMP partially resolved dependencies diagnosticKT-78993 The value for property ‘*’ property ‘dependencies’ is final and cannot be changed any furtherKT-76200 TestModuleProperties.productionModuleName for JVM module isn't present with 2.1.20-RCKT-55312 Replace “ALL_COMPILE_DEPENDENCIES_METADATA” configuration with set of metadata dependencies configurations associated per setKT-52216 HMPP / KTOR: False positive “TYPE_MISMATCH” with Throwable descendantKT-54312 TCS: Replace CompilationDetails abstract class hierarchy by composable implementationKT-55230 Remove metadata dependencies transformation for runtimeOnly scope
Tools. Gradle. Native
KT-80675 Commonized cinterops between “test” compilations produce an import failureKT-77732 commonizeCInterop failed with “Unresolved classifier: platform/posix/size_t”KT-81510 commonizeCInterop exception with ‘kotlinNativeBundleConfiguration’ not foundKT-81134 Native: Gradle configuration failure likely related to Klibs cross-compilationKT-77486 Remove bitcode DSLKT-64107 Kotlin Gradle plugin allows native binaries to have both debuggable and optimized flags set to trueKT-74910 Bump destinationDir in CInteropProcess to hiddenKT-74911 Promote CInteropProcess.konanVersion to hiddenKT-74864 Enable exporting KDocs by default to ObjCKT-72705 K/N: compile task cache can not be used due to ‘artifactVersion’ input property
Tools. Gradle. Swift Export
KT-81465 Swift Export package is build with wrong targetKT-81460 [KGP] Crash in SwiftExportRunner due to older stdlibKT-79524 NoSuchMethodError: 'java.lang.String org.gradle.api.artifacts.ProjectDependency.getPath() for swift export with dependency export fro gradle < 8.11
Tools. Incremental Compile
KT-75864 Implement a conservative mechanism of the IC with compiler plugins generated top-level declarationsKT-55982 K2: Consider global lookups from plugins in incremental compilationKT-79504 Implement an API to provide IC lookups from backend pluginsKT-75657 Fix difference in incremental compilation scenarios in BTA in-process vs daemon compilation modeKT-79541 Refactor tracking of files relation in ICKT-74628 Incremental compilation runner does not check compiler exit code before mapping sources to classes
Tools. JPS
KT-77347 Support file-less compatible IC approach
Tools. Kapt
KT-79138 K2: KAPT Java Stub Gen: Unresolved reference with @kotlin.Metadata in Java in 2.2.0KT-79133 K2 kapt: class literal with typealias is not expandedKT-79305 K2 kapt: ISE “Cannot evaluate IR expression in annotation” on typealias with unresolved expansionKT-79136 K2 kapt: unresolved nested class references in annotation arguments are generated without outer class namesKT-71786 K2Kapt: Stubs generation does not fail on files with declaration errorsKT-80843 K2: KAPT: Crash on any data class with duplicate properties: “Sequence contains more than one matching element”KT-73411 Remove kapt.use.k2 property and code which allows to use K2 with K1 kaptKT-79641 Kapt: too much information is printed in verbose mode
Tools. Maven
KT-82180 kotlin-maven-plugin: IC succeeds after dependent source deletionKT-78201 Maven: migrate JVM compilation to the new BTAKT-81414 2.2.20 regression: OOM (Compressed class space) when in-processKT-81435 Maven: Improve BTA classloader reusageKT-81681 Maven: “NoClassDefFoundError” on a second test runKT-81218 Kotlin Maven Plugin 2.2.20: Java classes not resolved with enabled incremental compilation without daemon
Tools. Performance benchmarks
KT-79709 Add -Xdetailed-perf CLI flag to control verbosity of performance logsKT-79226 [K/N] Add performance measurement for native backend lowerings
Tools. REPL
KT-80062 ReplSnippetLowering sometimes produces IrConstructorCall with too many arguments
Tools. Scripts
KT-80071 Kotlin script mode produces invalid IR: “value that is not available in the current scope”
Tools. Statistics (FUS)
KT-77407 Add performance measurement for prefix loweringsKT-79455 [FUS] Collect KSP plugin versionKT-79090 Integrate dynamic stats into MarkdownReportRenderer
Tools. Wasm
KT-82365 K/Wasm: NodeRun tasks in Wasi depend on kotlinWasmToolingSetupKT-81313 K/Wasm: update Node.js to 24.xKT-81315 K/Wasm: update Node.js to 25.xKT-80582 Multiple reloads when using webpack dev server after 2.2.20-Beta2KT-80896 K/Wasm: debug tests only onceKT-78921 K/Wasm: don't generate empty yarn.lock file
Previous ChangeLogs: