Changelog
Analysis API
KT-85418Implement an API for accessing deserialized file annotations in Analysis APIKT-74448K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt, kotlinx.coroutinesKT-85856containingSymbol of constructor property differs for local and non-local classes
Analysis API. Code Compilation
KT-76457K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a JVM counterpart” on evaluating inline fun from common module inside jvm
Analysis API. FIR
KT-70552No expects for actualKT-86014Types are broken after remove parameter through change signatureKT-86363KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier found on companion blocksKT-86147Dropkotlin.parallel.resolve.under.global.lockregistry keyKT-85543Avoid lazy resolve for the contracts phase if no constracts might be resolved
Analysis API. Infrastructure
KT-86186Analysis API: Codebase tests run twice in some analysis modules — pick a single JUnit runner and migrateKT-85360Drop kotlin-compiler-testdata-for-ide artifactKT-85585Simplify the dependencies graph for the Analysis API modulesKT-85381Remove tests for the FE10 implementation
Analysis API. Light Classes
New Features
KT-84645Support resolving to companion block members & extensions from Java (light classes)KT-80775Support PsiClass#getRecordComponents in light classes
Fixes
KT-57537SLC: propagate default parameter value from (@JvmOverloads)expectdeclarations toactualdeclarationsKT-63568Symbol Light Classes: KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work incorrectly when psi is not setKT-70428AA: good code is red when a Java class extends a Kotlin class implementing MutableList by delegationKT-36740MPP: False-positive incompatible types in .java when using expect-class returned by non-expect member from common when actual is actual typealiasKT-67749Analysis API: Symbol Light classes should be available only to pure JVM sourcesKT-85040[Analysis API] Improve Java / Kotlin interop in KMP projectsKT-68169K2 IDE. KMP. False positive type mismatch in java file of jvm source-set when using common declaration which expects StringKT-37783KMP Java Interop: JVM-only methods on actual superclass not resolved in Java for common subclassKT-40059Provide type correction for expect/actual types used from Java-codeKT-71429MPP: False positive "Function1 is not a functional interface" when calling code from Common in JavaKT-70426SLC: kotlin.Collection#size is not exposed by defaultKT-60480Symbol Light Classes: Classes implementing kotlin.collections.* interfaces don't implement all methods from the corresponding java.util.* interfacesKT-36991IDE: "both methods have same erasure" for Java classes directly or indirectly extending Kotlin collectionsKT-22594KotlinCollection.getSize is not highlighted as an error in Java
Analysis API. PSI
KT-85052Move mutation methods out of the Kotlin PSIKT-84925Move KtReference to the Kotlin IntelliJ pluginKT-85427Use factory-like pattern instead of reflection in KtNodeTypeKT-84789Ensure allKtClassBody.parentusages are correctKT-85154PSI: "AE: parent is ERROR_ELEMENT" with top-level destructuring declaration
Analysis API. Providers and Caches
KT-82220Analysis API: Support platform-specific session components and checkers in metadata sessionsKT-82731Analysis API: Limit granular tree change processing to a few files
Analysis API. Standalone
KT-85112AA does not see packages from unpacked klibsKT-86417Support parameters in 'getExpectsForActual()'KT-84916Metadata stub deserializers aren't properly set up for Analysis API StandaloneKT-83191Analysis API: JvmDependenciesIndexImpl performs very poorly for large classpaths
Analysis API. Stubs and Decompilation
KT-86520KotlinDeclarationInCompiledFileSearcher doesn't support visibility-mangled declarationsKT-64901Inconsistency between AST and Stub tree in the case of non-local destructuring declarationsKT-84444Support stubs for companion blocks & extensions
Analysis API. Surface
New Features
KT-73214AddKaScope#declarationswith name filterKT-69085Provide API to retrieve label/name from KtFunctionLikeSymbolKT-70771KaLocalVariableSymbol: supportisDelegatedPropertyKT-85239Streaming version of collectDiagnostics()KT-85037Add API for KaFunctionType's returnType modificationKT-80460AA: IntroduceKtExpression.isStableForSmartCastingAPIKT-82519Automatically recognize the appropriate analysis mode for in-memory file copies based on their contentKT-65912Analysis API: Implement type building API for all KtType
Fixes
KT-66039K2: Analysis API: redesign resolution APIKT-70794K2 IDE: Reference to object does not resolve as LHS in "plusAssign" assignment expressionKT-70774Unary operators on literals are not resolvableKT-86757Flaky annotations result for@allannotation on a backing fieldKT-85382Remove the FE10 implementationKT-86681[Analysis API] MoveisDelegatedtoKaVariableSymbolKT-86685collectCallCandidates works incorrectly for a constructor vs. a companion invokeKT-86514No expected type within collection literal in annotation entry using array rather than varargsKT-76076K2 AA: safe call expression navigates to parent array index access expressionKT-86418Support property accessors in 'getExpectsForActual()'KT-71312KaFirPsiJavaClassSymbol.{hasAnnotations, annotationSimpleNames}is inconsistent withFirJavaClassimplementationKT-86394Resolve from KDoc reference is inconsistent with source codeKT-86248isUsedAsExpressiontrue for typealias lhs in ::KT-85778Analysis API: Ensure that all public endpoints in implementation modules are internal or opt-inKT-78285resolveToCallCandidates inconsistent behaviour with invoke operator and constructorKT-85852CCE in buildClassTypeKT-85989Super type references should be aware of type alias constructorsKT-84184[Analysis API] Provide a unification substitutor APIKT-84584Support companion extensions and blocks in the Analysis APIKT-84932Deprecate utilities exposed through analysis-internal-utilsKT-73059Consider dropping of KaOriginalPsiProviderKT-84737KaCallableSymbol#directlyOverriddenSymbols doesn't work for java overrides of kotlin propertiesKT-71101[AA] Consider getting rid of KaTypeNullability
Backend. J2KLIB
KT-86368[JKLIB] MetadataJVMModuleDeserializer tries to deserialize all symbolsKT-86367[JKLIB] kotlin.Cloneable built-in class not found
Backend. Native. Debug
KT-85264[Native] Stepping trace starts with// test.kt:1 boxin some debug stepping testsKT-81740Native: importing konan_lldb.py to lldb prints a warning
Backend. Wasm
Fixes
KT-83159K/Wasm: generate one common base class fun interfaces (including Function*)KT-86123[Wasm] Callable reference refactoring (KT-83159) broke klib binary compatibility with libraries compiled by Kotlin 2.0.xKT-83171K/Wasm: Investigate import.meta usage in mjs filesKT-84267K/Wasm: init order of companion objects is different from JVMKT-86192K/Wasm: Raise a warning on usage of top-level require in JsFunKT-83356K/Wasm: Difference in behavior on nested class initialization (for enums?)KT-71505[Wasm, IC] Incremental step can produce wrong main function callKT-86822K/Wasm: don't cast the result of calling callable references with Unit return typeKT-86180[Wasm] backward compatibility is broken in 2.1->2.2 by changed order of type parametersKT-86640[wasm]: Single-module test failures with companion object initializersKT-71039[Wasm, IC] Investigate synthetic function types loadingKT-66105Wasm: SyntaxError: Identifier 'box' has already been declaredKT-82843K/Wasm: pass a lambda call helpers to convert funs as an argument instead of exporting themKT-83245K/Wasm: Run stepping tests with local variables with K/WasmKT-86166[Wasm] Make possible to have passing test in multimodule but having it fail in monolithKT-84667wasm: Add general support for custom sections/annotationsKT-85506[Wasm/WASI] Stdlib readLn and readlnOrNull implementationKT-85270K/Wasm: incremental compilation fails with NoSuchElementException when a stdlib call is removed
Compiler
New Features
KT-86410[KMP] Implement acceptance of JVM IC metadata from previous compilationKT-84295Support Companion BlockofOperator for Collection LiteralsKT-86657Native: turn on incremental compilation by defaultKT-84956Resolve of references to static & companion object members of generic classKT-86409[KMP] Create JVM IC metadata outputKT-85593ELA: Support multiple lambda argumentsKT-84618Emit a warning when an undesrcore variable is assigned to a Unit expressionKT-83040Collection literals: ensure normal interaction with CFGKT-84333Collection literals: type inference in delegate expressionKT-84289Resolution to Companion Block & Extension Invoke OperatorKT-82961Type inference from upper type for type parameters designed for tracking of checked exceptionsKT-81444False positive: "Overload resolution ambiguity" with@OverloadResolutionByLambdaReturnTypeand multiple lambda parametersKT-84393Support Unit-conversions and Unit-adaptations for arbitrary expressions in argument positionsKT-84319Add JVM target bytecode version 26
Performance Improvements
KT-69758FastJarFS - avoid copying data on inflating (JDK 16+)KT-85647Compilation performance regression in AbstractFirDeserializedSymbolProvider since 2.3.20KT-86104[JVM] use static methods/fields of KTypeProjection in typeOf generated bytecodeKT-86084IDEA freezes when a lot of properties are modified to lazy delegatesKT-83068Investigate long compilation times with many generics & overloadsKT-66469Long compilation with mockk importKT-79677Remove meaningless LVT records
Fixes
KT-84802Add new synthetic class flag to JVM metadataKT-83766K2: Wrong sourcePsi is set forSymbolPsiLiteralin SLC for annotation arguments referencing a const valKT-86728Reified type inference: expected type not propagated into inline call inside lambda with elvis operatorKT-82510K/N, IC: "Undefined symbols for architecture arm64" for iosSimulatorArm64 withkotlin.incremental.native=trueKT-84185Type arguments are wrongly allowed in receivers of static callsKT-84154Invalid qualifiers with type arguments in package parts compile without diagnosticsKT-80227Support unnamed context parameters in evaluationKT-86751IntroducedAt: Do not generate@IntroducedAtoverrides as syntheticKT-85816Drop remaining usages of ComponentRegistrarKT-86534Extract reworked annotations resolution under separate language featureKT-84626Try to combineFirConstChecksandFirExpressionEvaluatorKT-85291MFVC: consider analyzing the type of declaration instead of use-site target in AnnotationCheckerKT-86755False negative NATIVE_SPECIFIC_ATOMIC in type argumentsKT-86752K2: False negative NO_REFLECTION_IN_CLASS_PATH on type parameters, intersection types, captured typesKT-85972[ArrayEqualityCanBeReplacedWithContentEquals checker] Checker misses smart-cast array operands when the original type is a type parameterKT-85970[ArrayEqualityCanBeReplacedWithContentEquals checker] Warning message mentions ==/=== instead of !=/!== for inequality operatorKT-86705False positive REDUNDANT_SINGLE_EXPRESSION_STRING_TEMPLATE for nullable String? expressions with -WextraKT-86798Native: don't use stale incremental cache when a new compiler version is usedKT-86524JvmExposeBoxed: Collection does not implement abstract methodKT-86526JvmExposeBoxed: Sequence contains more than one matching elementKT-86298LEAKED_IN_PLACE_LAMBDA when a lambda parameter is forwarded into an inline function parameterKT-76632K2: False positive "Assigned value is never read" with 'flatMap()'KT-86699Kotlin/Native: get rid of OptimizeTLSDataLoadsKT-86646IllegalStateException "unknown supertype kind null" when compiling data class with definitely non-nullable type parameter (U : T & Any)KT-86662Check for loss of ConeIntersectionType.upperBoundForApproximationKT-86629Approximation of Intersection Type to Upper Bound is Broken by Bang Bang OperatorKT-86115Platform declaration clash on no-arg constructor with@JvmExposeBoxedand@IntroducedAtKT-78079Enable generation ofwhenusing invokedynamic by default for JVM targets 21+KT-86643Warning for returning callsInPlace lambdaKT-86609MakeKDocSectionimplementPsiLanguageInjectionHostKT-86642Flexible type with nullable intersection types in both boundsKT-85148Native: check/fix KT-72710 Incorrect behaviour of tail call suspend functions optimizationKT-85641Nullable-marked object qualifiers in LHSs of callable referencesKT-86464SupportisPublicAbiJVM metadata flag for anonymous and synthetic local classesKT-82216Sanitize '.kotlin_module' filenameKT-85230False negative deprecation diagnostics on import of member of nested classKT-62467K2: Result type of elvis operator should be flexible if rhs is flexibleKT-86319K2: StackOverflowError in AbstractConeSubstitutor with recursive Java type bound under mixed JSpecify@NullMarked/@NullUnmarkedKT-86512K2: Bad IR for adapted callable reference to function with generic vararg and optional parameterKT-77726Move FirUnusedExpressionChecker to the default checkers listKT-85947Collection literals: internal failure when SAM is expectedKT-85842Collection literals (and CSR): internal failure when lambda is analyzed during inference of outer callKT-85535Collection literals: Migrate to new resolve in annotations under "-Xcollection-literals"KT-84559@OptInon collection literal and context-sensitive does not workKT-86468K2: False negative DSL_SCOPE_VIOLATION when type parameter has DSL-annotated boundKT-86292False negative: INFERRED_TYPE_VARIABLE_INTO_EMPTY_INTERSECTION_WARNING reported for direct getValue call but not for equivalent by delegationKT-86467K2: False negative ILLEGAL_RESTRICTED_SUSPENDING_FUNCTION_CALL with DNN, flexible, captured and intersection receiver typesKT-85848Recursion on value classes through type parametersKT-75874K2: Adjust the type mismatch diagnostic on lambda parametersKT-86110K/N Incremental compilation: stale cache is reused after enum entry reorderKT-82456K2. Missing deprecation for object with invokeKT-85656[NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS] False negative for nested type aliasKT-86184KDoc: syntax highlighting incorrect when@param,@return, or summary line begins with a backtickKT-85454Make :compiler:android-tests:test cacheableKT-85955Implicit JvmExposeBoxed: double default constructor parameter leads to IOOBEKT-51400Additional independent candidate with@OverloadResolutionByLambdaReturnTypecould change inference resultsKT-86042Inference fixes lambda's return type variable too earlyKT-86327Add flag toLanguageFeatureenum to enable it in the latest language version testsKT-86133K/N IC: stale cache is reused after reified inline body changeKT-84718Provide information for simple names resolved through imports which might be resolved via context-sensitive in IDE modeKT-75112FE resolves wrong receivers order for property passed to delegateKT-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-85300Improve message for UNRESOLVED_REFERENCE_WRONG_RECEIVERKT-80590Drop language version 1.9 for JVMKT-86191Check not null on a dynamic-typed property leads to malformed CFGKT-85957Contract on function is getting discarded if any of effect declarations is unknownKT-86143operatorkeyword is allowed on arbitrary equals in enum entriesKT-73197Order-dependent choice of overload by lambda return type with UnitKT-86144Unresolved code in ambiguous plus assign is not reportedKT-86006CFG: Exponential growth when visiting unresolved delegates in FirLocalVariableAssignmentAnalyzerKT-86103Incorrectly reportedCONFLICTING_OVERLOADon companion memberKT-84344Disambiguate fake source elements for source-based symbol IDsKT-85965Native: incremental compilation blows up with NoSuchFileException: class_fieldsKT-86005Fix misuse of DeferredMethodVisitor.intermediate in AnonymousObjectTransformerKT-72840[JVM Inliner] Two failsAFTER mandatory stack transformations: incorrect bytecodeKT-30728"VerifyError: Operand stack underflow" on crossinline lambda usage inside inline function in anonymous objectKT-84589ProhibitArray<Nothing>in lhs of::classKT-85825Context parameter lambda loses context type when wrapped in nestedrunblocksKT-84766Kotlin/Native: separate compiler cache for latin1Strings=trueKT-82899Native IC: AIOOBE on coroutinesKT-85188Don't poison binaries with companion blocks & extensions for LV >= 2.5KT-80176ASSERT FAILED: SDE.c : 296 - bad SourceDebugExtension syntax - position 376 - expected ':'KT-84581Inline function with@JvmOverloadsproduces SourceDebugExtension attribute with invalid line numbersKT-85954Implicit JvmExposeBoxed leads to IOOBE when data class constructor accepts nullable inline classKT-84960Property contract leaks unsubstituted type parameter in smart castKT-85203Kotlin/Native: "Invalid LLVM module - Instruction does not dominate all uses" with nested inline suspend functions and withContextKT-84280StandaloneUnitqualifier allows type arguments:Unit<Any>KT-85766Confusing error message "'this' is not defined in this context" on companion extension delegated propertyKT-72706Confusing "INVISIBLE_REFERENCE" when calling private constructorKT-85888Native: incremental compilation blows up when a method changes from open to finalKT-85720K2: Missing null check in generic vararg function call when passing value of flexible typeKT-85701K2: Type parameter is out of bounds forIMPLICIT_DYNAMIC_CASTKT-80841Confusing positioning of NO_VALUE_FOR_PARAMETERKT-82196False positive: "Recursive call is not a tail call" inside when/if with lambda and elvisKT-85841Error message for NULLABLE_ON_DEFINITELY_NOT_NULLABLE uses obsolete term for DNN typesKT-81932False positive TAIL_RECURSION_IN_TRY_IS_NOT_SUPPORTED caused by try in another branch inside tailrec functionKT-85661Lazy resolve for substituted property accessors with a contract doesn't workKT-84719Provide information for qualified types that might be replaced with context-sensitive simple names in IDE modeKT-85667Add experimental language version 2.6KT-85770Support companion block properties in interfacesKT-85168Generate static initializers as proper IR functionsKT-85703Drop pre-2.0 language features from K2 & common compiler codeKT-74516False negative TYPE_PARAMETER_AS_REIFIED for DNN typeKT-85733Illegal unqualified resolution to companion extension through scope linkingKT-85679Internal Compiler Error when trying to access a value parameter from companion blockKT-81814Field name '$$context-Functor#1' cannot be represented in dex formatKT-81708K/N incremental compilation:No module deserializer for FUN name:writeObjectKT-6071Change USELESS_CAST warning messageKT-85527Unmute Android tests after removing IGNORE_BACKEND_K1 directiveKT-84939Kotlin/Native: support llvm passes in -Xsave-llvm-ir-afterKT-85341K2."TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM" false positive on accesses to properties of an anonymous objectKT-84861Support Companion Blocks & Extensions in Scripts/REPLKT-72999K/N: Do not considerIrTypeOperatorCallas a tail call expressionKT-84327Name-based destructuring conflicts with in-scope functionsKT-78678Checking for nullable type against nullable type falls back to inline-when generation mechanismKT-83652Confusing messages when using package parts with type arguments in qualifiersKT-85479Improve diagnostic messages for upper bound violationsKT-84717Provide information for qualified expressions that might be replaced with context-sensitive simple names in IDE modeKT-84859Skip deprecation phase for generic arguments in qualifier receiver of static call for companion block members and extensionsKT-75372Deprecate K1 compilerKT-80093Type inference depends on the presence of transitive dependencyKT-68933CompilationException: Back-end: Could not get inlined classKT-70461K2: "Inline class types should have the same representation" caused by value class and smart checkKT-63746K2: JSpecify: If a class has a@Nullabletype-parameter bound, Kotlin should still treat unbounded wildcards like platform typesKT-17738Java cannot extend class implementing kotlin.collections.Map
Compose compiler
b/489339299Move Compose runtime to a stable versionb/509945632Always wrap inline lambdas with a composable group with a groupb/422193018Cherry-pick "FixcallableInferenceNodeOfinComposableTargetChecker.kt"
IR. Inlining
KT-85605"Local delegated property has not delegate" exception when calling inline function containing delegated property in a lambda from within an inline lambdaKT-79065Try to removeNativeRuntimeReflectionIrBuilderKT-72464[Native][JS][Wasm] Non-local return through suspend conversion breaks the IR inliner
IR. Interpreter
KT-86083Create a new CLI flag to enableIntrinsicConstEvaluationfeature
IR. Tree
KT-86527Remove unreachable code from UpgradeCallableReferencesKT-85673ReplaceclassIdwithIrClassSymbolinIrAnnotationKT-85572KLIBs: New signatures for companion funs/valsKT-74938Use SYNTHETIC_OFFSET in IR fake overridesKT-78175Remove remaining usages of attributeOwnerId outside of JVM backendKT-85573Store "companion parameter" in IR of funs/vals declared as companion extensionsKT-85896Type parameter is out of bounds (in setter) for a property with context parametersKT-85698Type parameter is out of bounds (in setter) for an extension property with type parameterKT-76934Drop old IR parameter API
JVM. Reflection
New Features
KT-73657Fix kotlin-reflect performance issues for reflection operations common for both reflection implementation: stdlib and kotlin-reflect
Fixes
KT-86709Reflection: KRIE with Reaktor on fresh masterKT-85903Reflection: do not inherit companion block members from supertypes inKClass.membersKT-85902Reflection: support call/callBy for companion blocks & extensionsKT-86477Reflection: test builtin class contentsKT-86545Reflection: extra Serializable supertype for non-mapped enum classes in "kotlin" packageKT-83677Reflection: aliased extension function type is rendered as non-extension in toStringKT-85836Reflection: KotlinReflectionInternalError on isSubtypeOf with definitely-not-null typeKT-83986Reflection: java.io.Serializable is not shown in supertypes of Int type in new reflectionKT-84495Reflection: "KotlinReflectionInternalError: Annotation class not found: kotlin/jvm/internal/EnhancedNullability" on Java Optional typeKT-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-86177Reflection: incorrect modality of Java constructors in the new implementationKT-85999Reflection: ByteArray KType incorrectly has type arguments in Kotlin 2.4.0
JavaScript
New Features
KT-56493KJS: Export documentation to generated d.ts filesKT-51292Proposed behavior of@JsExporton interfaces and classes with companion objectsKT-21626Support ES2015 syntax injsfunction
Fixes
KT-80188Design exporting of suspend lambdas into JS/TSKT-84710Kotlin/JS: Suspending default interface methods are not accessible on subclasses from JSKT-19819JS: source maps: write the longest common prefix of all paths to "sourceRoot" fieldKT-85990K/JS: Default parameter values ignored in@JsStaticsuspend functions when class is exportedKT-82266Support transitive export in Analysis API-based TypeScript exportKT-85616[K/JS] Add synthetic and internal compiler APIs into sourcemap'signoreListKT-84090Save variance in the generated TypeScriptKT-56618KJS/IR: Support external interfaces from common code (via annotation?)KT-80991K/JS/Wasm interop: JsReference.get is easy to accidentally use in JS targetKT-85424Replace eachjscall withjsClassIntrinsicafter bootstrappingKT-84457KJS: Support implementable interfaces in Analysis API-based TypeScript ExportKT-85452K/JS: Cannot create static member with@JsStaticin non-companion objectKT-83462Usage of star projection makes any generic type not-exportableKT-85599Allow exporting annotation classes into JS/TSKT-85563Kotlin/JS: TypeScript mts files do not properly escape enum valuesKT-85411Fix conversionCombinations.kt tests for the JS targetKT-60899K2 JS: Implement warning NO_REFLECTION_IN_CLASS_PATH
Klibs
Performance Improvements
KT-84837Introduce an index in IR linker for faster look up of suitable module deserializers
Fixes
KT-86501Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64KT-85578KLIBs: New manifest property to indicate "new initialization order"KT-84836Minimize usages of IrBuiltIns in the KotlinIrLinkerKT-86037[Tests] Split test directive IGNORE_KLIB_BACKEND_ERRORS_WITH_CUSTOM_FIRST_STAGEKT-81947[Wasm] Klib backward and forward compatibility testingKT-86228Simplify Klib's ReadBufferKT-58409[KLIB Reproducibility] File path separators should be platform-independent in KLIBsKT-78188[JS] Klib backward and forward compatibility testingKT-76195CombinetoJvmMetadataVersionandtoKlibMetadataVersionKT-84750[K/N] Set "kotlin.native.home" appropriately in forward testing ofmaster-> 2.4.0-Beta2KT-85805AtomicfuNativeKlibSyntheticAccessorTestGenerated brokenKT-85359ExportKlibToOlderAbiVersion with LV=2.2 is silently ignoredKT-85290Make :native:native.tests:klib-compatibility:testMinimalInAggregate cachableKT-85080Klib/IR Tests TC configuration -- need to explicitly download the necessary dependenciesKT-84990Investigate the usage ofallDependencyModulesin IR linkerKT-84349[Wasm] Implement forward klib compatibility testing
Language Design
KT-86089Explicit context arguments: Stable releaseKT-86201Name-based destructuring stable release ofonly-syntaxin 2.5KT-7882Generic vs Non-Generic and implicit Unit return typeKT-78796Decide the future of the AllowEagerSupertypeAccessibilityChecks language featureKT-73821Decide the future of the ForbidUsingSupertypesWithInaccessibleContentInTypeArguments language feature
Libraries
New Features
KT-86595Introduce StackTraceRecoverable interface into the standard libraryKT-10380allEqual function for Iterable
Performance Improvements
KT-86032K/N, K/Wasm: BitSet::get allocates objects for each access
Fixes
KT-86027Hide returnsResultOf under a separate flag and remove its usages from kotlin stdlibKT-86696return-value-checker: false positive Path.setPosixFilePermissions and Path.setLastModifiedTimeKT-86470Stdlib doc: Wrong timestamp in kotlin.time.Instant.parse example (leads to InstantFormatException)KT-86053Update kotlin-metadata-jvm for the companion blocks and extensionsKT-80654K/N and K/Wasm: implement missing Regex testsKT-85326Libraries: rangeUntil docs sample code uses a rangeTo exampleKT-82505API reference: add links to array transformations returning arrays from their list-returning counterpartsKT-62423Consider providing Common atomic types
Native
KT-74844kotlin.native.internal.FileFailedToInitializeExceptionwhen running native tests with Kotlin 2.1.20-Beta2KT-83914Native: when loading JNI libraries, java.library.path can contain system directories with libraries with same names
Native. Build Infrastructure
KT-82607[K/N] Dist build fails when gradle daemon was started on a JRE (i.e., without JNI headers)KT-85451Native: migrate the remaining tests to testFixturesKT-86725Kotlin/Native: make KonanCacheTask aware of per-file cachesKT-85803K/N: build not reproducible - platformLibs cachesKT-85823Kotlin/Native: delete outputs in :kotlin-native:distNativeLibsKT-85522Kotlin/Native: llvmLinkBreakpadMainMacos_arm64 fails
Native. C and ObjC Import
KT-83940Generate IR from C-interop KLIBs without descriptorsKT-86871C-interop Klib caches are not deterministic after KT-83940KT-86559[K/N] More stable@CCallidsKT-73656Native:@OverrideIniton a capturing local class constructor causes a compiler crashKT-85765Prohibit emitting C-interop KLIBs withkotlinorkotlinx.cinteroppackagesKT-84043Native: findMacros takes a lot of time with -fmodules in cinteropKT-85705Swift-generated headers with external_source_symbol produce duplicate enum declarations
Native. ObjC Export
KT-86069Native: the annotation target for@ObjCEnum.EntryName` is wrongKT-83504ObjCExport: Source unresolved dependencyKT-83505ObjCExport: Transitive unresolved dependency
Native. Runtime
KT-85897[K/N] C Export sometimes hangs on termination on mingwKT-85811K/N: FirNativeGCTestGenerated.testMemoryDump failsKT-85882Performance improvement in Kotlin_getCurrentStackTrace: use vectorized/range-checkless copyKT-85077Native: if CoreSymbolication fails, report this to users with a troubleshooting guide
Native. Runtime. Memory
KT-85457Native: TSAN tests fail with Xcode 26.4
Native. Swift Export
New Features
KT-79477Make Swift Export work handle@OptIndeclarations well
Fixes
KT-86650[Swift Export] Trampoulinebuilding for a function with changed argument name produces incorrect code.KT-85870[Swift Export] Invalid unavailability propagation to protocol membersKT-85918[Swift Export] unavailable operator function fails to compileKT-85869[Swift Export]releasefunction conflicts with unavailableNSObject.releaseKT-85868[Swift Export] Factory function conflicts with class nameKT-85871[Swift Export] 'AbstractCoroutineContextKey' is inaccessible due to '@_spi' protection levelKT-85788[Swift Export] Doesn't resolve generic upper boundKT-85534[Swift Export] Fails to bind private class implementing deprecated public interfaceKT-85784[Swift Export] generic class with multiple upper bounds failsKT-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-85458[Swift Export] value of a closure returning a closure generates invalid swift code
Tools. BCV
KT-83476Use Maven publications as dump input [ABI Validation]
Tools. Build Tools API
New Features
KT-85663Make BTA JS Compiler Arguments Type-SafeKT-66425BTA: implementClasspathEntrySnapshot.hashCodeKT-84598[BTA] Expose API Version via Public PropertyKT-85421BTA: validate arguments for invalid characters and guide users to feedback issueKT-78207BTA: implement basic Kotlin/Wasm binaries linking supportKT-78206BTA: implement basic Kotlin/Wasm compilation supportKT-83794Make BTA JVM Compiler Arguments Type-SafeKT-84401BTA: implement Kotlin/JS incremental compilation supportKT-78204BTA: implement basic Kotlin/JS compilation support
Fixes
KT-82986BTA: setting unknown options may pass silentlyKT-86734Add Kotlin 2.4.0 into backward-compatibility testsKT-86785[KGP] Compilation logs are not prefixed with taskPath in BTA modeKT-85093[BTA] Resolve Forward Compatibility Test Blocker for X_IGNORED_ANNOTATIONS_FOR_BRIDGESKT-85787BTA: Distinguish typed argument values from raw string values in compatibility test descriptorsKT-85504Kotlin Daemon crashes if there is a typo in compiler args added as key-value freeCompilerArgsKT-85736BTA tests: automate detection of missing versions in compatibilityTestsVersionsKT-78208BTA: split Kotlin/JS compilation and linking argumentsKT-78209BTA: split Kotlin/Wasm compilation and linking argumentsKT-86395[BTA] forward-compatibility violation: NoSuchMethodError on JvmSnapshotBasedIncrementalCompilationConfiguration. breaks ICKT-80679Add support for the Build Tools API [ABI Validation]KT-86156BTA: report all invalid argument values at once instead of stopping at the first oneKT-85505Kotlin daemon crashes if "-Xwarning-level=" compiler option is added with a syntax errorKT-85958argumentsToStrings produces corrupted arguments when value starts with "@"KT-86059[BTA] Handle enum parsing errors related to case sensitivityKT-86243[BTA] Compat package has wrong version of compiler on compile classpathKT-86247[BTA] Improve -Xjsr305 parser error message: include the full failing entryKT-85556BTA: SearchPathType compiler arguments (classpath, -Xklib, -Xmodule-path) not resolved to absolute pathsKT-85167Make Xjsr305 type safeKT-86117CRI:fileIdis hashed from the absolute source path, not the stored relative pathKT-85696BTA: deepCopy() in JvmCompilerArgumentsImpl uses string round-trip, corrupting delimiter charactersKT-85738BTA forward compatibility: NoSuchFieldError on X_IGNORED_ANNOTATIONS_FOR_BRIDGES when API 2.3.0 is used with impl 2.4.0KT-85722[SSoT, JS/Wasm] Switch to "nopack" naming for argument controlling packing of klibs to unify with Native backendKT-85702[SSoT] Simplify compiler argument enum serialization by replacing per-type serializers with a generic contextual serializerKT-85607[BTA] -Xignored-annotations-for-bridges missing forward compatibility support (API 2.3.20 + impl 2.4.x+)
Tools. CLI
KT-56850Separate K/Wasm CLI entry point from K/JS CLIKT-86202Warn against disabling a language feature with a parametrized compiler argument that's already stableKT-86746Drop all org.jetbrains.kotlin.asJava usages from CLIKT-85813Inconsistent behavior of -Xcontext-parameters warning depending on daemon/in-processKT-85414Argument DSL:delimiter = KotlinCompilerArgument.Delimiter.PathSeparatorgenerates invalid Kotlin codeKT-85920Remove MessageCollector Usage from ErrorReportingContextKT-85898Register all KtDiagnosticsContainersKT-85187Add compiler argument for companion blocks & extensions
Tools. CLI. Native
KT-85538Native: allow using JNI in CLI tools on JDK 24+ and Unsafe on JDK 24
Tools. Compiler Plugin API
KT-85969KtLint incompatible with Kotlin 2.4.0-Beta2 (parsing errors / Extensions storage issue)
Tools. Compiler Plugins
New Features
KT-85758Support for@Logannotation on Kotlin classes
Fixes
KT-86286all-openplugin makes@JvmRecordclasses non-final, causing compilation error "'@JvmRecord' class must be final"KT-86620Lombok incorrectly detects clashing constructor with varargs argumentKT-86773PowerAssert: sorting of possible overloadsKT-86225Atomicfu generates IR with out-of-scope type parametersKT-83121Lombok. A constructor without parameters is available for a class with@Dataand staticConstructorKT-84059Lombok. CANNOT_INFER_PARAMETER_TYPE for toBuilder function if@Builderis applied to a generic classKT-84058Lombok. NoSuchMethodError for the builder function when@Builderis applied to the methodKT-81622Support@Slf4jand other logging annotations (@CommonsLog,@Flogger,@JBossLog,@Log4j,@Log4j2,@XSlf4j)KT-86170PowerAssert: Stabilize runtime ABI for initial releaseKT-86058Check the frontend-owned plugins for the Companion blocks and extensionsKT-85762Support for@ToStringannotation on kotlin classesKT-86065Scripting plugin addsHashMap<K, V>(with HashMap's own out-of-scope type parameters) as a supertype of the synthetic REPL state classKT-86064Plugin sandbox generatesIrClassReferenceImpltyped asKClass<T>whereTis KClass's own type parameterKT-86063PowerAssert plugin generates IR call tolistOf<T>with an out-of-scope type parameter as its typeKT-86070PowerAssert: Enum entries should not be displayedKT-85250PowerAssert: Automatically add runtime library dependencyKT-85472Compiler crash if use unexpected value of AccessLevel in a lombok annotationKT-85693Don't generate declarations withNONEaccess level
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. Daemon
KT-85634-Xwarning-level warnings are escalated to errors when -Werror is enabled in BTA daemon modeKT-71048KotlinCompileDaemon compatibility not discriminated by JVM versionKT-75840Almost dead daemons are considered in the daemon elections
Tools. Gradle
New Features
KT-78214Gradle: implement Kotlin/JS compilation and linking through BTAKT-80509Gradle: implement metadata compilation through BTAKT-78216Gradle: implement Kotlin/Wasm compilation and linking through BTA
Fixes
KT-83679Add ERROR deprecation for CleanableStore and CleanDataTaskKT-85689DeleteprepareDepsfrom kotlin repoKT-86118CRI: Enablingkotlin.compiler.generateCompilerRefIndexdoes not invalidatecompileKotlinUP-TO-DATE stateKT-85942Carry compiler diagnostic identifiers through MessageCollector infrastructureKT-85568Use compiler diagnostic identifiers in KGP Problems API reportingKT-86346Compiler warnings printed twice in console — once asw:and again as Gradle "Problem found:" blockKT-85567Carry compiler diagnostic identifiers through Build Tools API messagesKT-85901[Gradle] Refactor KGP functional test task configuration to use file-backed system propertiesKT-85373Compile against Gradle API 9.5.0KT-85374Run tests against Gradle 9.5.0KT-86429Deprecate KGPcontentEquals()utility, move it to internal utility functionKT-66381Build reports in JSON: incorrect path to a json build report is printed to build output if a relative path defined as a value for kotlin.build.report.json.directory propertyKT-85590Gradle: cannot create task MainKt.main() due to missing defaultSourceSetNameKT-85412Module name is not sanitized with older Kotlin compiler versions
Tools. Gradle. Compiler plugins
KT-84811PowerAssert: Gradle configuration option for default sourcesets to transform
Tools. Gradle. JS
KT-86630Introduce mocha browser runner for kotlin test as part of kotlin-web-helpersKT-86260Integrate Playwright with JS Tests pipelineKT-86106Fix task dependency in KGP lockfile generationKT-86271[WasmJs/Js] 2.4.0-Beta2 - Node version not compatible with popular JS dependenciesKT-85854Improve AbstractSetupTask loggingKT-64275Gradle: remove deprecated symbols related to the legacy JS targetKT-84790Use package.json as 'source of truth' for KGP npm tooling dependencies
Tools. Gradle. Multiplatform
KT-69571compileNativeMainKotlinMetadata not handling project/prebuilt substitutionsKT-84533KMP: compileCommonMainKotlinMetadata: "Unresolved reference" for androidx.savedstate from Maven (works with project() dependency)KT-84767K/N: associateWith triggers warning about friend-modules libs not included in -library argumentKT-81117Withandroid.builtInKotlin=true(AGP 9.0), usingkotlin-multiplatformplugin will fail withCannot add extension with name 'kotlin'KT-83370Incorrect metadata transformation for stdlib's webMain source setKT-84669SPM import: If iosApp dir located outside of the project, checkSyntheticImportProjectIsCorrectlyIntegrated will fail
Tools. Gradle. Native
New Features
KT-86047Suggest CocoaPods -> SwiftPM migration skill and documentation on cocoapods plugin applicationKT-86155Print what changed in the linkage packageKT-85797Use faster findMacros in SwiftPM import cinteropsKT-83873Redo how dynamic library linkage and promotion are handled
Fixes
KT-85961integrateLinkagePackage without parameters fails with an obscure errorKT-84238SPM Import: Ensure generated Package.swift preserves symlinks in local package pathsKT-86015Swift export binary doesn't see main compilation cinterop outputKT-85502Swift PM Import: "Library not loaded": KotlinMultiplatformLinkedPackage.framework is not copied next to the executableKT-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 APIs
Tools. Gradle. Wasm
KT-86457[Wasm, Gradle] BinaryenExec.standardOutput is silently ignored after migration to Gradle WorkersKT-85688K/Wasm: Remove setting of failOnNoDiscoveredTests in Wasm Gradle testsKT-86054K/Wasm: Not set sourceMapBaseDir if there is no sourceMap property in JS and WasmKT-85974K/Wasm: Do not set -Xir-per-module for Wasm tasksKT-85861K/Wasm: Upgrade NPM dependenciesKT-85806K/Wasm: Do not rewrite native_implementations.kt file path in source map
Tools. Incremental Compile
KT-84271Kotlin Incremental compilation failure "The following FqNames can't be derived from DirtyData.dirtyLookupSymbols"KT-85740Incremental compilation misses classpath removal when removed type is used only in a dependency's method signatureKT-85074IC: false build success when anonymous class fails to implement new abstract member from another module's interfaceKT-85642IC: Classpath snapshot cache may serve stale entries when snapshot file is overwritten at the same path
Tools. Kapt
KT-85195KAPT: IntroducedAt is not supported in KAPTKT-86003Remove MessageCollector usage from kaptKT-85453Make :kotlin-annotation-processing-cli:test cacheable
Tools. Maven
KT-85622[Maven] setting kotlin.compiler.jdkRelease without explicit jvmTarget causes compilation failure due to conflicting defaultKT-61667Maven: -Xjdk-release=20 leads to "'-Xjdk-release=20' option conflicts with '-jvm-target 1.8'. Please remove the '-jvm-target' option"KT-84163Maven smart defaults: and overrides not respected
Tools. Performance benchmarks
KT-85233Refine benchmarks module and add new custom long-running tests to it
Tools. REPL
KT-86290Drop GenericReplTest & LegacyReplTest
Tools. Scripts
KT-86391Drop SkipStandaloneScriptsInSourceRoots
Tools. Wasm
KT-83434K/Wasm: add wasm-wasi stdlib into compiler distribution (dist/)