Changelog
Analysis. API
Fixes
KT-65417K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source setsKT-68882Analysis API: RefactorKaSymbolsKT-68689LL API: support analysis from builtins moduleKT-67775Analysis API: expose only interfaces/abstract classes for the user surfaceKT-68009K2: lowering transformers of Compose compiler plugin access AbstractFir2IrLazyFunction modality, which results in null point exceptionKT-68918collectCallCandidates works incorrectly for parenthesis invokeKT-68462Analysis API: Integrateproject-structuremodule intoanalysis-apiandanalysis-api-platform-interfaceKT-69131AA: "provideDelegate" operator is not resolved from the delegation reference in FIR implementationKT-69055Analysis API: StabilizeKaScopesKT-68959Introduce KaSeverityKT-68846Mark KaFirReference and all implementations with internal modifierKT-68845Move KaSymbolBasedReference to resolution packageKT-68844Move KaTypeProjection to types packageKT-65849K2: Rename 'high-level-api' family of JARs to 'analysis-api'KT-62540Remove uses of TypeInfo.fromString and TypeInfo.createTypeText from Kotlin pluginKT-68155Analysis API: Add PSI validity check toanalyzeKT-62936Analysis API: NativeForwardDeclarationsSymbolProvider is not supported for Kotlin/Native
Analysis. Light Classes
KT-68261SLC: Constructors of sealed classes should be privateKT-68696DropDecompiledPsiDeclarationProvider-related stuffKT-68404SLC: wrong binary resolution to declaration with@JvmName
Backend. Native. Debug
KT-67567Native: after updating to LLVM 16 lldb hangs when smooth stepping
Backend. Wasm
KT-68828Wasm test failure. expect-actual. private constructor in expect
Compiler
New Features
KT-58310Consider non-functional type constraints for type variable which is an expected type for lambda argumentKT-57872Improve "Public-API inline function cannot access non-public-API" check
Fixes
KT-65546K2. implement extended checker for unused anonymous parameter in lambdaKT-60445K2/Java: investigate possible symbol clash while enhancing Java class type parameter boundsKT-68358@EnhancedNullabilityis missing on value parameter type after inheritance by delegation with strict JSpecify enabledKT-67791False negative "Synchronizing by Meters is forbidden" with inline value classesKT-69495k2: inconsistent output of unsigned number in string templatesKT-67693Implement checkers for K1 compiler which will check the usage of K2 new features and report that they are not supported in K1 compilerKT-44139Don't report overload resolution ambiguities if arguments contain an error typeKT-69282K2: equality of unsigned types with nullability works incorrectlyKT-69619K2. JAVA_TYPE_MISMATCH when Kotlin out generic type used in JavaKT-68996K2: "Not enough information to infer type argument" caused by typealias annotation with fixed generic argumentKT-69563trying to call.sourceonFirPackageFragmentDescriptorresults in exceptionKT-69611Internal annotation FlexibleArrayElementVariance is written to output jarKT-69463K2: false negative SUPER_CALL_WITH_DEFAULT_PARAMETERS with expect/actual declarationsKT-68556K2: false negative PROPERTY_WITH_NO_TYPE_NO_INITIALIZER on uninitialized property without typeKT-68997K2: "No accessor found" for an inline value class when query the value of a delegated class by reflectionKT-68724K2: "ABSTRACT_MEMBER_NOT_IMPLEMENTED" caused by open modifier on interfaceKT-68667K2: Compiler hangs on mapNotNull and elvis inside lambdaKT-68747K2: Long compilation time because of constraint solving when using typealias in different modulesKT-68940K2: "IllegalArgumentException: All variables should be fixed to something"KT-69182K2: OptIn on enum companion blocks enum constantsKT-69191K2: "Unresolved reference" caused by nested data objectsKT-68797K2 / Native: "java.lang.IllegalStateException: FIELD" caused by enabled cachingKT-69569Wrong paths when one type has multiple annotated argumentsKT-63871K2: different value ofisNotDefaultflag for property inherited from delegateKT-63828K2: Missingsignaturemetadata for accessors of properties inherited from delegateKT-68669K2: Generate inherited delegated members after actualizationKT-69402FirSupertypeResolverVisitor: ConcurrentModificationExceptionKT-68449K2: "when" expression returns UnitKT-67072K2: inconsistent stability of open vals on receivers of final typeKT-68570K2: "Unresolved reference" in call with lambda argument and nested lambda argumentKT-69476False negative NO_ELSE_IN_WHEN on when over intersection type with expect enum/sealed classKT-67069K2: Delegated member calls interface method instead of fake overrideKT-63864K2: Missing abbreviated type in metadataKT-69421K2: Resolve changed from delegated function to java default functionKT-69392K2: "UNSAFE_CALL": when with some variable subjects does not smartcast the variableKT-69159K2: KotlinNothingValueException in ExposedKT-69053K2: Unsupported intersection overrides for fieldsKT-69227K2: "Argument type mismatch" caused by generic typealias and upper boundKT-31371NOT_YET_SUPPORTED_IN_INLINE: incorrect error message for local inline functionKT-49473PROTECTED_CALL_FROM_PUBLIC_INLINE_ERROR: specialize error message for 'inline' propertyKT-49474NON_PUBLIC_CALL_FROM_PUBLIC_INLINE: specialize error message for 'inline' propertyKT-49503SUPER_CALL_FROM_PUBLIC_INLINE_ERROR: specialize error message for 'inline' propertyKT-11302On inapplicable '@JvmStatic' annotation, highlight only the annotation, not the function signatureKT-59510K2: do not render annotations in the deprecation diagnosticKT-68532"This code uses error suppression for 'INAPPLICABLE_JVM_NAME'. While it might compile and work, the compiler behavior is UNSPECIFIED and WON'T BE PRESERVED"KT-68859K2: unable to suppress only "JAVA_MODULE_DOES_NOT_EXPORT_PACKAGE"KT-68623K2: "Only safe or null-asserted calls are allowed" on safe callKT-68364JVM: ISE "Bad exception handler end" on a non-local break/continue inside try with finallyKT-68469[K2] MISSING_DEPENDENCY_CLASS caused by redundant@file:JvmNameKT-68999K2: Unify the style of FIR generator with IR and SIR tree-generatorsKT-66061Kotlin/Native - building shared module for iOS - Argument list too longKT-67804removeFirst and removeLast return type with Java 21KT-49420Suspicious behaviour of frontend in case of DefinitelyNotNull type overloadKT-59752K2: "Conflicting overloads" if function with same signature added to different contextsKT-68618K1: Unresolved reference for qualified this in implicit typeKT-25341NOT_YET_SUPPORTED_IN_INLINE reported over anonymous object borderKT-69044Destructuring declaration shouldn't be possible in declaration in whenKT-69028K2:FirJvmActualizingBuiltinSymbolProviderreturnsnullon builtins declarations if common source-set is not presentedKT-67119Migration warning from context receivers to context parametersKT-15704Rethink usage of term "type annotation" in error messagesKT-68970K2. Argument type mismatch caused by out projection in inferred type from if - elseKT-68727K2: "Null argument in ExpressionCodegen for parameter VALUE_PARAMETER" caused by an enum class with default parameter in a different moduleKT-68626K2: "Conflicting Overloads" for function if inherited from generic typeKT-68800K2: DeleteConeAttributes.plusmethodKT-59389K2: Missing AMBIGUOUS_LABELKT-68803K2: Smart cast fails with "Unresolved reference" when@Suppress("UNCHECKED_CAST") used in statementKT-68968K2: Missing ILLEGAL_SUSPEND_FUNCTION_CALL diagnostic in initialization code of a local class inside suspend functionKT-68489K2: WRONG_ANNOTATION_TARGET with Java and Kotlin@Targetannotation positionsKT-68517"IrSimpleFunctionSymbolImpl is unbound" for actual class containing non-actual functionsKT-59678K2: InvestigateConeKotlinType.unCapture()KT-64193K2: No smartcast with two boolean expressions in a rowKT-69058K2: Java-defined property annotations not persistedKT-69027K2: InitializeFirStdlibBuiltinSyntheticFunctionInterfaceProviderin library sessionKT-62818K2: improve VAR_OVERRIDDEN_BY_VAL diagnostic messageKT-68214Rename TypeApproximatorConfiguration properties for clarityKT-64515K2 IDE: [NEW_INFERENCE_ERROR] in a build.gradle.kts script while applying "jvm-test-suite" plugin and then configuring targets for test suitesKT-68093Implement deprecation of smartcasts on class-delegated propertiesKT-67270Native: report more performance metrics from the compilerKT-68621DATA_CLASS_INVISIBLE_COPY_USAGE false negative for inline funKT-68575K2:@ParameterNameannotation is not erased when inferring the type ofitin lambdasKT-69000Can't render constructor of intersection typeKT-68401K2: "IllegalAccessError: failed to access class" caused by package private super Java type, when inferencing a common super type of if or when branches on JVMKT-68806K/Wasm RuntimeError: unreachable on Sequence::toListKT-68849K2: "ClassCastException: cannot be cast to kotlin.jvm.functions.Function2" caused by passing lambda to SAM constructor resultsKT-68455K2: False negative UPPER_BOUND_VIOLATED_BASED_ON_JAVA_ANNOTATIONSKT-61744Native: -Xsave-llvm-ir-after fails to check errors from LLVMPrintModuleToFileKT-68874Types with different captured types as type arguments are rendered incorrectlyKT-67103Support AbbreviatedTypeAttribute for aliased types from the source codeKT-65038K2: Type alias from indirect dependency causesMISSING_DEPENDENCY_CLASSerrorKT-63921K2: different representation of recursive type aliasesKT-68538KJS/K2: usingwhilewithbreakinside inline lambdas leads to an endless cycleKT-68679K2: "Override has incorrect nullability in its signature compared to the overridden declaration" caused by subclass of Android HashMapKT-68734K2: enum class in KMP: Expect declarationMMKVLogLevelis incompatible with actualMMKVLogLevelbecause modality is differentKT-68820K2: "Unresolved reference" on calling function with "contract" nameKT-68230K2: FirMissingDependencyClassChecker: Not supported: ConeFlexibleTypeKT-68531K2: False-negative error on assignment to enum entryKT-68571K2: "IllegalStateException: Fake override should have at least one overridden descriptor" caused by exceptions and when statementKT-68523K2: FileAnalysisException when using Definitely non-nullable typesKT-68339K2: "Enum entry * is uninitialized here" caused by lazy property with enum inwhenexpressionKT-68678K2: Drop usingFirBuiltinSymbolProviderwhile compiling JVM stdlibKT-68585Implement new rules for CFA about enum entriesKT-68110K2: "Java type mismatch" caused by spring.NullableKT-68613K2: False positiveCONFLICTING_PROJECTIONafter fixing KT-67764KT-67764K2: False negative: Projection problem is not reported inisexpressionKT-68542K2: Fix referecing to@ExtensionFunctionTypeif it's declared in sourceKT-68188K2: Properly support FunctionN creation for stdlib compilationKT-67946K2: Crash on red code:Instead use FirErrorTypeRef for ERROR CLASS: Cannot infer argument for type parameter TKT-68617K2: Secondary constructors in a sealed class have private visibility instead of protected in the generated IRKT-63920K2: Private secondary sealed class constructor is private in metadata, but protected in K1KT-68207K2: Investigate if losing ConeIntersectionType.upperBoundForApproximation during approximation leads to any issuesKT-51433FE 1.0: implement warnings about label resolve changes
Compose compiler
New features
192e556Strong skipping is now enabled by default842a9e8Add support for default parameters in abstract and open@Composablefunctionsb/165812010
Fixes
e207b05Fixes group generation for if statements when nonSkippingGroupOptimization is enabledb/346821372f64fc3aFixesendToMarkergeneration in early return from inline lambdas that caused start/end imbalanceb/346808602d6ac8a5Stop memoizing lambdas with captured property delegatesb/342557697f38d5a3Stop capturing parameter meta across crossinline boundaryb/343801379770fe8dPropagate annotations from inferred function types when serializingb/3452610773c67cdaFix memoization of captureless lambdas when K2 compiler is usedb/3405821803281e53Allow memoizing lambdas in composable inline functionsb/340606661
IR. Actualizer
KT-68830Compiler crash on missing actual classKT-69024K2: Children of expect annotation with@OptionalExpectationshould be actualizedKT-68742Allow expect protected to Java protected actualizationKT-66436K2. Actualizing modCount property with a field in AbstractMutableListKT-68741Support actualization of AbstractMutableList.modCountKT-68801Crash on access of fake override of function actualized by fake override
IR. Inlining
KT-68100Run IR validation in the beginning and the end of the common prefixKT-69171Introduce a temporary-XCLI parameter that enables double-inliningKT-69006Enable IR visibility checks after IR inliningKT-69183IR inlining: properly handle defaults that depends on previous value parametersKT-68558MoveInlineCallableReferenceToLambdaPhaseintoir.inlinemodule
IR. Tree
KT-68784Support validating visibility of referenced declarations in IrValidatorKT-68174Delete the IrMessageLogger interfaceKT-67082Introduce attributes on IrElementKT-67695ForLoopsLowering fails to handle a loop over an imprecise typed iterableKT-68716DeepCopyIrTreeWithSymbols.visitConstshould remap const type
JavaScript
KT-66898KJS: Reserved keywords not escaped when-Xir-generate-inline-anonymous-functionsis enabledKT-69400Use correct type for references on local functions when transforming them into lambdaKT-68554Legalize marker interface as parent for JSO (interface marked with@JsPlainObject)KT-68891@JsPlainObjectfails to compile when encountering reserved keywords as interface propertiesKT-69023KJS / IR:globalThisis mandatory, breaking older browsers supportKT-68641KJS: 'export was not found' with per-file mode on case-insensitive filesystemKT-68632K2: allow JS_NAME_CLASH suppressionKT-68620[wasm] [js]Default param in inner class method fails if we are referring generic extension property
Klibs
KT-66605[KLIB] Excessive creation ofBaseKotlinLibraryduring resolving libsKT-68824API 4 ABI: Don't show sealed class constructors
Language Design
KT-68636Incorrect private_to_this visibility for data class with a private constructor
Libraries
KT-31880UUID functionality to fix Java bugs as well as extend itKT-60787Cannot ignore alpha when formatting with HexFormatKT-66129Minor issues with HexFormatKT-57998implement Base64.withoutPaddingKT-67511provide equals() and hashCode() implementations for kotlinx.metadata.KmTypeKT-68240stdlib: proper expects for internal API used in intermediate shared source setsKT-68840atomicfu-runtime: annotate some internal functions with@PublishedApiKT-68839Annotatekotlin.js.VOIDproperty with@PublishedApi
Native
KT-69206Native: updating to LLVM 16 breaks debugging in lldb on LinuxKT-68640Native: updating to LLVM 16 changes behavior ofusedattribute in C/C++ codeKT-58097Kotlin/Native: improve the error message if Xcode is not properly configured
Native. ObjC Export
KT-57496linkReleaseFrameworkIosArm64: e: Compilation failed: An operation is not implemented
Native. Runtime. Memory
KT-68871Native: Unexpected barriers phase during STW: weak-processing
Native. Swift Export
KT-69469Exporting object twice causing crashKT-69251Get rid of context receivers from ./native/.../lazyWithSessions.ktKT-68865Move config into test-directives
Native. Testing
KT-69235Incorrect handling of friend dependencies in Native test infraKT-67436Native: support CLI tests
Reflection
KT-69433KotlinReflectionInternalError on non-reified type parameter in typeOf inside an inline lambdaKT-68675K2: KotlinReflectionInternalError on non-reified type parameter in typeOf inside a lambda
Tools. Build Tools API
KT-68555BTA test infra: top level declarations are invisible across modules
Tools. CLI
KT-68838OutOfMemory when compiling in CLIKT-68743Extract common CLI arguments for all KLIB-based backendsKT-68450CLI: errors related to module-info are reported even if there are no Kotlin source files
Tools. CLI. Native
KT-66952Native: konanc fails when KONAN_HOME is under path with spaces
Tools. Commonizer
KT-68835Command line length overflow on Linux/Windows while invoking commonizer via :commonizeDistribution
Tools. Compiler Plugins
KT-69401Kotlin power assert plugin doesn't work correctly with safe cast operatorKT-69290PowerAssert: implicit receivers included in power-assert generated diagramKT-68511Power Assert kotlinx.assertEquals message display problemKT-68807Power-Assert crashes the Kotlin compiler when if expression used as assertion parameterKT-68557K2. Supertypes resolution of KJK hierarchy fails in presence of allopen plugin
Tools. Compiler plugins. Serialization
KT-68931JS/Native + serialization: partial linkage errorKT-69039FIR: Implement IDE-only checker for kotlinx.serialization compiler plugin to report IDE-only diagnosticsKT-68752Serializable annotation on Java class is not taken into account in K2 checker
Tools. Daemon
KT-68297KGP 2.0 regression: JAVA_TOOL_OPTIONS is not considered in Kotlin daemon creation
Tools. Fleet. ObjC Export
KT-68887ObjCExport: K1 text fixture@DeprecatedsupportKT-68841ObjCExport:@DeprecatedsupportKT-68826ObjCExport: SerializersModuleBuilder
Tools. Gradle
New Features
KT-68651Compose: provide a single place in extension to configure all compose flags
Performance Improvements
KT-61861Gradle: Kotlin compilations depend on packed artifacts
Fixes
KT-69330KotlinCompile friendPathsSet property is racy due causing build cache invalidationKT-69444Don't warn about missing Compose Compiler Gradle plugin in some casesKT-65271Gradle: "Mutating dependency DefaultExternalModuleDependency after it has been finalized has been deprecated " with gradle 8.6-rc-3KT-69026Mark AGP 8.5.0 as compatible with KGPKT-67822Deprecate JVM history files based incremental compilationKT-67771Compatibility with Gradle 8.8 releaseKT-65820Compatibility with Gradle 8.7 releaseKT-64378Compatibility with Gradle 8.6 releaseKT-68661Move ExperimentalWasmDsl to kotlin-gradle-plugin-annotationsKT-69291Compose Gradle plugin: Enable strong skipping by defaultKT-65528Migrate rest of Gradle integration tests to new Test DSLKT-68306Project isolation for FUS statistics: Cannot access project ':' from project ':app' at org.jetbrains.kotlin.gradle.report.BuildMetricsService$ Companion.initBuildScanExtensionHolderKT-67395Add new plugins to collector kotlin gradle performanceKT-67766Build against Gradle API 8.7KT-67890Compile against Gradle 8.8 API artifactKT-68773Kotlin 2.0.0 with Gradle 8.8: ConcurrentModificationException on BuildFusService configurationMetricsKT-67889Run tests against Gradle 8.8 releaseKT-69078Gradle: Add option to disable FUS ServiceKT-68308Project isolation for FUS statistics: An error is thrown at org.gradle.configurationcache.ProblemReportingCrossProjectModelAccess$ProblemReportingProject.getLayoutKT-58280org.jetbrains.kotlin.jvm Gradle plugin contributes build directories to the test compile classpath
Tools. Gradle. Kapt
KT-61928Clarify parameter types in KaptArguments and KaptJavacOption
Tools. Gradle. Multiplatform
KT-69310w: KLIB resolver: The same 'unique_name=...' found in more than one library for diamond source set structuresKT-66568w: KLIB resolver: The same 'unique_name=...' found in more than one libraryKT-69406Deprecate combinations of KMP plugin with some Gradle Java pluginsKT-66209Accessing the source sets by name is confusingKT-56566Consider pre-generating DSL accessors for source sets with names corresponding to the default target hierarchyKT-69129KGP: stdlib version alignment for JS and WasmKT-62368Kotlin 1.9.X fails to detect kotlin.test.Test annotation reference on commonTest source set when targeting JVM+AndroidKT-67110Usage of BuildOperationExecutor.getCurrentOpeartion internal Gradle APIKT-68248kotlin multiplatform project fail to build on Fedora with corretto
Tools. Gradle. Native
KT-68638KGP 2.0 breaks native test with api dependencies and configuration cache
Tools. Kapt
KT-68171K2KAPT: boxed return types in overridden methods changed to primitivesKT-68145K2 KAPT: missing $annotations methods for const properties and private properties without accessors
Tools. Scripts
KT-69296scripting dependency resolution does not authenticate towards maven mirrorsKT-68681K2 / CLI / Script: "NullPointerException: getService(...) must not be null" caused by@DependsOn
Tools. Wasm
KT-69245K/Wasm: Remove warning of working-in-progressKT-69154K/Wasm: wasmJsBrowserProductionRun flaky crash with "WebAssembly.instantiate(): Import ... function import requires a callable"KT-67980Wasm: Incorrect "Please choose a JavaScript environment to build distributions and run tests" when WASM is not configured