Changelog
Analysis API
KT-88945Analysis API: annotation resolution drops a class id when a source annotation shadows a library oneKT-87460Flaky (Embeddable)SwiftExport testsKT-68896Support VirtualFile binary dependency inputs to Analysis API modulesKT-65417K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets
Analysis API. FIR
KT-88962False negative [AMBIGUOUS_ANNOTATION_ARGUMENT] diagnostic in some corner casesKT-87651[Analysis API] Unexpected FIR status exception on SAM interfacesKT-87572Symbols from companion blocks have dispatchReceiver in stub-based versionKT-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-72660ISE: Recursive update at org.jetbrains.kotlin.analysis.low.level.api.fir.caches.FirCaffeineCache.getValueKT-62892K2 IDE. Java outer class from other module is not resolved when nested class is accessed with fq name in a type position
Analysis API. Infrastructure
KT-84914Do not publish analysis-api-test-frameworkKT-87672Eliminate class duplication in the Analysis API JARsKT-87998Move out Standalone components from the 'kotlin-analysis-api-surface' and 'kotlin-analysis-api-implementation'KT-88404Merge the decompiler text and stubs into one test caseKT-88371Optimize symbol light classes testsKT-87607Test Federation: Review domain Analysis API Smoke & Contract testsKT-86787Stop publish analysis-api-fe10-for-ideKT-87593Migrate Analysis API tests on JDK 11KT-87529Test Data Manager: introduce a separate task for checks
Analysis API. Light Classes
KT-57537SLC: propagate default parameter value from (@JvmOverloads)expectdeclarations toactualdeclarationsKT-88879Value classes / JvmExposeBoxed: false-negative resolve for overridden exposed functionsKT-88861Value classes / JvmExposeBoxed: internal method from value class is shown as valid call on java side but cannot be compiledKT-88805SLC:@JvmInlinevalue classis treated asPsiClass#isValueClass`KT-65385K2 IDE: Light classes incorrectly exposeCompanionclass and the corresponding static field if the companion object is generated by a compiler pluginKT-67711K2: Pointer already disposed from SLC/AI
Analysis API. PSI
KT-89032Missing PSI utilities for companion blocksKT-88925Restrict theKtElementhierarchy with@SubclassOptInRequiredKT-88788Refine the new resolution API (PSI-part)KT-74070Cover the Kotlin PSI with KDocsKT-87819UseScope of private interfaces is incorrectKT-85052Move mutation methods out of the Kotlin PSI
Analysis API. Providers and Caches
KT-77194Analysis API: Move union and intersection scope merge strategies to the Analysis APIKT-87231Analysis API: Fallback dependencies must have a binary-only base content scopeKT-86402False positive MISSING_DEPENDENCY_SUPERCLASS when using Scala case class in KotlinKT-87680Analysis API: LL FIR sessions contain redundantBuiltinTypesinstances
Analysis API. Standalone
KT-89242Analysis API Standalone: KLIB/JAR file handles remain open after session disposalKT-61404Analysis API: implement proper library publishing structureKT-88362PsiMethod.findSuperMethods()always returns an empty arrayKT-84851Analysis API Standalone: 75% of CPU time spent in StringsKt.split via trie-based library scopes
Analysis API. Stubs and Decompilation
New Features
KT-10793Improve decompiled text for annotationsKT-87857Support strict equals in stubsKT-85756Support annotation arguments in the decompiler
Performance Improvements
KT-88067Implement stub-based initializer for constant propertiesKT-88060Make KtParenthesizedExpression stub-basedKT-79396Make KtBinaryExpression stub-basedKT-79397Make KtUnaryExpression stub-basedKT-71787PsiRawFirBuilder.Visitor#visitStringTemplateExpressionforces AST loading
Fixes
KT-88984compiler-common and analysis-api-impl-base cyclic depend on each otherKT-78356Migrate stubs from stub element type to stub factoriesKT-88500Support multi-field value classes in Analysis API stubs / decompilerKT-52806Store type in callable stubs when callable have implicit type and trivial initializerKT-77096Implement more stub-based annotation arguments
Analysis API. Surface
New Features
KT-84255Expose possible smart casts from ContextCollector in KaScopeContextKT-88985Refine the new resolution API around error handlingKT-88521Analysis API surface: support "Strict equals" (equality bound types) language featureKT-86610Rework KaDiagnosticProvider to be more flexibleKT-68881Analysis API: IntroduceKaType.classIdKT-87311Propagate psi from generated declarations to KaSymbols
Fixes
KT-84186Unresolved annotationClassIdreturns ""KT-89175Add contracts to the new resolution utilitiesKT-88767Refine the new resolution APIKT-87557'Analysis API Public API Checks' run configuration should include the artifacts checksKT-89030[Analysis API] GeneralizeKaFirNestedInLocalClassFromCompilerPluginSymbolPointerKT-73195AA FIR: missing annotations on function literalKT-82397KaFunctionTypeshould offer context parameter types, not context receiversKT-88645Stabilize KtResolvable(Call)KT-88489resolveToCallCandidates throws ClassCastException for callable reference expressions resolveToCallCandidatesKT-85528Move diagnostic classes out of analysis-api-firKT-63221K2: Analysis API: reworkgetDiagnosticsForElementAPIKT-87210KaSubstitutor.Empty shouldn't be a classKT-75549DeprecateKaTypeProvider#collectImplicitReceiverTypesKT-54508Re-design 'javaGetterName' and 'javaSetterName'KT-86591Rethink how the context parameters feature could be integrated into the Analysis API SurfaceKT-87564Analysis API: nested type alias qualifier resolves to expanded type ownerKT-87924Consider droppingKaType.is*TypeutilitiesKT-87552Compiler-internal types leak into the public Analysis API surfaceKT-87578Explicitly split implementations and APIs in symbolsKT-69959fakeOverrideOriginalshould support value/type/receiver parametersKT-87338Drop KaTypeParameterOwnerSymbolKT-87343AA: hasDefaultValue is incorrect for parameter of actual constructorKT-73946Analysis API: Add a way to navigate from "KaPropertySymbol" to "KaValueParameterSymbol" for primary constructor propertiesKT-81264K2 AA:KaValueParameterSymbol.hasDefaultValueis false for overriding or actual functions
Backend. Wasm
New Features
KT-88027K/Wasm: Exportcabi_reallocfunction from stdlib to support components
Fixes
KT-87125K/Wasm: share a common base class for all suspend functionsKT-89009[Wasm/MMCW] Compilation fail with exception on simple projectKT-87742K/Wasm: initialization of properties with default value different from JVMKT-87746K/Wasm: Investigate if it is possible to enable floating point const folding on Wasm backendKT-88808K\Wasm: separate CoroutineImpl and CoroutineImplStackSwitchingKT-66089K/WASM: assertSame failed in teststatic_smallIntIdentity.ktKT-87862K/Wasm: introduce a separate diagnostic ID for companion object inside external interfaceKT-88434K/Wasm: JS-to-Kotlin closure converter is shared between different external function types with the same JS-erased signature, injecting a wrong castKT-88543K/Wasm: Automatically clean test output by defaultKT-85772K/Wasm: implement companion blocks and extensionsKT-83171K/Wasm: Investigate import.meta usage in mjs filesKT-79411K/WasmJs: "Can't link symbol kotlin.js/js|js(kotlin.String){}[0]"KT-88387K/Wasm: DWARF debuginfo accidentally swaps files and foldersKT-88366[Wasm] mute failing coroutines stack switching test via WASM_IGNORE_FOR directiveKT-87583Wasm IC cache is not invalidated when kotlin.wasm.compilationMode changes causing IndexOutOfBoundsException in WasmDeserializerKT-87687Investigate whether unboxing needed when accessing suspendResult in transformed doResume for suspend functionKT-87128K/Wasm: investigate possible optimization of suspend "helper" functionsKT-87329K/Wasm: child companion block static initializer runs before parent initializer in single-module modeKT-87109K/Wasm: Companion block initializer block fails in multi-module scenario
Compiler
New Features
KT-87345Swift Export: Support proper exception throwing from sync bridges in cross-language inheritanceKT-87767Add JVM target bytecode version 27KT-80964Improve error messages for compile-time constantsKT-87412Kotlin/Native: use JVM-like class initialization scheme with CompanionBlocksAndExtensionsKT-88415Java type enhancement: support org.chromium.build.annotations nullability annotations as JSpecify equivalentsKT-87419(De)serialize attribute set for strictequalsKT-86129StrictequalschecksKT-87418Incompatible==/!=checks based on@EqualityBoundKT-86124Set attributeequalityBoundTypeto parametersKT-87498Strict equals x interface delegationKT-87417Generate prologue of strict equals in Fir2IrKT-87420SetequalityBoundTypeattribute for generated equals in data and value classesKT-86127Add smart casts based on strict operator equalsKT-87422Smart casts inside the body of strictequalsKT-81676Improve error reporting for underscores as type parametersKT-58562More concise error for "Incompatible classes were found in dependencies"KT-80373Add initial support for release compiler cachesKT-68819Don't report "no corresponding expect/actual declaration" when signature contains error typesKT-85925Native: rework virtual trampolines machineryKT-83040Collection literals: ensure normal interaction with CFGKT-79656Useorg.jetbrains.annotations.UnmodifiableViewand/ororg.jetbrains.annotations.Unmodifiableto infer read-only types for Java entities
Performance Improvements
KT-57995Extra anonymous class is created for lambda after upgrading from Kotlin 1.6.10 to 1.7.20KT-89131JVM: Hoist ResultKt.throwOnFailure out of SuspendLambda.invokeSuspend switch casesKT-615Optimize instanceof check for nullable typeKT-49139NI: EnumMap constructor call in Kotlin source causes OutOfMemoryError during compilation and analysis in IntelliJ IdeaKT-52283Never ending type inference while compiling Kotlin code with lots of self pointing genericsKT-85899Performance problem around the second incorporation kindKT-86022K2 frontend hangs in approximateToSuperTypeWithRecursionPreventionKT-88383K/N CallGraph: Eager check before pushing elements onto the stackKT-88352JVM: redundantCharacterbox/unbox andRef.IntRefwhen a bound callable reference is passed to an inline function from within another inlined lambdaKT-88435Kotlin/Native: Avoid redundant filtering in DevirtualizationAnalysisKT-87033[Native] Optimize dumpObjcSelectorToSignatureMapping to execute during frontend phase, bypassing IR linkingKT-87952Bound receiver wrapped in a cast is needlessly stored in a$receiverfield for property reference delegationKT-87896Make check for JvmFieldApplicabilityProblem.NOT_PUBLIC_VAL_WITH_JVMFIELD not quadraticKT-69758FastJarFS - avoid copying data on inflating (JDK 16+)KT-83068Investigate long compilation times with many generics & overloadsKT-66469Long compilation with mockk import
Fixes
KT-88715K/N: "Argument list too long" when linking with a large number of included static librariesKT-86978Type arguments are allowed (and unresolved) in qualifiers in compiler-required annotationsKT-87372False positive INVISIBLE_REFERENCE when accessing protected companion block member of superclassKT-87284Implement type conversion from ILT/builtin numeric types into types marked with a special annotationKT-88953CCE caused by suspend conversion of nullable argument to nullable expected typeKT-86453K2: Generate IrRich*Reference for all kinds of referencesKT-86046Put@K1Deprecationto all public declarations of K1 modulesKT-89325Java Direct: no supertypes on resolution due to reentranceKT-89184JVM: anonymous function SAM-converted via invokedynamic loses its non-null parameter assertionKT-89183JVM: LambdaConversionException on JDK 9+ when a SAM method parameter is a type parameter with two interface upper boundsKT-87385Ensure that KMP mismatches in libraries in the HMPP scheme are reported reasonablyKT-87146False negative REPEATED_ANNOTATION with actual typealiasKT-88339JvmExposeBoxed: no null check is generated in exposed methodsKT-85879Get rid of second incorporation kind in inferenceKT-88995Inline scopes numbers: wrong call site line numbers when a default argument value contains an inline callKT-87499ClassCastException "Float cannot be cast to Unit" when a suspend function's result is discarded in a when-branchKT-79212Resolve new type for class literal of unbounded reified type parameterKT-88399K2: StackOverflowError in FirPrefixAndSuffixSyntaxChecker.getLeaf for a long string-concatenation chainKT-89057IllegalArgumentException: source must not be null in FirOverrideCheckerKT-89049JVM: do not generate DefaultImpls for companion block functionsKT-89043Explicit context arguments: align sinceVersion with the 2.6.0 Stable planKT-77362JVM diagnostics are not properly reported for scripts and REPLKT-86556Account for CSR in compiler required annotations transformerKT-87020Type aliasedAnnotationTargetused in@Target()`KT-87072SINCE_KOTLIN doesn't work with non-literal argumentsKT-87025Support aliased imports to compiler required annotationsKT-89123Keep the visibility inconsistency about data class copy and primary constructor as a warningKT-89065JVM: companion block functions in interfaces do not compile with-jvm-default=disableKT-89087JVM: Initialization order of companion blocks is incorrectKT-87940[DFA] Remove VariableStorageKT-88388JvmExposeBoxed: Exposed constructor leads to NSME from another moduleKT-88325JvmExposeBoxed: False-positive "no effect" warning on extension propertiesKT-88369JvmExposeBoxed on overrides makes KAPT generate a standalone method with faulty@OverrideannotationKT-87540Fix potential issues in explicit context arguments implementationKT-89013K/N: auto-built release compiler caches are compiled at O1, not O3KT-88260java-direct: support Java 25 module import declarations (JEP 511)KT-88304java-direct: JavaUsingAst tests silently fall back to the PSI-based finder, hiding java-direct failuresKT-88078Java Direct: Refactor binary class finder entanglementKT-86376New inline variables scheme: incorrect line numberKT-87825Implement new frontend rules for companion blocks in interfacesKT-87437Restrict interface companion block propertiesKT-89008Constant condition elimination may break debug information of inline scopesKT-89016Replace early return with assertion in function type conversionKT-88667False negative POSITIONED_VALUE_ARGUMENT_FOR_JAVA_ANNOTATION on@get: use-site target and annotation constructor callKT-87330Introduce Static Initialization Control Flow Graph for ClassesKT-88427K2: compiler crashes with IllegalArgumentException when escaped class name containing braces is used in diagnostic type renderingKT-88961K2: FirPrefixAndSuffixSyntaxChecker misses literal prefixes/suffixes outside binary expressions with the LightTree parserKT-88576False-negativeOVERLOAD_RESOLUTION_AMBIGUITYon increment call in recursive initializerKT-88934Error in IrConstExpressionTransformer when lowering constant expression in subject for function referenceKT-88811Compiler crashes with "IllegalArgumentException: List has more than one element" when separate KMP compilation is combined with useMetadataOnIncrementalClasspathKT-88312Implement 'returnsParameter' contractKT-88307Support actualization of multiple top-levelexpectfunctions with the sameactualKT-88012Abstract diagnostic factories from source typesKT-88580Kotlin/Native Release: "Unexpected receiver type: kotlin.collections.ArrayList" in generic collection codeKT-88316K/N: StackOverflowError in CastsOptimization when two nullable local variables are assigned to each other across nested loopsKT-88770KMP separate compilation: false-positive SUBCLASS_CANT_CALL_COMPANION_PROTECTED_NON_STATICKT-88769KMP separate compilation: incorrectEXPECT_ACTUAL_INCOMPATIBLE_CLASS_SCOPEin case of complex inheritance by delegationKT-88860Fir2Ir crash "Expected argument type to be Nothing?" when a non-null value is null-checked and passed to a generic functionKT-64219K2, Wasm: Green expect-actual code allows for invalid external type hierarchyKT-88761Native: remove custom validation phasesKT-87788Incorrect smart cast stability of implicitwhensubject variablesKT-77718K2: Remove workaround for KDF in FIR2IR implicit cast generation for receiversKT-85368ConstraintIncorporator#insideOtherConstraint is order-dependentKT-78002K2: local class function annotation observes the function parametersKT-88218-Xheader-mode: inline function bodies replaced with aconst_null/athrow stubs instead of being preservedKT-53422NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER in flow.collectKT-71754PCLA: compile-time failure on fixing a type variable on demand for an indexing operator assignmentKT-64802K2: Investigate behavior change related to PCLA+Captured types+ILTKT-88228JVM: IllegalAccessError at runtime when delegating property to private member of sealed superclassKT-88455AssertionError "Inconsistent target list for lambda annotation" when Java annotation applied to lambdaKT-67462Use new lowering phase creation API in Native backendKT-71600K2: missing WHEN_ENUM_CAN_BE_NULL_IN_JAVAKT-36111False negative warning on exhaustivewhenwith flexible type of sealed class in subjectKT-88190False positive UNEXHAUSTIVE_WHEN_BASED_ON_JAVA_ANNOTATIONSKT-88766K2 KMP JVM IC: "NoSuchElementException: Key Module is missing in the map" when an actual and its expect are recompiled togetherKT-87967Implement deprecation warning for concurrent maps purely implementation hierarchyKT-87165[K/N] computeTypes phase breaks boxed equalityKT-88721KMP Separate Compilation: missing fake-override for internal declaration from a friend moduleKT-88099"ArithmeticException: / by zero" caused by Int.mod on division by zero in constant evaluationKT-88332IntrinsicConstEvaluation: false positive "const val initializer must be a constant value" on division by non-zero value that overflows to int zeroKT-88326Enable IntrinsicConstEvaluation since 2.5KT-88662Render the actual receiver type inUNRESOLVED_REFERENCE_WRONG_RECEIVERKT-88013Native: migrate CastsOptimization from Predicate.Empty to Predicate.True and fix Predicates.orKT-88132False positive INCORRECT_RIGHT_COMPONENT_OF_INTERSECTION when typealias for Any used as right component of definitely-not-nullable supertypeKT-87659No warning emitted when runtime-retained annotations on lambdas are silently discarded by invokedynamic codegenKT-84499Kotlin/Java interop: type mismatch when overriding methods from Java class with module import declaration (Java 25)KT-70450OuterThisLowering - consider merging it into InnerClassLoweringKT-87881IllegalStateException: Expected some types crash in FIR type inference when buildList contains implicit receiver call and nested when expression with !is smartcastKT-88340'returnsResultOf' contract works incorrectly with named argumentsKT-88191KMP Separate Compilation: Problems withthrowNoWhenBranchMatchedExceptionfunctionKT-87389Change companion extension metadata serialization formatKT-88480KMP parser: string literal content is remapped to IDENTIFIER if it matches a soft keywordKT-88408[IR] Consider eliminatingModuleDescriptorfromIrActualizermodule diagnosticsKT-87983CCE on member extension property delegated to bound property referenceKT-88487Return value checker: unresolved TODO about Array.contains in stdlibKT-88102Incompatible return type in delegated member not reported if it implements intersection overrideKT-85403kotlin.NoWhenBranchMatchedException on Kotlin Native with sealed interfaceKT-87922K1FakeDescriptorsForReferencesKt classes duplicated between kotlin-scripting-compiler-embeddable and kotlin-build-tools-implKT-73462AssertionError "FUN LOCAL_FUNCTION_FOR_LAMBDA has no continuation" on suspend lambda with parameter of functional type called from another fileKT-87549@IntroducedAtdoes not work correctly with inheritanceKT-87887KJS: Prefix increment on dynamic array access is lowered into no-opKT-87129Decide what to do with tests in ScriptGenTestKT-67014K1/K2 handle when expression as annotation target differentlyKT-80741Fix rendering of inner classes with generic outer classesKT-86119JVM builtins dump for JDK21 does not include methods introduced after JDK8KT-86742JVM: missing accidental override error on companion block membersKT-86109K2: Compiler crash on mix of static/companion in jkj hierarhyKT-88103Java Direct: use FirLazyJavaAnnotationList to avoid cycles in enumsKT-88101Java Direct: Deduplicate repeated type resolution logicKT-88064Java Direct: Use lexer for lightweight "pre-parsing" instead of regexesKT-88079Java Direct: Get rid of VFS and VirtualFile useKT-88066Java Direct: (Re)introduce lazy AST calculationsKT-87368Adjust the message ofIMPOSSIBLE_IS_CHECKKT-87664JvmExposeBoxed: exposing constructor of ordinary class changes behaviorKT-88134Improve diagnostics for name-based-destructuring=complete and using obsolete syntaxKT-88149Mention operator token in UNRESOLVED_REFERENCE_WRONG_RECEIVERKT-65832K2: Support diagnostic suppression with complex expression argumentKT-81416Native: compiler fails in case of cross-module Volatile referencesKT-86740K/JS: IllegalStateException "Serialization of IrErrorType is not supported" when type variable is inferred into empty intersectionKT-88127Remove or replace usages ofpsiElementutilKT-88128RewriteJvmBackendClassResolverto get rid of descriptor usagesKT-88141False negative MANY_IMPL_MEMBER_NOT_IMPLEMENTED when method is called equals, hashCode or toStringKT-86543IllegalStateException: Parent of this declaration is not a class: PROPERTY IR_EXTERNAL_DECLARATION_STUBKT-88142False negative INTERFACE_AS_FUNCTION when Java interface contains function called toString, equals or hashCode with receiver or context parametersKT-87261K/N debug: 'is' check miscompilation — local variable reports wrong type when two smart-cast extractions precede an inline loopKT-87830Complementary value sets should include non-direct inheritors of supertypesKT-87103Drop compiler/fir/dumpKT-86131Deprecate language version 2.2KT-88045Delete leftovers of javac integration (javac-wrapper) subsystemKT-87577Compiler crash on red code with ambiguous type parameter used as expressionKT-87931CCE caused by suspend conversion in receiver positionKT-87676Context Parameters: Cannot find local variable '$context-String' with type java.lang.String when evaluating contextual call that uses lambda context parameterKT-87061Companion blocks: compilation fails when companion function names clash with enum methodsKT-86518K2: Enrich NoWhenBranchMatchedException with additional information about the causeKT-88007Don't reportequals(Any?)in companion blocks of interfacesKT-87926USELESS_JVM_EXPOSE_BOXED confuses in case of argument presenceKT-61582Kotlin/Native: deprecate and remove -generate-worker-test-runnerKT-87821Do not promote visibility of local lambda classes in private inline scopes to PublicKT-80005Kotlin/Native: remove eager GlobalData initializationKT-87975Reenable inline checks in noinline parameter default valuesKT-87255CompanionBlocksAndExtensions: companion blocks initialized before enum entiresKT-81816False positive "Unreachable code" with lambda and elvisKT-87864K2IdeK2CodeKotlinSteppingTestGenerated$StepOver$Uncategorized.testSoSuspendableCallInEndOfFun failsKT-82676Replace reflection-based RuntimeFeatureToFlagMap with code generationKT-29890Inline constructors for arrays could not be inlinedKT-72903K/N: combineContextandKonanBackendContextKT-82462Context sensitive resolution can use extension properties from importsKT-82465Context sensitive resolution does not resolve extension properties in presense of any additional receiverKT-82461Context sensitive resolution can use extension properties declared on Any receiverKT-87269Kotlin Debugger: ISE “Non-empty unresolved argument list.” on evaluating serializable value class with custom serializerKT-65195K2: Unexpected exception when executing dynamic array element inc/decKT-87297'Underscore for unused variable' feature should be stable and enabled by defaultKT-87838IntroducedAt: Using@IntroducedAtin ordinary class constructor with inline class parameters leads to platform declaration clashKT-87189False negative NoWhenBranchMatchedException: when subtype implements multiple sealed interfacesKT-87466JvmExposeBoxed: Cannot generate code for delegating constructor of data class in IJKT-87725Prohibit lambda implementations of sealed Java interfacesKT-87436Separate LFs and compiler arguments for companion extensionsKT-85143Remove the unfinished "compile against klib" feature on JVMKT-75945Indy: Allow lambdas with annotationsKT-84802Add new synthetic class flag to JVM metadataKT-86635Analysis API: arguments of applied annotation is sometimes (incorrectly) emptyKT-87553K2: Incorrect argument evaluation order with explicit context argument in presence of explicit extension receiverKT-87546Fix slightly confusing test data for explicit context arguments in case of Java overrideKT-87696NBD doesn't work for smart-casted MFVCKT-87695Compiler crash while compilation of MFVC destructuring with a variable name mismatchKT-85307"Type argument is not within its bounds" for Java classes with recursive generic bounds (F-bounded polymorphism)KT-87202K/N IC: NoSuchFileException: metadata.properties when upgrading Kotlin from <2.2.10 to >2.2.20KT-87606Compiler crash on red code with redeclaration of type parameter which is used as expressionKT-87786MakeConeLookupTagBasedTypeinto a sealed classKT-86554Check suspicious when over ConeKotlinType in JavaOverrideCheckerKT-87775Incorrect RETURN_VALUE_NOT_USED_COERCION where regular 'Return value not used' was expectedKT-87073CompanionBlocksAndExtensions: calling companion extension function from project/binary dependency fails with java.lang.IndexOutOfBoundsExceptionKT-84780The INITIALIZER_TYPE_MISMATCH diagnostic is reported on the assignment operator (=) instead of the initializer expression when there is a type mismatchKT-87335Context parameters: wrong LINENUMBER emitted for context argument loads in JVM bytecodeKT-86332False positive MISSING_DEPENDENCY_IN_INFERRED_TYPE_ANNOTATION for implicit lambda parameters with inaccessible type annotationsKT-87273K/N IC: cinterop klib caches are not recompiledKT-84562Get rid of usages of@K1Deprecation-annotated declarations in JVM backendKT-87550Drop the "too complex expression" error with@IntroducedAtKT-87505False positiveINVALID_VERSIONING_ON_VALUE_CLASS_PARAMETERon value class secondary constructor with@IntroducedAtKT-87504Do not make@IntroducedAta compiler-required annotationKT-87194K/N IC: changing an external library to an already-cached version in ~/.konan doesn't rebuild application's cacheKT-82677Switch latest stable version in Kotlin project to 2.5KT-84406Remove support for IR serialization in JVMKT-72706Confusing "INVISIBLE_REFERENCE" when calling private constructorKT-87592Kotlin/Native: make remove redundant safepoints phase a proper LLVM passKT-87520Implicit JvmExposeBoxed breaks delegation by interfaceKT-87278Smartcast toAnyin RHS of==with nullable type parameterKT-83575Native: perf logging doesn't work correctly for subcompilations (like per-file caches)KT-73771K2: Infinite compilation caused by buildList without typeKT-85417K2: False negative SUBCLASS_CANT_CALL_COMPANION_PROTECTED_NON_STATIC diagnostic when superclass is genericKT-30062"AssertionError: Recursion detected on input" with class implementing itself by delegationKT-87507False-positiveABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTEDon fake-override with value parameter of type missing in dependenciesKT-87413CompanionBlocksAndExtensions: impossible to use field in companion extension properties getters/settersKT-87351False positive WRONG_MODIFIER_CONTAINING_DECLARATION on internal companion block members in interfaceKT-87364False positive BACKING_FIELD_IN_INTERFACE on companion block member in interfaceKT-87360False positive DELEGATED_PROPERTY_IN_INTERFACE for delegated companion block member in interfaceKT-87347False negative NON_ABSTRACT_FUNCTION_WITH_NO_BODY/MUST_BE_INITIALIZED for companion block member in interfaceKT-86905DFA-based exhaustiveness bug with implicit companion accessKT-85764Native: Prohibit compiling sources in 'kotlin' package by defaultKT-86464SupportisPublicAbiJVM metadata flag for anonymous and synthetic local classesKT-86524JvmExposeBoxed: Collection does not implement abstract methodKT-80247No diagnostic on unresolved type annotation from a dependency in an inferred typeKT-85230False negative deprecation diagnostics on import of member of nested classKT-85188Don't poison binaries with companion blocks & extensions for LV >= 2.5KT-63454Properly check that inline fun is in the same module as callee inIrSourceCompilerForInlineKT-71854K2 IDE. False positive red code because of external annotation on a generic parameterKT-82132False-positive type mismatch with -language-version 2.2KT-59526Store annotation default values in metadata on JVMKT-57802K2: Backend Internal error: RecordEnclosingMethodsLowering.ktKT-11474ISE: Requested A, got foo.A in JavaClassFinderImpl on Java file with package not matching directory
Compose compiler
b/555304803Fixed a bug that made Compose stack trace mapping collection fail in certain cases in which a boolean variable was captured in a suspend lambda.b/539644912[Compose] Support rich callable references for@Composablefunctionsb/546101628Fixed a bug that caused miscompilation whenever awhenexpression had a result that was computed by anotherwhenexpression, and the innerwhenexpression had a@Composablecall in one of its conditions.b/549552317Fixed a bug that, in certain cases, prevented execution of non-local returnstatementsinside lambdas called fromwhenexpressions.b/481422057Made the applier inferencer support repeatedComposableTargetannotations per the semantics described in the documentation ofComposableTargetb/530458587Start initializing the fields ofComposableSingletonsobjects lazily
IR. Inlining
KT-81022KLIB inliner: Don't specify language features in test runners for IR Inliner on 1st stageKT-87521renderCascadingInlining throws NPE when reporting an AFU-transformed functionKT-87829Volatile field leaking through internal inline function in friend moduleKT-86578Leaking of a private entity through a companion extension: cross-module caseKT-88020[KLIBs] Enable cross-module inliner in stdlib & kotlin-testKT-86558Forbid accesing volatile references after inlining
IR. Interpreter
KT-84627Disable IR interpreter in the compilerKT-87043Remove IR interpreter sources from the compiler
IR. Tree
Fixes
KT-88864Cache deserializers using a stable key inside IR linkerKT-88610Type parameter is out of bounds while returning fallback valueKT-88693Investigate using the same IR validation settings for all backendsKT-70048IR: remove addSimpleDelegatingConstructorKT-85576KLIBs: Add PL tests with companion blocks and companion extensionsKT-87456Make sure IR renderer is working correctly withisStaticcallKT-69305Re-enable reporting out-of-scope type parameter usages during pre-lowering IR validationKT-88146ReplaceIrDeclaration.modulewithIrDeclaration.moduleFragmentKT-84335[Klib] Carefully revise usage of IR validator checkers in testrunnersKT-88177IR: MarkDescriptorVisibility.isVisiblewith@ObsoleteDescriptorBasedAPIand ensure it is not used outside the old frontend and psi2irKT-77049Avoid failing to produce an IR dump in testsKT-87198IR: AddIrModuleFragmentlink toIrExternalPackageFragmentKT-87300IR: Replace module reference inir.declarations.createEmptyExternalPackageFragmentfromModuleDescriptortoIrModuleFragmentKT-87438Make sure there are no duplicated names in lowerings on first and second stagesKT-87732Don't useIrBuiltInsOverDescriptorsin KLIB tool'sdump-ir-inlinable-functionscommandKT-87962[IR] Add a checker that IrClass.superTypes is not emptyKT-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-78960[FO] Limit static fake overrides generation for static functionsKT-83236PeopleInSpace_mpp compilation error: The symbol table has been sealed
JVM. Reflection
New Features
KT-85904Reflection: add a way to get companion extension class
Performance Improvements
KT-84354kotlin-reflect: replace usages of SoftLazy with regular safe-publication lazyKT-87408kotlin-reflect: KCallable.callBy on a bound::copyreference is ~55x slower since 2.2.20
Fixes
KT-80710Reflection: change KCallable representation to avoid dependency on K1KT-89280NoSuchElementException in argumentsMakeSenseOnlyForMutableContainer for Java non-static inner class of generic outer classKT-87709Reflection: "invoke" in classes inheriting from suspend function types is loaded incorrectlyKT-87948Reflection: AssertionError "Different tree sizes of bounds" on inheritance from Java raw class with self-recursive bound with method overrideKT-87581Reflection: extra abstract invoke() method shown for a Java class implementing a functional interface in the new implementationKT-87464Reflection: property accessor parameters are equal to property parameters in the new implementationKT-87369Reflection: KClass.members fails on Java class with self-referential raw type boundsKT-88145Investigate potential bug caused by incorrect statics handling in KClassImpl.Data#getInlineClassUnderlyingTypeKT-87367Reflection: memberFunctions fails on suspend-implementing classesKT-87365Reflection: java.util.LinkedList::class.supertypes contains a duplicate MutableList<E!> entry in the new implementationKT-87363Reflection: kotlin.Any constructor exposes@IntrinsicCandidateannotation in the new implementationKT-87356New Reflection: KotlinReflectionInternalError on .annotations of primitive/array constructorsKT-86926Reflection: references to functions inherited in Java are not substituted in the new implementationKT-87308Reflection: KTypeParameter instances not equal for bound/unbound KProperty
JavaScript
New Features
KT-88294Add es2020 target for Kotlin/JS and Gradle pluginKT-88024KJS: Allow exporting interfaces nested in other interfaces to JavaScriptKT-49791KJS: Provide option to exportdynamicandAnyasunknownKT-49795KJS IR: Allow typealias of exportable type to be exportedKT-56493KJS: Export documentation to generated d.ts files
Fixes
KT-87127KJS:@JsPlainObjectfactory contains duplicated parametersKT-87516[K/JS, K/Wasm] Companion objects coming from super interfaces are not initializedKT-86954K/JS: hashCode() of Double/Float disagrees with equals() for NaN valuesKT-89144[JS, Wasm]static_init_calledfield for static initializers is not initialized correctlyKT-88463K/JS: Rewrite JsToStringGenerationVisitor to KotlinKT-87753Add "scopes" decoding to ECMA426BasedSourceMapParserKT-88571K/JS: "llegalStateException: Internal error: cannot find external signature" caused by@Serializableenum in 2.4.20-RCKT-88698[K/JS, tests] Remove obsolete DISABLE_IR_VISIBILITY_CHECKS from kotlinx-serialization test dataKT-87774KJS: Refactor org.jetbrains.kotlin.js.testOld.utils.DirectiveTestUtilsKT-87008K/JS: Preserve containers' names when lifting static members in StaticMembersLoweringKT-17719JS: integer division by zero does not throw exceptionKT-86771KJS:@JsExport.Ignore on a Long member still triggers the -Xes-long-as-bigint compilation errorKT-86273@JsExport.Ignore does not work properly with data classes propertiesKT-87901KJS: Perform WhileConditionFolding on IR instead of JS ASTKT-88117K/JS: duplicated expression in generated JS comma expression for IrCompositeKT-88015KJS: Exported sealed interfaces should not be implementable from TypeScriptKT-87352Kotlin/JS: Ignoretypealiasinside@JsExported classKT-87793[Wasm, JS, IC] Invert IC cache invalidation keys listKT-86648[K/JS] Support companion blocks and extensions in TypeScript exportKT-86934K/JS: Stack overflow when implementing interface with suspend fun using anonymous objectKT-87377External classes can have field names colliding with minimized subclass field/method namesKT-80188Design exporting of suspend lambdas into JS/TSKT-86437Incorrect handling of array destructuring with elisionKT-86433JSCODE_ERROR for object destructuring assignment with default valuesKT-85990K/JS: Default parameter values ignored in@JsStaticsuspend functions when class is exportedKT-75176Add infrastructure for bundle size testingKT-73067Drop support for the legacy JS metadata from the metadata decompilerKT-13338JS: don't generate new class/object for empty enum entry
Klibs
New Features
KT-86081KLIBs: Support moving companion fun to parent class
Fixes
KT-87965[Tests][Klibs] Allow generated version overload wrappers appear during pre-serialization lowerings as legitimate Klib ABI entries.KT-86687SplitKLIB_WRITINGmetric, toKLIB_IR_WRITINGandKLIB_METADATA_WRITINGKT-87454KLIBs: Add PL tests for references with context parametersKT-77818[KLIB resolve] "The same 'unique_name=kotlin' found in more than one library" warning during metadata compilationKT-86572-Xheader-mode: header klib omits members provided by interface delegation (by)KT-84838Get rid ofModuleDescriptorfromIrModuleDeserializerKT-54019[PL] Unimplemented FO: Adding interface to abstract parent + direct reference to absent member: JS build is successful, Native failsKT-87625Wasm: a callable reference bound to a null receiver equals an unbound referenceKT-87443KLIB: Store metadata flags in manifestKT-87447Wasm: Rework internal presentation of KFunction to support references with context parametersKT-87445Native: Rework internal presentation of KFunction to support references with context parametersKT-87450Advance KlibAbiCompatibilityLevel to 2.5KT-87104Make org.jetbrains.kotlin.konan.file.File to be implementation detail of the compilerKT-86320[PL] Replacing unusable classifiers with Any? type may cause a signature clashKT-81947[Wasm] Klib backward and forward compatibility testingKT-84836Minimize usages of IrBuiltIns in the KotlinIrLinker
Language Design
KT-11968Research and prototype namespace-based solution for statics and static extensionsKT-86090Stable release of "IntroduceAt": binary compatibility for optional parameters
Libraries
New Features
KT-6938Boolean.onTrue/onFalse, ifOrNullKT-88708Consider documenting that MutableMap.put keeps the stored key instanceKT-88037kotlin-metadata-jvm: add readLenient()/readStrict() to KotlinModuleMetadataKT-39661Support TypeVariable.getGenericDeclaration for types created in KType.javaType in kotlin-stdlibKT-31305Support JUnit5-like assertions with message suppliers in kotlin-testKT-78462Annotate kotlin-stdlib-jvm with@IgnorableReturnValuewhere appropriate
Fixes
KT-86151AtomicFU + companion block: compiler plugin generated invalid IRKT-86049Check serialization lib for the Companion Blocks and extensionsKT-78174Improve kotlin.AutoCloseable documentationKT-87407Adapt kotlinx.metadata to changes in companion extension metadata formatKT-87780K/Wasm: review coroutine-related APIs annotated by PublishedApiKT-87779K/Wasm: remove DoNotInlineOnFirstStage from coroutine-related APIsKT-78998K/Wasm: consider using qualified name instead of simple name for JS Error created for exceptionsKT-78707Wasm: Throwable.stackTraceToString misses exception's class if it has no message or causeKT-86680Revert allEqualBy to == comparison once KT-86678 is fixedKT-57134Native: Consider introducing public ExceptionInInitializerError and NoClassDefFoundKT-86760Consider deprecating the assertNotNull 3-arg overload accepting a lambdaKT-87613Test Federation: Review domain Core Libraries Smoke & Contract testsKT-87849Set@SinceKotlin(2.3) for ignorability annotationsKT-87312Stabilize RVC and allow@IgnorableReturnValueeven in disabled checker modeKT-86956Remove the JS guards from allDistinct NaN tests once KT-86954 is fixedKT-52400Deprecate@BuilderInferenceKT-80605Rename MustUseReturnValue -> MustUseReturnValuesKT-65526Rewrite builtins as expect-actual
Native
KT-88857Regression in LibraryPathFilterKT-88965[Native] Update minimal Xcode versionKT-86678K/N: == on boxed Double/Float disagrees with equals() for NaN values
Native. Build Infrastructure
KT-87996K/N test task fails with "No cache found for library"
Native. C Export
KT-87538Kotlin/Native: hide companion blocks and extensions from C export
Native. C and ObjC Import
KT-81934Swift export should look upSwiftBridgeandSwiftNamewhen translating types from platform librariesKT-88374Kotlin/Native: deprecate CStructVar.Type with errorKT-84721Generate C-interop KLIBs in previous ABI version in Kotlin 2.5.0
Native. ObjC Export
KT-87738Kotlin/Native: hide companion blocks and extensions from ObjC exportKT-86199Scalability problems with PackageFragmentProviderImplKT-88052[ObjCExport] AA: Property names are mangled differently and accessors do not match K1's outputKT-87852[ObjCExport] AA: Replace name mangling of special method familiesKT-88153[ObjCExport] AA: documentation specifying annotation is not attached to receiverKT-87626@ObjCEnuminterpreted as open enum in Swift
Native. Platforms
KT-78078Remove armv7k(watchosArm32) target
Native. Runtime
KT-88954[Native] Add -Wno-unknown-attributes to build of the runtimeKT-88156Kotlin/Native: reduce number of runtime modules
Native. Runtime. Memory
KT-87963Kotlin/Native: review atomics usage in GlobalData.cpp
Native. Swift Export
New Features
KT-87556Kotlin/Native hide companion blocks and extensions from Swift ExportKT-87802Swift Export: cross-language subtyping pt.2KT-87574Swift Export: unify error/exception throwing in sync & asynchronous bridges in cross-language inheritanceKT-80632Swift export: symbol not found for cinterop protocolKT-72556Export top-level extension functions and properties from "main" package as Swift extensionsKT-84191[Swift Export] export KDoc
Fixes
KT-88584Swift Export: context parameter is dropped from export when declared in a flattened package: missing argument for parameter #1 in callKT-88042Swift Export [Inheritance]: Kotlin can't call an interface method on a Swift subclass that inherits the interface (ClassCastException)KT-87947Swift Export fails when inheriting Kotlin abstract classKT-86403Swift Export: Lean TypeInfo generation for swift inheritorsKT-89025[Swift Export] generic type param with generic upper bound fails to compileKT-88999Swift export: leaf case of sealedType() is unreachable when the implementing class is not exportedKT-86510[Swift Export. Tests] Exporting full API surface of kotlinx.coroutines causes runtime crashesKT-87875[Swift Export] Reverse bridges don't work with overloadsKT-88386[Swift Export] SwiftExportConfig.errorTypeStrategy with SpecialType generates incompilable codeKT-88809[Swift Export] intersection override with final implementation fails to compileKT-88740[Swift Export] declaration with internal OptIn fails to compileKT-88669[Swift Export] abstract class with multiple interfaces with same declaration fails to compileKT-87398Swift Export: issues with updating a user projectKT-88739[Swift Export] function returning MutableList fails to exportKT-87457Swift Export: NSInvalidArgumentException in _Kotlin_SwiftExport_wrapIntoExistential when Compose renders first iOS frameKT-88330KotlinExistential has no _createClassWrapperForExternalRCRefKT-88723[Swift Export] Support factory fun name based on suffixKT-88682Swift Export: can't export enum class implementing a sealed interfaceKT-88495[Swift Export] KDoc support: text after the@seeidentifier is droppedKT-88378[Swift Export] Special characters in interface namesKT-88474[Swift Export] Typealias for inner interface is internalKT-88473[Swift Export] Can't implement sealedType function for leaf interfaceKT-88368[Swift Export] OptIn receiver extension in interface fails to compileKT-87697[Swift Export] conflicting ObjC marker namesKT-87391[Swift Export] object returned from a function as an interface should be castable to a last public class, if that class conforms to that said interfaceKT-88224[Swift Export]@escapingis emitted on a variadic closure parameter, which Swift rejectsKT-88370[Swift Export] Extension property on generic class with type param fails to compileKT-87791[Swift Export] OptIn interface member with default implementation fails to compileKT-88019Swift Export: parameter names in top level functions are not escapedKT-88171[Swift Export] enable KDoc exportKT-87874[Swift Export] Generic start project param in closure fails to compileKT-87798[Swift Export] generic sealed interface fails to compileKT-87808[Swift Export] Nested generic fails to compileKT-87236[Swift Export] interface member with extension receiver fails to compileKT-85545[Swift Export] functional typealias with unavailable typeKT-85544[Swift Export] property with hidden setter isn't exported
Tools. BCV
KT-85950Add support of "com.android.kotlin.multiplatform.library" plugin [ABI validation]KT-87551Bring kotlin.test API back after migrating to JUnit5
Tools. Build Tools API
New Features
KT-84401BTA: implement Kotlin/JS incremental compilation supportKT-88018K2 Multiplatform incremental compilation of common code targeting JVM across multiple modulesKT-87086Add Build Tools API entry point for Analysis API based TypeScript generation
Fixes
KT-88835Wasm klib incremental compilation via daemon ignores configuration inputsKT-85464BTA: promote restricted arguments to ERRORKT-88776Remove deprecated JvmSnapshotBasedIncrementalCompilationConfiguration.MONOTONOUS_INCREMENTAL_COMPILE_SET_EXPANSIONKT-83937Promote shrunk-classpath-snapshot configuration deprecation to errorKT-88299JS and Wasm klib compilation and linking operations silently ignore the IR_OUTPUT_DIR and X_INCLUDE compiler argumentsKT-86169[BTA]applyArgumentStringssilently drops typed arguments and suppresses typed validation when used on the same builderKT-89050LOOKUP_TRACKER is not propagated to JS/Wasm incremental compilationKT-88298Dropped JS/Wasm compiler arguments are still present in the public BTAKT-88491WasmLinkingOperation and WasmKlibCompilationOperation do not check option availability for the compiler version in set()KT-88838JsKlibCompilationOperation.shouldCompileIncrementally() error message mentions the JVM config typeKT-88478JsLinkingOperationImpl uses Options(JsKlibCompilationOperation::class) instead of JsLinkingOperation::classKT-88684WasmLinkingOperation cannot target wasm-wasi: no Wasm target option available in linking argumentsKT-88381Argument-parsing warnings are lost when compiling via Build Tools APIKT-88763Default classpath metadata to the common sources IC propertyKT-88777Remove deprecated JvmSnapshotBasedIncrementalCompilationConfiguration.UNSAFE_INCREMENTAL_COMPILATION_FOR_MULTIPLATFORMKT-87522Separate enableUnsafeOptimizationsForMultiplatform for js and jvmKT-85791Remove compatibility wrapper for BTA IMPL 2.4.0 with lower versionsKT-88348MessageCollector in IncrementalCompilerRunner drops diagnostics IDsKT-87525Add metrics for JVM metadata operations in Incremental CompilationKT-87848Guard JVM incremental metadata plumbing behind KMP metadata-on-classpath supportKT-87743MakeKotlinCoreEnvironment.disposeApplicationEnvironment()unnecessary for K2 BTA compilationKT-87822Clean up obsolete disk-based common metadata code after switching to IC-cache JVM metadataKT-87792[BTA] Handle removed arguments in BTA testsKT-87654[BTA] KotlinMetadataKlibCompilationOperation can silently produce a non-klib (legacy metadata) artifactKT-87653[BTA] Metadata operation reports a JVM-specific message for the restricted -d argumentKT-87597[BTA] KotlinCompilationProcessFailedException causes LinkageError
Tools. CLI
New Features
KT-87671Disallow using of any lifecycle version greater than KotlinVersion.CURRENT
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-89211Show warning when running the compiler on JDK < 17KT-75990Deprecate all K1-related compiler flags and modesKT-89094Rich Errors: Create LFKT-88548False positive "Member overrides different '@Throws' filter" when a nativeMain class overrides a commonMain member carrying the same@ThrowsfilterKT-88475IncrementalCompilationComponents instances are not being called anymoreKT-86383Use a language feature for new inline variables schemeKT-87493kotlinc.bat crashes with ClassNotFoundException when installed to a path with spaces on ReFS (dev drive)KT-88222kotlinc/kotlin bash scripts fail to handle spaces in KOTLIN_HOME path, producing %20-encoded classpath entries on macOS/LinuxKT-87373Warn on the use of thekotlinexecutable and recommendkotlinrKT-88026large arithmetic expression causes java.lang.NoClassDefFoundError instead of stackoverflowKT-85591RemoveXklib-normalize-absolute-pathcompiler argumentKT-86626Add Compiler Argument for Context-bound Callable ReferencesKT-87826Remove -Xcontext-receivers compiler argumentKT-68175Remove CLIConfigurationKeys.MESSAGE_COLLECTOR_KEYKT-80348Expose 'XXLanguage' compiler argument as a normal argumentKT-76498Implement JSON dumper for performance stats
Tools. Compiler Plugin API
KT-46917Dependencies of native compiler plugins are not resolvedKT-86900FirSamResolver ignores plugin-generated abstract members when performing SAM conversion on fun interface
Tools. Compiler Plugins
New Features
KT-87731AtomicFU + companion block: gracefully handle delegated companion propertiesKT-87984AtomicFU: support companion blocks and extensions for JS targetKT-87978AtomicFU: support companion blocks and extensions for K/NKT-87683Support functions and constructors with@Builderon Kotlin classesKT-87682Support for@Singularannotation with@Builderon Kotlin classesKT-88270Support for@Singularwith@Builderand Guava collections on Kotlin classesKT-87886Support for@Builder.Defaultannotations with@Builder` on Kotlin classesKT-87685Support generics with@Builderon Kotlin classesKT-87686Implement minimal viable functionality with@Builderon Kotlin classes
Fixes
KT-87277AtomicFU: allow only private atomic companion extension and member propertiesKT-88336Change Lombok diagnostics severity from warning to strong warningKT-84119Power-assert: "StringIndexOutOfBoundsException: Range [0, -2) out of bounds for length 884" in a scratch fileKT-88179Power-assert: IrGenerationExtensionException (StringIndexOutOfBoundsException) when assert() wraps a context-parameter function callKT-54072[K2] [JAVA_TYPE_MISMATCH] error in case sortedSetOf() is used as a param of a filed annotated with @ Singular which type is raw SortedSetKT-87871ANNOTATION_HAS_NO_EFFECT reported for interfaces/annotation class with@Log, although the log property is generatedKT-88505Lombok:@Buildergenerates a setter for a Java static fieldKT-88322AddlinuxArm32Hfp()to Power Assert runtimeKT-88803PowerAssert: Create tests for diagram without runtimeKT-88337Handle Lombok AccessLevel.PROTECTED, MODULE, and PACKAGE correctly for Kotlin classesKT-86651Lombok: "Constructor without parameters is already defined" checker for@NoArgConstructorKT-87912AtomicFU: compiler plugin can't handle loop function invocation inside an inline function initializing top-level propertyKT-87784AFU: compiler plugin does not support inline extension properties on atomicsKT-87612Test Federation: Review domain Compiler Plugins Smoke & Contract testsKT-75877PowerAssert: don't display value for anonymous objectKT-88124DataFrame: failing test when removing workaround in FIR2IRKT-87889Use Lombok implementation to singularize wordsKT-85180AtomicFU/Native IR validation errorKT-67440Atomicfu-compiler-plugin: incorrect initialization order of delegated propertiesKT-67839Atomicfu plugin: support transformation of minusAssign/plusAssign operatorsKT-87563Lombok: StackOverflow with@SuperBuilderand cyclic inheritance hierarchy
Tools. Compiler plugins. Compose
KT-88069[Compose Compiler] NoClassDefFoundError when invoking@Composablelambda directlyKT-88028Compose compiler: IndexOutOfBoundsException in ComposableTargetAnnotationsTransformer when overriding a@Composablefunction with default parameter in another moduleKT-82808[CMP] IrLinkageError: Abstract function is not implemented
Tools. Compiler plugins. Serialization
KT-88540Warn when@SerialInfo/@InheritableSerialInfo-annotated annotation has inapplicable targetKT-75702Support array content equality when deciding whether to encode a default value in kotlinx.serialization plugin
Tools. Gradle
New Features
KT-88526Initial implementation of Kotlin Archive in KGP
Performance Improvements
KT-88084Each build leaves a strong reference to an instance of BuildMetricsServiceKT-69613Remove usages ofgetCanonicalPathandgetCanonicalFilein plugins code
Fixes
KT-87986Publish Swift Export metadataKT-88622Unconditionally deprecate direct integration with AGPKT-87971Make multiple loaded plugins detection compatible with project isolationKT-88290Make kotlin.user.home support relative pathsKT-71968Setting customkotlin.project.persistent.dircausesNoSuchFileException: ./custom-cache-dir/sessions/kotlin-compiler-12437393244673679493.saliveKT-69336Support kotlin.project.persistent.dir that is outside of rootProjectKT-88380Raise deprecation level to error for Kotlin source sets in Android extensionKT-88850Add explicit xcodeIntegration and opt-in task wiringKT-84114Bump the minimal supported Gradle version to 8.14.xKT-87989Deprecate the legacy Swift Export DSL and provide migration diagnosticsKT-77241KGP: Remove CleanData infrastructureKT-88853Derive Swift Export module export modes from KMP api and implementation dependenciesKT-82426Improve publishing with cross compilationKT-87993Compile against Gradle API 9.7KT-87994Run Gradle integration tests against Gradle 9.7KT-87995Run Gradle functional tests using Gradle runtime 9.7KT-87840Isolated projects: "Project ... cannot access 'Project.extensions' functionality on another project" when configuring JS/Wasm targets (NodeJsPlugin/D8Plugin)KT-88192KMP Separate Compilation: separate compilation mode is incompatible with configuration cacheKT-87726Run functional tests against the Gradle 9.6 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-86835[KGP] Migrate KotlinSecondaryVariantsDataSharing to kotlinx-serializationKT-86833[KGP] Migrate Apple/Swift-export/Native Gson usages to kotlinx-serialization; introduce FileSerializerKT-87724Fix failing SwiftPM Import TestsKT-87970Extend test coverage for multiple loaded plugins detectionKT-87679Bump version of file-leak-detector used in KGP ITsKT-87911Report an actionable diagnostic when .kar files reach compilation classpaths in Kotlin 2.4.20KT-86435ReplaceFile.ensureParentDirsCreated()with NIO PathcreateDirectories()KT-61225Turn "Kotlin Gradle plugin was loaded multiple times" warnings into errorKT-87729Update KGP test to use jvm-test-suiteKT-86040Run tests against the Gradle 9.6.0 release
Tools. Gradle. JS
New Features
KT-86731Integrate new Kotlin JS Browser Test pipeline with IDEA in debug modeKT-86715Add ability to configure Dev-server URL (or specification) to run browser tests from
Fixes
KT-87641Having a few same js targets with configured tests leads to Cannot add task 'kotlinInstallPlaywrightBrowsers'KT-88709Deprecate NpmDependencyExtensionKT-88718[TechDebt] Add dependsOnNpmTooling to simplify task dependency on NPM toolingKT-84740Promote deprecation of NpmApiExecution#resolveRootProject to ERRORKT-89052Add a cacheability annotation to EsmBundleKotlinJsTestsKT-86112Promote KotlinJsIrTarget constructor deprecation from WARN to ERRORKT-85179Remove NodeJsExec.createKT-88597Fix failing Gradle Integration Tests Gradle Kotlin JS with Browser tests LinuxKT-87502Validate customBrowserExecutable path in new JS test DSLKT-88504Gradle Integration Tests Gradle Kotlin JS with Browser tests (Windows) fails after Gradle 9.7 BumpKT-86708Add FUS events for new JS test APIKT-84724NPM dependency versions do not invalidate KotlinWebpack task cache key in kotlin multiplatform projectKT-86797Failed JS tests don't report errors in the outputKT-86799Report browser environment to IJKT-87501Throw an error if new JS test DSL is used with WasmKT-87600Playwright install on multiple subprojects cause Gradle build to failKT-53687Don't trigger npm and yarn related tasks if it not relevant for assemble
Tools. Gradle. Multiplatform
KT-60724Legacy dependencies are not reported if used in testsKT-80897Drop implementationMetadataConfigurationName from KGPKT-88890Stabilize MppIdeDependencyResolutionIT IDE resolution strict modeKT-88590NoSuchElementException thrown with new KMP compilation schemeKT-87790Kotlin 2.4.0 increases Gradle sync timesKT-82417KMP Separate Compilation: missing fragment dependencies for custom darwin source set that mirrors appleMainKT-87946Flaky JSBrowserTestsIT
Tools. Gradle. Native
New Features
KT-84852Wire linkage package integration check with Swift Export's embedAndSign
Fixes
KT-88813Delete native tasks API deprecated as ERRORKT-87632Native test: empty unnamed Output tab appears in Test Results when test process exits abnormallyKT-76147Gradle Configuration Cache: 'compile*KotlinMetadata' caused invocation of 'Task.project' in 'commonizeCInterop'KT-87576Simplify SwiftPM lock file sync by moving logic from sync tasks into fetch taskKT-87535Make SwiftPM fingerprint file structuredKT-53477Native: Gradle plugin doesn't add compiler plugin transitive dependencies to compiler plugin classpathKT-85468Don't fail IDE import if the SwiftPM import pipeline has failed somewhereKT-87394Publishing fails with FileNotFoundException: iosArm64 KLIB missing when compilation skipped due to cross-compilation disabled in a project dependencyKT-88008SwiftPM-import Gradle IT fails after watchosArm32 removal and platform-condition changeKT-27683Most Kotlin compiler plugins cannot be used in Gradle MPP with Kotlin/NativeKT-87873Deprecation warning on AndroidNative gradle DSLKT-87630Lenient import doesn't work with awaits introduced in KT-85933
Tools. Gradle. Swift Export
KT-88672Gracefully fail embedSwiftExport task if the minimal target version is less then iOS 18KT-88523Introduce the new export extension with a swift configuration blockKT-89059Introduce a bridging layer between the legacy SwiftExportExtension and the new ExportExtension.SwiftExportConfiguration
Tools. Gradle. Wasm
KT-87082Support new playwright-based browser test DSL in wasmjsKT-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-86879K/Wasm: Update wasmtime to 47.0.0KT-87831NPM install on Windows fails if project path contains bracesKT-87565Add validation for kotlin.wasm.compilationMode Gradle property values
Tools. Incremental Compile
KT-88801Incremental compilation fails for a serializable class hierarchy in multiple files with private propertiesKT-86121Incremental compilation fails for a serializable sealed inheritance chain in multiple filesKT-88762Make kotlin.internal.jvm.enableUnsafeOptimizationsForMultiplatform a user-facing Gradle propertyKT-62686K2: Common module sees platform declarations in case of MPP project incremental compilation
Tools. Kapt
KT-71883Kapt: generate Java sources directly instead of using JCTreeKT-88559KAPT: 'com.sun.tools.java.util.Context' class can't be found ('tools.jar' is absent in the plugin classpath) on 28-ea JDKKT-85195KAPT: IntroducedAt is not supported in KAPTKT-80882K2 KAPT: Dagger fails to process code annotated with@ComposableKT-70804Cleanup kapt implementations for K1 and K2
Tools. Maven
KT-83374CRI: it is not clear that CRI generation requires IC being enabled in Maven
Tools. Scripts
KT-87958K2 scripting: FirPropertyImpl transformation crash when using class from@file:Import-ed script in 2.4.0+KT-88453VirtualFileScriptSource.textleaks an unclosed file stream — script source file handle held until GC, blocks file deletion on WindowsKT-87047Scripts: ClassNotFoundException for 'kotlin.script.experimental.dependencies.Repository' when compiling .main.kts with '-Xuse-fir-lt=false'KT-87041Scripting: classpath extraction fails to extract stdlib from kotlinc
Tools. Statistics (FUS)
KT-88758Enable FUS for all Gradle IT tests