Changelog
Analysis API
KT-83867OVERLOAD_RESOLUTION_AMBIGUITY false positive with assertEquals in IJ repoKT-83723[Analysis API] Enable experimental KDoc resolver by defaultKT-83388Analysis API: properly support KMP in KotlinPackageProviderKT-65683Analysis API: Dangling file session creation causes acomputeIfAbsentcontract violation
Analysis API. Code Compilation
KT-78946Evaluation of variable with local class in type parameter leads to InventNamesForLocalClasses exception
Analysis API. FIR
KT-68260K2 AA: InvalidFirElementTypeException “For CALLABLE_REFERENCE_EXPRESSION with text::lam1, unexpected element of type: no element found” with illegal callable reference callKT-70896AA: False positive deprecation warning with override of built-in method in JDK mapped classKT-84711K2 IDE sometimes loses FIR plugin-generated declarations after file changesKT-84625Analysis API: collectDesignationPath fails for nested classes inside plugin-generated top-level classesKT-84596Improve K2 Jooq completion performanceKT-84525KaValueParameterSymbol#getHasSynthesizedName returns false for FirDeclarationOrigin.SubstitutionOverride.DeclarationSiteKT-83546Kotlin analysis reach ClsCustomNavigationPolicyKT-84259Move CommonDefaultImportsProvider to the frontend independent moduleKT-82945Analysis API: KotlinIllegalArgumentExceptionWithAttachments: Expected FirResolvedTypeRef with ConeKotlinType but was FirUserTypeRefImplKT-71135AA: exception from sealed inheritors checker whenanalyzeCopy
Analysis API. Infrastructure
Fixes
KT-83905Analysis API: Improve UX with test dataKT-84913Extract compiler classes used by the PSI & Analysis API to a separate moduleKT-64986Analysis API: Implement Analysis API tests for different KMP PlatformsKT-84776The test data manager misses the redundancy check in the update modeKT-84962The test data manager misses -ea flagKT-84388Preserve the EOF status in the test data manager to avoid extra changesKT-84362Analysis API tests produce many warnings due to "not yet loaded registry"KT-84279Test Data Manager fails on a clean buildKT-83913Exclude compiler-based Analysis API tests from Git trackingKT-80379Extract per-module test generators for AA testsKT-84120Move CLI modules out of kotlin-compiler-fe10-for-ideKT-83200Track external dependencies of the Analysis API modules
Analysis API. Light Classes
KT-82434Light classes should prefer enum entries to propertiesKT-84200SLC: return type is not boxed for delegated methods with generic original methodKT-72451"CCE: class PsiPrimitiveType cannot be cast to class PsiClassType" with same-named enum class and typealias
Analysis API. PSI
KT-84715removeModifier doesn't delete whitespaces around the removed modifierKT-84564KtEnumEntry.delete deletes semicolonKT-84781Use computed properties in KotlinElementTypeProviderImplKT-83846Set up guidelines for PSIKT-84135Deprecate KtSelfType
Analysis API. Providers and Caches
KT-82731Analysis API: Limit granular tree change processing to a few filesKT-79234Analysis API: Usage ofasMap()on Caffeine caches bypasses stats countersKT-74090Analysis API: Support dumb mode (restricted analysis)
Analysis API. Standalone
KT-83801Nested typealiases are not correctly indexed in standalone mode
Analysis API. Stubs and Decompilation
KT-85371StackOverflowError from LLKotlinStubBasedLibrarySymbolProvider and StubBasedClassDeserializationKT-83935Support KDoc loading in decompiled stubs
Analysis API. Surface
New Features
KT-85239Streaming version of collectDiagnostics()KT-82519Automatically recognize the appropriate analysis mode for in-memory file copies based on their contentKT-73534SAM method APIKT-82993Support explicit backing fields in the Analysis API
Fixes
KT-79186KtCompletionExtensionCandidateChecker does not work for extensions when using callable references of a typeKT-83759Analysis API: Mark platform interface APIs with@KaPlatformInterfaceKT-83921Extend KaKDocProvider to read Kdoc from KLIB metadataKT-77426KaFirCompilerFacility uses an arbitrary JVM counterpart for common sourcesKT-84737KaCallableSymbol#directlyOverriddenSymbols doesn't work for java overrides of kotlin propertiesKT-84621Migrate symbol tests to ManagedTest properlyKT-80575KaFirJavaInteroperabilityComponent#getJavaGetterName should not throw exception on incomplete codeKT-84397KtDefaultAnnotationArgumentReference should return only results with value nameKT-84804buildSubstitutor does not work correctly with Java type parametersKT-84389Cover references with ABI and documentation checksKT-57042K2, Analysis API: KaJavaInteroperabilityComponent#callableSymbol returns null for a Java getter implementing Kotlin propertyKT-80856Analysis API:analysisContextModuleincorrectly determines the module of an original file when used for dangling file context assignmentKT-84363AA, isUsedAsExpression: Unhandled Non-KtExpression parent of KtExpression: class org.jetbrains.kotlin.psi.KtContractEffectKT-70476Analysis API: "KtDefaultAnnotationArgumentReference.resolveToSymbols" does not work in FIR implementationKT-68499Split KtDefaultAnnotationArgumentReference on K1 and K2 implementationKT-70521Analysis API: Impossible to distinguish between 'iterator' operator calls dispatched with imports from objectsKT-77669Context arguments are missed on implicit invoke callsKT-77670resolveToCall: extensionReceiver is incorrectly chosed due to a conflict with context parameters for an implicitinvokecallKT-68633K2 AA: IAE "Expected class KaClassSymbol instead of class KaFirEnumEntrySymbol" with enum entry initializerKT-83777Analysis API: The resolution scope of a context module accepts elements from associated dangling filesKT-82571No expected type for overridden property without explicit typeKT-83223Support "Explicit context arguments" in the Analysis APIKT-65186K2: Analysis API: KtExpressionTypeProvider.getExpectedType works incorrectly for the right hand side of assignment expressionsKT-76011KaFirNamedClassSymbol#companionObjectdoesn't provide generated objects generated by compiled pluginsKT-73290Analysis API: Improve the architecture of content scopes and resolution scopes
Backend. J2KLIB
KT-86368[JKLIB] MetadataJVMModuleDeserializer tries to deserialize all symbolsKT-86367[JKLIB] kotlin.Cloneable built-in class not foundKT-84877[J2KLIB] Remove withKotlinBuiltinsHack present in JKlibIrLinker.ktKT-85846Tests failing with fake override property missing accessors or backing fieldKT-85717IllegalStateException due to already bound symbolKT-86204[JKlib] Propagate private members from dependecies in the IR tree
Backend. Native. Debug
KT-83804Native: debug information generator converts relative paths to absolute ones
Backend. Wasm
KT-83162K/Wasm: renaming temporary and synthetic variables in the Chrome debuggerKT-85008Develop and publish a demo app using an early version of the component model supportKT-76205K/Wasm: stabilize and turn on incremental compilation by defaultKT-83728[Wasm] Invalid Ir type while suspend call with blocked if null comprehansionKT-81637K/JS/Wasm interop: Inconsistent behavior ofis/asoperations forJsReference<C>andCKT-65030K/Wasm: memory allocator for Component Model ABIKT-83607WasmJS: Production build eliminates 'else if' branch when 'else' is not wrapped with curly bracesKT-82803Kotlin/WASM: Failed to compile the doResume function with if inside catch blockKT-83800[Wasm] Closed world per-module compilation
Compiler
New Features
KT-84487"-Xcollection-literals" compiler flagKT-84072Collection literals: treat visibility ofofduring resolve correctlyKT-83165Collection literals: treat Deprecated(HIDDEN) operatorsofreasonablyKT-80500Collection literals: AnalyzeConeCollectionLiteralAtomin cases their expected type is not fully knownKT-80491Implement fallback mechanism for collection literalsKT-80490Implement overload resolution mechanism for collection literalsKT-84298K2: Generate IR for Companion Blocks & ExtensionsKT-83765Make -Xsuppress-version-warnings have a diagnostic IDKT-84484Companion Extensions Analysis & ResolutionKT-84199Implement DontMakeExplicitNullableJavaTypeArgumentsFlexible featureKT-84319Add JVM target bytecode version 26KT-84297Serialize & Deserialize Companion Block Declarations & Extensions to/from MetadataKT-84288Companion Blocks Analysis & ResolutionKT-84286Parse Companion Blocks & ExtensionsKT-84292Enforce Companion Blocks & Extensions Language Feature during ResolutionKT-84291Companion Blocks & Extensions CheckersKT-84290Callable References to Companion Block Declarations & ExtensionsKT-84287Build Raw FIR for Companion Blocks & ExtensionsKT-73256Implementallmeta-target for annotationsKT-66344K1 & K2: False positive WRONG_NUMBER_OF_TYPE_ARGUMENTS in callable reference to inner class memberKT-76766Warning is missing for wrong subclass checkingKT-74049Introduce special override rule to allow overriding T! with T & Any
Performance Improvements
KT-84941Skip linking klibs for generating ObjC headersKT-80367Reduce memory consumption of DevirtualizationAnalysisKT-84412iOS release build time dramatically increases with 2.3.20-Beta2 compared to 2.3.10KT-82559linkDebugTest*X64 tasks are slower for Kotlin 2.3 than for 2.2KT-84095Improve Unit tail-call optimization to support inline generic functions similar tosuspendCoroutine
Fixes
KT-77726Move FirUnusedExpressionChecker to the default checkers listKT-84841Collection literals: Drop special treatment ofwhenwith expected typeKT-84732Collection literals: "ExpectedFirCollectionLiteralImplto be resolved" in RHS of equality operatorKT-84675Collection literals: 'Not singleClassifierType superType: TypeVariable(S)' in PCLAKT-84559@OptInon collection literal and context-sensitive does not workKT-84547Collection literals: "Expected expression 'FirCollectionLiteralImpl' to be resolved" in elvis expressionKT-80489Collection literals: experimental version (Frontend)KT-84768[K/N] switch thread state inorg_jetbrains_skia_Canvas__1nDrawPictureto workaround the deadlockKT-52673Don't report deprecation warning/error on last segments of importsKT-83988Remove extraneous POP+GETSTATIC Unit for calls of Unit-returning suspend functionsKT-77584Support scripts built from LT in scripting APIKT-80113Consider improving diagnostic messages related to==/===/is/asKT-85392Native: concurrency issues in per-file cachesKT-83938Missing Tail call optimization in reference classes returning UnitKT-78432No-arg constructor should be generated for regular classes with a value class parameter in case of JvmExposeBoxedKT-86130False positive UNINITIALIZED_ENUM_COMPANION on LV 2.3 and lowerKT-84860False positive UNINITIALIZED_ENUM_COMPANION in enum access with explicit receiver in enum initializer when enum class has a companionKT-86210Update -Xannotation-default-target CLI parameter docKT-80590Drop language version 1.9 for JVMKT-85948Contracts in 2.4 stdlib is not compatible with 2.3 compilerKT-82123KDoc: references that goes after markdown blocks don't have linksKT-85957Contract on function is getting discarded if any of effect declarations is unknownKT-84931Incorrect type nullability in SAM super type in anonymous class-based SAM conversionKT-83766K2: Wrong sourcePsi is set forSymbolPsiLiteralin SLC for annotation arguments referencing a const valKT-85062Deprecate language version 2.1KT-79729Kotlin should warn about orphaned block expressions, e.g. // if () \n { .... }KT-83884The unused return value checker doesn't report a coercion from reference to UnitKT-85825Context parameter lambda loses context type when wrapped in nestedrunblocksKT-37179false-positive shadowing warning on local and member extension functions in presence of member extension property with invoke operatorKT-84366Invalid name for capturedthisin bytecodeKT-84960Property contract leaks unsubstituted type parameter in smart castKT-84281Standalone typealias-to-object qualifier allows type arguments and has typeUnitin this caseKT-84280StandaloneUnitqualifier allows type arguments:Unit<Any>KT-84380Type alias to non-generic class can have (arbitrary number of) type arguments in LHS of::classKT-84190Implement basic functionality for returnsResultOf contractKT-83920False positive "modifier 'value' is not applicable to 'local variable'" with soft keyword in positional destructuring (square bracket) declarationKT-84991ImproveArgument type mismatchdiagnosticsKT-82216Sanitize '.kotlin_module' filenameKT-85354checkPsiTypeConsistency: add psi text attachmentsKT-85479Improve diagnostic messages for upper bound violationsKT-84585Upper bound violated warning for expansion of type alias in LHSKT-84924Native: stdlib-cache.lock used by mulitple processesKT-85244False positive DUPLICATE_BRANCH_CONDITION_IN_WHEN with guard conditionKT-85487Investigate why WrapContinuationForTailCallFunctions does not work in Android TestKT-59633K2: Implement running AndroidRunner tests with FIRKT-76237Store File-level annotations in KLIB metadata separatelyKT-84198Support multiple embedded .let-like calls with returnsResultOf contractKT-84196Handle multiple entry/exit points for returnsResultOf functionsKT-84195Handle function references in returnsResultOfKT-85162Introduce diagnostics to refine numeric types castingKT-80060False positive REDUNDANT_CALL_OF_CONVERSION_METHOD in case of overloadsKT-85289False-positive smartcast from == with type parameter based variableKT-83890return-value-checker: false positive "Unused return value of 'context'" on kotlin.context() functionsKT-84106False negative "NON_EXHAUSTIVE_WHEN": "NoWhenBranchMatchedException" at runtime with sealed and platform typeKT-84717Provide information for qualified expressions that might be replaced with context-sensitive simple names in IDE modeKT-38983Bridges are not generated in interfaces, which leads to counterintuitive behavior of java.lang.reflect.ProxyKT-85005Considerall:target in the checker of repeatable annotationsKT-85210Enabling -XXLanguage:+IntrinsicConstEvaluation breaks highlighting on some broken codeKT-85217Rework implementation supporting simple-to-suspend function conversionKT-85036Introduce a proper handling of optional expectation annotations in platform checkers during metadata compilationKT-85086False-negative JVM_EXPOSE_BOXED_CANNOT_BE_THE_SAMEKT-84082[OPT_IN_USAGE_ERROR] duplicates for destructuring declarationKT-85007Properly implement special rules forkotlin.Resultin@JvmExposeBoxedsupportKT-74383Support new callable reference nodes in JVM backendKT-84828Cleanup JVM backend from the old callable references-related codeKT-85006Refine error messages forINAPPLICABLE_ALL_TARGETdiagnosticKT-84296Support Companion Blocks in CFGKT-85058Remove final field modification in DescriptorRendererOptionsImpl to prevent warnings on JDK 26+KT-72710Incorrect behaviour of tail call suspend functions optimizationKT-84727[K/N] Segfault when returning null as generic Int type from dynamic frameworkKT-83460Deprecation from@all:Deprecated is not propagated to property accessors/backing fieldsKT-84859Skip deprecation phase for generic arguments in qualifier receiver of static call for companion block members and extensionsKT-85050[Swift Export] usage of inline classes with ref types crashes at runtimeKT-84983Type parameter annotations are lost for local functionsKT-78800Investigate FirMissingDependencySupertypeInQualifiedAccessExpressionsCheckerKT-73945K2 IDE: Duplicated inspections for redundant 'open' in interface memberKT-84294Ensure Context Sensitive Resolution works with Companion Blocks & ExtensionsKT-83904[Inliner] Inline function overrides an abstract method with a default value in an inheritance chainKT-81675Improve message for CONTEXTUAL_OVERLOAD_SHADOWEDKT-84994Rework optimization for companion extension resolutionKT-81598incorrect type mismatch error messages for generic calls with explicit type argumentsKT-84185Type arguments are wrongly allowed in receivers of static callsKT-83441False positive: REDUNDANT_CALL_OF_CONVERSION_METHODKT-83587K2: Missing null-check when using == on Short! and Byte! platform typesKT-84405ClassCastException with conflicting projection on the LHS of a callable referenceKT-84866Reserve CoroutineContext as context parameter for future useKT-65239K2: Render FIR declaration instead of IR-based descriptors in IR signature clash diagnosticsKT-84743Type parameter declared as 'in' can be used in 'out' position in DNN & flexible typesKT-84720"Unused return value" is not reported inside used if/when multi-statement blocksKT-84310No Warning Emitted For Deprecated Java Enum Value UsageKT-81871Drop context receiver testsKT-84714KJS: Forbid exporting properties with context parametersKT-80701Native:-Xbinary=cCallModeis not integrated with compiler cachesKT-84000Native: test pre-codegen inliner on CIKT-57557Implement getAndSet for AtomicNativePtr via getAndSetField intrinsicKT-84352createUninitializedInstancegenerates invalid LLVM for value classesKT-84234RenameCONST_VAL_WITHOUT_INITIALIZERdiagnostic for properties with EBFKT-84411Confusing message for the class reference of the inner class with the type parameterKT-84594EBF is smartcasted in inline function with@PiblishedApiKT-83989Update coroutines-codegen.md after changes of Unit tailcall optimizationKT-84452EBF is smartcasted in the default argument with noinline modifierKT-80925Replace "useless" in diagnostic messagesKT-83646Native: don't usesun.misc.UnsafeinByteArrayStreamwhen running on JVM 24+KT-82122Prohibit arbitrary placement of type parameters in callable reference LHSKT-82574Fixation: consider preferring EQUALS constraints to LOWER onesKT-83564Consider droppingHAS_PROPER_NON_NOTHING_NON_ILT_LOWER_CONSTRAINTKT-84213Flaky incremental compilation behaviour with EBFKT-84133AdoptinitInstanceto handle value classesKT-24840Square bracket escaping in KDocKT-84167Invalid type references with type arguments in package parts compile without diagnosticsKT-84209False negative ACTUAL_ANNOTATIONS_NOT_MATCH_EXPECT on context parameters of function typesKT-83354Wrong position for lambda context type errorKT-84206Remove forcesPreReleaseBinaries = true from ExplicitBackingFieldsKT-83524An anonymous function with named parameters throws FileAnalysisExceptionKT-84155K2: NO_CONTEXT_ARGUMENT caused by stale value inNewConstraintSystemImpl.hasContradictionInForkPointsCacheKT-83829False-negative INVALID_DEFAULT_FUNCTIONAL_PARAMETER_FOR_INLINEKT-83842KIAEWA: Exception in expression checkers for@OptIn(markerClass=[…])KT-84045Evaluate default arguments of annotation's parameters using FIR evaluatorKT-83987Refactor/fix CoroutineCodegen.isReadOfInlineLambda()KT-83772Create a language feature for wrapContinuationForTailCallFunctionsKT-84061K2:IllegalStateException: FirResolvedNamedReference expectedon plusAssign for array element with unresolved initializer inside buildListKT-83985DroparrayOfcheck fromEscapeAnalysisCheckerafter bootstrap updateKT-78885Current frame disappears from stack trace when debugging inline-heavy suspend codeKT-78727Split KonanConfig into NativeFrontendConfig and NativeBackendConfigKT-83755Support rendering of evaluated and original arguments inFirAnnotationRenderer#renderAnnotationKT-17763Inner class constructor has incorrect generic signature in the bytecodeKT-83625Initialize annotations on Java record componentsKT-83795Compiler crash on suspend lambda as default parameter of inline functionKT-72880Calls with incorrect VarHandle method signatures are generated with -Xjdk-release being usedKT-67809Native: remove support for non-opaque LLVM pointer typesKT-82148Suspend function returns the wrong value and not UnitKT-55559JVM: ClassCastException with Unit returning suspend function and tail-call Non-Unit returning suspend function and callable referenceKT-70995Kotlin/Native: Treat all@HasFinalizertypes as escaping in Escape AnalysisKT-83903'when' with 'val' does not take previous nullability check into accountKT-83952StackEntries for tail-call suspend functions have internal names for classes instead of FQ namesKT-83377Investigate usage ofdeclarationSymbolsin resolve of local user typeKT-83770Smartcast doesn't work for an explicit backing field with multiple intersectionsKT-83650Native: don't usesun.misc.UnsafeinCastsOptimizationwhen running on JVM 24+KT-83754KotlinIllegalArgumentExceptionWithAttachments for explicit backing field with annotated typeKT-83756Error while resolving FirNamedFunctionImpl with explicit backing field and implicit typeKT-83563Consider dropping fixation readinessREIFIEDKT-83713K2: No error withexternalprimary constructor parameterKT-83104K2: No error with external enum entryKT-83696Consider dropping HAS_NO_RELATION_TO_ANY_OUTPUT_TYPE readinessKT-83308K/N: "IllegalArgumentException: An interface expected but was Any"KT-81590Switch latest stable version in Kotlin project to 2.4KT-66701K2: Java interface method override via Kotlin class rejectedKT-56563Inference within if stops working when changing expected type from Any to a different typeKT-261Can't specify function return type in a subclass
Compose compiler
New features
c1bbb47Started inferring the stability of all interfaces to be
Stability.Unknown, expect for those explicitly marked as known
stable.
Fixes
b/511102714Made the default stability of non-final classesUnknown
instead ofStableb/509945632Do not generate groups in inline lambdas without@Composablecalls.b/504284805Fix indentation for generated proguard mappings.b/422193018Fix applier inference for nested composables of different types.b/497751457Prevent a$stableproperty from being added to any object.b/427530633Do not infer a getter call as static across when it is defined in another file.b/427530633Started usingStability.Runtimemore broadly. Now, when an
element depends on the stability of aninternalorpublicclass
defined in another file, the element will no longer infer the
stability of that class and will depend on the runtime stability of
that class instead.
IR. Actualizer
KT-84293Expect Actual Matching for Companion Block Declarations & Extensions
IR. Inlining
KT-73708Use some marker in KLIBs produced with IR inlinerKT-85605"Local delegated property has not delegate" exception when calling inline function containing delegated property in a lambda from within an inline lambdaKT-84112Intra-module inliner: No container found for type parameter 'T'KT-84416High memory usage for IrFileEntry after enabling inlinerKT-75396[IR] Pass LoweringContext to inline and serialization checkers
IR. Interpreter
KT-86083Create a new CLI flag to enableIntrinsicConstEvaluationfeatureKT-80804Enable constant evaluation for more standard libraryKT-83514Get rid ofEvaluatedConstTrackerKT-84561K2: Convert evaluated constant by default in FIR2IR
IR. Tree
KT-79663KLIB-based compilers: Promote partial linkage to "always on"KT-76934Drop old IR parameter APIKT-72950Partial Linkage: Change the semantics of-Xpartial-linkage-loglevelKT-74763Build: refactor ':compiler:backend.common' and ':compiler:ir.backend.common' modulesKT-76634PL: Don't report warnings in cases that don't lead to runtime errorsKT-79801KLIBs: Implement checks for symbols loaded by the compiler on 1st and 2nd phasesKT-72812IR serializer: Don't serialize any cinterop fake overrides to Klibs
JVM. Reflection
Fixes
KT-86017KClass.constructors returns all java.lang.String constructors for mapped type kotlin.StringKT-85550Reflection: KParameter.type.classifier returns boxed KClass for non-nullable primitive typesKT-82659Reflection: IAE on a call to a Java inner class constructorKT-85999Reflection: ByteArray KType incorrectly has type arguments in Kotlin 2.4.0KT-85285Reflection: InvocationTargetException (UInt cannot be cast to Integer) when reading UInt annotation property via getterKT-85091Reflection: "KotlinReflectionInternalError: Unsupported parameter owner: null" on attempt to get annotations of annotation constructor parameterKT-85322Reflection: KotlinReflectionInternalError when loading ProGuard-obfuscated code compiled before 2.3.20KT-84679Reflection: confusing "Kotlin reflection is not yet supported for synthetic Java properties" for reference to Java enum's entries propertyKT-85025KTypeParameterinstances not equal to each other for the same type parameter in member specializationKFunctionKT-84796Reflection: mutable flexibility is lost for K1-based types in KClass.allSupertypesKT-84494Reflection: Java Collections have differences in kotlin supertypes from old K1 reflectionKT-84382Reflection: raw list in Java type is transformed to List instead of MutableListKT-84492Reflection: supertypes of raw list in Java type are not rawKT-84076Reflection: list in Java type is transformed to flexible instead of mutable listKT-14990'callBy' for inner class constructor fails at run-timeKT-82881Reflection: update KCallable.callBy kdoc to mention vararg parametersKT-84075Reflection: wildcard in Java type is transformed toout Any!instead of star projection
JavaScript
New Features
KT-51292Proposed behavior of@JsExporton interfaces and classes with companion objectsKT-21626Support ES2015 syntax injsfunctionKT-83451K/JS: Support ES6 object destructuring in js() callsKT-83452K/JS: Support ES6 array destructuring in js() callsKT-82128[K/JS] Allow named companion objects in exported interfaces
Performance Improvements
KT-77646KJS: optimize Byte/Char/Short/Int/Float/DoubleArray.copyOf(newSize)
Fixes
KT-84332KJS: Reconsider disallowing nested classes in exported interfacesKT-72198KJS: ES2015 interop with ValueClassKT-84090Save variance in the generated TypeScriptKT-56618KJS/IR: Support external interfaces from common code (via annotation?)KT-85038Kotlin/JS:@JsExporton sealed external interface with companion object causes NPEKT-81787KJS: Value class type lost when using JsExport on interfaceKT-85411Fix conversionCombinations.kt tests for the JS targetKT-83701Escaped identifier with a quote cause an invalid d.ts fileKT-68281K/JS: Order of classes in initMetadataForClass are not deterministicKT-15101js: Same callable references are not equalKT-84810[K/JS] Callable references operator produces duplicatesKT-85323JsClass optimization doesn't work well for primitivesKT-60651KJS / ES6: init block and constructor are not calledKT-84601K/JS:KClass<>reference doesn't work in JS counterside as anewtarget in ES6 modeKT-85099KotlinJS: JsPlainObject from the js-plain-objects plugin does not respect overridesKT-84615KJS: Forbid@JsStaticon extension functions/propertiesKT-84002Bump version from 2.3 to 2.4 for JsNoRuntime-related annotationsKT-84474Kotlin/JS: Long::class becomes null when passing the value to a generic function with -Xes-long-as-bigintKT-84647K/JS: Class expressions are not supported in js() callsKT-84458KJS: Fully support@JsStaticin Analysis API-based TypeScript ExportKT-84454KJS: Generate protected overrides for abstract class inheritors in Analysis API-based TypeScript ExportKT-84490KJS: Fix mutability of exported top-level variables Analysis API-based TS export with ES modulesKT-84459KJS: Support default exportability in Analysis API-based TypeScript ExportKT-84456KJS: Support deprecation comments in Analysis API-based TypeScript exportKT-82264Implement exporting classes in Analysis API-based TypeScript ExportKT-84233K/JS: exported collection views doesn't provide Iterator methodsKT-82127Remove generator-based coroutines intrinsics after bootstrapKT-84003Remove@Suppressfrom JsReference after bootstrapKT-44753KJS / IR:@JsExportnon-public fun exports nothingKT-83992Drop K1 JS entry point and IC codeKT-83722K/JS: NON_EXPORTABLE_TYPE in the exported file with name-based destructuring declarationsKT-69353KJS / d.ts: Kotlin does not export base collection classes along with their mutable collection counterparts
Klibs
Performance Improvements
KT-84415Ineffective hashMap usage in IrSymbolDeserializerKT-80903[Klib] Optimize size of serialized IR element coordinatesKT-84451[Klib] Use varint encoding for element sizes in IR tablesKT-84400[Klib] Optimize size of serialized IrExpressionKT-79675K/N: Uncached ZipFIleSystemAccessor
Fixes
KT-78188[JS] Klib backward and forward compatibility testingKT-82471[K/N] Klib forward compatibility testing with codegen testsKT-83929Add tests for IR signatures of static properties and functionsKT-81411MergeKonanLibrarytoKotlinLibraryto simplify adoption ofKlibLoaderin the Kotlin/Native compilerKT-82469[K/N] Klib backward compatibility testing with codegen testsKT-84511[Native][Tests] Improve descriptor-related logic in NativeCliBasedFacades.ktKT-85017[PL] Add test for addedinternal abstract funKT-84488Export in previous version: Prohibit using on 2nd stageKT-85149Klib Dump parser: fix parsing of qualified names adjacent to vararg symbolKT-85129Klib Dump parser: fix enum names parsingKT-84684RemoveUserVisibleIrModulesSupportfrom IR linkerKT-84820[K/N] Loadlibcallbacksandlibllvmstubsfrom configured pathKT-84819K/N: Segfault on xctest when using internal abstract on a parent classKT-83807Restore non-nullability of symbols not available in 2.3.0 stdlibKT-83012Export in previous version (Native): add the checker for incompatible Kotlin stdlib/compiler pairsKT-84341Fix detection of box function in forward compatibility testsKT-83748Bump versions in JS Klib compatibility testingKT-83724Fix & unmute stdlib & kotlin-test compatibility testsKT-83151Restore non-nullability of symbols available since 2.3
Language Design
KT-14663Support having a "public" and a "private" type for the same propertyKT-80852Version overloading: generate overloads corresponding to different versions of a function whose parameters are annotated with@IntroducedAt()KT-73821Decide the future of the ForbidUsingSupertypesWithInaccessibleContentInTypeArguments language featureKT-85120@IntroducedAton expect parameter cannot be properly actualized
Libraries
New Features
KT-84921Add 'returnsResultOf' contract to appropriate declarations in the stdlibKT-73111No UInt.toBigInteger() and ULong.toBigInteger() conversion functionKT-78499Add isSorted() extension to standard library
Performance Improvements
KT-70750Kotlin's Regex implementation on Kotlin Native is painfully slowKT-67731Regular expressions works slowly on iOSKT-80772K/N: Regex: improve look behind matching performance for "fixed-length" patterns
Fixes
KT-83525Introduce support window for Kotlin Stdlib versionsKT-86027Hide returnsResultOf under a separate flag and remove its usages from kotlin stdlibKT-84818[Regex] Native and Wasm: Decomposed Unicode character are incorrectly process with CANON_EQ flagKT-83131Testing: assertNull has no contractKT-85122Deprecate kotlin.io.readLine with WARNINGKT-84970Deprecate AbstractCoroutineContextKey and associated APIKT-81395Stabilize kotlin.uuid.Uuid APIKT-85127Remove kotlin.test.assert*NoInline hidden functionsKT-84264Add appropiate@SinceKotlinto new contractsKT-84697Update the list of JDKs the stdlib is tested withKT-83956Clarify joinToString behavior when the receiver is emptyKT-61180kotlin.ArrayIndexOutOfBoundsException on Native with Regex, works on Android/JVM thoughKT-84871compareValues, nullsFirst, nullsLast return 0 for -0.0 and 0.0 on JSKT-84691Add samples for toBigInteger extension functionsKT-84372PathExtensionsTest.copyToRestrictedReadSource fails with JDK22+KT-84369StringJVMTest.formatter fails with JDK13+KT-84613String.toDouble() produces incorrect results on Wasm for large exponent valuesKT-76905Add samples for kotlin.math functionsKT-84355Reduce the number of iterations for the removeHashAtStressTestKT-83962List.listIterator(Int) KDoc's exception condition is incorrectKT-83958Improve enumValueOf documentationKT-83953Add samples for kotlin.time extension functionsKT-83951Rewrite stdlib samples to use assertPrints instead of assertEquals
Native
New Features
Fixes
KT-84686Removing x64 in gradle file breaks builds on certain platformsKT-71278Enable Concurrent Mark and Sweep (CMS) GC by defaultKT-81748Create a phased CLI for Native klib compilationKT-84733LLVM Update: rebase LLVM once the upstream stabilizesKT-83914Native: when loading JNI libraries, java.library.path can contain system directories with libraries with same namesKT-83133Native: don't usesun.misc.Unsafein the compiler and cinterop when running on JDK 25+KT-83648Native: don't usesun.misc.UnsafeinNativeMemoryAllocatorwhen running on JDK 25+KT-83647Native: don't usesun.misc.UnsafeinnativeMemUtilswhen running on JDK 25+KT-82674Native: dyld[...]: Symbol not found: _mach_vm_reclaim_update_kernel_accounting_trap on macOSKT-82879Native: DLLs in the Windows distribution are not reproducibleKT-83283Test Kotlin/Native performance tests compilation in Gradle 9.0KT-82872Native: make Kotlin/Native distribution compiler cache reproducible for LinuxKT-82871Native: cstubs.bc for android_* platform libraries contain absolute paths in string literalsKT-34467Cinterop: Clang crashes when -fmodule-map-file is specified (SIGSEGV)
Native. Build Infrastructure
KT-85803K/N: build not reproducible - platformLibs cachesKT-84503Duplicate META-INF/serialization.shadow.kotlin_module entry in kotlin-native-compiler-embeddable jarKT-85191K/N: Dependency cycle in libclangInteropKT-84937Kotlin/Native: non-reproducible .bc for mingw_x64KT-80072Make Kotlin/Native distribution reproducibleKT-81771konanc failing to load native libraries
Native. C Export
KT-61748KMM- warnings when compiling native targets (Kotlin 1.9.0)
Native. C and ObjC Import
KT-85705Swift-generated headers with external_source_symbol produce duplicate enum declarationsKT-82379Introduce lenient modular cinterop modeKT-81695Repeated typedefs across multiple clang modules break cinterop with -fmodulesKT-82766K/N: external_source_symbol clang attribute causes cinterops with -fmodules to downgrade to forward declarationKT-84023Modular import fails with an obscure error when the failing module is not the last oneKT-81433Generate C-interop KLIBs in previous ABI version in Kotlin 2.4.0KT-82402Inter-cinterop type reuse with -fmodules uses forward declaration when an actual declaration is availableKT-82377Fix ObjC forward declaration handling in modular cinteropsKT-81752Native: investigate and remove filtering of-fmodule-map-filein cinteropKT-83814Native: includedHeaders= in platform libs manifests is not reproducible when modules= is used
Native. ObjC Export
KT-86068Native: add support for ObjCEnum.EntryNameKT-85171Red Swift code in Native UI Multiplatform App project from Template Gallery
Native. Runtime
KT-84331Kotlin/Native: RunLoopFinalizerProcessor needs initialized runtime before it has any jobs
Native. Runtime. Memory
KT-83670K/N: gc concurrent mark phase assert Failed to terminate mark in STW in a single iterationKT-80770Kotlin/Native: revise ObjC refcount methods called in runnable stateKT-84640Native: comment forkotlin.native.runtime.SweepStatisticsmisses the word "number"
Native. Swift Export
New Features
KT-84361[Swift Export] Preserve TypeInfo on StateFlowKT-85130[Swift Export] Preserve TypeInfo on SharedFlowKT-82705Support convenient export of Flow types in Swift exportKT-66821Swift Export: value classKT-82598Swift Export: Custom name translationKT-69431Swift export: inline functionsKT-84263[Swift Export] Context Parameters on Functional Types
Fixes
KT-80305Support coroutines in Swift ExportKT-85380[Swift Export] Attempt to bridge unbridgeable type: SirUnsupportedTypeKT-84317Swift Export: "protocol members can only be marked unavailable in an '@objc' protocol" in generated code for kotlinx-coroutinesKT-85704[Swift Export] cannot infer generic type of function returning a generic typeKT-85711[Swift Export] suspend function returning non-null generic fails to compileKT-85715[Swift Export] generic interface in typealias fails to compileKT-85714[Swift Export] unsupported input type param in functional receiverKT-83743Swift export: type arguments expected for generic typealiasKT-85458[Swift Export] value of a closure returning a closure generates invalid swift codeKT-85521[Swift Export] conflicting overloads for generated Kotlin bridgesKT-85293SwiftExportCoroutinesWithResultValidationTest.testCoroutines fails after cross-pushKT-84515[Swift Export] suspend functional parameter generates invalid Swift codeKT-82282Swift Export: suspend function returning Array leads to incompilable codeKT-81540Swift Export: using interface in Set generates incompilable codeKT-66873Swift Export: suspendable contravariant functional typeKT-85272[Swift Export] conflicting imports for kotlinx-coroutinesKT-85163[Swift Export] Flow of Unit values crashesKT-85159[Swift Export] Flow is not properly being cancelledKT-84226[Swift Export] Flow in contrvariant position is not allowedKT-84485[Swift Export] Flow with nullable elementsKT-83730Generated Swift switch on bridged Kotlin enum crashes with fatalErrorKT-85016[Swift Export] it's not OK to expose Flow as AsyncSequenceKT-84979Swift Export Nullability: UnitKT-83821Swift Export: suspend function returning Nothing leads to incompilable codeKT-81593Swift Export: suspend function returning Unit leads to incompilable codeKT-84359[Swift Export] nested functional type with Unit parameterKT-84358[Swift Export] functional type with Unit parameterKT-84356[Swift Export] functional type with single Unit parameterKT-83567Swift Export: "IllegalStateException: Internal compiler error: doesn't correspond to any C type: kotlin.Unit": invalid closure is generated for suspend function which returns UnitKT-83397[Swift Export] Functional return type with Unit parameter is emitted as invalid void parameter list ('void' must be the first and only parameter)KT-84243[Swift Export] Returning value of suspending functional type from suspending function yields invalid codeKT-82568Swift Export: Context ParametersKT-83398[Swift export] converting non-escaping parameter to generic parameter may allow it to escapeKT-83389Swift Export: "ClassCastException" caused by suspend fun throwing ErrorKT-83116Swift export generates bridges incompatible with language version 2.4KT-83749[Swift Export] varargs and List uses the same mangling on bridgesKT-83712Swift Export ignores internal setter and generates invalid bridge code
Tools. BCV
KT-83476Use Maven publications as dump input [ABI Validation]KT-78341Outer scope's visibility is not considered when dumping const vals [ABI Validation JVM]KT-78305Private constructor is written in ABI dumpKT-82724BCV incorrectly reports generated@JvmOverloadsdeclarations as publicKT-78367Internal constructor infiltrated into a dumpKT-78366Protected method of enum should not be included into a dump
Tools. Build Tools API
New Features
KT-83794Make BTA JVM Compiler Arguments Type-SafeKT-80963BTA: Add structured information about reported messages to KotlinLoggerKT-73037Add input (like compiler arguments) changes trackingKT-82791BTA: introduce an option forExecutionPolicy.WithDaemonto control the daemon log files pathKT-84453SSoT: provide a unified way to convert Enums to Strings
Fixes
KT-86395[BTA] forward-compatibility violation: NoSuchMethodError on JvmSnapshotBasedIncrementalCompilationConfiguration. breaks ICKT-80679Add support for the Build Tools API [ABI Validation]KT-85294BTA: Replace hardcoded@sincein KDoc with dynamic versioningKT-85035Don't expose X_COMPILER_PLUGIN_ORDER in CommonCompilerArgumentsKT-85391[BTA] Hide boilerplate required to load isolated BTA implementationKT-85447BTA: deprecate JvmCompilerArguments.contains (warning)KT-82390[BTA] Remove deprecated non-builder factory functions and classesKT-84850Make kotlin-home type safeKT-84867Make Xphases-to-* arguments type-safeKT-85094Make Xwarning-level type safeKT-85205Make Xdump-perf type safeKT-85204Make Xdump-directory type safeKT-84906Make enum-based common arguments type-safeKT-84322Make X_PROFILE BTA compiler argument type safeKT-84825Make script-templates type safeKT-84546Replace raw string path arguments with type-safe PathListTypeKT-84705Make Xjdk-release to type-safeKT-85167Make Xjsr305 type safeKT-85069Make Xnullability-annotations type safeKT-84738Make Xscript-resolver-environment type safeKT-85082Make Xignored-annotations-for-bridges type safeKT-84324Make X_ADD_MODULES BTA compiler argument type safeKT-84338Make enum BTA JVM compiler argument type safeKT-84325Make JVM_DEFAULT BTA compiler argument type safeKT-75837IC: Shrunk classpath snapshot name is hardcodedKT-84228BTA: Improving KDoc generation for Enums and Custom TypesKT-85738BTA forward compatibility: NoSuchFieldError on X_IGNORED_ANNOTATIONS_FOR_BRIDGES when API 2.3.0 is used with impl 2.4.0KT-84436Сompiler warnings are missing under Gradle -q option with -WerrorKT-85072AbstractMethodError when calling discoverScriptExtensionsOperationBuilder with pre-2.4.0 compilerKT-84523Add more forward compatibility testsKT-84187[BTA] Add more build operation immutability testsKT-84219[BTA] Add additional tests on basic metrics collectionKT-83781Add additional tests for KT-79975 (BTA ability to cancel build operations)KT-85092[BTA] Update BTA Backward Compatibility Testing: 2.3.20-RC → 2.3.20KT-85439BTA: Warn or error when incompatible compiler arguments are passed via applyArgumentStringsKT-75540Build Tools API Should Reject -Xbuild-file ArgumentKT-85333Add BTA tests for BACKUP_CLASSES and KEEP_IC_CACHES_IN_MEMORY behavior after compilation errorKT-84770BTA: default options cannot be retrieved from many option objectsKT-85224Add@ExperimentalArgumentApito compiler argument DSL typesKT-84953Fail TC build if generated files changeKT-85189Refactor path argument types: flatten hierarchy and improve namingKT-82335Promote the deprecation level for BTA prototype to the ERROR levelKT-84984Runtime NPEs caused by null return in CompilerMessageRenderer implementationKT-84015Introduce detection of custom script names to new BTA APIKT-83972BTA: use isolated classloader for loading the BTA implementation in integration testsKT-84181More verbose warning when CRI is enabled without using BTAKT-84449Platform-Specific File.pathSeparator Hardcoded During SSOT GenerationKT-84249Fix hardcoded path separator in -Xprofile argument to support absolute paths on Windows
Tools. CLI
Fixes
KT-84609Remove Nullability from Array-based CLI Compiler ArgumentsKT-85414Argument DSL:delimiter = KotlinCompilerArgument.Delimiter.PathSeparatorgenerates invalid Kotlin codeKT-85004Set proper since version for language feature about property annotation targetingKT-84220Enable Context Parameters by default in LV 2.4KT-84188Create CLI argument for explicit context parametersKT-84999Don't poison binaries withImplicitJvmExposeBoxedlanguage featureKT-85001ConvertImplicitJvmExposeBoxedlanguage feature to analysis flagKT-83341Don't use the extension point registration mechanism from Intellij for K2 extensionsKT-56850Separate K/Wasm CLI entry point from K/JS CLIKT-84132CLI: regression in deduplication of same-value argumentsKT-83261No error if pass an arbitrary string to a CLI argument that changes language featuresKT-83172Boolean CLI argument for a language feature with explicit false value is allowed but has no effect
Tools. CLI. Native
KT-82482Compiler plugins are not propagated to frontend environment in ONE_STAGE_MULTI_MODULE Native mode
Tools. Compiler Plugin API
KT-85969KtLint incompatible with Kotlin 2.4.0-Beta2 (parsing errors / Extensions storage issue)KT-85133Drop deprecated K1 specific methods from IrPluginContext
Tools. Compiler Plugins
New Features
KT-66808PowerAssert: Add support for third-party assertion librariesKT-69036Power-Assert indent multiline valuesKT-75656PowerAssert: Create runtime library
Fixes
KT-83931Power Assert: Compilation fails when using the metro pluginKT-86170PowerAssert: Stabilize runtime ABI for initial releaseKT-85250PowerAssert: Automatically add runtime library dependencyKT-75873PowerAssert: display callable reference value under '::'KT-85151PowerAssert: Surround string and character values with quotesKT-85184PowerAssert: Annotation may only be used on expect and non-override functionsKT-85178PowerAssert: Crash when transforming IrCall without CallableIdKT-66807PowerAssert: Improve output diagram formattingKT-85089PowerAssert: Wasm CompileError when usingPowerAssert.explanationKT-75266PowerAssert: arrayOf() isn't displayed on the diagramKT-67332"IndexOutOfBoundsException: Cannot pop operand off an empty stack." caused by function referenceKT-83330Lombok. An add methods with@Singularannotation in Java record doesn't work from kotlinKT-83204Lombok. If@Dataand@NoArgsConstructorare used together, then the constructor from@Datashouldn't be availableKT-83336Lombok. IllegalAccessError for constructor if@Valueand@Builderare applied and used from another packageKT-83352Lombok. FileAnalysisException when@SuperBuilderis used with@BuilderKT-83325Lombok. Constructor with parameters is unavailable for a class with@Builder
Tools. Compiler plugins. Serialization
KT-85963IncompatibleClassChangeError: Expected non-static field $stableon deserialization of@Serializabledata class when Compose compiler plugin is applied before Serialization pluginKT-85554Serialization: "IndexOutOfBoundsException" on property generated by Compose plugin
Tools. Gradle
New Features
KT-76197Write Kotlin compiler warnings and errors to Problems API
Fixes
KT-86346Compiler warnings printed twice in console — once asw:and again as Gradle "Problem found:" blockKT-69701Gradle: module name is passed inconsistently to different types of compilationsKT-85373Compile against Gradle API 9.5.0KT-85374Run tests against Gradle 9.5.0KT-80448Remove internal & deprecated API from ExtrasProperty.ktKT-69830Support Gradlecom.gradle.develocityplugin in KGPKT-85509Remove deprecated API in the 2.4.0 releaseKT-83858Compatibility with Gradle 9.4.0 releaseKT-84144Bump the minimal supported AGP version to 8.5.2KT-85562Failed to invoke getCompilation on org.jetbrains.kotlin.gradle.tasks.KotlinNativeLink_Decorated on project importKT-85590Gradle: cannot create task MainKt.main() due to missing defaultSourceSetNameKT-74451Deprecate access to Kotlin source sets in Android extensionKT-82960Remove deprecated enableKotlinToolingMetadataArtifact in 2.4.0KT-84377Broken package-list file on KGP/CMPG documentation pageKT-85412Module name is not sanitized with older Kotlin compiler versionsKT-65566Use the new ConfigurationContainer consumable method to create consumable configurationsKT-83775Migrate KGP functionalTest to junit5KT-85433Gradle: deprecate non-BTA JVM compiler execution modeKT-83860Run tests against Gradle 9.4.0KT-75004KGP: improve messaging when multiplatform tasks are disabled on incompatible OSesKT-83859Compile against Gradle API 9.4.0KT-82847Raise deprecation to error for LanguageSettings.enableLanguageFeature DSLKT-84053Deprecate support for Gradle 7.6-8.13 versionsKT-78659Remove 'kotlin-android-extensions' plugin idKT-79924Make enableKotlinToolingMetadataArtifact deprecatedKT-82933Add a tab with results in TCKT-83130[ToolingDiagnostic] incorrect problem ID formatting for acronyms and undefined locations in Gradle8 problems reportsKT-84143Reduce usage of Project in Tooling DiagnosticsKT-83126Remove out-of-process compilation modeKT-80466Gradle: remove getPluginArtifactForNative()KT-81834Compile against AGP 8.13 APIKT-77498Test .swiftmodules more accurate in SwiftExportITKT-84141Add convenient host checkKT-83592Enable AFU in FusStatisticsIT.testKotlinxPlugins test after next AFU release
Tools. Gradle. BCV
KT-86268ABI validation tasks fail with Unsupported platform toolchain type when using kotlin.compilerVersion pointing to an older compiler after BTA migration in 2.4.0-Beta2KT-80685Simplify Gradle DSL [ABI Validation]KT-83486Create tasks only if abiValidation block called explicitly [ABI Validation]KT-82410Remove wordlegacyfrom DSL [ABI Validation]KT-83999ABI validation: Groovy DSL doesn’t deprecate included/excluded filters, allowing four filter configs instead of twoKT-84461Remove the use of abi-tools-api from KGP [ABI Validation]KT-84100Add Deprecated annotation to legacyDump block and property [ABI Validation]KT-84365Gradle plugin of abi-validation should precisely define output filesKT-83898Classes produced by JvmMultifileClass ignore filters
Tools. Gradle. Compiler plugins
KT-85343Update Compose Gradle plugin deprecations before 2.4
Tools. Gradle. Dokka
KT-82984Support AGP9 in Dokka Gradle Plugin
Tools. Gradle. JS
KT-81037K/JS, Wasm: Remove deprecated internal JS functionsKT-81034K/JS, Wasm: Remove deprecated public constructors of JS declarationsKT-81030K/JS, Wasm: remove deprecated NodeJsExec.createKT-81036K/JS, Wasm: Remove deprecated ExperimentalDceDslKT-81040Gradle: Remove deprecated Kotlin/JS tasks constructorsKT-64275Gradle: remove deprecated symbols related to the legacy JS targetKT-84753DeprecateKotlinJsCompilerTypeandKotlinProjectExtensionmethods using itKT-81033K/JS, Wasm: Remove deprecated wasm declarations in "js" package
Tools. Gradle. Multiplatform
Fixes
KT-84767K/N: associateWith triggers warning about friend-modules libs not included in -library argumentKT-82265Remove Android source set layout v1KT-82230Cleanup 'org.jetbrains.gradle.apple.applePlugin' plugin usageKT-81117Withandroid.builtInKotlin=true(AGP 9.0), usingkotlin-multiplatformplugin will fail withCannot add extension with name 'kotlin'KT-86174Project sync from cached checkout fails in convertSyntheticImportProjectIntoDefFileIphoneos with 'fatal: Needed a single revision'KT-85877The number of SPM direct dependencies is multiplied on number on targetsKT-85706SwiftPM Import: Updating package version in build script updates version in the lock fileKT-84085Remove deprecated gradle property kotlin.kmp.isolated-projects.supportKT-83370Incorrect metadata transformation for stdlib's webMain source setKT-69571compileNativeMainKotlinMetadata not handling project/prebuilt substitutionsKT-84533KMP: compileCommonMainKotlinMetadata: "Unresolved reference" for androidx.savedstate from Maven (works with project() dependency)KT-84669SPM import: If iosApp dir located outside of the project, checkSyntheticImportProjectIsCorrectlyIntegrated will failKT-84597Remove trailing comma for dependencies blocks settings in Package.swiftKT-82895kotlin-stdlib import is flaky in commonTest in 2.1.21KT-81958Redundant “android target already exists” error when migrating to com.android.kotlin.multiplatform.library with androidTarget {}
Tools. Gradle. Native
New Features
KT-83873Redo how dynamic library linkage and promotion are handledKT-83863Persist Package.resolved files and reuse them in incremental SwiftPM import
Fixes
KT-85984linkReleaseFrameworkIosSimulatorArm64 is executed during Debug iOS build since 2.4.0-Beta2KT-85510Cleanup native tasks APIKT-84656Concurrent issue in downloadKotlinNativeDistributionKT-85502Swift PM Import: "Library not loaded": KotlinMultiplatformLinkedPackage.framework is not copied next to the executableKT-85561SwiftPM lock-files metadata resolution fails with NoMatchingGraphVariantsException in external KMP projectsKT-85128Refactor SwiftPM import lock tests and test utilsKT-83681Parallelize parts of SwiftPM import pipeline that are called during importKT-83874Linker hack doesn't work when clang uses response filesKT-86024Empty main compilations cause w: [COMPILER_ARGUMENTS_WARNING] There are libraries in -friend-modules CLI argument that are not included in -library CLI argument:KT-69896Native: output to stderr ends up in the Gradle logKT-85708[KGP] dSYM copy task ignoresisStaticdue to eager read before framework configurationKT-84262integrateEmbedAndSign produces an incorrect Gradle call for the root projectKT-84730Add Kdocs to SwiftPM import APIsKT-84558Upstream SwiftPM import workKT-82824Make linker hack path relativeKT-84508Add a warning on usage macos_x64 as hostKT-84692Misleading error message for disableNativeCache DSL without required Opt-InKT-83680Remove trailing commas from the package manifest to be compatible with pre-16.3 Xcode
Tools. Gradle. Wasm
KT-86457[Wasm, Gradle] BinaryenExec.standardOutput is silently ignored after migration to Gradle WorkersKT-84137K/Wasm: Support binaryen run with multiple filesKT-85974K/Wasm: Do not set -Xir-per-module for Wasm tasksKT-83566K/Wasm: Support Wasm per module/klib compilation in Gradle pluginKT-85046K/Wasm: Wasm per-module Gradle integration tests on WindowsKT-84230Wasm: Fix test WasmYarnGradlePluginIT.testWasmUsePredefinedTooling
Tools. Incremental Compile
KT-85387BTA: switch the default value ofMONOTONOUS_INCREMENTAL_COMPILE_SET_EXPANSIONtotrueKT-85386BTA JVM IC: 'moduleName' is null!KT-84450Star imports are not reported via FirImportTrackerComponent
Tools. JPS
KT-81579JPS: -Xwarning-level=DEPRECATION:warning not supported
Tools. Kapt
KT-84094Kotlin daemon holds file locks for too longKT-32743Kapt, Maven: Do not include compile classpath entries in the annotation processing classpathKT-41217Running kapt with Maven does not seem to include the compilation classpathKT-80569K2 KAPT: Class Literals Missing in Explicit Annotation Value ParametersKT-18791Kapt: Constants from R class should not be inlined
Tools. Maven
New Features
KT-85121Maven: enable configuration inputs tracking in BTAKT-84386Support Maven Toolchains in kotlin-maven-pluginKT-85317Auto‑align jvmTarget with the project’s Java level
Fixes
KT-74001Support monotonous dirtySet expansion in MavenKT-76062Maven: remove Kotlin script execution supportKT-84101Maven: compile and test-compile handle sourceDirs inconsistentlyKT-84653Add integration test for KAPT with smart defaults in mixed Kotlin+Java projectsKT-84778Add integration test for auto-bind execution order in mixed Kotlin+Java projectsKT-85146Maven: Adding stdlib as smart-default may break maven dependency resolution for other pluginsKT-84793Use kotlin bootstrap to build kotlin-maven-pluginKT-83109Remove beanshell and groovy verification in kotlin-maven-plugin-testKT-83110Remove dependency to intellij platform from kotlin-maven-plugin-testKT-83113Configure kotlin.git/.idea to work nicely with maven-kotlin-plugin-test testsKT-83114Migrate kotlin-maven-plugin-test from maven.invoker to junit6 + maven-verifier
Tools. Performance benchmarks
KT-82928Support local run for new benchmarks infraKT-84283Add scenario generator for performance testsKT-83257Parse gradle profile report
Tools. REPL
KT-77816REPL: Support forconstpropertiesKT-74683[K2 Repl] Does not support suspend functionsKT-84483[K2 Repl] NullPointerException in Analysis when using custom classesKT-84803[REPL] FirReplSnippet: provide the eval function symbol instead of the name (evalFunctionName)KT-84160[REPL] Resolve eval function during implicit bodyKT-83689[K2 REPL] Create raw FIR tests for repl snippetsKT-82554[REPL] Fix unresolved reference when using dataframe compiler-pluginKT-82578[K2 REPL] Split snippet property declaration and initializationKT-82503[K2 Repl] Nested class annotations are not available in the next snippet