2.3.21
Backend. Wasm
KT-84610 [Wasm] Failed to compile klibs in IC mode
Compiler
KT-84566 Prevent launching Default dispatcher threads from IJ SDK in kotlin compilerKT-85358 Native: roll back the workaround for KT-84678 once MapLibre has been properly fixedKT-85626 @JvmRecord in commonMain breaks compileCommonMainKotlinMetadata with “Cannot access ‘java.lang.Record’”KT-85405 Postpone/Revert DontIgnoreUpperBoundViolatedOnImplicitArgumentsKT-84678 K/N: Undefined symbol from SPM-added ObjC frameworks when linking iOS targetKT-85021 False positive SUBCLASS_CANT_CALL_COMPANION_PROTECTED_NON_STATIC error in multi-module project
JavaScript
KT-82395 Support top-level declarations from compiler plugins in JS incremental compilationKT-84475 K/JS: false-positive exportability warnings in multi-module projectKT-84633 Kotlin/JS: “Serializer for class not found” error when IR output granularity is whole-programKT-85047 Kotlin/JS: @JsStatic on suspend fun of class companion generates incorrect d.tsKT-84517 K/JS: bad mappings data in outputted Kotlin stdlib source map
Libraries
KT-71848 Kotlinx.metadata: Add CompilerPluginData into Km API
Native. C and ObjC Import
KT-85399 Kotlin/Native: TypeCastException when casting ObjC Protocol MetaClass with genericSafeCasts enabledKT-85508 K/N: TypeCastException when using nw_parameters_create_secure_tcp block parameter on 2.3.20
Tools. Gradle
KT-84729 Update Gradle plugin-publish version to enable configuration cache badge on Gradle plugins portal
Tools. Gradle. Compiler plugins
KT-85257 AGP/Compose: MergeMappingFileTask clears R8 artifacts due to @OutputDirectory annotation on AGP 9.1+
Tools. Scripts
KT-85105 Scripts: JVM backend internal error (IR lowering) when scratch file contains anonymous objectKT-85103 Exception while generating code when explain destructuring declsKT-84842 scriptCompilationClasspathFromContext behavior changed from 2.3.10 to 2.3.20KT-85029 Kotlin Scripting: ScriptDiagnostic reports “at null” instead of error location
Tools. Statistics (FUS)
KT-85628 KGP: composite build FUS metrics fail on access of ‘configurationTimeMetrics’
2.3.20
Analysis API. FIR
New Features
KT-78090 Implement stubs support for new conditional returns and holdsIn contracts
Fixes
KT-82948 ‘FirRegularClass’ expected as a containing declaration, got ‘FirTypeAliasImpl’KT-83467 Package-level JSpecify annotations are ignored when coming from jars or librariesKT-82057 K2. Cannot infer type parameter ‘R’ in Ktor routing post() function with explicit response typeKT-82846 AA: unresolved KtExpression.expressionType for the reference to the parameter with default valueKT-80485 False positive UNRESOLVED_REFERENCE on nested interface from super-super class in the super type position inside an anonymous objectKT-82772 Flaky false positive deprecation warning on PersistentMap.put in Kotlin repo in IDE modeKT-76487 StdLibSourcesLazyDeclarationResolveTestGenerated.testWrappedInt is unstableKT-82618 Various tests are failing with NPE in kt-master after updating the compiler on 19.11.25KT-82076 Error querying members of JavaClass created for SymbolLightClassForAnnotationClass during library analysisKT-71596 Include Js/Wasi checkers in AbstractLLFirDiagnosticsCollectorKT-82085 No OUTER_CLASS_ARGUMENTS_REQUIRED on type parameter bound in IDEKT-81873 Provide a way of including traces in phase JFR eventsKT-71929 Consider leaving the non-post-compute version at EnhancementSymbolsCache.enhancedFunctions
Analysis API. Infrastructure
KT-83173 Analysis API Tests: Library names with RC versions aren't sanitisedKT-65140 LL FIR: Implement AbstractFirPsiJsDiagnosticTest for LL FIRKT-82212 [Analysis API, LL FIR] Implement AbstractDiagnosticsFirWasmTest and AbstractDiagnosticsFirWasmWasiTest for LL FIR
Analysis API. Light Classes
KT-82227 Value classes should expose regular static methods
Analysis API. PSI
KT-81710 ‘KtTypeReference.getTypeText’ does not account for ‘suspend’ modifier on suspend lambdasKT-82258 Prepare PSI for migration from context receivers to context parametersKT-81074 KDoc: List rendering is broken
Analysis API. Providers and Caches
KT-82449 K2 IDE Analysis Freezes During Gradle Sync (Recursive Module Dependency Computation in KotlinModuleDependentsProviderBase.computeTransitiveDependents)KT-82629 ‘collectDiagnostics’ returns stale syntax error after editor fixKT-74907 Analysis API: Apply platform-based library module content restrictions consistently
Analysis API. Standalone
KT-81107 AA: KtSourceModuleBuilder.sourceRoots doesn't works with symbolic links
Analysis API. Stubs and Decompilation
KT-82792 Stub for KtValueArgumentList inside KtAnnotationEntry should be present if it is present in psiKT-82527 TypeClsStubBuilder.createFunctionTypeStub throws NullPointerExceptionKT-82558 Deserialized DNN type should have a fully qualified AnyKT-81928 KaArrayAnnotationValueImpl.values missing first elementKT-82139 Support contracts for property accessorsKT-82198 Support context parameters in contracts
Analysis API. Surface
New Features
KT-82851 Property accessors should inherit KDoc from the parent propertyKT-63339 Analysis API: Provide a way to extract KDoc for symbolsKT-79070 KaTypeProvider: add API to build a default type with star projectionsKT-66566 AA: api to create functional typesKT-66043 KtTypeCreator doesn't provide a way for creating annotated types
Performance Improvements
KT-83694 Provide psi-based implementation of KaDeclarationSymbol#isExternalKT-70868 KaSymbol: support PSI-only visibility and modality for the case without compiler pluginsKT-81627 KaFirSymbolDeclarationOverridesProvider#processOverrides should process only relevant declarations
Fixes
KT-83152 [Analysis API, KDoc] Make class name links on constructors point to the classKT-83695 Deprecate KaSymbolInformationProvider#{getter, setter}DeprecationStatusKT-82853 Add a convenience property for testing declarations for effective external-nessKT-83226 Support “Collection literals” in the Analysis APIKT-83225 Support “@IntroduceAt” in the Analysis APIKT-83222 Support “Improve use-site defaulting for annotations” in the Analysis APIKT-83351 Rename KaSession context parameter from ‘s’ in bridges to something nicerKT-83199 Clarify API around extension pointsKT-83074 Inner enum entry class has incorrect default visibilityKT-82442 Add Ka prefix to org.jetbrains.kotlin.analysis.api.symbols.AdditionalKDocResolutionProviderKT-82443 Add Ka prefix to org.jetbrains.kotlin.analysis.api.symbols.DebugSymbolRendererKT-82441 Add Ka prefix to org.jetbrains.kotlin.analysis.api.compile.CodeFragmentCapturedValueKT-82439 Add Ka prefix to org.jetbrains.kotlin.analysis.api.components.DebuggerExtensionKT-82438 Add Ka prefix to org.jetbrains.kotlin.analysis.api.components.DefaultTypeClassIdsKT-68577 asPsiType and mapTypeToJvmType: leading delimiter for class in a root packageKT-81734 MIssing “ARGUMENT_TYPE_MISMATCH” caused by self-referential generic typeKT-82856 Redesign KotlinReferenceProviderContributor to make it extensibleKT-82615 Clarify KtReference#resolvesByNames contractKT-82534 No expected type for property accessor without bodyKT-82406 Add a test to ensure that all top-level classes in the Analysis API Surface have Ka prefixKT-78397 investigate if there is a need in Extra support for the “various little features in contracts”KT-74009 Analysis API: Expose “isOverloadable” check for callable symbols similar to “OverloadChecker.isOverloadable”KT-78399 Check return value - check how we see from Java(+Stub) we see “annotated” signaturesKT-80357 [Analysis API] KaType.enhancedType doesn't enhance type parametersKT-73659 Analysis API: The name of KaType.enhancedType is too generalKT-80545 [Analysis API] Deprecate KaFunctionType.arityKT-77708 K2 Mode: Potentially redundant smart cast highlighing when passing smartcasted expressions as argumentsKT-81264 K2 AA: KaValueParameterSymbol.hasDefaultValue is false for overriding or actual functionsKT-81166 Forbid the usage of KaSessionComponent implementation types directlyKT-74801 Analysis API: Publish/subscribe to modification events with a single message bus topic
Backend. Native. Debug
KT-81741 Native: stepping into data class hashCode in lldb goes to line 1
Backend. Wasm
New Features
KT-81485 [Wasm] DebuggerCustomFormatters generation support for single module modeKT-81483 [Wasm] Typescript generation support for single module modeKT-81484 [Wasm] Dwarf generation support for single module mode
Performance Improvements
KT-83839 K/Wasm: CMP. Load time on Safari significantly increased with Kotlin = 2.3.20-Beta1KT-81524 Unnecessary Any-JsAny conversions are generated for external instanceofs
Fixes
KT-82732 K/Wasm runtime crash when using fun reference: convertKotlinClosureToJsClosureKT-82649 K/Wasm: Rewrite StringBuilder to use JsStringKT-73240 K/Wasm: consider using JS String Builtins proposal in String implementation for wasm-js targetKT-83995 K/Wasm: 2.3.0 -> 2.3.20-Beta1 degradation in arrow testsKT-82309 K/Wasm: refactor _initialize functionKT-70075 Wasm: “OutOfMemoryError: GC overhead limit exceeded” during testsKT-83046 K/Wasm: don't use StringBuilder implicitly for string concatenationsKT-82645 K/Wasm: wasmJs use js “String” for number2String conversionKT-79937 K/Wasm: support kotlin.js.nativeInvoke annotationKT-67461 Use new lowering phase creation API in Wasm backendKT-83664 Wasm: Colon and space are not sanitized in output file namesKT-65779 JsExport declaration name clashKT-82202 [Wasm] SourceMap generation support for single module modeKT-82162 [Wasm] Run single module tests with standalone vm'sKT-81325 [Wasm] Remove string pool initialiser dependent codeKT-73238 K/Wasm: stop using linear memory inside our codeKT-83025 Wasm: Compose application is not loadingKT-73239 K/Wasm: use JS String Builtins proposal to transfer strings to and from JSKT-83194 K/Wasm: create WasmIR test infrastructureKT-65234 K/Wasm Ensure that fp operations are aligned with other b-endsKT-81856 K/JS/Wasm interop: external instanceofs do not link in singleModule modeKT-81610 [Wasm] Add CLI test for performance metrics for klibs->binary scenarioKT-81550 Incorrect generation of .wat filesKT-71533 K/Wasm + K2: no error on KClass::qualifiedName usages
Compiler
New Features
KT-75736 Enable reading/writing annotations in metadata on JVM by defaultKT-79330 Implement the first version of inference for Collection LiteralsKT-83401 Collection literals: support different types of expected types for CLKT-55548 JSR-305: Overload resolution ambiguity: Platform Types vs Kotlin TypesKT-74860 Support Unit coercion (incl. fun refs) in unused return value checkerKT-13968 Support vertx nullable annotationKT-79656 Use org.jetbrains.annotations.UnmodifiableView and/or org.jetbrains.annotations.Unmodifiable to infer read-only types for Java entitiesKT-81684 Implement explicit passing of context arguments using named syntax [TEST_ONLY]KT-80492 Checkers for operator ofKT-82638 Collection literals: resolve to factory functions for standard library classesKT-82467 Improve binary and JVM compatibility by generating bridges for abstract interface methodsKT-82655 Bridges generated for non-fake overrides shall include annotations from target methodsKT-74223 Move Kotlin/Native TestProcessor phase to the first phaseKT-27090 Support contracts in getter and setter for top-level extension propertiesKT-74809 Support unnamed local variablesKT-45683 Allow generics in contract type assertions
Performance Improvements
KT-81974 Do not eagerly initialize reflection for KProperty objects for delegated propertiesKT-83697 Native: increased bitcode produced with enabled safe castsKT-83036 Native: too many casts emitted with -Xgeneric-safe-casts=trueKT-80061 Compiler (or IDEA) hangs due to importing large Kotlin reflect functions (e.g. KFunction999999999)KT-68592 Investigate performance implications of enabling -Xjvm-default for ir.tree moduleKT-73687 Inefficient KtCommonFile#getFileAnnotationListKT-71673 Consider making EnhancementSymbolsCache. enhancedFunctions using simple cache
Fixes
KT-84773 Annotations not persisted in IR for internal external functionsKT-78783 K2: absence of warning for KTLC-284 migrationKT-81553 INITIALIZER_TYPE_MISMATCH and ASSIGNMENT_TYPE_MISMATCH is reported on the entire initializerKT-83395 Kotlin/Native 2.3.0 iOS release framework fails with Invalid LLVM module (PHI node type mismatch)KT-84620 Incorrect optimization of property delegationKT-81567 Add a use-site warning if a @DslMarker-marked annotation is used on entities where it is a no-opKT-81700 flaky overload resolution behaviors (false-positive errors, different final candidates, compile-time failures)KT-83372 compileDebugKotlinAndroid hangs in 2.3.0 with SQLDelightKT-82579 Update specificity rule for context parametersKT-83590 Some explicit backing fields must still be considered private-to-thisKT-83849 False-positive NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS for Optional.orElse(null) callKT-84192 “Member overrides different ‘@Throws’ filter from” caused by overriding in different moduleKT-72994 K2: Remove resolution to context receiversKT-80247 No diagnostic on unresolved type annotation from a dependency in an inferred typeKT-78730 Move more LLVM-agnostic code to compiler/ir/backend.native or compiler/ir/backend.commonKT-74051 Add a Continuation for tail-call suspend functionsKT-83984 Data races around kotlinx.serialization plugin protobuf extensions registrationKT-83317 ClassCastException: with cast kotlin.UInt to java.lang.Number when defining constantKT-83031 K2: unstable resolution of EnhancedNullability from type-use NotNull in presence of unused codeKT-83824 Delegated property in Gradle DSL fails to compileKT-83657 [K/N] Pre-codegen inline produces invalid bitcodeKT-81555 Kotlin scripts: top-level name-based destructuring with _ = prop fails with “exception while generating code”KT-83314 JSpecify @NullMarked changes Java equals(Object) to equals(Any?) causing override conflict in Kotlin 2.3KT-83282 JvmExposeBoxed: Duplicate annotation interface kotlin.coroutines.jvm.internal.DebugMetadata in class %class%$1 for suspend inline class valueKT-78443 Refactor session component initialization for multi-target compilationKT-83427 Arguments of plugin-generated annotations are serialized incorrectlyKT-83538 OPERATOR_RENAMED_ON_IMPORT is not reported for ‘provideDelegate’ operatorKT-83537 OPERATOR_RENAMED_ON_IMPORT is not reported for ‘of’ operatorKT-82721 Inconsistent explicit backing fields behaviorKT-83589 Explicit backing fields don't likely work with intersection overridesKT-81951 K2: Another false positive “Assigned value is never read” in composable functionKT-83588 Explicit backing field is falsely accessible from a subclass via a substitution overrideKT-82849 Collection literals (minor): collection literal should only be resolved to operatorKT-83363 VerifyError: “Bad type on operand stack” on multi-line suspending call with default parameter value since API version 2.4KT-83570 K2: Resolve problematic IR when referencing Kotlin const from annotation in JavaKT-83362 Starting from 2.3 DefaultImpls bridge functions deprecated with the level HIDDEN are no longer syntheticKT-9182 Java interoperability: Overload resolution ambiguity on Java's @NotNull and primitivesKT-83633 Forbid inline functional context parameters in inline functionsKT-83449 compile-time IR failure on smart cast information leaking from capturing closureKT-82375 Add ATOMIC_REF_WITHOUT_CONSISTENT_IDENTITY warning for any argument without consistent identityKT-82524 Access to a companion that requires opt-in is possible without opt-inKT-83367 VolatileFieldsLowering may emit wrong parameter types for atomic intrinsic callsKT-83382 K2: Unreachable method exit breaks MUST_BE_INITIALIZED checks for succeeding value declarationsKT-82211 False positive SENSELESS_NULL_IN_WHEN with nullable varKT-83157 ExplicitBackingFields: “Property with explicit backing field should be final” in 2.3.0KT-83269 K2: Wrong types in IR for explicit backing fieldsKT-68606 Argument type mismatch, despite being from the same star-projected typeKT-83324 Native: problem with loops handling in types computation passKT-83241 K2: “NoSuchElementException: List is empty” with top-level destructuring declaration and lambda initializerKT-82277 Misleading Inapplicable candidate(s): fun <K> WHEN_CALL(vararg branches: K): K when a when expression branch contains an unresolved referenceKT-80839 Get rid of an obsolete -Xcompile-builtins-as-part-of-stdlib flag once previous changes are bootstrappedKT-82900 Language Feature EnhancedBridgesGenerationKT-82651 Do not generate self-recursive bridges in JVM backendKT-5486 Better errors for integers with leading zeroKT-83185 Kotlin repeatable annotations are incorrectly deserialized from bytecodeKT-82863 @NoInfer regression since 2.2.20KT-82376 Header mode: Index out of bounds when generating bodies of data classKT-82311 Header mode: Error expression when assigning function declaration to a propertyKT-82408 Header mode: Java files are not compiled successfullyKT-82378 Header mode: Sequence contains no element matching the predicateKT-82407 Header mode: Backend Internal error: Exception during IR loweringKT-81763 Incorrect comparison result when using elvis ?: with nullable Long valuesKT-83153 Properly ignore contract statements in the Return Value CheckerKT-83076 Don't report WRONG_JS_INTEROP_TYPE on expect types during metadata compilationKT-78589 “Class does not have member field” caused by delegation from a Java to Kotlin classKT-82640 K2: CCE on green codeKT-82684 “Don't know how to compile annotation value ERROR_EXPR” on incorrect array literal in annotation default argumentsKT-81948 K2: ClassCastException: “java.lang.String cannot be cast to java.lang.Void” when calling @Nullable Java functionKT-82788 false-positive duplicate JVM class name error in IJ monorepoKT-82841 “kotlin.NoWhenBranchMatchedException” in when with !is check & non-sealed class in the middle of hierarchyKT-82844 “when” with no branches does not evaluate subject (side effects ignored)KT-81625 Incorrect empty parameters parsing (comma is highlighted in red)KT-81193 K2: SOE from AbstractTypeApproximator.approximateToSuperType with local enum classKT-65059 Stack overflow when typechecking an Elvis expression with deeply generic valuesKT-82555 @Deprecated(HIDDEN)` objects not skipped when resolving qualifiersKT-82737 Leaked type variable in diagnostic when top-level lambda with uninferred type parameter has non-functional expected typeKT-78019 Change K1 API deprecation level from Warning to ErrorKT-82683 K2: FIR2IR: compile-time JVM codegen failure on an argument of function subtype for a KSuspendFunction parameterKT-82671 Do not report ignorability mismatch on override/actualization if the function returns Unit typeKT-82506 Misleading compilation warning: “This class is not recommended for use in Kotlin. Use ‘java.util.Map’ instead”KT-52498 Test privateSuperType.kt is failing with caches enabledKT-82336 Header mode: Cannot infer argument for type parameter TKT-69326 Inference chooses controversial order to fix variablesKT-82545 Handle data class with extra components in migration warning for name-based destructuringKT-82303 Improve UNSUPPORTED_FEATURE message when compiler argument has a parameterKT-81866 K2: False positive ILLEGAL_RESTRICTED_SUSPENDING_FUNCTION_CALL caused by smart-casted @RestrictsSuspension receiverKT-13412 Improve error message on callable reference with expression of nullable typeKT-82466 KotlinIllegalArgumentExceptionWithAttachment when return is used in explicit delegation expressionKT-82454 Local types aren't approximated in public declaration typesKT-82487 False positive REDUNDANT_VISIBILITY_MODIFIER inside private classKT-82369 [K2 REPL] Crash in the serialization plugin backend with “unable to transform declaration”KT-82243 Usage of nested type aliases is forbidden despite the feature flagKT-62900 K2: Expected expression to be resolved during Fir2IrKT-81941 IllegalArgumentException: class org.jetbrains.kotlin.psi.KtValueArgument is not a subtype of class org.jetbrains.kotlin.psi.KtExpression for factory POSITIONED_VALUE_ARGUMENT_FOR_JAVA_ANNOTATIONKT-80741 Fix rendering of inner classes with generic outer classesKT-82331 Do not propagate context parameters from classes to constructorsKT-77276 K2: Wrong scope for annotation arguments for the parameters of a secondary constructor headerKT-77275 Inconsistency between scopes for primary/secondary constructor headersKT-15152 Improve error message for unresolved reference for delegation specifier and primary constructor callKT-81498 Make Kotlin/Native stdlib in distribution reproducibleKT-81408 Allow local-variable-target annotations on destructuring declarationsKT-82012 Annotations without parentheses on full form of name-based destructuring don't workKT-81915 Exception when analysing ‘when’ expression with annotated expression as a subjectKT-78364 Static methods are not generated for companion object JvmStatic property accessors with JvmExposeBoxedKT-81838 Prohibit usage of nested type aliases (from lib) for sources with LV < 2.3KT-81357 Forbid compilation of code with explicit root_ide_package in CLI modeKT-73138 K2: “Assignment type mismatch” when class name is underscore_KT-82169 Add quotes to message of WRONG_NUMBER_OF_TYPE_ARGUMENTSKT-78386 JvmExposeBoxed (with no name) + JvmOverloads + JvmName produces ambiguityKT-78358 Propagated JvmExposeBoxed annotation doesn't copy JvmName argumentKT-81699 Move native klib compilation to a separate moduleKT-81692 Decouple compilation of Native klib from the Native backendKT-80673 Consider forbidding/minimizing usages of ClassId.isLocal and CallableId.isLocalKT-81376 False negative UNEXPECTED_TRAILING_LAMBDA_ON_A_NEW_LINE & bad positioningKT-81946 false-positive JAVA_CLASS_ON_COMPANION in case of an explicit companion referenceKT-74461 K2: Render function types nicelyKT-81875 NCDFE: kotlinx/coroutines/internal/intellij/IntellijCoroutines at :compiler:multiplatform-parsing:jvmTestKT-49722 Report NOT_YET_SUPPORTED_IN_INLINE for inherited default parameters with inline functionKT-81913 Inapplicable candidate when vararg-adaption for callable reference might be used (array parameter)KT-81841 Inapplicable candidate when vararg-adaption for callable reference might be used (generic parameter)KT-39697 “Cannot infer type parameter” in map with java static or global method referenceKT-81896 Improve RedundantCallOfConversionMethod inspection for @UnsafeNumber annotated typealiasesKT-66413 Incorrect line mapping in suspendable code before suspend call without parametersKT-80525 Update IntelliJ SDK dependency to 251.27812.49KT-81808 Setting hasDefaultValue = true in irValueParameter() crashes the compilerKT-78927 False positive ‘USELESS_JVM_EXPOSE_BOXED’KT-81703 Drop obsolete K1 frontend code from Kotlin/NativeKT-81698 DecoupleSpecialBackendChecksTraversal from Native backendKT-81687 Different LightTree and PSI outputs when annotated class-like declaration is used as an expressionKT-81302 False positive: Type Mismatch caused by context parameters, lambdas, and genericsKT-81584 IAE “Collection contains more than one matching element” in FirElementSerializer on contextual property with same name as primary value class propertyKT-77237 JvmExposeBoxed breaks compilation with a secondary constructor with value classKT-81262 False positive: Access declaration type exposure: during access to public function class from internal inline declarationKT-80112 Kotlin Debugger: “Cannot find local variable” on evaluating default lambda inside inline functionKT-76806 K2: AIOOBE in FirEqualityCompatibilityCheckerKT-81693 Introduce lightweight versions of KonanConfig and PhaseContextKT-72446 K/N: inline function‘s default values aren’t lowered with cachesKT-81521 Anonymous function in context parameters breaks parserKT-80853 Class reference in context parameters breaks parserKT-81441 Missing type checks when class has deeply generic supertypeKT-79116 Wrong parameter arguments mapping (compiler skips empty arguments)KT-81422 False negative in full-form name-based destructuring: annotations before val/var not rejectedKT-80652 K2: USELESS_IS_CHECK is not detected in whenKT-80049 Mangle ERROR_TYPEs in diagnostics reported to userKT-73786 Evaluator: cannot evaluate inline methods with reified parameterKT-75828 Store backing field/delegate annotations and extension receiver annotations in metadataKT-74572 Context parameters: contracts don't work with context parametersKT-42824 FIR: false INAPPLICABLE_CANDIDATE when using in variance on a Java class
Compose compiler
b/481953005, b/481769383 Cache stability inference results during sessionb/481735904 Fix Compose codegen crash in inline functionb/479646393 Add groups to inline functions with two or more inline parametersb/458234821 Disable Compose K1 tests on CIb/456948687 Force resolution of declarations when looking up SAM functions in FIRb/445426829 Add a diagnostic for key call with no arguments
IR. Actualizer
KT-82418 KMP Separate Compilation: NPE caused by actualization of NsCalendar.getEraKT-82313 ACTUAL_ANNOTATION_CONFLICTING_DEFAULT_ARGUMENT_VALUE checks throw conflicting values in expected and actual annotations
IR. Inlining
Fixes
KT-82017 [Inliner] Inline function overrides abstract method with default valueKT-80814 [IR Inliner] Space: jsBrowserProductionWebpack task failed with HookWebpackErrorKT-83280 Split LibrarySpecialCompatibilityChecksTest into pure JS and pure Wasm testsKT-81766 K/N: Recursive inline expect/actual causes StackOverflowErrorKT-80953 [Inliner] Eliminate excessive IMPLICIT_CAST after IR Inliner on 2nd stage.KT-79899 [IR Inliner] Split single-module tests having inline fun into filesKT-83148 KLIB inliner: Make both “inliner” language features to require Api Version = 2.3KT-80791 classFunctionsAndFieldsWithCrossModuleInliner fails per-file with cross-module inlinerKT-80696 Can not get instance of singleton ‘Obj’: No class found for symbolKT-82065 IR inliner: Inline function's default value argument may get wrong offsets in a temporary variableKT-81753 Review diagnosticReporters usage in pre-serialization loweringsKT-80793 Test friendDependencyWithCrossModuleInliner fails per-file with cross-module inlinerKT-80698 [IC][WASM] Mismatched file statsKT-80697 [IC][JS per file] Mismatched rebuilt modulesKT-80660 [Inliner] Bodyless functions should not be inlined at 1st compilation stageKT-79064 Try to get rid of TypeOfPostProcessor
IR. Interpreter
KT-82161 Enable Enum.name and KCallable.name to constant evaluationKT-80646 Enable unsigned conversion functions when bootstrapped compiler is available
IR. Tree
KT-82765 Kotlin/Native: Internal compiler error when building DFGKT-82829 IR deserializer: Don't deserialize any cinterop fake overrides from KlibsKT-83236 PeopleInSpace_mpp compilation error: The symbol table has been sealedKT-81154 [IrValidator] Fine-tune IrVisibilityChecker on 2nd stageKT-80243 Support Name Based Destructuring in loop with withIndex()KT-79436 KLIB stdlib symbols loading: Drop all functions from SymbolFinder except for loading the whole collection of (potentially unbound) symbols by nameKT-79435 KLIB stdlib symbols loading: Load symbols and and filter/map them lazily in BuiltinSymbolsBase hierarchy when accessed by IRKT-69082 Migrate maps of IR elements to IR attributesKT-67457 Introduce a way to simplify IR lowering phase creation
JVM. Reflection
New Features
KT-22265 Support for inherited annotations
Performance Improvements
KT-84600 Performance regression around Kotlin properties JVM reflection during instantiation
Fixes
KT-83608 Kotlin-reflect: “Unknown origin of public abstract operator fun invoke(p1: P1, p2: P2): R”KT-57357 Reflection: “KotlinReflectionInternalError” when using callBy on constructor that has inline class parameter with nullable valueKT-83361 “KotlinReflectionInternalError: Type parameter not found: 0” on super types with Kotlin 2.3.0KT-42199 “KotlinReflectionInternalError: Unknown origin of public abstract operator fun invoke” on function reference to FunctionN.invokeKT-81024 Reflection: New KType implementation fails on arguments comparison for a Nothing type parameterKT-83067 Reflection: IAE “argument type mismatch” on callBy with vararg of generic type parameter with primitive upper boundKT-82699 Reflection: incorrect behavior of KFunction.isExternal for Java native methodsKT-82350 Reflection: incorrect behavior of KType.javaType on a type obtained from KType.withNullabilityKT-29203 KType.javaType always returns void class for local delegated propertyKT-81899 Reflection: incorrect javaType for local delegated property setter return typeKT-82093 Reflection: IAE from defaultType for inner class of generic classKT-77312 KotlinReflectionInternalError: “Container of deserialized member is not resolved” on computing type parameter captured in a local delegated propertyKT-82316 Reflection: type parameters of top-level declarations behave incorrectlyKT-81987 Reflection: error when calling function in inline class with inherited default valueKT-81870 Reflection: Error when calling function with default parameters and extension receiverKT-81880 Reflection: Error when calling function with default & context parametersKT-81907 Reflection: incorrect result when calling function with default values and context parametersKT-81859 Reflection: do not use descriptors in ValueClassAwareCallerKT-81854 Reflection: incorrect type for instance receiver of inner class constructorKT-81855 Reflection: IAE “object is not an instance of declaring class” on function with context and extension receiver of inline classKT-81843 Reflection: NPE on accessing property accessor returnType for Java fieldKT-81588 Reflection: KotlinReflectionInternalError “Inconsistent number of parameters” on calling contextual declaration with value class type in the signatureKT-81111 Reflection: suspend function types are loaded incorrectly by the new implementationKT-81206 Reflection: non-substituted Function type in suspend function supertypesKT-81804 Reflection: remove support for multi-field value classesKT-81664 Reflection: IAE “argument type mismatch” on calling member extension with value class in the signature
JavaScript
New Features
KT-83454 K/JS: Support ES6 classes in js() callsKT-83455 K/JS: Support ES6 default function arguments in js() callsKT-83453 K/JS: Support ES6 concise methods in js() callsKT-83457 K/JS: Support ES6 spread operators in js() callsKT-83456 K/JS: Support ES6 rest function parameters in js() callsKT-54504 K/JS: Support ECMAScript tagged string templatesKT-82327 KJS: Export parameter names of function types if present in .d.ts filesKT-82371 KJS: Generate more concrete TypeScript for members of an uninhabited enum
Performance Improvements
KT-16379 KotlinJs - ArrayList get is now slow
Fixes
KT-64951 Kotlin-Multiplatform does not allow JSExport of expectKT-83528 K/JS: Array holes in array literals are ignored in the new js() parserKT-84134 KJS/CMP: “IrLinkageError: Function ‘get’ can not be called: No function found for symbol”KT-65802 How to implement Interfaces in Javascript/Typescript?KT-83830 Relocate org.antlr.v4 to an internal packageKT-83572 KJS/Wasm: Cannot access @JsModule-declared class from non-modular projectKT-83930 Kotlin/JS: JsStatic on property of interface companion generates incorrect d.tsKT-70986 Add Swc into the compilation pipeline of Kotlin/JSKT-78742 Investigate the usage of the ANTLR-generated parser for the js functionKT-60554 KJS: rethink JS_*_NAME_CLASH diagnosticsKT-82552 KJS: “Non-abstract class does not implement inherited abstract member from class” errors in generated .d.tsKT-82652 KJS: Exported abstract inner classes can be constructed from TypeScriptKT-82542 KJS: Inner class can be constructed from TypeScript without passing an outer instanceKT-82499 KJS: Omit parameters in private constructors in .d.ts filesKT-41082 KJS: ‘Reflection is not supported on JavaScript target, so you won’t be able to read this annotation in runtime' warning is inconvenient and misleadingKT-82279 KJS: DCE removes external members overrides without reasonKT-52800 KJS / IR: sealed interface with nested data classes not accessibleKT-67460 Use new lowering phase creation API in JS backendKT-82667 Kotlin/JS: ESM TypeScript definitions for exported nested Enums do not compileKT-82553 KJS: Incorrect .d.ts generated for generic inner classesKT-82263 Implement exporting top-level properties in Analysis API-based TypeScript ExportKT-82362 KJS: Incorrect types generated in .d.ts for JsName-annotated enum entryKT-82262 Implement exporting top-level functions in Analysis API-based TypeScript ExportKT-82144 K/JS: ‘meta’ identifier usage in js() inline calls prevents expression from parsingKT-82149 K/JS: new calls without arguments produce exceptions in js() inline callsKT-81730 Optimize suspend functions compilations via JS generatorsKT-79243 [JS] Drop K1-specific tests, testrunners and test directives
Klibs
New Features
KT-83101 Implement experimental KLib ABI dump parser
Fixes
KT-82586 Export in previous version (JS, Wasm): adjust the checker for incompatible Kotlin stdlib/compiler pairsKT-84273 [Klib] Added IrOffsetsChecker broke backward klib compatibilityKT-80910 [Klib] Ensure serialized source coordinates are correctKT-81955 [JS] Support testing of forward compatibility with export in previous versionKT-81957 [JS] Create a common Gradle test taskKT-82736 False positive IR_PRIVATE_CALLABLE_REFERENCED_BY_NON_PRIVATE_INLINE_FUNCTION_ERROR on referenece to local declarationKT-82758 [PL] Change the behavior of getting name of removed propertyKT-81470 Simplify inline function deserialization after the bootstrap updateKT-81466 Enable KlibAnnotationsInMetadata by default in LV 2.5KT-82208 K/Wasm: allow using newer stdlib with older compilerKT-83328 kotlin-wasm-benchmarks: Compilation errors due to missing KLIB dependenciesKT-83071 Failure on Native NightlyKT-78365 [PL] Change the behavior of getting name of removed functionKT-81977 Klib compatibility tests: Implement sanity checksKT-81410 Klib metadata: migrate to using the common annotations instead of klib-specific extensions in kotlinx-metadata-klibKT-82577 Don't use KLIB resolver in the KLIB toolKT-82213 IR linker doesn't complain when a private value class constructor is used from another moduleKT-81003 KLIBs: Eliminate excessive implicit casts in common prefix on the 1st stageKT-81670 K/N: Many Section still use none cacheable zip when Xklib-zip-file-accessor-cache-limit flag setKT-81954 [JS] All forward compatibility tests failKT-81709 [KLIB Reproducibility] KLIB zip file generation is non-deterministic due to unsorted file system traversalKT-81474 [Tests][Klibs] Migrate Klib evolution tests to PL tests engine
Language Design
KT-83009 Exposing of non-exportable API from interfacesKT-73502 Context parameters: it is not possible to declare local function with a context
Libraries
New Features
KT-81997 Method to create a detached copy of a Map entryKT-79093 Expose FirResolvedStatus.hasMustUseReturnValue in kotlin-metadata
Performance Improvements
KT-75801 Optimize Array to list conversion using array copy instead of a loopKT-82038 K/N: iterating over Array.asList is slower compared to ArrayList
Fixes
KT-78115 Investigate the current situation with 22 kotlin.context standard library overloadsKT-82363 Add assertIs to the list of ignorable functionsKT-80666 K/N and K/Wasm: Regex: unassigned category is excluded from other charsKT-80665 K/N and K/Wasm: Regex: unicode category Symbol matches some punctuation marksKT-78089 K/N: Regex: Quantified groups matching is causing a stack overflowKT-82783 HashMap (K/N, Wasm), MapBuilder (all targets) duplicate keysKT-52400 Deprecate @BuilderInferenceKT-80786 Annotate kotlin-stdlib-jdk7/8 with @IgnorableReturnValueKT-83181 Remove @IgnorableReturnValue from contract DSL functionsKT-82033 Array<Array>.flatten fails with obscure error when total length exceeds List's size limitKT-83290 Remove unnecessary ExperimentalTime annotation from Uuid functionsKT-83026 Specify compareTo behavior for BooleanKT-82868 Restore accidentally deleted JS-specific note in ArrayList documentationKT-81563 Document kotlin.collections.HashMap and HashSetKT-81562 Document kotlin.collections.ArrayListKT-60535 Mark SubclassOptInRequired and RequiresOptIn with MustBeDocumentedKT-64649 Add explanation to “A compileOnly dependency is used in the Kotlin/Native target” warning message
Native
KT-83542 Switch the default GC back to PMCS in 2.3.20-RCKT-82387 Kotlin <-> Xcode compatibility issueKT-75806 KN Compiler with debug build can not produce executable with debug infoKT-81828 Update exception messages regarding disabling native cacheKT-81495 Consider making Kotlin/Native distribution compiler cache reproducibleKT-81501 Make Kotlin/Native distribution runtime .bc and fingerprint reproducibleKT-80790 ‘Argument list too long’ error when using dynamic_cachesKT-48566 ExceptionInInitializerError when configuring Gradle project with kotlin-multiplatform plugin on a host unsupported by Kotlin/Native
Native. Build Infrastructure
KT-82886 KonanTarget's clinit causes deadlockKT-81345 Temporary turned off Swift Export execution testsKT-80869 Extract per-module test generators for Native testsKT-82028 Kotlin/Native: move runtime building flags to runtime building codeKT-81500 Make Kotlin/Native distribution shared libraries reproducibleKT-72011 Kotlin/Native: consider building platform libraries with bootstrap compilerKT-81666 Kotlin/Native: build stdlib with the bootstrap compiler
Native. C and ObjC Import
KT-79741 Native: implement type checking against Objective-C protocols without protocolGetterKT-83039 Native: mark header-defined functions and globals unavailable with -Xccall-mode directKT-82200 Native: implement type checking against Objective-C protocols with objc_runtime_name without protocolGetterKT-82669 Kotlin/Native: cinterop tests failure with no class for metaclassKT-79742 Native: import C global variables without C wrappersKT-81937 Native: switch cinterop to -Xccall-mode both by default for custom cinterop klibsKT-81548 Native: compiler doesn't sanitize CCall.Direct symbol names in C stubsKT-81538 Native: InteropBridgesNameInventor doesn't handle legitimate ‘$’ characters in function namesKT-81017 Native: compiler can't call CCall.Direct with ‘$’ in the symbol name
Native. ObjC Export
KT-82160 K/N: bridge for fake override is not built but requestedKT-83736 Objective-C export with objcExportBlockExplicitParameterNames generates invalid block signature when lambda parameter is named idKT-83014 Native: experimental support for generating an NS_ENUM in addition to an Objective-C class for Kotlin classesKT-76637 ObjCExport: K1 + K2 integration test
Native. Runtime
KT-82077 Kotlin/Native: in runtime make main module depend on mm module
Native. Runtime. Memory
KT-82635 Enable CMS GC by default in 2.3.20-Beta1KT-83470 Potential race condition in TryRequestThreadsSuspension due to initialization orderKT-83549 Provide an experimental Platform property which returns information about object allocation modeKT-83535 Typo in out-of-memory error messageKT-81152 Kotlin/Native: deprecate isMemoryLeakCheckerActiveKT-81156 Kotlin/Native: deprecate forceCheckedShutdown
Native. Swift Export
New Features
KT-82908 Swift Export: bridges for FT should be recursive
Fixes
KT-82054 Swift Export: private set is ignored by swift exportKT-83499 Swift Export: trampoulines w/ varargs results in a broken swift codeKT-83655 Typealias to a closure receiving a closure results in broken swift codeKT-82053 Swift Export: Returning generic on top level function produces uncompilable codeKT-80971 Swift Export: Support exception throwingKT-83141 Swift Export: suspendable covariant functional typeKT-82907 Swift Export: attributes are not printed for parameters of closuresKT-80970 Swift Export: Support cancellationKT-82726 Swift Export: filters out wrong module for coroutinesKT-81591 Custom type translation rules in Swift exportKT-81270 K/N - Build fails when exposing suspend functions
Tools. BCV
KT-80938 Binary compatibility validation: can't exclude container types of Repeatable annotations by filters.excluded.byNamesKT-83484 Create fat-jar artifact for abi-tools [ABI Validation]KT-80747 Refactor API of ABI tools [ABI Tools]
Tools. Build Tools API
New Features
KT-80681 BTA: introduce a special argument for passing compiler pluginsKT-80338 Kotlin CRI generationKT-78198 BTA: implement basic metrics collectionKT-79975 BTA: add ability to cancel build operationsKT-81790 [BTA] Make build operations and configuration immutable after executeKT-82702 BTA: Allow collecting compiler lookups in non-incremental modeKT-81847 Add CRI <-> BTA integrationKT-81845 Add CRI <-> Maven integration
Fixes
KT-84577 BTA: API 2.3.20 incompatible with compiler 2.3.10KT-82682 BTA: reading non-nullable arguments may return null or throw NPEKT-81729 BTA: loading from a classloader without implementation fails with CNFE instead of error with explanationKT-83971 BTA: OperationCancelledException cannot be thrown properly from isolated classloaderKT-82167 Add BuildTimeMetric for the CRI data generationKT-81846 Add FUS for CRI usage in Gradle / MavenKT-82399 [BTA] JvmClasspathSnapshottingOperationImpl doesn't use Option defaultsKT-82039 BuildEvent compilation error missing with KGP 2.3.0-Beta1KT-81887 Implement the CRI lookup data generationKT-81886 Implement the CRI data serializationKT-81780 Add Gradle <-> CRI integration testsKT-81645 BTA prints unreadable version in “option available only since” error (shows KotlinReleaseVersion@hash instead of 2.x.y)
Tools. CLI
KT-83044 Report redundant CLI arguments when they have no effectKT-83202 Report all errors during parsing CLI arguments instead of a single oneKT-73320 Migrate the main JS CLI pipeline to the phased structureKT-81898 Introduce a CLI option to disable source file sortingKT-73606 Provide a unified interface for managing the reporting of compiler warningsKT-48419 Using a @RequiresOptIn API that does not exist should have an option to not output a warningKT-81861 Introduce a mechanism that allows suppressing CLI diagnosticsKT-82321 KMP Separate Compilation: Common fragments are missing forward declaration symbol providersKT-81551 Introduce an experimental CLI option for enabling local type aliasesKT-74196 Remove patched copy of com.intellij.util.lang.JavaVersion from the Kotlin repo
Tools. CLI. Native
KT-64509 Refactor Kotlin/Native compiler setup: run FE without KonanConfig
Tools. Compiler Plugin API
KT-83823 Deprecate PreprocessedVirtualFileFactoryExtensionKT-82809 [FIR][IC] New containingFileName parameter API is not actually compatible with ICKT-46709 IR plugin lookups don't work as expected for expect class with actual typealiasKT-82518 Disable automatic body generation of the plugin-generated callablesKT-82159 [FIR] Automatically add expressions to properties or functionsKT-58886 K2: compiler plugin generated top level declarations cause AssertionError on K/JS and K/Native
Tools. Compiler Plugins
New Features
KT-71893 Support @Builder lombok annotation on methodsKT-28594 Add a ‘jpa’ pre-defined flavor to the allOpen compiler plugin.KT-81604 Lombok Kotlin compiler plugin and -Werror: Unable to ignore warning for the plugin appliance
Fixes
KT-83119 Lombok. canEqual is not available from kotlin for a class with @Data annotationKT-83334 Lombok. Builder function is unavailable for a generic classKT-83063 Lombok: Setter/getter is not available with a protected access levelKT-83217 Lombok. With method is available for the static fieldKT-83120 Lombok. A constructor is available for a class with an existing constructor and @Data/@Value annotationKT-83256 Lombok. Setter is available for non-final fields if @Value and @Data/@Setter are used togetherKT-83251 Lombok. Constructor from @Value includes fields that are initialized in declarationKT-83252 Lombok. Class marked with @Value isn't finalKT-83085 Lombok: getter/setter is available for a static field if class is annotatedKT-83078 Lombok: getter and setter are not available for a static Java fieldKT-82341 Migrate official compiler plugins to IC-safe reference... API
Tools. Compiler plugins. Compose
KT-84218 [2.3.20-Beta1] “IllegalStateException: no implementation for FUN MISSING_DECLARATION” during bitcode loweringKT-84055 Reference to lambda in lambda in function ‘TextField’ can not be evaluated
Tools. Compiler plugins. Serialization
KT-82351 Migrate kotlinx.serialization to IC-safe reference... APIKT-76949 Serialization: “IllegalStateException: Serializer for element of type kotlin.Any has not been found” on custom serializer for Map<String, Any?>KT-73107 Serialization: “IllegalStateException: Serializer for element of type kotlin.Any? has not been found” with star projection
Tools. Gradle
New Features
KT-79389 Add allopen plugin + JPA preset to kotlin.plugin.jpaKT-78200 Gradle: enable JVM compilation through BTA by defaultKT-81844 Add CRI <-> Gradle integration
Performance Improvements
KT-84152 Memory Leak and OOM Errors in Kotlin Gradle Plugin 2.3.20-Beta2 with in-process execution mode
Fixes
KT-80186 Remove usage of deprecated Gradle API Project.container(...)KT-78754 KGP: Remove usages of isVisible/setVisibleKT-80356 Compatibility with Gradle 9.2.0 releaseKT-78763 Compatibility with Gradle 9.1.0 releaseKT-83316 [BTA] Build Reports missing information when JVM compilation uses Build Tools APIKT-82885 Run tests against Gradle 9.3.0KT-83125 Deprecate out-of-process compilation modeKT-82323 Deprecate LanguageSettings.enableLanguageFeature DSLKT-83323 Run integration tests against Gradle 9.2KT-82884 Compile against Gradle API 9.3.0KT-78104 Deprecate CleanableStore infrastructureKT-80096 Strange “Inconsistent JVM Target Compatibility” warningKT-82715 Declaring dependencies using multi-string notation has been deprecatedKT-83161 CRI: it is not clear that CRI generation requires BTA being enabledKT-82717 Specifying ‘org.gradle.java.installations.auto-detect’ as a project property on the command line has been deprecatedKT-81830 Create autogenerated kotlin version constants to be used with disableNativeCache DSLKT-83322 Compile against Gradle 9.2 APIKT-81831 Verify Problems API implementation with Gradle guidelinesKT-80120 Support colored value for --console command in Gradle 9.1KT-81400 ToolingDiagnosticFactory: check if documentationLink set multiple timesKT-83070 The KGP api reference is missing a descriptionKT-82459 Improve iOS simulator boot implementationKT-80008 Track cross compilation status from project dependenciesKT-78764 Compile against Gradle 9.1 API
Tools. Gradle. BCV
KT-80674 Rename tasks to avoid using legacy word [ABI Validation]KT-80614 Add dependency on abi check from gradle's check task [ABI Validation]KT-80827 Delete DSL for working with dump variants [ABI Validation]KT-80823 Stabilize DSL for filtering [ABI Validation]
Tools. Gradle. Cocoapods
KT-80641 EXECUTABLE_DEBUG_DYLIB_PATH problemKT-80644 Cocoapod plugin builds a synthetic project for “generic/platform=iOS Simulator”
Tools. Gradle. JS
KT-84772 Bundled yarn.lock for kotlinWasmToolingSetup does not include @swc/helpers@0.5.17KT-82946 Js, Wasm: Upgrade NPM dependencies
Tools. Gradle. Multiplatform
New Features
KT-77258 Query status of cross-compilation or compilation taskKT-81849 Replace kotlin-test-common and kotlin-test-annotations-common with just kotlin-test
Fixes
KT-83917 compileCommonMainKotlinMetadata fails in CMP core repository with Kotlin 2.3.20-Beta1KT-82090 Kotlin JVM + Android Shared Source set fails Import with the Project Isolation enabledKT-81973 NPE with Cannot invoke “java.util.List.get(int)” because “path” is null in KMP + Android projectKT-79257 Consider deprecating and removing kotlin.kmp.isolated-projects.supportKT-81944 Legacy KMP Android uses wrong configurations to infer common dependenciesKT-83687 Revert deprecation of ‘androidTarget’ for AGP lower than 9KT-81536 “Couldn't resolve dependency in ‘commonMain’ for all target platforms” in 2.2.20-Beta2KT-81724 IntelliJ successfully resolves imports that are not actually available in the given moduleKT-79073 compileTest* tasks pass separateCompilation parameters but don't behave accordinglyKT-71130 Enable Isolated Projects support by default for KMP
Tools. Gradle. Native
KT-84759 iosX64 should not be marked as deprecated in Kotlin Gradle DSLKT-83598 KotlinNativeDownloadTask build caching is unsafeKT-80715 Deprecate kotlin.native.cacheKind and introduce DSL insteadKT-83353 DisableNativeCache breaks up-to-date checks for non-cacheable K/N targetsKT-81443 ConfigurationCacheError on Linux arm64 due to disabled iOS targetsKT-82970 Warning about disabled K/N caches for non-cacheable targets is printed twiceKT-82786 Warning about disabled K/N caches is displayed twice
Tools. Gradle. Swift Export
KT-82727 Swift Export: generated kotlin bridges don't see neighboring modules
Tools. Gradle. Wasm
KT-82525 K/Wasm: kotlinToolingSetup does not depend on package manager installation
Tools. Incremental Compile
KT-80483 Incorporate IC lookups into reference... methods of IrPluginContext
Tools. JPS
KT-76927 Switching from VAL to VAR does not trigger recompilation of usage in Kotlin-uses-KotlinKT-79362 JPS/NoArg: Failed to build project with ‘java.lang.NoClassDefFoundError: org/jetbrains/kotlin/com/intellij/psi/PsiElement’
Tools. Kapt
KT-81691 K2: KAPT: “ClassCastException: IrErrorTypeImpl cannot be cast to class IrSimpleType”KT-82338 K2 KAPT: ISE “Cannot evaluate IR expression in annotation” on unresolved enum usage
Tools. Maven
KT-83565 Maven: auto‑detect src/main|test/kotlinKT-79304 Maven: Automatically add kotlin-stdlib dependencyKT-83111 Add JavaVersion argument resolver for kotlin-maven-plugin-testKT-83112 Add MavenVersion argument resolver for kotlin-maven-plugin-test
Tools. REPL
KT-82575 [K2 REPL] Redesign frontend resolution for REPL snippetsKT-82741 [K2 Repl] OOM in FirJavaElementFinderKt.collectAllDependentSourceSessionsTo when rerunning the same cell multiple times
Tools. Scripts
KT-81679 Script explain: while loop explanation may lead to the hanging codeKT-81677 Script explain: Contents of the if/when branches are not explainedKT-67063 LauncherReplTest flaky on Windows
Tools. Statistics (FUS)
KT-82877 Add performance measurement for KLIB sizeKT-79576 Included build subprojects produce FUS files with unknown_id when configuration cache is enabled
2.3.10
Compiler
KT-83984 Data races around kotlinx.serialization plugin protobuf extensions registrationKT-83317 ClassCastException: with cast kotlin.UInt to java.lang.Number when defining constantKT-83031 K2: unstable resolution of EnhancedNullability from type-use NotNull in presence of unused codeKT-81700 flaky overload resolution behaviors (false-positive errors, different final candidates, compile-time failures)KT-83983 Revert of KT-83081KT-83314 JSpecify @NullMarked changes Java equals(Object) to equals(Any?) causing override conflict in Kotlin 2.3KT-82863 @NoInfer regression since 2.2.20KT-82841 “kotlin.NoWhenBranchMatchedException” in when with !is check & non-sealed class in the middle of hierarchy
JVM. Reflection
KT-83608 Kotlin-reflect: “Unknown origin of public abstract operator fun invoke(p1: P1, p2: P2): R”KT-83361 “KotlinReflectionInternalError: Type parameter not found: 0” on super types with Kotlin 2.3.0KT-42199 “KotlinReflectionInternalError: Unknown origin of public abstract operator fun invoke” on function reference to FunctionN.invokeKT-81024 Reflection: New KType implementation fails on arguments comparison for a Nothing type parameter
Tools. Compiler Plugins
KT-83266 “Unsupported class file major version 69” for “produceReleaseComposeMapping” task with Kotlin 2.3KT-83099 Compose compiler does not generate stack trace mappings for project files
Tools. Gradle
KT-83070 The KGP api reference is missing a descriptionKT-82459 Improve iOS simulator boot implementation
Tools. Gradle. JS
KT-82946 Js, Wasm: Upgrade NPM dependencies
Tools. Gradle. Multiplatform
KT-83687 Revert deprecation of ‘androidTarget’ for AGP lower than 9
2.3.0
Analysis API
KT-80082 K2. False positive “Cannot resolve method” for self-bounded generic with wildcard return type in Java interopKT-80303 Move :native:analysis-api-klib-reader to :libraries:tools
Analysis API. Code Compilation
KT-70860 K2 IDE / Kotlin Debugger: CCE “java.lang.String cannot be cast to java.lang.Void” on evaluating not-null variable on the line with assigning null to that varKT-78554 K2 IDE / Kotlin Debugger: ISE “No override for FUN IR_EXTERNAL_DECLARATION_STUB” on calling toString() for local class instance during evaluationKT-73201 K2 IDE: Error while evaluating expressions with local classes
Analysis API. FIR
KT-81378 Expected expression ‘FirFunctionCallImpl’ to be resolved caused by suspend {}KT-80473 Add events for tracking LL activitiesKT-46375 Analysis API: Support cross-file class redeclaration checks using indicesKT-80471 Analysis API: Deduplicate equivalent call candidates in resolveToCallCandidatesKT-79653 [Analysis API] ContextCollector: BODY context of enum classes doesn't contain enum entriesKT-75858 K2 AA: False positive ‘property must be initialized’ on incremental analysis with ‘field’ usage and semicolon in setterKT-80231 AnnotationArgumentsStateKeepers doesn't restore the initial annotation in some casesKT-80233 Pull mutation out of AnnotationArgumentsStateKeepersKT-71466 LLFirBuiltinsSessionFactory uses createCompositeSymbolProviderKT-76432 JavaClassUseSiteMemberScope: Expected FirResolvedTypeRef with ConeKotlinType but was FirUserTypeRefImpl
Analysis API. Infrastructure
KT-80717 Support IntelliJ Bazel build in the Kotlin Coop development mode
Analysis API. Light Classes
KT-80656 Duplicate no-args constructor in PSIKT-60490 Symbol Light Classes: Property accessors from a delegated interface don't present in the delegating classKT-79689 SymbolLightClassForClassLike.toString() causes PSI tree loadingKT-80690 Private interface functions are not present in light classesKT-80256 K2: Certain actions in JPA code causes infinite PIEAE: “Element class CompositeElement of type REFERENCE_EXPRESSION (class KtNameReferenceExpressionElementType)”KT-79012 Add a high-level overview of light classes
Analysis API. Providers and Caches
Fixes
KT-81476 Analysis API: AlreadyDisposedException from low-memory cache cleanupKT-80911 Analysis API: Execute session invalidation in a non-cancelable sectionKT-81242 Analysis API: Add UUID/lifetime properties to LL FIR session structure loggingKT-80622 Analysis API: Visualise LL FIR session structure & weightKT-80904 Analysis API: “Invalid dangling file module” exception during session invalidationKT-78882 K2 AA: Calling containingSymbol on getProgressionLastElement causes exceptionKT-58325 Analysis API: Combine LLKotlinStubBasedLibrarySymbolProviders in session dependencies (optimization)KT-77825 Analysis API: CheckersComponent consumes a lot of memory while being unused in LL FIR sessionsKT-76526 Incorrect built-in module is provided for non-JVM sources in StandaloneKT-62549 Analysis API: Cache callables in combined Kotlin symbol providersKT-70721 LL FIR: investigate possibility of moving LLFirFirClassByPsiClassProvider . getClassByPsiClass (PsiClass) to symbol providersKT-72998 Analysis API: Introduce getClassLikeSymbolByPsi to LL FIR symbol providers
Analysis API. Standalone
KT-81108 AA: java.lang.ClassCastException: class org.jetbrains.kotlin.fir.FirBinaryDependenciesModuleData cannot be cast to class org.jetbrains.kotlin.analysis.low.level.api.fir.projectStructure.LLFirModuleDataKT-80573 Potential performance issue on class ID computationKT-80559 Try to optimize KotlinStandaloneDeclarationProviderFactory startup for testsKT-71706 Analysis API Standalone: StandaloneProjectFactory.createSearchScopeByLibraryRoots creates inefficient file-based search scopes
Analysis API. Stubs and Decompilation
Performance Improvements
KT-77097 Support ReplaceWith deprecation annotation argument via stubs
Fixes
KT-80350 Drop K1 decompilerKT-77082 StackOverflowError in CreateFreshTypeVariableSubstitutorStage.shouldBeFlexibleKT-80798 Improve stubs tests coverageKT-75318 Read context parameter fields from metadata in CallableClsStubBuilderKT-77874 AA disagrees with the compiler on descriptions of context parameters from binaries in messages for context argument ambiguity errorsKT-80276 Implement native coping for stubsKT-79780 Decompiled MultifileClass has Facade kindKT-79398 isClsStubCompiledToJvmDefaultImplementation flag is inconsistent for compiled and decompiled stubsKT-79798 Prettify stub usages in LL stub-based deserializerKT-78949 AbstractLLStubBasedResolutionTest: tests against real stub-based filesKT-80251 Inconsistent decompiled and compiled stub for properties with an initializer and a delegateKT-74547 Implement decompiler for K2KT-79555 Move KotlinFileStubImpl serialization/deserialization to the Analysis APIKT-79487 “null DefinitelyNotNullType for ‘T’” from decompilerKT-60764 Stub Builder: fix differences between K1 and K2 stub building on decompiled filesKT-79484 An empty enum class with a member decompiles with a synthetic errorKT-79730 Decompiled files have an extra Kt suffixKT-79483 data modifier is not present on object modifierKT-75398 Local classes from scripts have ClassId in stubsKT-79412 Context parameters with type annotations cause inconsistency errors while building stubs
Analysis API. Surface
New Features
KT-80084 Provide endpoints for Analysis API to understand when the context sensitive resolution is usedKT-64340 Analysis API: no way to get a type of vararg parameterKT-68387 AA: provide context for type approximations
Performance Improvements
KT-80713 Optimize KaDeclarationSymbol#visibility for class-like symbolsKT-79097 KaFirNamedFunctionSymbol#isSuspend shouldn't trigger resolutionKT-79095 isOverride shouldn't trigger resolution if not compiler plugins present
Fixes
KT-80234 Incorrect value of isActual for the implicitly actual constructor of annotation classKT-81132 Use KaSession instead of a particular KaSessionComponent for context parameter bridgesKT-81129 K2: KaSymbolInformationProvider#importableFqName: should return null for dynamic declarationsKT-81128 K2: KaSymbolInformationProvider#importableFqName: should return null for error destructuring declarationsKT-81127 K2: KaSymbolInformationProvider#importableFqName: should return null for anonymous functionsKT-81126 K2: KaSymbolInformationProvider#importableFqName: should return null for enum entry initializer constructorsKT-81125 K2: KaSymbolInformationProvider#importableFqName: should return null for property accessorsKT-81124 K2: KaSymbolInformationProvider#importableFqName: type alias constructor should have a reference to the type alias and not to the underlying classKT-70127 Analysis API: ‘KaFirReceiverParameterSymbol’ does not implement ‘KaFirSymbol’; leads to exception from importableFqNameKT-81123 Reimplement KaFirSymbolInformationProvider#importableFqNameKT-81122 Drop KaImportOptimizerKT-78093 Add bridges for context parametersKT-79772 Migrate from ‘validityAsserted’ to ‘withValidityAssertion’KT-79328 K2 AA, isUsedAsExpression: Unhandled Non-KtExpression parent of KtExpression: class org.jetbrains.kotlin.psi.KtImportDirectiveKT-80366 IllegalStateException from KaFirStopWorldCacheCleanerKT-80274 Merge AbstractMultiModuleSymbolByPsiTest to AbstractSymbolByPsiTestKT-80352 KaBaseResolutionScope.contains(PsiElement) always returns false for Android light classes (e.g. synthetic R.java classes)KT-80178 Incorrect modality for an abstract interface function with a redundant open modifierKT-79129 [Analysis API] KaFe10TypeCreator.buildClassType cannot build builtin types by class idsKT-79143 AA: argumentMapping contains an expression that is not an argumentKT-59857 KaExpressionTypeProvider#returnType shouldn't throw an exception for class like declarationsKT-79667 Enable resolve on java record components in standalone modeKT-73050 KaFirSymbolRelationProvider#expectsForActual: suspicius logic for KaReceiverParameterSymbolKT-78904 KaBaseWriteActionStartedChecker throws when no additional WA was doneKT-79281 Add KDoc to KaTypePointer#restoreKT-78597 KaUseSiteVisibilityChecker returns false for internal functions exposed via implicit receiverKT-71705 FIR api impl: Postfix increment expression's expressionType is Unit when incrementing array elementKT-75057 Analysis API: Reference to object through typealias in invoke operator call leads to original type
Backend. Native. Debug
KT-79848 Flaky debugger tests in opt.debug/cache.*/GC.CMS/GC.sch.ad/alloc.custom configuration
Backend. Wasm
New Features
KT-59032 Support instantiation of annotation classes on WASM
Fixes
KT-76204 K/Wasm: support generating a wasm module per kotlin module/klibKT-79357 K/Wasm: store data for string literals in utf8 for Latin1KT-82075 K/Wasm: kotlin.wasm.internal.getSimpleName crashes on iOS Safari older than 26KT-79244 [Wasm] Drop K1-specific tests, testrunners and test directivesKT-69621 K/Wasm: Consider enabling support for KClass.qualifiedName by defaultKT-80397 K/Wasm: turn on by default using a new version of the exception handling proposal for wasm-wasi targetKT-81372 K/Wasm: JsException: Exception was thrown while running JavaScript code on Safari 18.2/18.3KT-80018 K/Wasm: exceptions don't work properly in JavaScriptCore (vm inside Safari, WebKit)KT-66072 K/Wasm: improve how exceptions work in JS interopKT-80106 devServer in Kotlin/Wasm overwrites defaults, causing missing static pathsKT-80210 Wasm: “Unexpected non-external class: kotlin.Nothing” caused by JsExport with JsPromiseKT-80555 WASM IC: Can't link symbol on kotlinx.coroutines on fresh masterKT-80415 WasmJs Number Elvis Operator CrashKT-76509 WasmJS: ReferenceError: Temporal is not defined caused by “Redundant reference to unused external results”KT-79317 [Wasm] Do not throw CCE for ExcludedFromCodegen declarationsKT-78036 K/Wasm: generate a message with “expected” and “actual” types in case of CCE
Compiler
New Features
KT-80461 K2: false positive NO_ELSE_IN_WHEN for complex sealed hierarchyKT-77676 K/N: enable typechecks and the casts optimization pass in debug mode by defaultKT-79185 Support local type aliasesKT-80837 Warn about extension function with a context shadowed by memberKT-80768 Warning on overloading by a superset of context parameters in class contextKT-80031 Check spotbugs‘s @CheckReturnValue in Kotlin’s unused return value checkerKT-79380 Native: add performance measurement for the rest of backend phasesKT-79381 Native: add performance measurement of LLVM phasesKT-80222 Implement the prohibition of always-false is checks for definitely incompatible typesKT-79295 Parse and build raw FIR from new short and full forms of positional destructuring with square bracketsKT-74810 Support typealiased/mapped Java types in unused return value checkerKT-71244 Incorporate existing @CheckReturnValue annotation(s) into Kotlin's unused return value checkerKT-79922 Record ‘MustUse/ExplicitlyIgnorable’ state for overrides even in disabled RVC modeKT-79920 Store ‘Explicitly ignorable’ state of function/property in the metadataKT-79690 Implement a USELESS_ELVIS_LEFT_IS_NULL with elvis expressionKT-79296 Implement/adapt diagnostics for new destructuringKT-79298 Report errors on new destructuring syntax in K1
Performance Improvements
KT-81617 Native: casts optimizations pass explodes on deep nested loopsKT-80554 Kotlin/Native: investigate performance hit from always-on llvm pass profilingKT-81340 K/N: severe compilation time degradation after turning on casts optimization passKT-80370 Add NO_INLINE attribute to some of runtime functionsKT-80167 K/N: condense the nodes and edges in DevirtualizationAnalysis constraint graphKT-79535 Revert incorrect SAM conversion enhancements brought to K2
Fixes
KT-79979 K2: ClassCastException when overriding extension property with delegationKT-82590 ClassCastException when instantiating class with generics implemented by fun interface and lambdaKT-78881 K2: False positive “Assigned value is never read” in composable functionKT-79276 Dexing fails with “Cannot read field X because is null” with 2.2.0KT-79547 “UnsupportedOperationException: Not supported” with inlining and value classesKT-79442 “Multiple annotations of type kotlin.coroutines.jvm.internal.DebugMetadata”: 2.2.0-Beta1 generates broken code with JVM default suspend methods in interfacesKT-80744 Kotlin failure on lambda with type parameterKT-81618 “Number of arguments should not be less than number of parameters” on JVM on Kotlin 2.3.0-Beta1KT-82869 Green-to-Red change in 2.3 after prioritizing non-suspend-function-type overloadsKT-79611 “IllegalStateException: couldn't find inline method”: Exception during incremental compilationKT-78895 Consider dropping isLocalInFunction and FirClassLikeDeclaration.isLocalKT-82040 Native: ClassCastException: PointerInputChangeKT-81924 K2: “Cannot infer type for this parameter”, “Overload resolution ambiguity between candidates”KT-80864 K2: Missing Val cannot be reassigned diagnostic for Java final fields (crashes in runtime with IllegalAccessError)KT-71420 Report error when reified type parameter is inferred to intersection typeKT-79451 Rework approach to recursive types approximationKT-78413 Kotlin Debugger: value classes as context parameters have incorrect names in Variables View during debuggingKT-82138 Debugger: Cannot evaluate JvmInline value class parameterKT-82381 ArrayIndexOutOfBoundsException while FirDiagnosticsCompilerResultsReporter tries to print code as part of a warning logKT-81068 Corrupted Unicode paths passed or used in the compilerKT-79783 KDoc parser: Links aren't rendered if the line has an indent of 4 or moreKT-80549 Call of Java method with type parameter bounds: Expected FirResolvedTypeRef with ConeKotlinType but was FirJavaTypeRefKT-82132 False-positive type mismatch with -language-version 2.2KT-81988 K2: Any?.toString() causes NPE inside lambda with JavaKT-81652 Native: ClassCastException: ApplicationForegroundStateListener.CompanionKT-76479 Backend. JVM: Report errors on exposure of types in inline functionsKT-82022 K/N: Unexpected “Annotation @JvmInline is missing on actual declaration” warning with value classesKT-80250 ISE: flow for PostponedLambdaExitNode not initialized - traversing nodes in wrong order?KT-76344 Drop language version 1.9 for non-JVM platformsKT-76343 Drop language version 1.8KT-80330 K2: NPE at org.jetbrains.kotlin.fir.resolve.calls.FirCallResolver.createResolvedNamedReferenceKT-80400 K2: AbstractMethodError on fun interface implementation inheriting from an interface compiled with -jvm-default=disableKT-9111 Improve diagnostic for call with access to outer class from nested classKT-78280 Implement the sourceless KtDiagnosticsKT-74999 K2: KotlinNothingValueException within Extension FunctionKT-81254 “AssertionError: There should be at least one non-stub type to compute common supertype”: Parser issue during generic type inferenceKT-53237 NI: Frontend ignores generic bound when inferring typesKT-81186 Only allow local type aliases in REPL/scripts until full stabilizationKT-80929 IC Native: Undefined symbols on ktorKT-81657 K2: put warning about “exposing package-private in internal” under experimental language featureKT-81241 Konanc exit while lowering org.jetbrains.kotlin.ir.util.IrUtilsKt.remapTypeParametersKT-74819 K2: False-positive overload resolution ambiguity for flatMap inside PCLAKT-81547 Stabilize DFA-based exhaustivenessKT-79274 Frontend implementation of name-based destructuringKT-79506 Contract for getter and setter doesn't work if a property is called from another moduleKT-58988 K2: Deprecate exposing package-private parameter of internal methodKT-80711 IC Native: NPE during link on ktorKT-77727 Move some of the extra checkers to the default listKT-76136 Switch latest stable version in Kotlin project to 2.3KT-81257 Native: “Unexpected boolean predicate” when generating ‘static_cache’KT-81525 Report REDUNDANT_SPREAD_OPERATOR on (*) instead of argument expressionKT-81522 Fix Light Tree SPREAD_OPERATOR diagnostic positioningKT-77008 K2: Incorrectly force casting to a wrong typeKT-78127 K2: Too precise inference for if/when with expected type in assignmentKT-80208 K2: ClassCastException: “class java.util.ArrayList cannot be cast to class java.lang.Void” type inference picks Void for generic functionKT-75797 Native: find a way to handle generates C bridges in inline functionsKT-78819 K2: False positive ABSTRACT_MEMBER_NOT_IMPLEMENTED in KJK hierarchyKT-80003 Kotlin/Native: deprecate eager GlobalData initializationKT-79231 Inconsistent InnerClass entry flags for abstract inner enumKT-20677 Improve diagnostic about implicit default constructor absence for expected annotation classKT-81385 Missing error of nullable expression in class literal in case of reified type parameterKT-81251 Smartcast doesn't work for an effectively private inline functionKT-81245 Automatic smart cast on properties with EBF is allowed on inlined property accessorsKT-81222 Custom getter is allowed on a property with redundant EBFKT-80795 Wrong type cast is added for IMPLICIT_COERCION_TO_UNITKT-81141 Fix FirUnsupportedArrayLiteralChecker to forbid array literals inside non-annotation contextsKT-81383 Return type of anonymous function used as run argument is incorrectly inferred to NothingKT-80577 “Return type mismatch” for self-referential types used as generic parametersKT-75215 KDoc: references from @param tag are rendered as plain textKT-79887 K2 Compiler Internal Error in ‘FirFakeOverrideGenerator.checkStatusIsResolved’ MethodKT-78125 false-negative shadowed contextual overload warning on local declarationsKT-81198 Move type and type parameter annotations from jvm_metadata.proto to metadata.protoKT-81057 Wrong handling of boxing during redundant casts optimizationKT-81191 K2: “null cannot be cast to non-null type ConeTypeParameterLookupTag” with invalid codeKT-80285 IJ monorepo: broken compilation after 2.2.20-RC updateKT-81115 Allow converting lambda with explicit parameter when assigning to variable of an extension function typeKT-74588 Redundant checkNotNull intrinsics instructions for Java generic methodsKT-78390 Unmute FusStatisticsIT.testKotlinxPlugins() after AtomicFU updates kotlin-metadata-jvmKT-79369 Forbid typealiasing for all compiler-required annotationsKT-69294 K2: Report CONSTRUCTOR_OR_SUPERTYPE_ON_TYPEALIAS_WITH_TYPE_PROJECTION_ERROR instead of EXPANDED_TYPE_CANNOT_BE_INHERITED after switching to LV 2.2KT-81064 Wrong safe call null check handling during redundant casts optimizationKT-80871 StackOverflowError on AnnotationTarget.TYPEKT-80908 K2: Compiling type annotation with self-annotated vararg fail with exceptionKT-81018 ISE “IR class for Foo not found” on missing dependency when lowering SAM constructorKT-80936 NON_PUBLIC_CALL_FROM_PUBLIC_INLINE : @PublishedApi doesn't work for fun interfacesKT-75748 StackOverflowError when reading array from metadata annotationsKT-80606 KotlinIllegalArgumentExceptionWithAttachments when using property itself in explicit backing field initializationKT-80940 K2: Exception in FIR2IR with AnnotationTarget.TYPE with self-annotated non-vararg default argument and usage in child moduleKT-80538 KaFirDiagnostic.EmptyRange doesn't work in most of the casesKT-80524 Class is not abstract and does not implement abstract member when compiling with kotlinc-jklibKT-80597 Apply fix for CVE-2024-7254 to our fork of protobuf 2.6.1KT-80849 K2: ConstValueProviderImpl doesn't distinguish files with same name and packageKT-80602 Exhaustiveness checker improvements for 2.3KT-80735 Support || return/throw shortcut in unsed return value checkerKT-79651 Report a warning about an unused return value only on the function nameKT-80719 False positive: “Redundant visibility modifier”: when overriding protected methods as “public”KT-80434 K2: DSL marker doesn't work with lambda fieldsKT-80383 Getter without a body is allowed on a property with an explicit backing fieldKT-80446 Explicit visibility modifiers are allowed on EBFKT-80378 ClassCastException on callable reference to a property with EBFKT-80377 Fir2Ir: “Cannot determine expected receiver type” for callable reference to a property with EBF outside of classKT-80455 K2: StackOverflowError in when exhaustiveness checker on red codeKT-72862 [Native caches] Umbrella for failing codegen/box tests for corner cases in synthetic accessorsKT-20278 NO_TYPE_ARGUMENTS_ON_RHS: Confusing diagnostic for inner class of generic outer classKT-80418 Property with EBF with functional type isn't resolved if its type is AnyKT-80469 Functional type from property is always used for explicit backing fieldKT-80535 Missing INITIALIZER_TYPE_MISMATCH for EBFKT-80445 Private visibility is possible for a property with EBFKT-80164 Move name generation for unnamed context parameters to frontendKT-80684 Line breaks are lost in multi-line diagnostic messages since 2.3.0KT-78112 RETURN_VALUE_NOT_USED is reported for local function even if it isn't marked with annotation in CHECKER modeKT-48311 Incorrect LINENUMBER after if with a suspend callKT-80688 Bad SourceDebugExtension caused by enhanced coroutines debuggingKT-73851 Native: compilation fails with ClassCastException with genericSafeCasts=trueKT-77593 Add a warning when @IgnorableReturnValue is inconsistent between expect/actual functionsKT-79386 Confusing error message when named parameters are used for java method callsKT-80600 K2: Private and final modifiers are allowed on setter of open delegated propertyKT-77101 Invoke on callable reference is considered ignorableKT-79923 Remove lookup of @IgnorableReturnValue annotation from FirReturnValueOverrideCheckerKT-80517 Synthetic kotlin.Any members in data classes are missing @MustUseReturnValueKT-80194 VAR_TYPE_MISMATCH_ON_OVERRIDE: doesn't mention the inferred typeKT-80484 K2: ClassCastException due to fake source for implicit lambda parameter (RedundantNullableChecker)KT-80592 UninitializedPropertyAccessException when anayzing annotations on members of anonymous classesKT-80399 Anonymous Kotlin class incorrectly warns about deprecated java override despite ‘@Deprecated’ annotationKT-79610 Adding CocoaPod to Kotlin/Native MPP triggers IR serialization failure and commonizer errorsKT-79951 Infinite loop in parsing incomplete full form destructuringKT-79866 kotlinc 2.2.0 silently emits ‘NonExistentClass’ instead of reporting an errorKT-79777 Argument type mismatch on value of complex type with a captured raw type argumentKT-78664 False positive VARIABLE_NEVER_READ and ASSIGNED_VALUE_IS_NEVER_READ on function type variable with splited declaration and assignmentKT-79496 False positive “when must be exhaustive” in triangle interface/class hierarchyKT-79774 KtDestructuringDeclaration.getLPar & getRPar are brokenKT-80391 K2: Only one context parameter is mentioned in the [NO_CONTEXT_ARGUMENT] diagnosticKT-79785 ktypew:kotlin.collections.List already exists error using Swift ExportKT-78879 “Sealed types cannot be instantiated”: Can't instantiate Java-defined sealed Class from KotlinKT-21598 Extension is shadowed by member should not be reported when member is deprecated with HIDDEN levelKT-79622 FUNCTION_EXPECTED: Misleading ‘expression cannot be invoked as a function’ when inaccessible with private lambdaKT-80255 [EXTENSION_FUNCTION_IN_EXTERNAL_DECLARATION] can be attached to the receiver type of a functional typeKT-79816 Java Interfaces implemented by delegation have non-null return checksKT-80177 Improve message of RECEIVER_SHADOWED_BY_CONTEXT_PARAMETER in case of member extensionKT-79770 There is no RECEIVER_SHADOWED_BY_CONTEXT_PARAMETER if the usage of fun is from inside the classKT-79430 False positive EXTENSION_SHADOWED_BY_MEMBER on overridden member extensionKT-62934 Incorrect line mapping inside inline lambda after non-local returnKT-79545 K2: no error on crossinline lambda usage in anonymous object base constructor callKT-79643 HAS_NEXT_FUNCTION_AMBIGUITY and NEXT_AMBIGUITY diagnostics are always ignored in favor of HAS_NEXT_FUNCTION_NONE_APPLICABLE and NEXT_NONE_APPLICABLEKT-79327 Modifier ‘private’ is not applicable to ‘value parameter’ is reported for context parametersKT-76453 K2 IDE: autocomplete freezeKT-77182 A function in a file annotated with @file:MustUseReturnValue doesn't produce a warning when it is used from compiled codeKT-78541 Jspecify: Unsound platform type despite @NullMarked for an override with a generic-subclass return typeKT-79672 ‘when expression must be exhaustive’ even after using ‘require()’KT-71306 K2 IDE / Kotlin Debugger: “Cannot find local variable ‘block’ with type kotlin.jvm.functions.Function0” on evaluating lambda arg inside inline functionKT-76991 K2 IDE / Kotlin Debugger: ISE “Couldn't find declaration file for” on evaluating local fun when the scope has also inline fun from another file callKT-79877 K2 IDE / Kotlin Debugger: failed evaluations of a code fragment capturing local data classKT-77401 [FIR] ParameterNameTypeAttribute.name doesn't support @ParameterName with compile-time constant property argumentKT-79682 Fix partially uninitialized locals after coroutine spills insertionKT-79562 NPE when passing non-lambda argument of nullable non-suspend function type into function that accepts nullable suspend function typeKT-79693 NotImplementedError: An operation is not implemented: Unknown file with KMP separate compilationKT-79662 Unused return value checker doesn't work for com.google.errorprone.annotations.CheckReturnValueKT-79781 Missing MISSING_DEPENDENCY_CLASS when using type alias with inaccessible RHSKT-77772 Only report exposed type on qualifier if it's resolved to an objectKT-79765 K2. Do not report ignore return value for unresolved referenceKT-79017 False negative REDECLARATION on private nested classKT-79519 Nested type alias is unreachable from another moduleKT-72039 StackOverflowError on calling keySet on a Kotlin subclass of Java subclass of ConcurrentHashMapKT-75843 K2: incorrect line numbers in an if-expression with a super-callKT-77504 Add a warning when @IgnorableReturnValue is inconsistent on overridesKT-78389 Perform version 2.3 boostrappingKT-79092 Crash on default argument in function in fun interfaceKT-77729 Package-level @NullMarked does not work when kotlinc sees .java source filesKT-79013 False negative NOT_YET_SUPPORTED_IN_INLINE on inline local functions inside inline functionsKT-79139 False positive CONFLICTING_OVERLOADS for context parameters instead of receiversKT-35305 Address the overload conflict resolution between unsigned and non-primitive typesKT-42096 No diagnostic reported on inline modifier on an enum entryKT-79355 Failed to fix the problem of desugared inc with new reverse implies returns contractKT-79277 Implies returns contract doesn't affect the return type of the function if it is in the argument positionKT-79271 Implies returns contract doesn't impact exhaustivenessKT-79218 SMARTCAST_IMPOSSIBLE for top‑level extension‑property getter despite returnsNotNull contractKT-79220 returnsNotNull contract ignored on extension function with nullable receiverKT-79354 IllegalStateException: Debug metadata version mismatch. Expected: 1, got 2 with compiler 2.2.20-Beta1 and stdlib 2.2.0KT-77986 K2: False negative: “Local classes are not yet supported in inline functions”KT-79456 Redeclaration conflict checks of private top-level classifiers rely on an incorrect containing fileKT-79125 RVC full mode: delegated interfaces are not checkedKT-63720 Coroutine debugger: do not optimise out local variablesKT-78595 type variable leak on a generic property as a call argument given an unstable smart castKT-79076 ‘IllegalStateException: Cannot serialize error type: ERROR CLASS: Uninferred type’ with Exposed column using recursive generic typeKT-59807 K2: Replicate the MUST_BE_LATEINIT logic from K1KT-76782 K2: Incorrect resolve into unrelated invoke operator with wrong diagnosticKT-78066 TYPE_PARAMETER_OF_PROPERTY_NOT_USED_IN_RECEIVER error message does not account for context parametersKT-76065 Drop JavaTypeParameterDefaultRepresentationWithDNN featureKT-77808 Inference: recheck the code about DNN-related hacksKT-24202 NOTHING_TO_OVERRIDE if super-class reference misses generic argumentsKT-78909 K2: Missing diagnostics [CYCLIC_INHERITANCE_HIERARCHY] for recursive class inheritance leads to StackOverflowErrorKT-75969 java.lang.IllegalArgumentException: source must not be null on red codeKT-76902 Omit type-use annotations from diagnosticsKT-17460 Diagnostics and intention on suspend function that is overriden with non-suspend one.KT-56665 K2: false positive RECURSIVE_TYPEALIAS_EXPANSIONKT-78932 Contracts are allowed for open and overridden property accessorsKT-77203 FIR: Consider adding destructured type to all COMPONENT_FUNCTION_* diagnosticsKT-77685 “IllegalArgumentException: Sequence contains more than one matching element”KT-78452 Drop redundant frontend structures after fir2ir conversionKT-70507 Should parentheses prevent from plus/set operator desugaring?
Compose compiler
New features
98d3907 Introduce a compose group analysis module that produces a proguard/R8 mapping from group keys in bytecode.
Fixes
b/419049140 Disabled memoization in try blocksKT-81081 Generate Compose-specific proguard mappings when Compose compiler plugin is applied.b/431025881 [Compose] Clean up runtime version checkerb/365922168 Add java.util.Locale to the list of known stable classesb/407549020 Introduce a registry of known stable markersb/417989445 Added a diagnostic to restrict usages of runCatching in @Composable functionsKT-80294 Fix crash with inline @Composable function referenceb/430140896 Fix IrSourcePrinter output for when branch check and typechecksCMP-9167 iOS: Platform declaration clash: The following functions have the same IR signature
IDE. Gradle Integration
KT-46273 MPP: Don't fail import for case of missed platform in source set structureKT-46417 [UNRESOLVED_REFERENCE] For project to project dependencies of native platform test source setsKT-44845 After update to Kotlin 1.4.30 all external dependencies is unresolved in IDE with kotlin.mpp.enableGranularSourceSetsMetadata=trueKT-46142 K/N distribution is unavailable from IDE with multiplatform hierarchical project structure enabled
IR. Actualizer
KT-77337 IrNoExpectSymbolsHandler finds expect class reference after enabling annotation traversal in IRKT-80002 Investigate the need for map copying in IrCommonToPlatformDependencyExtractor.ktKT-80131 KMP Separate Compilation: No override for FUN IR_EXTERNAL_DECLARATION_STUB name:KT-80064 KMP Separate Compilation: ClassCastException: class org.jetbrains.kotlin.ir.symbols.impl.IrTypeAliasSymbolImpl cannot be cast to class org.jetbrains.kotlin.ir.symbols.IrClassSymbolKT-80051 KMP Separate Compilation: Actualization of common dependencies failed on ‘PROPERTY FAKE_OVERRIDE name:modCount visibility:protected modality:FINAL [fake_override,var]’KT-79998 KMP Separate Compilation: java.lang.IllegalStateException: No override for FUN IR_EXTERNAL_DECLARATION_STUB name:
IR. Inlining
New Features
KT-70360 KLIBs: Uniformly handletypeOf() calls at 1st/2nd stages of compilation
Performance Improvements
KT-69497 Crossinline lambda is allocated on K/N & JS
Fixes
KT-78673 Make fakeOverrideLocalGenericBase not using red codeKT-78537 [Inliner] Incorrect KFunction.name of a reference to inlined local functionKT-74892 Investigate passing inline lambda as argument of another inline functionKT-81673 False warnings about ABI change in dependencies in library mode in 2.3.0-Beta1KT-81713 [Inliner] Compilation of inline function with recursive call applied to TODO() fails with an internal errorKT-80653 [IR Inliner] Space: “Local declarations should've been popped out by this point”KT-78392 CommonPrefix: Add a way of stopping execution when one of the phases is unsuccessfulKT-80927 [Native] Review intrinsics with PublishedApiKT-81070 [Inliner] kotlin/Any is unboundKT-80628 KLIB inliner: Not enough information about the “full” modeKT-69516 Double-inlining for Native: Enable visibility checks after 1st phase of inliningKT-79334 Unify intrinsics used on 1st phase of IR inliner in KLIB-based compilersKT-80610 KLIB inliner: Always apply cross-module inlining to pre-processed inline functionsKT-80565 KLIB Inliner: Add a special annotation to prohibit inlining of marked inline functions in stdlib on 1st compilation phaseKT-80883 [Inliner] Run pre-serialization lowerings in all testrunnersKT-77876 IrVisibilityChecker: Different set of exceptions for 1st and 2nd compilation stagesKT-80693 [IC] Split IC invalidation tests for cross-module IR InlinerKT-79718 KLIB inliner: Emit warning on generation of public synthetic accessor when running in “explicit API mode”KT-80226 [IR Inliner] Generate constructor accessors as constructors, not static functionsKT-80692 [IC] Split IC invalidation tests for intra-module IR InlinerKT-77103 [Inliner] IrLocalDelegatedProperty was not serialized, while its symbol and IrRichPropertyReference were.KT-80537 The expected error is not emitted from FirJsKlibSyntheticAccessorsTestGenerated and NativeKlibSyntheticAccessorsTestGeneratedKT-78903 Unify codegen/boxInline tests with codegen/boxKT-78989 Add missing PL tests for inline functions/property accessorsKT-79771 kotlinx-coroutines-core: Public synthetic accessor generated with enabled KLIB IR inlinerKT-79680 IrConstructorSymbolImpl is unbound in lambdaWithoutNonLocalControlflow.ktKT-70849 Ensure correct debug info for intra-module IR inlining on the first compilation phaseKT-79800 JS BE errors with default values when IR inliner is enabledKT-79352 Remove excessive validations from ValidateAfterAll... on the first stageKT-76599 Migrate IrValidationAfterInliningAllFunctionsPhase to the first stage of compilationKT-78245 Synthetic Accessors incorrectly copies default valuesKT-72594 [JS][Native] Add IrInliningFacade to test runners
IR. Interpreter
KT-72356 K2 Native: IllegalStateException when annotation has the same source range as a constant in another fileKT-72881 K2: incorrect empty array as annotation argument when parameter has default value
IR. Tree
Fixes
KT-79371 Fix handling of broken SAM conversion in PL with enabled Rich ReferencesKT-81952 “IllegalStateException: Callable reference with vararg should not appear at this stage” for callable references to functions with generic vararg parametersKT-79739 Static synthetic accessors inside generic classes access its type parametersKT-78100 Track and annotate internal annotations with @PublishedApi to enable annotation visibility validationKT-80825 Drop IrSerializationSettings.reuseExistingSignaturesForSymbols settingKT-79807 Broken IR tree invariants in IrReplSnippet after FIR2IRKT-77819 [IR] Fine-tune IrValidator's run after Fir2IR and IR pluginsKT-70160 Remove IrDeclaration.parents after Anvil updateKT-80454 LocalDeclarationsLowering: Clean-up the dead codeKT-80819 Rework IrFileValidator to use Hashmap instead of ClassValueKT-80516 Kotlin-like IR dump: Don't render tailrec as lateinitKT-78856 Refactor LocalDeclarationsLowering to split it in smaller partsKT-79439 KLIB stdlib symbols loading: Split the result of merging of IrBuiltins with BuiltinSymbolsBase hierarchy into two parts (for 1st & 2nd phases)KT-79437 KLIB stdlib symbols loading: Drop loading functions from IrBuiltins and migrate usages to SymbolFinder functions and lazy filteringKT-79569 Unexpected error during DFG phase in Native due to PL issue with SAM conversion represented by rich referenceKT-76601 IrValidatorConfig should have all checks disabled by defaultKT-69662 Deduplicate function createTemporaryVariableKT-79440 KLIB stdlib symbols loading: Drop BuiltinSymbolsBase from plugin APIKT-78960 [FO] Limit static fake overrides generation for static functionsKT-76813 IR validator: not all symbols/references are visited
JVM. Reflection
KT-79020 Suspend lambdas return type is shown as ??? in reflectionKT-81967 isSubtypeOf: ClassCastException: CapturedKType cannot be cast to class AbstractKTypeKT-76521 Reflection: change KType representation to avoid dependency on K1KT-81619 Reflection: Function supertype of a FunctionN class has flexible type in new implementationKT-74529 Context parameters support in reflectionKT-80901 Reflection: incorrect translation of raw types in the new implementationKT-74624 Reflection: KClassifier.createType(...) ignores annotations parameterKT-80203 Reflection: provide a way to use legacy K1-based implementationKT-80236 Reflection: KType.toString for raw types no longer renders “(raw)”KT-79206 Reflection: suspend functional type classifier is null
JavaScript
New Features
KT-80401 Kotlin/JS support for default export in generated JavaScriptKT-79284 Use BigInt64Array for LongArrayKT-79222 K/JS: Allow using Long in exported declarationsKT-79394 Add the possibility to write common external declarations between JS and WasmJS targets
Performance Improvements
KT-57128 KJS: Use BigInt to represent Long values in ES6 mode
Fixes
KT-79928 Allow JsModule/JsNonModule/JsQualifier invocation on per-entity levelKT-79514 java.lang.IllegalStateException: IrClassSymbolImpl is unbound. Signature: kotlin.js/Promise|null[0] on running jsBrowserTestKT-82005 KJS: “TypeError: callAgent.jsonRpcCall_ij3z26_k$ is not a function” after code change in 2.3.0-Beta1/2KT-79359 Kotlin/JS: Suspending function doesn’t return Unit on es2015KT-79089 KJS: Could not load reporter / Cannot find module ‘mocha’ when running jsNode testsKT-56281 KJS: Can't export suspend functionsKT-79926 Wrong export of interfaces with companions with ES ModulesKT-80168 Allow @JsStatic inside interface companionsKT-70222 Remove legacy JS BE-related CLI flagsKT-81424 Kotlin/JS: Cannot Get / in a simple running applicationKT-80873 KJS: Stdlib requires ES2020-compatible JS engine due to BigInt type literalKT-81066 Wasm, JS: Remove redundant logging in compiler outputKT-72833 KJS: Source maps have incorrect sources paths in per-fileKT-74055 KJS: @JsPlainObject adds JS code even if marked interface is not usedKT-72474 KJS: @JsPlainObject doesn't honour -XXLanguage:+JsAllowInvalidCharsIdentifiersEscapingKT-79644 BigInt enabled for ES 2015 despite being an ES 2020 featureKT-52771 KJS: Pair should be exported to JavaScriptKT-79704 Unify variance rendering between JS and other backendsKT-69297 Deprecate referencing inlineable lambdas in js() callsKT-80086 [k/js] Resolving imported string literalsKT-79066 [Kotlin/JS] jsNodeTest fails with SyntaxError when a test file has @file:JsExport and useEsModules() is enabledKT-77385 Investigate partial linkage problems for JS HMPP testsKT-79628 Remove IR nodes from ExportModelKT-79916 K/JS: “Uncaught TypeError” when using ‘Xes-long-as-bigint’ in compose-htmlKT-79050 KJS / IC: “Unexpected body of primary constructor for processing irClass”KT-79977 KJS: Long.rotateLeft returns incorrect result when BigInts are enabledKT-78831 AbstractFunctionReferencesLowering: fragile fake override generationKT-52230 KSJ IR: Applying identity equality operator to Longs always returns falseKT-6675 KotlinJS: toInt() on external Long throws errorKT-79184 K/JS: Further intrinsify BigInt-backed Long operations
Klibs
New Features
KT-80761 K2: [K/N] Should reported klib usage include inheritance
Performance Improvements
KT-80861 [Klib] Deduplicate IrFileEntry.nameKT-80866 [Klib] Optimize size of IrFileEntry.line_start_offsetKT-80438 Uncached KlibMetadataClassDataFinder.findClassData
Fixes
KT-64237 Klib metadata: migrate to using the common annotations instead of klib-specific extensions in the compilerKT-80099 KLIB resolver: Could not find file because of missing klib extension in resolved symlink pathKT-80999 Reuse existing IrKotlinLibraryLayout in KotlinLibrary for reading pre-processed functionsKT-80290 Remove if and TODO in countInAsInlinedLambdaArgumentWithPermittedNonLocalReturnsKT-80298 K/N: one-stage compilation is brokenKT-79958 KLIB tool fails to render IR if there is IrErrorType in a lirbraryKT-75241 Move ExperimentalLibraryAbiReader to a publishable artifactKT-76260 Make IrRichCallableReferencesInKlibs lang feature stable in LV=2.3KT-61552 [PL] IndexOutOfBoundsException in SAM conversion with substituted functionKT-74417 Deduce the metadata version based on LV in KLIB-based backendsKT-75980 [Klib] Reduce serialized size of IrFileEntries for sparse usage of another source filesKT-73826 Deduplicate IrFileEntry that is serialized inside IrInlinedFunctionBlock
Language Design
KT-76926 Allow return in expression bodies if return type is specified explicitlyKT-78866 Show an error for implicit receiver shadowed by context parameterKT-81561 Update nested type aliases KEEP to reflect local type aliases supportKT-81015 Stabilize nested type aliasesKT-32619 JS: return Promise when continuation is not providedKT-78976 Decide if K2 should support local functions inside of local inline functionsKT-79308 Ability to actualize empty interfaces as AnyKT-48872 Provide modern and performant replacement for Enum.values()KT-28850 Prohibit protected visibility in final expected classes
Libraries
New Features
KT-81092 Uuid: support generation of version 7 uuids with a given timestampKT-78463 Annotate wasm and JS targets of kotlin-stdlib with @IgnorableReturnValue when appropriateKT-74444 EnumEntries type should implement RandomAccessKT-78462 Annotate kotlin-stdlib-jvm with @IgnorableReturnValue where appropriate
Performance Improvements
KT-72111 Change Duration.parseOrNull logic to not throw exceptions internally
Fixes
KT-82901 Long.MIN_VALUE.milliseconds produces invalid denormalized DurationKT-81995 K/N: CMP: Undefined symbol _kfun:kotlin.time.Duration.kotlin.time.DurationKT-56822 Deprecate Number.toChar() with error deprecation levelKT-81078 Increase kotlin.io.createTempDir and createTempFile deprecation level to ERRORKT-74493 Deprecate String.subSequence(start, end) with error and drop it in the futureKT-79192 Increase InputStream.readBytes(Int) deprecation level to HIDDENKT-80778 Stabilize kotlin.time.Clock and kotlin.time.InstantKT-81043 String.toBigDecimalOrNull rejects strings accepted by String.toBigDecimalKT-81477 Uuid.Companion.generateV* are missing SinceKotlin annotationKT-81478 FileTreeWalkTest.withDirectoryFilter fails on WindowsKT-74411 Introduce Uuid.generateV4() and generateV7()KT-80530 Annotate Kotlin/Native stdlib with must-use value/@IgnorableReturnValue when appropriateKT-79791 Duration.parse incorrectly handles negative decimal seconds in ISO-8601 formatKT-80619 [KLIBs] Enable intra-module inliner in stdlib & kotlin-testKT-76773 stdlib: contextOf‘s type argument can be inferred via contextOf’s context argumentKT-71822 Intersection with (subtraction from) an identity set may produce incorrect resultsKT-80431 Remove suppression of “ACTUAL_ANNOTATIONS_NOT_MATCH_EXPECT” from stdlibKT-80605 Rename MustUseReturnValue -> MustUseReturnValuesKT-69947 KLIB stdlib: All intrinsics that can be used in KLIBs with inlined IR must be included in stdlib ABI dumpKT-59044 Improve various aspects of TimeSource documentationKT-80544 Mark controversial path extensions (like .deleteRecursively()) as ignorableKT-80603 K/N and K/Wasm: \p{N} category is not supportedKT-80661 ArrayDeque.lastIndexOf may return -1 for an element present in the dequeKT-80390 ArrayDeque.indexOf(null) wrongly returns 0 after removalsKT-79094 Change signature of assertFailsWith or make lambda excluded otherwiseKT-72028 Incorrect parameters order in IndexedValue documentationKT-80130 [stdlib] Commonize AssociatedObjects in commonNonJvmMainKT-80107 [stdlib] Move CancellationException to commonNonJvmMainKT-80179 Investigate why StringBuilder.length is not enhanced automaticallyKT-80046 Increase test coverage of Duration.parse[IsoString][OrNull] methodsKT-76459 Remove comments about sorting stability in unsigned-type arraysKT-79489 Generate Stdlib API reference for webMain source setKT-78243 Drop JS- and Wasm-specific IrLinkageError classesKT-79108 Remove the default argument for linkageError from kotlin.js.getPropertyCallableRefKT-79130 K/JS: Remove bodies from intrinsified Long methodsKT-79239 K/Wasm: elementAt extension function of Array/PrimitiveArray/UnsignedArray does not throw IndexOutOfBoundException on incorrect indexKT-79256 K/Wasm: MatchResult.groups raises a trap on invalid group indexKT-57317 Repack EnumEntries from stdlib into the compiler
Native
KT-80620 Bump minimal iOS and tvOS supported versions to 14.0KT-80624 Bump minimal watchOS supported versions to 7.0KT-79384 K/N: Application Not Responding: Thread DeadlockKT-80536 Native: DependencyDownloader seems to have no timeout
Native. Build Infrastructure
KT-80147 Set proper LV and AV for kotlin-native/performance/buildSrcKT-79474 Kotlin/Native: fix breakpad buildKT-79215 Kotlin/Native: fix distInvalidateStaleCaches on windows
Native. C and ObjC Import
KT-79752 Native: make cinterop generate CCall.Direct annotationsKT-79753 Native: support CCall.Direct calls in the compilerKT-81312 Native: when -Xccall-mode direct is used, mark unsupported declarations with unresolvable symbol name instead of @Deprecated(ERROR)KT-79571 Xcode 26 beta 4: CInteropKT39120TestGenerated.testForwardEnum failedKT-80838 Cinterop fails with an error when Compilation works fineKT-49034 Kotlin/Native: cnames.structs.Foo resolves into wrong declaration
Native. ObjC Export
KT-81906 Normalize CFBundleIdentifier when producing Apple frameworkKT-78810 [ObjCExport] Enable explicit ObjC block parameter names by defaultKT-80271 ObjC/Swift Export: Remove Native platform Cloneable checksKT-78604 Consider not inheriting KlibScope from KaScopeKT-79767 ObjCExport: private companion must not be exposedKT-79724 ObjCExport: extensions orderKT-79548 ObjCExport: mangling difference between K1 and K2 when translating KotlinDurationCompanionKT-79475 ObjCExport: invalid property getter translationKT-79346 ObjCExport: Any method overridesKT-78871 ObjCExport: translation of keyword release with parameter generates invalid header
Native. Runtime. Memory
KT-75918 Native: Deprecate -Xallocator=stdKT-80678 Native: pagedAllocator=false sweep is slowKT-75916 Native: Enable sanitizer support with pagedAllocator=false
Native. Swift Export
Fixes
KT-81355 Swift Export: Introduce a flag to turn off coroutines exportKT-80969 Swift Export: Call suspend function as async on swift sideKT-80111 Swift Export Build Fails Due to Errors in KotlinStdlib.swiftKT-80884 Swift Export: support async in SIRKT-80185 Swift Export: IllegalArgumentException – Collection contains more than one matching elementKT-79889 K/N: swift-export fails under several different conditionsKT-79518 Swift export: represent kotlin.Any as swift.anyKT-78603 Do not inherit SirAndKaSession from KaSessionKT-79227 Swift Export: Fix First Release IssuesKT-79521 ‘_CoroutineScope’ is inaccessible due to ‘internal’ protection levelKT-79181 Swift Export Fails When Using T: Comparable Generic Constraint in Kotlin Classes
Tools. Ant
Tools. BCV
KT-80313 Add ability to generate dump from jar files [ABI Tools]
Tools. Build Tools API
New Features
KT-78194 BTA: port the JVM prototype to the new designKT-79409 BTA: Support removed compiler arguments properlyKT-78193 BTA: Implement core infrastructure according to the new designKT-78196 BTA: implement API adapter for the prototype implementationKT-77999 BTA: Generate BTA options from compiler arguments descriptions
Fixes
KT-75357 CompilationService.loadImplementation(loader) Expects a ClassLoader, but Fails if its not a URLClassLoaderKT-73090 Gradle 8.11 kotlin compilation fails when run with -Pkotlin.compiler.runViaBuildToolsApi=trueKT-81321 Deprecate old BTA prototype APIKT-81602 BTA: rename KotlinToolchains.jvm @JvmName for a more Java-friendly APIKT-75356 Failing to pass a -d argument causes Build Tools API to NPEKT-81130 BTA: using KotlinVersion from stdlib in the API breaks when using isolated classloaderKT-78195 BTA: migrate the test infrastructure from the prototype to the new design
Tools. CLI
KT-81077 Add JVM target bytecode version 25KT-79867 CompilerConfiguration.configureSourceRoots puts obfuscated file paths instead of ones passed on classpath to CLIConfigurationKeys.CONTENT_ROOTSKT-80348 Expose ‘XXLanguage’ compiler argument as a normal argumentKT-80428 KMP Separate Compilation: Handle friend dependenciesKT-74590 Deprecate -Xjvm-default in favor of -jvm-defaultKT-80349 KMP Separate Compilation is enabled on non-KMP compilationsKT-79982 Fix description of -Xjspecify-annotationsKT-79403 Improve generator for deprecated CLI argumentsKT-75968 Set proper lifecycle for all existing compiler argumentsKT-79293 Create Language Features and compiler argument with parameter for new destructuring features
Tools. Commonizer
KT-49735 [Commonizer] :commonizeNativeDistribution fails for projects with two or more same native targetsKT-47523 MPP: Unable to resolve c-interop dependency if platform is included in an intermediate source set with the only targetKT-48118 Commonized c-interop lib is not attached to common main source setKT-46248 MPP: Compile KotlinMetadata fails with Unresolved reference if only one native platform from shared source set is available
Tools. Compiler Plugin API
KT-82563 Improve compiler error messages to identify incompatible plugins causing compilation failuresKT-55300 Provide a mechanism to describe ordering and dependencies for compiler pluginsKT-82099 Compiler plugin ordering has no effectKT-74867 LLFirIdePredicateBasedProvider matches local classes when it shouldn'tKT-52665 Deprecate ComponentRegistrarKT-75865 Provide an API for setting the file name for the file with top-level declarations generated by a plugin
Tools. Compiler Plugins
New Features
KT-81091 [DataFrame] Receivers from FirExpressionResolutionExtension are not resolved in CodeFragment
Fixes
KT-64339 Symbol Light Classes: No Arg compiler plugin generates synthethic constructor which is not seen from light classesKT-80429 Power Assert with “Run test using: IntelliJ”: NoClassDefFoundError (org.jetbrains.kotlin.kotlinx.collections.immutable.ExtensionsKt) during compilationKT-79319 Lombok: NullPointerException on mvn compile when importing Java constantsKT-81348 Incorrect bytecode mentioning error class/package is generated by kotlinx-serialization when private serializer in another module is not accessibleKT-80944 FirUserTypeRefImpl cannot be cast to class FirResolvedTypeRef in maven projectKT-80815 NoArg compiler plugin: Promote NO_NOARG_CONSTRUCTOR_IN_SUPERCLASS diagnostic from warning to errorKT-80822 False positive NO_NOARG_CONSTRUCTOR_IN_SUPERCLASS reported for a class with explicit noargs constructor already presentKT-53122 Constructors generated with NoArg have no @Metadata and are invisible for the frontendKT-74687 Kotlin Lombok: False positive when calling builder on Java recordKT-80419 Remove bundled jetbrains annotations from kotlin-dataframe-compiler-pluginKT-79245 [AtomicFU] Drop K1/JS- and K1/Native-specific testrunnersKT-79197 DataFrame: Cannot find local variable ‘this@df’ with type Scope0KT-73865 Incorrect type is generated for irPropertyReference during K/N transformation
Tools. Compiler plugins. Serialization
KT-70345 Promote COMPANION_OBJECT_IS_SERIALIZABLE_INSIDE_SERIALIZABLE_CLASS diagnostic to errorKT-79695 Serialization does not exclude field-less properties in 2.2.20-Beta2KT-79246 [Serialization] Drop K1-specific testrunners
Tools. Gradle
New Features
KT-78199 Gradle: Migrate JVM compilation in KGP to the new BTAKT-45161 Gradle: Support registering generated sources with the Kotlin modelKT-71602 Introduce KotlinTopLevelExtension
Fixes
KT-67290 Deprecate usage of HasKotlinDependencies inside KotlinCompilationKT-80950 KGP breaks configuration cache when signing plugin with GnuPG is appliedKT-64211 Provide support for the kotlin.internal.compiler.arguments.log.level property while running via build tools apiKT-81719 Do not register swift export related configurations when it's not requiredKT-78741 Add FUS analytics for klib cross-compilationKT-75449 Update deprecation of KotlinJsTestFramework#createTestExecutionSpecKT-64273 Gradle: remove symbols deprecated after KT-54312KT-74915 Make ExtrasProperty.kt internalKT-64992 Remove KotlinCompilation.sourceKT-82068 Workaround iOS Simulator start failure in ITKT-79482 Report webMain / webTest usage in FUS metricsKT-81199 Deprecate “org.jetbrains.kotlin.android” pluginKT-82244 Conflicting warnings when using AGP 9.0.0-alpha with built-in Kotlin disabledKT-81161 Gradle plugin api reference: compiler arguments types are not availableKT-70251 Gradle: hide compiler symbols in KGPKT-81837 Run integration tests against AGP 8.13KT-77457 Compile against Gradle API 9.0KT-79238 Bump minimal supported AGP version to 8.2.2KT-75869 KGP JS - Update deprecated constructorsKT-76720 Raise deprecation level to error for Kotlin*Options propertiesKT-79047 Gradle compileKotlin fails with configuration cacheKT-81415 BTA: Duplicate daemons when compiling JVM + JS in KGPKT-80763 Add redirect link to error message when ‘org.jetbrains.kotlin.android’ plugin is used with built-in KotlinKT-81038 Gradle: remove support for properties disabling precise task outputs backupKT-80808 Warning from kotlin-dsl with kotlin(“jvm”) on Gradle < 9.0 doesn’t suggest updating GradleKT-80875 Gradle: runToolInSeparateProcess may fail on Windows with too long command lineKT-79851 Emit an actionable warning/error on unsupported AV/LV configured by kotlin-dslKT-77458 Run Gradle integration tests against Gradle 9.0KT-80172 Error message changes depending on the order of applying ‘org.jetbrains.kotlin.android’ and ‘AGP’ 9.0+ with built-in Kotlin pluginKT-76177 Remove deprecated classpath snapshot task inputsKT-79339 Remove additionalMetadata from compiler options DSLKT-73478 Add module level descriptionKT-80083 KGP IT: fix tests on WindowsKT-79034 Automatically disable cross compilation if it's not supported on the hostKT-79408 A lot of errors files are created when compile KotlinKT-78827 Rewrite Gradle compiler options DSL generator
Tools. Gradle. BCV
KT-80687 Add description to Gradle tasks [ABI Validation]KT-80621 Move Gradle tasks into suitable groups [ABI Validation]KT-78625 Kotlin's built-in BCV generates empty .api files
Tools. Gradle. Compiler plugins
KT-81827 Add a switch for mapping file tasks in Compose Gradle plugin
Tools. Gradle. JS
Fixes
KT-79921 Web Tooling Gradle API does not respect webpack reconfigurationKT-81009 K/JS, Wasm: Promote deprecation of NPM and Yarn package manager internal functionsKT-76019 Wasm/JS: Promote phantom-js for Karma deprecation to ERRORKT-81005 K/JS, Wasm: Promote deprecation of ExperimentalWasmDsl to ErrorKT-81010 K/JS, Wasm: Promote deprecation of internal JS functions to ErrorKT-81008 K/JS, Wasm: Promote deprecation of ExperimentalDceDsl to ErrorKT-81007 K/JS, Wasm: Promote deprecation of public constructors of JS declarations to ErrorKT-81006 K/JS, Wasm: Promote wasm declarations in “js” package deprecation to ErrorKT-81004 K/JS, Wasm: promote deprecation NodeJsExec.create to ErrorKT-75621 KJS / Gradle: Disable npm in --offline modeKT-79910 Wasm, JS: Upgrade NPM versionsKT-76996 Wasm: js tasks triggers wasm subtasksKT-79237 Upgrade NPM dependencies versions
Tools. Gradle. Multiplatform
New Features
KT-76446 Add kotlin-level dependency block to work the same way as commonMain/commonTest dependencies blocks
Fixes
KT-61127 Remove scoped resolvable and intransitive DependenciesMetadata configurations used in the pre-IdeMultiplatformImport IDE importKT-81980 KGP warning gives incorrect suggestion for AGP application compatibilityKT-81601 With android.builtInKotlin=false AGP 9.0+, using kotlin-multiplatform plugin will fail with aClass Cast ExceptionKT-81060 KMP stores common compilation dependency resolution in Configuration cache leading to error when deserializing (Android only)KT-80720 Gradle import of multiplatform project fails: “Failed to invoke getAssociateWith on KotlinJvmCompilation_Decorated”KT-81200 Deprecate ‘androidTarget’KT-74005 Implement a prototype of Unified Klib support in Kotlin Gradle PluginKT-77367 [uklib] Project dependency to kotlin-jvm module leads to failure in transform during IDE importKT-80785 With android.builtInKotlin=false and android.newDsl=true, using kotlin-android plugin will fail with ClassCastExceptionKT-81434 [uklib] androidCompileClasspath resolves java compatibility variant instead of android for uklib libraryKT-81469 [uklib] kmpPublicationStrategy affects resolution during import for androidTargetKT-81249 Kotlin 2.2.20 broke KMP implementation of ParcelizeKT-77066 Promote kotlinArtifacts deprecation to an errorKT-74955 Remove resources resolution strategy completelyKT-62614 Remove legacy kotlin-gradle-plugin-modelKT-79559 AGP complains about configurations resolved at configuration time due to KMP partially resolved dependencies diagnosticKT-78993 The value for property ‘*’ property ‘dependencies’ is final and cannot be changed any furtherKT-76200 TestModuleProperties.productionModuleName for JVM module isn't present with 2.1.20-RCKT-55312 Replace “ALL_COMPILE_DEPENDENCIES_METADATA” configuration with set of metadata dependencies configurations associated per setKT-52216 HMPP / KTOR: False positive “TYPE_MISMATCH” with Throwable descendantKT-54312 TCS: Replace CompilationDetails abstract class hierarchy by composable implementationKT-55230 Remove metadata dependencies transformation for runtimeOnly scope
Tools. Gradle. Native
KT-80675 Commonized cinterops between “test” compilations produce an import failureKT-77732 commonizeCInterop failed with “Unresolved classifier: platform/posix/size_t”KT-81510 commonizeCInterop exception with ‘kotlinNativeBundleConfiguration’ not foundKT-81134 Native: Gradle configuration failure likely related to Klibs cross-compilationKT-77486 Remove bitcode DSLKT-64107 Kotlin Gradle plugin allows native binaries to have both debuggable and optimized flags set to trueKT-74910 Bump destinationDir in CInteropProcess to hiddenKT-74911 Promote CInteropProcess.konanVersion to hiddenKT-74864 Enable exporting KDocs by default to ObjCKT-72705 K/N: compile task cache can not be used due to ‘artifactVersion’ input property
Tools. Gradle. Swift Export
KT-81465 Swift Export package is build with wrong targetKT-81460 [KGP] Crash in SwiftExportRunner due to older stdlibKT-79524 NoSuchMethodError: 'java.lang.String org.gradle.api.artifacts.ProjectDependency.getPath() for swift export with dependency export fro gradle < 8.11
Tools. Incremental Compile
KT-75864 Implement a conservative mechanism of the IC with compiler plugins generated top-level declarationsKT-55982 K2: Consider global lookups from plugins in incremental compilationKT-79504 Implement an API to provide IC lookups from backend pluginsKT-75657 Fix difference in incremental compilation scenarios in BTA in-process vs daemon compilation modeKT-79541 Refactor tracking of files relation in ICKT-74628 Incremental compilation runner does not check compiler exit code before mapping sources to classes
Tools. JPS
KT-77347 Support file-less compatible IC approach
Tools. Kapt
KT-79138 K2: KAPT Java Stub Gen: Unresolved reference with @kotlin.Metadata in Java in 2.2.0KT-79133 K2 kapt: class literal with typealias is not expandedKT-79305 K2 kapt: ISE “Cannot evaluate IR expression in annotation” on typealias with unresolved expansionKT-79136 K2 kapt: unresolved nested class references in annotation arguments are generated without outer class namesKT-71786 K2Kapt: Stubs generation does not fail on files with declaration errorsKT-80843 K2: KAPT: Crash on any data class with duplicate properties: “Sequence contains more than one matching element”KT-73411 Remove kapt.use.k2 property and code which allows to use K2 with K1 kaptKT-79641 Kapt: too much information is printed in verbose mode
Tools. Maven
KT-82180 kotlin-maven-plugin: IC succeeds after dependent source deletionKT-78201 Maven: migrate JVM compilation to the new BTAKT-81414 2.2.20 regression: OOM (Compressed class space) when in-processKT-81435 Maven: Improve BTA classloader reusageKT-81681 Maven: “NoClassDefFoundError” on a second test runKT-81218 Kotlin Maven Plugin 2.2.20: Java classes not resolved with enabled incremental compilation without daemon
Tools. Performance benchmarks
KT-79709 Add -Xdetailed-perf CLI flag to control verbosity of performance logsKT-79226 [K/N] Add performance measurement for native backend lowerings
Tools. REPL
KT-80062 ReplSnippetLowering sometimes produces IrConstructorCall with too many arguments
Tools. Scripts
KT-80071 Kotlin script mode produces invalid IR: “value that is not available in the current scope”
Tools. Statistics (FUS)
KT-77407 Add performance measurement for prefix loweringsKT-79455 [FUS] Collect KSP plugin versionKT-79090 Integrate dynamic stats into MarkdownReportRenderer
Tools. Wasm
KT-82365 K/Wasm: NodeRun tasks in Wasi depend on kotlinWasmToolingSetupKT-81313 K/Wasm: update Node.js to 24.xKT-81315 K/Wasm: update Node.js to 25.xKT-80582 Multiple reloads when using webpack dev server after 2.2.20-Beta2KT-80896 K/Wasm: debug tests only onceKT-78921 K/Wasm: don't generate empty yarn.lock file
Previous ChangeLogs: