2.0.20-RC
Analysis. API
KT-69630
KAPT User project builds with KAPT4 enabled fail with Metaspace overflow
Backend. Wasm
KT-69876
K2 Compile exception: Only IrBlockBody together with kotlinx serializationKT-69529
compileProductionExecutableKotlinWasmJs FAILED: No such value argument slot in IrConstructorCallImpl: 1 (total=1)KT-68088
Wasm: “UNREACHABLE executed at Precompute.cpp:838” running gradle task wasmJsBrowserDistribution for compose multiplatform on Windows
Compiler
KT-69494
StackOverflowError in CfgTraverserKt.getPreviousCfgNodesKT-69723
K2: code analysis taking too longKT-56880
K2. Conflicting overloads for main() isn't shown when language version is set to 2.0KT-69170
K2: “Unresolved reference” caused by generics and fun interfacesKT-70039
K2: inconsistent stability of vals of captured receiversKT-68996
K2: “Not enough information to infer type argument” caused by typealias annotation with fixed generic argumentKT-68889
K2: type variable should not be fixedKT-15388
Forbid delegated property to have external getter/setter
Compose compiler
b/351858979
Fix stability inferencing of interfaces on incremental compilationb/346821372
[Compose] Fix code generation for group optimization
JavaScript
KT-69353
KJS / d.ts: Kotlin does not export base collection classes along with their mutable collection counterparts
Libraries
Native. Build Infrastructure
KT-69781
Kotlin/Native performance tests fail to compile with bitcode
Native. C and ObjC Import
KT-69094
LLVM 11 clang: cinterops fail with “_Float16 is not supported on this target”
Native. Platform Libraries
KT-69382
LLVM 11 clang: symbol not found when running the linker
Native. Runtime
KT-68928
EXC_BREAKPOINT: BUG IN CLIENT OF LIBPLATFORM: Trying to recursively lock an os_unfair_lock
Tools. CLI
KT-69792
Add the possibility to disable fast jar fs in K2
Tools. Gradle
KT-69809
Compose Gradle Plugin: AGP doesn't override configuration properties like traceMarkersEnabledKT-68843
Gradle: Kotlin plugin changes source set ‘main’ to ‘null/main’KT-69837
Deprecation warning for file-based IC is issued when the property is set to true, altering the intended meaning of the message
Tools. Gradle. JS
KT-69805
YarnSetupTask does not work for custom downloadBaseUrl
Tools. Gradle. Multiplatform
KT-69311
runDebugExecutable task fails with “this.compilation” is null with enabled configuration cache
Tools. Gradle. Native
KT-69918
java.lang.NullPointerException: Cannot invoke “org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeCompilation.getTarget()” because “this.compilation” is null
Tools. Incremental Compile
KT-69042
K2: changing a Java constant won't cause Kotlin usages to recompile
Tools. JPS
KT-69204
Generate lookups in dumb mode for compatibility with ref index
2.0.20-Beta2
Analysis. API
Fixes
KT-65417
K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source setsKT-68882
Analysis API: Refactor KaSymbol
sKT-68689
LL API: support analysis from builtins moduleKT-67775
Analysis API: expose only interfaces/abstract classes for the user surfaceKT-68009
K2: lowering transformers of Compose compiler plugin access AbstractFir2IrLazyFunction modality, which results in null point exceptionKT-68918
collectCallCandidates works incorrectly for parenthesis invokeKT-68462
Analysis API: Integrate project-structure
module into analysis-api
and analysis-api-platform-interface
KT-69131
AA: “provideDelegate” operator is not resolved from the delegation reference in FIR implementationKT-69055
Analysis API: Stabilize KaScope
sKT-68959
Introduce KaSeverityKT-68846
Mark KaFirReference and all implementations with internal modifierKT-68845
Move KaSymbolBasedReference to resolution packageKT-68844
Move KaTypeProjection to types packageKT-65849
K2: Rename ‘high-level-api’ family of JARs to ‘analysis-api’KT-62540
Remove uses of TypeInfo.fromString and TypeInfo.createTypeText from Kotlin pluginKT-68155
Analysis API: Add PSI validity check to analyze
KT-62936
Analysis API: NativeForwardDeclarationsSymbolProvider is not supported for Kotlin/Native
Analysis. Light Classes
KT-68261
SLC: Constructors of sealed classes should be privateKT-68696
Drop DecompiledPsiDeclarationProvider
-related stuffKT-68404
SLC: wrong binary resolution to declaration with @JvmName
Backend. Native. Debug
KT-67567
Native: after updating to LLVM 16 lldb hangs when smooth stepping
Backend. Wasm
KT-68828
Wasm test failure. expect-actual. private constructor in expect
Compiler
New Features
KT-58310
Consider non-functional type constraints for type variable which is an expected type for lambda argumentKT-57872
Improve “Public-API inline function cannot access non-public-API” check
Fixes
KT-65546
K2. implement extended checker for unused anonymous parameter in lambdaKT-60445
K2/Java: investigate possible symbol clash while enhancing Java class type parameter boundsKT-68358
@EnhancedNullability
is missing on value parameter type after inheritance by delegation with strict JSpecify enabledKT-67791
False negative “Synchronizing by Meters is forbidden” with inline value classesKT-69495
k2: inconsistent output of unsigned number in string templatesKT-67693
Implement checkers for K1 compiler which will check the usage of K2 new features and report that they are not supported in K1 compilerKT-44139
Don't report overload resolution ambiguities if arguments contain an error typeKT-69282
K2: equality of unsigned types with nullability works incorrectlyKT-69619
K2. JAVA_TYPE_MISMATCH when Kotlin out generic type used in JavaKT-68996
K2: “Not enough information to infer type argument” caused by typealias annotation with fixed generic argumentKT-69563
trying to call .source
on FirPackageFragmentDescriptor
results in exceptionKT-69611
Internal annotation FlexibleArrayElementVariance is written to output jarKT-69463
K2: false negative SUPER_CALL_WITH_DEFAULT_PARAMETERS with expect/actual declarationsKT-68556
K2: false negative PROPERTY_WITH_NO_TYPE_NO_INITIALIZER on uninitialized property without typeKT-68997
K2: “No accessor found” for an inline value class when query the value of a delegated class by reflectionKT-68724
K2: “ABSTRACT_MEMBER_NOT_IMPLEMENTED” caused by open modifier on interfaceKT-68667
K2: Compiler hangs on mapNotNull and elvis inside lambdaKT-68747
K2: Long compilation time because of constraint solving when using typealias in different modulesKT-68940
K2: “IllegalArgumentException: All variables should be fixed to something”KT-69182
K2: OptIn on enum companion blocks enum constantsKT-69191
K2: “Unresolved reference” caused by nested data objectsKT-68797
K2 / Native: “java.lang.IllegalStateException: FIELD” caused by enabled cachingKT-69569
Wrong paths when one type has multiple annotated argumentsKT-63871
K2: different value of isNotDefault
flag for property inherited from delegateKT-63828
K2: Missing signature
metadata for accessors of properties inherited from delegateKT-68669
K2: Generate inherited delegated members after actualizationKT-69402
FirSupertypeResolverVisitor: ConcurrentModificationExceptionKT-68449
K2: “when” expression returns UnitKT-67072
K2: inconsistent stability of open vals on receivers of final typeKT-68570
K2: “Unresolved reference” in call with lambda argument and nested lambda argumentKT-69476
False negative NO_ELSE_IN_WHEN on when over intersection type with expect enum/sealed classKT-67069
K2: Delegated member calls interface method instead of fake overrideKT-63864
K2: Missing abbreviated type in metadataKT-69421
K2: Resolve changed from delegated function to java default functionKT-69392
K2: “UNSAFE_CALL”: when with some variable subjects does not smartcast the variableKT-69159
K2: KotlinNothingValueException in ExposedKT-69053
K2: Unsupported intersection overrides for fieldsKT-69227
K2: “Argument type mismatch” caused by generic typealias and upper boundKT-31371
NOT_YET_SUPPORTED_IN_INLINE: incorrect error message for local inline functionKT-49473
PROTECTED_CALL_FROM_PUBLIC_INLINE_ERROR: specialize error message for ‘inline’ propertyKT-49474
NON_PUBLIC_CALL_FROM_PUBLIC_INLINE: specialize error message for ‘inline’ propertyKT-49503
SUPER_CALL_FROM_PUBLIC_INLINE_ERROR: specialize error message for ‘inline’ propertyKT-11302
On inapplicable ‘@JvmStatic
’ annotation, highlight only the annotation, not the function signatureKT-59510
K2: 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-68859
K2: unable to suppress only “JAVA_MODULE_DOES_NOT_EXPORT_PACKAGE”KT-68623
K2: “Only safe or null-asserted calls are allowed” on safe callKT-68364
JVM: 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-68999
K2: Unify the style of FIR generator with IR and SIR tree-generatorsKT-66061
Kotlin/Native - building shared module for iOS - Argument list too longKT-67804
removeFirst and removeLast return type with Java 21KT-49420
Suspicious behaviour of frontend in case of DefinitelyNotNull type overloadKT-59752
K2: “Conflicting overloads” if function with same signature added to different contextsKT-68618
K1: Unresolved reference for qualified this in implicit typeKT-25341
NOT_YET_SUPPORTED_IN_INLINE reported over anonymous object borderKT-69044
Destructuring declaration shouldn't be possible in declaration in whenKT-69028
K2: FirJvmActualizingBuiltinSymbolProvider
returns null
on builtins declarations if common source-set is not presentedKT-67119
Migration warning from context receivers to context parametersKT-15704
Rethink usage of term “type annotation” in error messagesKT-68970
K2. Argument type mismatch caused by out projection in inferred type from if - elseKT-68727
K2: “Null argument in ExpressionCodegen for parameter VALUE_PARAMETER” caused by an enum class with default parameter in a different moduleKT-68626
K2: “Conflicting Overloads” for function if inherited from generic typeKT-68800
K2: Delete ConeAttributes.plus
methodKT-59389
K2: Missing AMBIGUOUS_LABELKT-68803
K2: Smart cast fails with “Unresolved reference” when @Suppress
(“UNCHECKED_CAST”) used in statementKT-68968
K2: Missing ILLEGAL_SUSPEND_FUNCTION_CALL diagnostic in initialization code of a local class inside suspend functionKT-68489
K2: WRONG_ANNOTATION_TARGET with Java and Kotlin @Target
annotation positionsKT-68517
“IrSimpleFunctionSymbolImpl is unbound” for actual class containing non-actual functionsKT-59678
K2: Investigate ConeKotlinType.unCapture()
KT-64193
K2: No smartcast with two boolean expressions in a rowKT-69058
K2: Java-defined property annotations not persistedKT-69027
K2: Initialize FirStdlibBuiltinSyntheticFunctionInterfaceProvider
in library sessionKT-62818
K2: improve VAR_OVERRIDDEN_BY_VAL diagnostic messageKT-68214
Rename TypeApproximatorConfiguration properties for clarityKT-64515
K2 IDE: [NEW_INFERENCE_ERROR] in a build.gradle.kts script while applying “jvm-test-suite” plugin and then configuring targets for test suitesKT-68093
Implement deprecation of smartcasts on class-delegated propertiesKT-67270
Native: report more performance metrics from the compilerKT-68621
DATA_CLASS_INVISIBLE_COPY_USAGE false negative for inline funKT-68575
K2: @ParameterName
annotation is not erased when inferring the type of it
in lambdasKT-69000
Can't render constructor of intersection typeKT-68401
K2: “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-68806
K/Wasm RuntimeError: unreachable on Sequence::toListKT-68849
K2: “ClassCastException: cannot be cast to kotlin.jvm.functions.Function2” caused by passing lambda to SAM constructor resultsKT-68455
K2: False negative UPPER_BOUND_VIOLATED_BASED_ON_JAVA_ANNOTATIONSKT-61744
Native: -Xsave-llvm-ir-after fails to check errors from LLVMPrintModuleToFileKT-68874
Types with different captured types as type arguments are rendered incorrectlyKT-67103
Support AbbreviatedTypeAttribute for aliased types from the source codeKT-65038
K2: Type alias from indirect dependency causes MISSING_DEPENDENCY_CLASS
errorKT-63921
K2: different representation of recursive type aliasesKT-68538
KJS/K2: using while
with break
inside inline lambdas leads to an endless cycleKT-68679
K2: “Override has incorrect nullability in its signature compared to the overridden declaration” caused by subclass of Android HashMapKT-68734
K2: enum class in KMP: Expect declaration MMKVLogLevel
is incompatible with actual MMKVLogLevel
because modality is differentKT-68820
K2: “Unresolved reference” on calling function with “contract” nameKT-68230
K2: FirMissingDependencyClassChecker: Not supported: ConeFlexibleTypeKT-68531
K2: False-negative error on assignment to enum entryKT-68571
K2: “IllegalStateException: Fake override should have at least one overridden descriptor” caused by exceptions and when statementKT-68523
K2: FileAnalysisException when using Definitely non-nullable typesKT-68339
K2: “Enum entry * is uninitialized here” caused by lazy property with enum in when
expressionKT-68678
K2: Drop using FirBuiltinSymbolProvider
while compiling JVM stdlibKT-68585
Implement new rules for CFA about enum entriesKT-68110
K2: “Java type mismatch” caused by spring.NullableKT-68613
K2: False positive CONFLICTING_PROJECTION
after fixing KT-67764KT-67764
K2: False negative: Projection problem is not reported in is
expressionKT-68542
K2: Fix referecing to @ExtensionFunctionType
if it's declared in sourceKT-68188
K2: Properly support FunctionN creation for stdlib compilationKT-67946
K2: Crash on red code: Instead use FirErrorTypeRef for ERROR CLASS: Cannot infer argument for type parameter T
KT-68617
K2: Secondary constructors in a sealed class have private visibility instead of protected in the generated IRKT-63920
K2: Private secondary sealed class constructor is private in metadata, but protected in K1KT-68207
K2: Investigate if losing ConeIntersectionType.upperBoundForApproximation during approximation leads to any issuesKT-51433
FE 1.0: implement warnings about label resolve changes
Compose compiler
New features
192e556
Strong skipping is now enabled by default842a9e8
Add support for default parameters in abstract and open @Composable functions b/165812010
Fixes
IR. Actualizer
KT-68830
Compiler crash on missing actual classKT-69024
K2: Children of expect annotation with @OptionalExpectation
should be actualizedKT-68742
Allow expect protected to Java protected actualizationKT-66436
K2. Actualizing modCount property with a field in AbstractMutableListKT-68741
Support actualization of AbstractMutableList.modCountKT-68801
Crash on access of fake override of function actualized by fake override
IR. Inlining
KT-68100
Run IR validation in the beginning and the end of the common prefixKT-69171
Introduce a temporary -X
CLI parameter that enables double-inliningKT-69006
Enable IR visibility checks after IR inliningKT-69183
IR inlining: properly handle defaults that depends on previous value parametersKT-68558
Move InlineCallableReferenceToLambdaPhase
into ir.inline
module
IR. Tree
KT-68784
Support validating visibility of referenced declarations in IrValidatorKT-68174
Delete the IrMessageLogger interfaceKT-67082
Introduce attributes on IrElementKT-67695
ForLoopsLowering fails to handle a loop over an imprecise typed iterableKT-68716
DeepCopyIrTreeWithSymbols.visitConst
should remap const type
JavaScript
KT-66898
KJS: Reserved keywords not escaped when -Xir-generate-inline-anonymous-functions
is enabledKT-69400
Use correct type for references on local functions when transforming them into lambdaKT-68554
Legalize marker interface as parent for JSO (interface marked with @JsPlainObject
)KT-68891
@JsPlainObject
fails to compile when encountering reserved keywords as interface propertiesKT-69023
KJS / IR: globalThis
is mandatory, breaking older browsers supportKT-68641
KJS: ‘export was not found’ with per-file mode on case-insensitive filesystemKT-68632
K2: 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 of BaseKotlinLibrary
during resolving libsKT-68824
API 4 ABI: Don't show sealed class constructors
Language Design
KT-68636
Incorrect private_to_this visibility for data class with a private constructor
Libraries
KT-31880
UUID functionality to fix Java bugs as well as extend itKT-60787
Cannot ignore alpha when formatting with HexFormatKT-66129
Minor issues with HexFormatKT-57998
implement Base64.withoutPaddingKT-67511
provide equals() and hashCode() implementations for kotlinx.metadata.KmTypeKT-68240
stdlib: proper expects for internal API used in intermediate shared source setsKT-68840
atomicfu-runtime: annotate some internal functions with @PublishedApi
KT-68839
Annotate kotlin.js.VOID
property with @PublishedApi
Native
KT-69206
Native: updating to LLVM 16 breaks debugging in lldb on LinuxKT-68640
Native: updating to LLVM 16 changes behavior of used
attribute in C/C++ codeKT-58097
Kotlin/Native: improve the error message if Xcode is not properly configured
Native. ObjC Export
KT-57496
linkReleaseFrameworkIosArm64: e: Compilation failed: An operation is not implemented
Native. Runtime. Memory
KT-68871
Native: Unexpected barriers phase during STW: weak-processing
Native. Swift Export
KT-69469
Exporting object twice causing crashKT-69251
Get rid of context receivers from ./native/.../lazyWithSessions.ktKT-68865
Move config into test-directives
Native. Testing
KT-69235
Incorrect handling of friend dependencies in Native test infraKT-67436
Native: support CLI tests
Reflection
KT-69433
KotlinReflectionInternalError on non-reified type parameter in typeOf inside an inline lambdaKT-68675
K2: KotlinReflectionInternalError on non-reified type parameter in typeOf inside a lambda
Tools. Build Tools API
KT-68555
BTA test infra: top level declarations are invisible across modules
Tools. CLI
KT-68838
OutOfMemory when compiling in CLIKT-68743
Extract common CLI arguments for all KLIB-based backendsKT-68450
CLI: errors related to module-info are reported even if there are no Kotlin source files
Tools. CLI. Native
KT-66952
Native: konanc fails when KONAN_HOME is under path with spaces
Tools. Commonizer
KT-68835
Command line length overflow on Linux/Windows while invoking commonizer via :commonizeDistribution
Tools. Compiler Plugins
KT-69401
Kotlin power assert plugin doesn't work correctly with safe cast operatorKT-69290
PowerAssert: implicit receivers included in power-assert generated diagramKT-68511
Power Assert kotlinx.assertEquals message display problemKT-68807
Power-Assert crashes the Kotlin compiler when if expression used as assertion parameterKT-68557
K2. Supertypes resolution of KJK hierarchy fails in presence of allopen plugin
Tools. Compiler plugins. Serialization
KT-68931
JS/Native + serialization: partial linkage errorKT-69039
FIR: Implement IDE-only checker for kotlinx.serialization compiler plugin to report IDE-only diagnosticsKT-68752
Serializable annotation on Java class is not taken into account in K2 checker
Tools. Daemon
KT-68297
KGP 2.0 regression: JAVA_TOOL_OPTIONS is not considered in Kotlin daemon creation
Tools. Fleet. ObjC Export
KT-68887
ObjCExport: K1 text fixture @Deprecated
supportKT-68841
ObjCExport: @Deprecated
supportKT-68826
ObjCExport: SerializersModuleBuilder
Tools. Gradle
New Features
KT-68651
Compose: provide a single place in extension to configure all compose flags
Performance Improvements
KT-61861
Gradle: Kotlin compilations depend on packed artifacts
Fixes
KT-69330
KotlinCompile friendPathsSet property is racy due causing build cache invalidationKT-69444
Don't warn about missing Compose Compiler Gradle plugin in some casesKT-65271
Gradle: "Mutating dependency DefaultExternalModuleDependency after it has been finalized has been deprecated " with gradle 8.6-rc-3KT-69026
Mark AGP 8.5.0 as compatible with KGPKT-67822
Deprecate JVM history files based incremental compilationKT-67771
Compatibility with Gradle 8.8 releaseKT-65820
Compatibility with Gradle 8.7 releaseKT-64378
Compatibility with Gradle 8.6 releaseKT-68661
Move ExperimentalWasmDsl to kotlin-gradle-plugin-annotationsKT-69291
Compose Gradle plugin: Enable strong skipping by defaultKT-65528
Migrate rest of Gradle integration tests to new Test DSLKT-68306
Project isolation for FUS statistics: Cannot access project ‘:’ from project ‘:app’ at org.jetbrains.kotlin.gradle.report.BuildMetricsService$ Companion.initBuildScanExtensionHolderKT-67395
Add new plugins to collector kotlin gradle performanceKT-67766
Build against Gradle API 8.7KT-67890
Compile against Gradle 8.8 API artifactKT-68773
Kotlin 2.0.0 with Gradle 8.8: ConcurrentModificationException on BuildFusService configurationMetricsKT-67889
Run tests against Gradle 8.8 releaseKT-69078
Gradle: Add option to disable FUS ServiceKT-68308
Project isolation for FUS statistics: An error is thrown at org.gradle.configurationcache.ProblemReportingCrossProjectModelAccess$ProblemReportingProject.getLayoutKT-58280
org.jetbrains.kotlin.jvm Gradle plugin contributes build directories to the test compile classpath
Tools. Gradle. Kapt
KT-61928
Clarify parameter types in KaptArguments and KaptJavacOption
Tools. Gradle. Multiplatform
KT-69310
w: KLIB resolver: The same ‘unique_name=...’ found in more than one library for diamond source set structuresKT-66568
w: KLIB resolver: The same ‘unique_name=...’ found in more than one libraryKT-69406
Deprecate combinations of KMP plugin with some Gradle Java pluginsKT-66209
Accessing the source sets by name is confusingKT-56566
Consider pre-generating DSL accessors for source sets with names corresponding to the default target hierarchyKT-69129
KGP: stdlib version alignment for JS and WasmKT-62368
Kotlin 1.9.X fails to detect kotlin.test.Test annotation reference on commonTest source set when targeting JVM+AndroidKT-67110
Usage of BuildOperationExecutor.getCurrentOpeartion internal Gradle APIKT-68248
kotlin multiplatform project fail to build on Fedora with corretto
Tools. Gradle. Native
KT-68638
KGP 2.0 breaks native test with api dependencies and configuration cache
Tools. Kapt
KT-68171
K2KAPT: boxed return types in overridden methods changed to primitivesKT-68145
K2 KAPT: missing $annotations methods for const properties and private properties without accessors
Tools. Scripts
KT-69296
scripting dependency resolution does not authenticate towards maven mirrorsKT-68681
K2 / CLI / Script: “NullPointerException: getService(...) must not be null” caused by @DependsOn
Tools. Wasm
KT-69245
K/Wasm: Remove warning of working-in-progressKT-69154
K/Wasm: wasmJsBrowserProductionRun flaky crash with “WebAssembly.instantiate(): Import ... function import requires a callable”KT-67980
Wasm: Incorrect “Please choose a JavaScript environment to build distributions and run tests” when WASM is not configured
2.0.20-Beta1
Analysis. API
New Features
KT-68143
Analysis API: support KtWhenConditionInRange call resolution
Performance Improvements
KT-67195
K2: do not call redundant resolve on body resolution phase for classes
Fixes
KT-66216
K2 IDE. “FirDeclaration was not found for class org.jetbrains.kotlin.psi.KtProperty, fir is null” on incorrect string templateKT-53669
Analysis API: redesign KtSymbolOrigin to distinguish kotlin/java source/library declarationsKT-62889
K2 IDE. FP MISSING_DEPENDENCY_CLASS
on not available type alias with available underlying typeKT-62343
Analysis API: fix binary incopatibility problems cause by KtAnalysisSessionProvider.analyze
being inlineKT-68498
To get reference symbol the one should be KtSymbolBasedReferenceKT-68393
Analysis API: Rename KaClassLikeSymbol. classIdIfNonLocal
to classId
KT-62924
Analysis API: rename KtCallableSymbol.callableIdIfNonLocal -> callableIdKT-66712
K2 IDE. SOE on settings string template for string variable with the same nameKT-65892
K2: “We should be able to find a symbol” for findNonLocalFunctionKT-67360
Analysis API: KtDestructuringDeclarationSymbol#entries shouldn't be KtLocalVariableSymbolKT-68198
Analysis API: Support application service registration in plugin XMLsKT-68273
AA: support KtFirKDocReference#isReferenceToImportAlias
KT-68272
AA: KtFirReference.isReferenceToImportAlias doesn't work for references on constructorKT-67996
Analysis API: rename Kt prefix to KaKT-66996
Analysis API: Expose the abbreviated type of an expanded KtType
KT-66646
K2: Expected FirResolvedTypeRef with ConeKotlinType but was FirUserTypeRefImpl from FirJsHelpersKt.isExportedObjectKT-68203
K2: Analysis API: wrong type of receiver value in case of imported object memberKT-68031
LL resolve crash in case of PCLA inference with local objectKT-67851
K2: PsiReference#isReferenceTo
always returns false for references to Java gettersKT-68076
AA: use type code fragments for import alias detectionKT-65915
K2: Analysis API: extract services registration into xml fileKT-68049
Analysis API: do not expose imported symbolsKT-68075
K2: Analysis API: Type arguments for delegation constructor to java constructor with type parameters not supportedKT-65190
AA: reference to the super type is not resolvedKT-68070
AA: KtExpressionInfoProvider#isUsedAsExpression doesn't work for KtPropertyDelegateKT-67748
K2: AllCandidatesResolver modifies the original FirDelegatedConstructorCallKT-67743
K2: Stubs & AbbreviatedTypeAttributeKT-67706
K2: “KtDotQualifiedExpression is not a subtype of class KtNamedDeclaration” from UnusedCheckerKT-68021
Analysis API: do not break the diagnostic collection in a case of exception from some collectorKT-67949
AA: Type arguments of Java methods' calls are not reported as used by KtFirImportOptimizerKT-67988
AA: functional type at receiver position should be wrapped in parenthesisKT-66536
Analysis API: ContextCollector doesn't provide implicit receivers from FirExpressionResolutionExtensionKT-67321
AA: Type arguments of Java methods' calls are not resolvedKT-64158
K2: “KotlinIllegalArgumentExceptionWithAttachments: No fir element was found for KtParameter”KT-60344
K2 IDE. “KotlinExceptionWithAttachments: expect createKtCall
to succeed for resolvable case with callable symbol” on attempt to assign value to param named getParamKT-64599
K2: “expect createKtCall
to succeed for resolvable case with callable” for unfinished if statementKT-60330
K2 IDE. “.KotlinExceptionWithAttachments: expect createKtCall
to succeed for resolvable case with callable symbol” on attempt to assign or compare true with somethingKT-66672
K2 IDE. False positive INVISIBLE_REFERENCE on accessing private subclass as type argument in parent class declarationKT-67750
Analysis API: Remove infix
modifiers from type equality and subtyping functionsKT-67655
Analysis API: declare a rule how to deal with parameters in KtLifetimeOwnerKT-61775
Analysis API: KtKClassAnnotationValue lacks complete type informationKT-67168
K2: Analysis API: Rendering is broken for JSR-305 enhanced Java typesKT-66689
Analysis API: KtFirPackageScope shouldn't rely on KotlinDeclarationProvider for binary dependencies in standalone modeKT-60483
Analysis API: add isTailrec property to KtFunctionSymbolKT-67472
K2: Analysis API FIR: KtFunctionCall misses argument with desugared expressionsKT-65759
Analysis API: Avoid hard references to LLFirSession
in session validity trackersKT-60272
K2: Implement active invalidation of KtAnalysisSession
sKT-66765
K2: Analysis API: support classpath substitution with library dependencies in super type transformerKT-67265
K2: status phase should resolve original declarations in the case of classpath subsitutionKT-67244
K2: StackOverflowError in the case of cyclic type hierarchy and library classpath substitutionKT-67080
K2: clearer contract for lazyResolveToPhaseWithCallableMembersKT-65413
K2 IDE: KTOR unresolved serializer() call for @Serializable
class in common codeKT-66713
K2 FIR: Expose a way to get the module name used for name manglingKT-61892
KtType#asPsiType could provide nullability annotationsKT-66122
Analysis API: Pass KtTestModule
instead of TestModule
to tests based on AbstractAnalysisApiBasedTest
Analysis. Light Classes
KT-68275
LC: no arg constructor is not visible in light classesKT-66687
Symbol Light Classes: Duplicate field names for classes with companion objectsKT-66804
Symbol Light Classes: Fields from the parent interface's companion are added to DefaultImpls
Apple Ecosystem
KT-68257
Xcode incorrectly reuses embedAndSign framework when moving to and from 2.0.0KT-65542
Cinterop tasks fails if Xcode 15.3 is used
Backend. Wasm
KT-65798
K/Wasm: make an error on default export usageKT-68453
K/Wasm: “Supported JS engine not detected” in Web WorkerKT-64565
Kotlin/wasm removeEventListener function did not remove the event listenerKT-66099
Wasm: local.get of type f64 has to be in the same reference type hierarchy as (ref 686) @+237036
Compiler
New Features
KT-67611
Implement improved handling of $ in literalsKT-39868
Allow access to protected consts and fields from a super companion objectKT-67787
Implement guard conditions for when-with-subjectKT-68165
Native: type checks on generic types boundaryKT-66169
useContents
lacks a contract
KT-67767
Introduce an ability to enforce explicit return types for public declarations without enabling Explicit API modeKT-65841
Allow to actualize expect types in kotlin stdlib to builtins in JVMKT-53834
Support for JSpecify @NullUnmarked
Performance Improvements
KT-68034
Devirtualization analysis fails to devirtualize string.get
Fixes
KT-68568
K2: False-positive ACCIDENTAL_OVERRIDE caused by missing dependency classKT-66723
K2: NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS for actual typealias that extends to Java class with complicated hierarchy that includes default methodKT-68492
JVM IR backend: IDE / Kotlin Debugger: AE “Non-reified type parameter under ::class should be rejected by type checker” on evaluating private generic functionKT-61875
Native: remove support for bitcode embeddingKT-35305
“Overload resolution ambiguity” on function for unsigned types (UByte, UShort, UInt, ULong)KT-59679
K2: Investigate extracting uncompleted candidates from blocksKT-68193
JDK 21: new MutableList.addFirst/addLast methods allow adding nullable value for non-null typesKT-68383
K2: “Argument type mismatch: actual type is ‘kotlin.String’, but ‘T & Any’ was expected.” with intersection typesKT-68351
K2: “Suspension functions can only be called within coroutine body”KT-68674
False positive ACTUAL_WITHOUT_EXPECT in K2KT-64335
K2: improve rendering of captured types in diagnostic messagesKT-67933
K2: no conversion between fun interfaces if target has suspend
KT-68350
K2: “Inapplicable candidate(s)” caused by parameter reference of local class with type parameters from functionKT-68362
False-positive ABSTRACT_MEMBER_NOT_IMPLEMENTED for inheritor of java class which directly implements java.util.MapKT-68446
K2: compile-time failure on smart-casted generic value used as a when-subject in a contains-check with rangeKT-68571
K2: “IllegalStateException: Fake override should have at least one overridden descriptor” caused by exceptions and when statementKT-68339
K2: “Enum entry * is uninitialized here” caused by lazy property with enum in when
expressionKT-66688
K2: false-negative “upper bound violated” error in extension receiverKT-64106
Native: the compiler allows using -opt
and -g
at the same timeKT-67887
Expection on assigning to private field of value typeKT-67801
NSME on evaluating private member function with value class parameterKT-67800
NSME on evaluating private top-level function with value class parameterKT-57996
Usages of Foo
@Nullable []
produce only warnings even with -Xtype-enhancement-improvements-strict-mode -Xjspecify-annotations=strict
KT-68630
DiagnosticsSuppressor is not invoked with Kotlin 2.0KT-68222
K2. KMP. False negative Expected declaration must not have a body
for expected top-level property with getter/setterKT-64103
FirExpectActualDeclarationChecker reports diagnostic error for KtPsiSimpleDiagnostic with KtFakeSourceElementKT-68191
K2. Static fake-overrides are not generated for kotlin Fir2IrLazyClassKT-64990
K2: Remove usages of SymbolTable from FIR2IRKT-67798
NSME on assigning to private delegated property of value classKT-68264
K2: confusing INVISIBLE_* error when typealias is involvedKT-68024
K2: Gradle repo test accessors to kotlin internal task types...
fails on K2KT-67943
Approximation should not generate types with UPPER_BOUND_VIOLATION errorsKT-67503
K2: False negative “Type Expected” when attempting to annotate a wildcard type argumentKT-68187
K2: Create IrBuiltins in fir2ir only after IR actualizationKT-66443
K2: ArrayIterationHandler doesn't work if UIntArray declared in sourcesKT-68291
K2 / Contracts: Non-existent invocation kind is suggested as a fixKT-67692
Native: support LLVM opaque pointers in the compilerKT-68209
K2: Strange import suggestion when lambda body contains invalid codeKT-67368
“NullPointerException: Parameter specified as non-null is null” local lambda creates new not-null checks with 2.0.0-Beta5KT-66554
K2. Drop FIR based fake-override generator from fir2irKT-64202
K2: Drop old methods for calculation of overridden symbols for lazy declarationsKT-55851
K2: reference to a field from package private class crashes in runtimeKT-67895
K2: Properly implement generation of fake-overrides for fieldsKT-54496
K2: REDUNDANT_MODALITY_MODIFIER
diagnostic disregards compiler pluginsKT-63745
K2: Approximation of DNN with nullability warning attribute leads to attribute incorrectly becoming not-nullKT-63362
AbstractTypeApproximator fixes only first local type in hierarchyKT-67769
K2: “variable must be initialized” on unreachable access in constructorKT-51195
FIR IC: Incremental compilation fails with @PublishedApi
propertyKT-67966
No JVM type annotation is generated on a class supertypeKT-55128
Wrong type path in type annotations when type arguments are compiled to wildcardsKT-46640
Generate JVM type annotations on wildcard boundsKT-67952
Annotations on type parameters are not generated for parameters other than the firstKT-68012
K2. No 'operator' modifier is required on 'component'
error in K2KT-61835
K2: FirStubTypeTransformer receives unresolved expressions in builder inference sessionKT-63596
K1/K2: Different behavior for lambda with different return typeKT-67688
K2: False positive CANNOT_INFER_PARAMETER_TYPE for Unit constraint type variableKT-62080
False positive UNUSED_VARIABLE for variable that is used in lambda and in further code with several conditionsKT-60726
K2: Missed TYPE_MISMATCH error: inferred type non-suspend function but suspend function was expectedKT-41835
[FIR] Green code turns to red in presence of smartcasts and redundant type argumentsKT-67579
K1/JVM: false-negative annotation-based diagnostics on usages of ABI compiled with non-trivially configured generation of default methodsKT-67493
K2: argument type mismatch: actual type is ‘T’, but ‘T’ was expectedKT-64900
K2: getConstructorKeyword
call in PsiRawFirBuilder.toFirConstructor
forces AST loadKT-67648
K2: wrong exposed visibility errors with WRONG_MODIFIER_CONTAINING_DECLARATION on top-level enum classKT-58686
FIR2IR: Don't use global countersKT-67592
K2: Success execution of :kotlin-stdlib:compileKotlinMetadata
KT-60398
K2: consider forbidding FirBasedSymbol rebindKT-54918
Refactor transformAnonymousFunctionWithExpectedTypeKT-63360
K2: Malformed type mismatch error with functional typeKT-67266
K2: disappeared INLINE_CLASS_DEPRECATEDKT-67569
K2: Fix default value parameters of Enum‘s constructor if it’s declared in source codeKT-67378
K2: Don't use wrapScopeWithJvmMapped
for common source setsKT-67738
K2: Introduce kotlin.internal.ActualizeByJvmBuiltinProvider
annotationKT-67136
Put $this parameter to LVT for suspend lambdasKT-62538
K2: Declarations inside external classes should be implicitly externalKT-67627
K2: External interface companion isn't external in IRKT-60290
K2: origin is not set for !in operatorKT-67512
K2: false positive WRONG_GETTER_RETURN_TYPE when getter return type is annotatedKT-67635
K2: No warning TYPE_MISMATCH_WHEN_FLEXIBILITY_CHANGES for SAM constructor with inferred typeKT-67598
K2: Fix incorrect casting UByte
to Number
in FirToConstantValueTransformer
KT-56564
False positive “non-exhaustive when” in case of intersection typeKT-63969
K2: extra property in metadataKT-63968
K2: extra property in metadata for anonymous variable in scriptKT-67547
K/N can't build caches, fails with “clang++: error=2, No such file or directory”KT-64457
K2: Fix DecompiledKnmStubConsistencyK2TestGeneratedKT-67102
IR Evaluator: NoSuchFieldException when accessing a private delegated propertyKT-66377
IR Evaluator: “no container found for type parameter” when evaluating nested genericsKT-66378
IR Evaluator: Symbol is unboundKT-64506
IDE, IR Evaluator: NPE in ReflectiveAccessLowering.fieldLocationAndReceiver when evaluating private static propertiesKT-67380
K2: Don't check for equals
overriding for class Any
KT-67038
K2: Missing type of FirLiteralExpression causes an exception for property initializer type resolutionKT-59813
K2: Fix the TODO about firEffect.source
in FirReturnsImpliesAnalyzer
KT-59834
K2: Fix the TODO about merge(other)
in UnusedChecker
KT-59833
K2: Stop modifying values of enum entriesKT-59188
K2: Change positioning strategy for WRONG_NUMBER_OF_TYPE_ARGUMENTS
errorKT-59108
K2. SMARTCAST_IMPOSSIBLE instead of UNSAFE_IMPLICIT_INVOKE_CALLKT-65503
The inline processor cannot handle objects inside the lambda correctly when calling an inline function from another moduleKT-30696
NoSuchMethodError if nested anonymous objects are used with propagation reified type parameterKT-58966
Incorrect type inference for parameters with omitted type of anonymous function that is being analyzed as value of function type with receiverKT-67458
Use @PhaseDescription
for JVM backend lowering phasesKT-65647
K2 ignores diagnostics on sourceless FirTypeRef
sKT-64489
K2: Rename FirAugmentedArraySetKT-67394
FIR: Make FIR repr of For from PSI and LightTree the sameKT-60261
K2: No origin is set for composite assignment operatorsKT-66724
K2 IDE. False positive errors because of wrong type inference in complex case of delegated property and type argumentsKT-40248
Confusing error message NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODYKT-66947
K2: false-positive JSpecify nullability enhancement warning on Java wildcard type argument with same base type but different nullabilities as upper and lower boundsKT-66974
K2: false-negative JSpecify nullability enhancement warning on nullable projection of Java wildcard type argument with non-null bounds in out-positionKT-66946
K2: false-negative JSpecify nullability enhancement warning on Java wildcard type argument with nullable upper bound in out-positionKT-66442
K2: No visibility error on importing private aliasesKT-66598
K2: Allow comparisons, is
-checks and casts between Kotlin and platform typesKT-55966
K2: Not enough information to infer type variable K if smartcast is usedKT-64957
K1: drop ModuleAnnotationResolverKT-64894
OPT_IN_ARGUMENT_IS_NOT_MARKER diagnostic message is unclearKT-67019
K2: IR has incorrect EQ origins for some inplace updating operatorsKT-59810
K2: Support other ConstraintPosition-sKT-55383
K1/K2: isClassTypeConstructor behaves differently for stub typesKT-60089
K2: Introduced ERROR_IN_CONTRACT_DESCRIPTIONKT-60382
K2: Refactor ExpectActualCollectorKT-62929
K2: investigate if guessArrayTypeIfNeeded is necessary in annotation loaderKT-65642
K2: IR: Array access desugaring doesn't have originsKT-24807
No smartcast to Boolean in subject of when-expression when subject type is non-nullableKT-66057
K2: incorrect supertype leads to class declaration being highlighted redKT-63958
K2: drop support of UseBuilderInferenceOnlyIfNeeded=falseKT-63959
K2: treat stub types as non-nullable for isReceiverNullable checkKT-65100
IrFakeOverrideBuilder: support custom ‘remove(Int)’ handling logic in MutableCollection subclasses
Compose compiler
New features
cdfe659
Changed how compiler features being rolled out are enabled and disabled in compiler plugin CLI. Features, such as strong skipping and non-skipping group optimizations are now enabled through the “featureFlag” option instead of their own option.
IR. Actualizer
KT-66307
K2: property fake override isn't generated for protected field
IR. Inlining
KT-67660
Suspicious package part FQN calculation in InventNamesForLocalClassesKT-67208
KJS: put ReplaceSuspendIntrinsicLowering after IR inlinerKT-64958
KJS: Put as many as possible lowerings after the inlinerKT-67297
Implement IR deserializer with unbound symbols
IR. Tree
KT-67650
Add default implementations to methods for non-leaf IrSymbol subclasses from SymbolRemapperKT-67649
Autogenerate IrSymbol interface hierarchyKT-44721
IR: merge IrPrivateSymbolBase and IrPublicSymbolBase hierarchiesKT-67580
Autogenerate SymbolRemapperKT-67457
Introduce a way to simplify IR lowering phase creation
JavaScript
New Features
KT-18891
JS: provide a way to declare static members (JsStatic?)
Fixes
KT-68053
K2: NON_EXPORTABLE_TYPE on a typealias of primitive typeKT-68740
Kotlin/JS 2.0.0 IrLinkageError with dynamic function parameters inside data classesKT-62304
K/JS: Investigate the compiler assertion crash in JS FIR with backend testsKT-65018
JS: Deprecate error toleranceKT-64801
K2 + JS and WASM: Inner with default inner doesn't work properlyKT-67248
ModuleDescriptor in JS Linker contains incorrect friend dependeciesKT-67273
Creating Kotlin Collections from JS collectionsKT-64424
K2: Migrate JsProtoComparisonTestGenerated to K2KT-52602
Kotlin/JS + IR: incompatible ABI version is not reported when no declarations are actually used by a Gradle compilationKT-66092
K/JS & Wasm: .isReified for reified upper bound is wrongly falseKT-67112
Unable to apply @JsStatic
for common sources: [NO_CONSTRUCTOR]KT-62329
KJS: “UnsupportedOperationException: Empty collection can't be reduced” caused by external enum with “@JsExport
”KT-67018
K/JS: Executable js file for module-kind=umd contains top level this instead of globalThisKT-64776
Test infra for JS can't process dependency in mpp moduleKT-65076
Use the same instance when a fun interface doesn't capture or capture only singletons
Klibs
KT-68202
KLIB metadata: nested classes are sometimes inside a different ‘knm’ chunkKT-66968
Provide K/N platforms libs for all available targetsKT-66967
Provide K/N stdlib for all available targets in all distributionsKT-65834
[KLIB Resolve] Drop library versions in KLIB manifestsKT-67446
[KLIB Tool] Drop “-repository ” CLI parameterKT-67445
[KLIB Tool] Drop “install” and “remove” commandsKT-66557
Check, that no bad metadata in klib is produced, when we failed to compute constant value
Language Design
KT-11914
Confusing data class copy with private constructor
Libraries
KT-51483
Documentation of trimMargin is (partly) difficult to understandKT-64649
Add explanation to “A compileOnly dependency is used in the Kotlin/Native target” warning messageKT-67807
JS/Wasm: ByteArray.decodeToString incorrectly handles ill-formed 4-byte sequences with a 2nd byte not being continuation byteKT-67768
Wasm: ByteArray.decodeToString throws out-of-bounds exception if the last byte is a start of a 4-byte sequenceKT-66896
Improve Array contentEquals and contentDeepEquals documentation
Native
KT-68094
K2/Native: Member inherits different ‘@Throws
’ when inheriting from generic typeKT-67583
compileKotlin-task unexpectedly downloads K/N dependencies on Linux (but doesn't on Mac)
Native. C and ObjC Import
KT-65260
Native: compiler crashes when casting to an Obj-C class companion
Native. ObjC Export
KT-65666
Native: enable objcExportSuspendFunctionLaunchThreadRestriction=none by default
Native. Runtime. Memory
KT-67779
Native: SpecialRefRegistry::ThradData publication prolongs the pause in CMSKT-66644
Native: threads are too often paused to assist GC (with concurrent mark)KT-66918
Native: scan global root set concurrently
Native. Swift Export
KT-68259
Swift export: secondary constructs lead to compilation errorsKT-67095
Native: fix testNativeRefs export testKT-67099
Remove SirVisitor and SirTransformer from codeKT-67003
Abandon PackageInflator implementation in favour of PackageProvider component
Native. Testing
KT-68500
Native: Drop custom logic in ExtTestCaseGroupProvider, mute codegen/box tests explicitly
Tools. CLI
KT-67939
Add CLI argument to enable when guards featureKT-68060
FastJarFS fails on empty jars
Tools. CLI. Native
KT-64524
Introduce a CLI argument to override native_targets field in klib manifest
Tools. Compiler Plugin API
KT-68020
K2: run FirSupertypeGenerationExtension over generated declarations
Tools. Compiler Plugins
KT-67605
K2 parcelize: false positive NOTHING_TO_OVERRIDE in one testKT-64455
K2: Implement ParcelizeIrBoxTestWithSerializableLikeExtension for K2
Tools. Fleet. ObjC Export
KT-68051
[ObjCExport] Support reserved method names
Tools. Gradle
KT-68447
ill-added intentionally-broken dependency source configurationsKT-68278
Spring resource loading in combination with java-test-fixtures
plugin brokenKT-66452
Gradle produces false positive configuration cache problem for Project usage at execution timeKT-68242
Run tests against AGP 8.4.0KT-61574
Add project-isolation test for Kotlin/Android pluginKT-65936
Provide a detailed error for changing kotlin native version dependency.KT-67888
Remove usages of deprecated Configuration.fileCollection() methodKT-62684
PropertiesBuildService should load extraProperties only onceKT-67288
Test DSL should not fail the test if build scan publishing has failed
Tools. Gradle. JS
KT-68482
KotlinNpmInstallTask is not compatible with configuration cacheKT-68072
K/JS, K/Wasm: Module not found in transitive caseKT-68103
K/JS, K/Wasm: Generation of test compilation's package.json requires main compilationKT-67924
K/JS, K/Wasm: kotlinNpmInstall can rewrite root package.json
Tools. Gradle. Kapt
KT-64627
Kapt3KotlinGradleSubplugin uses property lookup that breaks project isolation
Tools. Gradle. Multiplatform
KT-64109
Using compileOnly/runtimeOnly dependencies in K/N-related configurations leads to odd behaviourKT-58319
kotlin.git: ProjectMetadataProviderImpl “Unexpected source set ‘commonMain’”
Tools. Gradle. Native
KT-65761
Missing JDK Platform ClassLoader when compiling Kotlin native in daemonKT-67935
OverriddenKotlinNativeHomeChecker does not work well with relative pathsKT-64430
Remove deprecated KotlinToolRunner(project) constructorKT-64427
Stop using deprecated KotlinToolRunner(project) constructor call
Tools. Incremental Compile
KT-63476
Investigate the debug output of JVM compilation in KMP IC smoke tests
Tools. JPS
KT-63707
JPS: “Multiple values are not allowed for” caused by Compose
Tools. Kapt
KT-67495
File leak in when building with kaptKT-66780
K2 KAPT Kotlinc should exit with an exit code 1 (compilation error) if a Kapt task failsKT-66998
K2 KAPT: Reimplement support for DefaultImpls
Tools. Scripts
KT-67575
FromConfigurationsBase script definition unexpected behaviour with regex from gradle templatesKT-67066
DeepCopyIrTreeWithSymbols does not copy IrScript nodes correctlyKT-67071
K2: ScriptCompilationConfigurationFromDefinition is not serializableKT-67063
LauncherReplTest flaky on Windows
Tools. Wasm
KT-67468
Gradle task build (allTests) fails on default web projectKT-67862
K/Wasm: Make usage of ChromeWasmGc an error
Previous ChangeLogs: