Changelog
Analysis API
KT-60484Analysis API: add support for KtType pointers similar to KtSymbolPointerKT-67786Analysis API: Implement improvedKtTypehierarchy and designKT-68462Analysis API: Integrateproject-structuremodule intoanalysis-apiandanalysis-api-platform-interfaceKT-68341Analysis API: Expanded function types from libraries don't have an abbreviated typeKT-68857Analysis API: Refactor annotationsKT-65215Analysis API: Distinguish APIs for Analysis API users and platformsKT-68884Analysis API: Rename/deprecate/remove declarations as part of StabilizationKT-69055Analysis API: StabilizeKaScopesKT-61775Analysis API: KtKClassAnnotationValue lacks complete type informationKT-60884Analysis API: Improve standalone mode project model creation
Analysis API. FIR
Performance Improvements
KT-60240K2: optimize FirElementBuilder#getOrBuildFirForNonKtFileElement forKtTypeReferencecaseKT-76375ContextCollector: terminate search if no elements were found with a designationKT-86758Don't require body resolution to obtain an explicit backing fieldKT-75496Doesn't resolve the entire designation path to the body phase for diagnostics
Fixes
KT-74654K2 Analysis API: InvalidFirElementTypeException with annotated non-local destructuring declarationKT-81100Support jvmTargetProvider in low-level analysis APIKT-75470ContextCollector: potentially incorrect scope for super type callKT-79057Fix all// IGNORE_PHASE_VERIFICATION: invalid code inside annotationsdirectivesKT-77041Expected is FirResolvedDeclarationStatus, but was FirDeclarationStatusImplKT-60609K2 IDE: Navigation to super class of annotation opensAnyinstead of written super typeKT-80721K2 AA. "FirDeclaration was not found for class KtTypeParameter, fir is null" with generic type parameter in object expressionKT-64899K2: PsiRawFirBuilder forces AST loading for scriptsKT-85627AA: LLFlightRecorder initialization fails on runtimes without jdk.jfrKT-86185Analysis API: MakeFirDesignationinternal by removing the leak throughUsualClassTypeQualifierBuilderKT-85410LLFirTypeTargetResolver: add more type guardsKT-88111K2: Analysis API: make FileStructure element computation fully lazy
Analysis API. Infrastructure
KT-89711test-data-manager is incompatible with Isolated ProjectsKT-87672Eliminate class duplication in the Analysis API JARsKT-84914Do not publish analysis-api-test-frameworkKT-89119Enforce KaInternals prefix name schema
Analysis API. Light Classes
KT-87399LightClassUtil.getLightClassPropertyMethods returns wrong setter when JvmName annotation is usedKT-70427SLC: non-abstract interface method generated as default with-jvm-default=disableoptionKT-88498Support multi-field value classes in light classesKT-89316SLC:DefaultImplslight class exposes@JvmStaticmembers of the interface companion objectKT-89322UAST: NPE accessing containingFile of UParameter for mapped collection methodKT-89073SLC:@JvmOverloads+@JvmExposeBoxed("bar") methods are exposed with the original nameKT-84373Implement PsiMethod#isDefaultConstructorKT-89204SLC: False positive "unresolved reference" in Java for interface companion block members
Analysis API. PSI
KT-80780KtPsiUtil#getEnclosingElementForLocalDeclaration should return KtClassBody for enum entries membersKT-89846PSI: Kotlin overrides of standardPsiElementmutation methods throw IllegalStateException without KtPsiMutationServiceKT-85052Move mutation methods out of the Kotlin PSIKT-88443Advance DeprecationLevel for PSI declarations deprecated in 2026.2 and earlier
Analysis API. Providers and Caches
KT-71359Perform validity checks before session acquisitionKT-89816Analysis API tests: low-memory cache cleanup invalidates sessions in the middle of a testKT-86402False positive MISSING_DEPENDENCY_SUPERCLASS when using Scala case class in Kotlin
Analysis API. Standalone
KT-84851Analysis API Standalone: 75% of CPU time spent in StringsKt.split via trie-based library scopesKT-88362PsiMethod.findSuperMethods()always returns an empty arrayKT-61404Analysis API: implement proper library publishing structureKT-85112AA does not see packages from unpacked klibs
Analysis API. Stubs and Decompilation
KT-80758Consider to drop KotlinClassOrObjectStub#isLocalKT-81203Get rid of deprecated usage at ClsClassFinder.isKotlinInternalCompiledFileKT-88772Refine stubs surfaceKT-89376Rethink decompiler dependencies
Analysis API. Surface
New Features
KT-85384Provide use-site-aware API for Light ClassesKT-88496Support multi-field inline classes in Analysis API SurfaceKT-78862Provide KaSymbol -> PsiElement API
Fixes
KT-88129AdvanceDeprecationLevelfor declarations deprecated in 2026.2 and earlierKT-73570Merge implementation ofKaExpressionTypeProvider.returnTypewithKaCallableSymbol.returnTypeKT-86591Rethink how the context parameters feature could be integrated into the Analysis API SurfaceKT-82176KaFirUsualClassType has incorrect type argument for generic local class in generic functionKT-66192Analysis API: Improve render customizabilityKT-83199Clarify API around extension pointsKT-77280RenameKaPropertyAccessorSymbol#isCustomtoisNotDefaultKT-60483Analysis API: add isTailrec property to KtFunctionSymbolKT-68882Analysis API: RefactorKaSymbolsKT-55124Design common ancestor for KtValueParameter and KtReceiverParameterSymbolKT-53669Analysis API: redesign KtSymbolOrigin to distinguish kotlin/java source/library declarations
Backend. Wasm
Performance Improvements
KT-88469K/Wasm: consider inlining suspendCoroutineUninterceptedOrReturn and getCoroutineContext intrinsics on 2nd Stage
Fixes
KT-89394[Wasm] stop creating of CoroutineImplStackSwitching at the call cite of suspendCoroutineUninterceptedOrReturnKT-90119K/Wasm: ArenaLikeAllocator.allocationsToFree is only cleared on freeAllComponentModelReallocAllocatedMemory()KT-89267K/Wasm: calling a (T) -> R lambda with an argument that isn't a T traps instead of throwing ClassCastExceptionKT-88235K/Wasm: Grouping test infra causes d8: error reading module error on Windows (path length problem?)KT-89657[Wasm] Insvestigate performance issues with primitive box cachingKT-89548[Wasm] clean up type codegen for stack switching and avoid leaking too many continuation types to non-stdlib modulesKT-89547[Wasm] add test config for running stack switching with incremental compilationKT-87742K/Wasm: initialization of properties with default value different from JVMKT-89315K/Wasm Standard Library Tests: Assertions are not enabledKT-89445Wasm: non-thread-safe instruction cache causes ClassCastException during parallel compilationKT-89345[Wasm] look into and unmute some CallableReferences benchmarks for Single Module ModeKT-86207k/wasm: Add box tests/support for multi-value value classes and callable ref mergingKT-88291K/Wasm: Unsigned integer division by zero throws RuntimeError instead of ArithmeticExceptionKT-87710[K/Wasm] initialization order of companion objects from super types differs from JVMKT-73452K/Wasm: turning on range checks by defaultKT-86242K/Wasm: deprecate and prohibit usingwasmExports
Compiler
New Features
KT-89201Implement "Strict equality for structural classes"KT-89096Rich Errors: Parser & PSIKT-89098Rich Errors: ResolutionKT-89103Rich Errors: CheckersKT-89097Rich Errors: FIR TreeKT-80943Context-sensitive resolution fails to look further than a typeKT-2264Emit a warning about ignored (unused) binary operation resultKT-86868Update checkers to supportlateinit val
Compose compiler
Fixes
b/485865131Removed deprecatedIntrinsicRememberandStrongSkippingCompose feature flagsb/555304803Fix parameter traversal inComposableLambdaTokenizer.captureInsnCountb/539644912[Compose] Support rich callable references for@Composablefunctionsb/546101628Fixed a bug that caused miscompilation whenever awhenexpression had a result that was computed by anotherwhenexpression, and the innerwhenexpression had a@Composablecall in one of its conditions.b/549552317Fixed a bug that, in certain cases, prevented execution of non-local returnstatementsinside lambdas called fromwhenexpressions.b/481422057Made the applier inferencer support repeatedComposableTargetannotations per the semantics described in the documentation ofComposableTargetb/530458587Start initializing the fields ofComposableSingletonsobjects lazily
Performance Improvements
KT-89840Native: bad incremental clean build performanceKT-87570Kotlin/Native: improve RemoveRedundantCallsToStaticInitializersPhaseKT-89224Significant performance drop in MT intellij (checkers)
Fixes
KT-84904Alpha release of Multi-Field Value ClassesKT-90352K/N: with -Xcompanion-blocks-and-extensions, a Kotlin subclass of an Objective-C class fails to link (undefined $clinit_trigger of the ObjC supertypes)KT-90235Compiler (JVM): drop requirement of@JvmInlinefor inline value classKT-90234Compiler: don't report inline modifier is deprecated in combination with valueKT-90233Compiler: allow inline value modifier combinationKT-89687[JVM] SpecialBuiltinsMapping.getDifferentNameForJvmBuiltinFunction computes JVM signature of the sub-declaration instead of the overridden built-inKT-89980K2 loads full value classes from klibs without their value class representationKT-89982No warning for Kotlin/Native WeakReference and createCleaner on value class and primitive instancesKT-89983Partial linkage doesn't report a value class whose superclass became an identity classKT-89390K/N IC: per-file caches are not invalidated when toggling -Xcompanion-blocksKT-81760Kotlin/Native: incosistent handling of clashing declarationsKT-90014K2 / JVM:IllegalStateException: Don't know how to compile annotation value ERROR_CALL 'Unresolved reference: <Strange deserialized enum value: ...>'when delegating to a Java interface annotated with a nested Kotlin enumKT-89655Prohibit lateinit in companion blocks in interfacesKT-89646Add JVM target bytecode version 28KT-86086MakeIntrinsicConstEvaluationfeature stableKT-87452Fix remaining issues in companion blocks and extensions on JVMKT-90169Callable references: Array passed as a single vararg element for generic vararg function since 2.4.0KT-89915JVM: ClassCastException 'kotlin.Result cannot be cast to ...' in an indy SAM-converted lambda whose Java SAM parameter is@NotNullKT-89698JVM:@Throwsis copied onto a bridge only when the overridden method is compiled from source, so incremental and clean builds produce different class files (JvmEnhancedBridges, 2.4.0)KT-85853CompanionBlocksAndExtensions: companion block val in interface generates illegal private static field (ClassFormatError 0x1A)KT-89451Suspend conversion: anullargument arrives non-nullKT-39697"Cannot infer type parameter" in map with java static or global method referenceKT-89892[K/N] latin1Strings binary option is ignored with cachesKT-86132Drop support of language versions 2.0 and 2.1KT-86793setupCommonOptionsForCaches does not forward pagedAllocator (and other runtime constant options) to cache sub-compilationsKT-89461KMP separate compilation: Incorrect fake-override is e/a mismatched in case of duplicated supertype in dependency classKT-82548K2: report a warning about annotations which target non-existent accessorsKT-87295Enable Return Value Checker by defaultKT-89410Introduce WillBecomeValue annotationKT-89232Align context-sensitive resolution with how collection literals are resolvedKT-47891JVM: "IllegalStateException: Bad exception handler end" with nested try/run/finally blocksKT-89933Incorrect highlighting of a KDoc with a code block with commentsKT-89576PSI path in script compilation still depends on K1KT-87596Kotlin/Native: port calls checker to LLVM passKT-89313DNN in supertype leads to compiler crashKT-89416Native: top-level properties are not initialized when checked for initialization state from another classKT-89876K/N IC: "File … is not found in cache" after a file is renamed or moved to another module (stale weak dependency)KT-87856Investigate failures in scripting tests after a full switch to K2KT-87149Drop K1-dependent parts of the scripting compiler pluginKT-89769FIR2IR throws "IR class for not found" when a class's supertype isn't exposed viaapiKT-89751K2 REPL: contracts of functions are not resolved inside REPL snippetsKT-89790Improve error reporting around new compilation schemeKT-87904Incorrect $default method/constructor signatures when@JvmInlinevalue class parameter type is absent from compilation classpathKT-83498Implement LT support in the K2 REPLKT-86093Context sensitive resolution does not apply if simple access is resolved to invisible qualifierKT-34051UnsupportedOperationException when using reified type inside lambda in inline functionKT-89837Correctly evaluatenamefor declaration that are imported with different nameKT-89584Build rich references for suspend conversion & SAM constructor referencesKT-89770KMP separate compilation reports EXTERNAL_TYPE_EXTENDS_NON_EXTERNAL_TYPE for external class extending JsAnyKT-75366Provide proper keys for ScopeSession#getOrBuild usagesKT-74304K2: WRAPPED_LHS_IN_ASSIGNMENT on annotationsKT-77583K2: Support repl snippets with LightTree/KMP-based raw FIR buildingKT-89834Drop RawFirBuilderTotalKotlinTestCase.testPsiConsistencyKT-86380New inline variables scheme: addition of this variableKT-87777K/N IC: "Undefined symbols for architecture" when an inherited open method becomes finalKT-81075False negative MISSING_DEPENDENCY_SUPERCLASS on unresolved supertype of SAM constructorKT-89168Reflection: support getDelegate() for companion block properties in interfacesKT-74793Parser: Property accessor of a non-local destructuring declaration leads to exceptionsKT-83340Investigate need ofKtRegisteredDiagnosticFactoriesStoragecomponent in AA modeKT-89762KMP Separate Compilation: EXPECT_ACTUAL_IR_MISMATCH caused by accessing a java field in a single platform projectKT-89635False "Return type mismatch" in interface delegation when the delegated function with an implicit return type is declared in another fileKT-89341KMP separate compilation: false-positive EXPECT_ACTUAL_IR_MISMATCH on members of inner class with generics in outer classKT-89744Apostrophe in an escaped identifier corrupts ARGUMENT_TYPE_MISMATCH diagnostic renderingKT-89121[Native]@BindClassToObjCNameadapters from a cached module never reach Kotlin_ObjCExport_sorted{Class,Protocol}AdaptersKT-83419K2: CCE wheninlinelambda changes avarinvolved in animpliescontractKT-89063JvmExposeBoxed allows to generate invalid Java method namesKT-89068JvmExposeBoxed: secondary constructor of inline class is never exposedKT-89476Diagnostic for incorrect@EagerInitializationusageKT-89653Native: failing lldb tests with state checker enabledKT-89407When frontend reports diagnostic on null source, report as sourceless diagnosticKT-82900Language Feature EnhancedBridgesGenerationKT-20245NoSuchFieldError on usage of crossinline lambda in anonymous object inside another anonymous object in inline functionKT-89641Verify JS export works for full value classesKT-80383Getter without a body is allowed on a property with an explicit backing fieldKT-89415Refactor logic around FirParser.LightTree/MultiplatformParsing and USE_LIGHT_TREE configuration flagKT-87569Support Valhalla for Kotlin Inline and Full Value ClassesKT-87531AbstractMethodError on intersection override with@JvmFieldproperty when accessing property through interfaceKT-89642Disable feature typed equals in value classes for full value classesKT-81558Context-sensitive resolution cannot resolve an unqualified enum entry in GradleProperty<T>-like casesKT-83304Context sensitive resolution doesn't work on mutable collection operators (no explicit import from enum)KT-89504VerifyError: Bad type on operand stack with startCoroutine on smart-casted nullable suspend function typeKT-84406Remove support for IR serialization in JVMKT-84562Get rid of usages of@K1Deprecation-annotated declarations in JVM backendKT-89325Java Direct: no supertypes on resolution due to reentranceKT-86095"VerifyError: Bad type on operand stack" when inline+crossinline function returns anonymous object overriding internal suspend fun with yield()KT-89430Don't store raw-fir generated tests in gitKT-88081Normalize Double.NaN and Float.NaN after constant evaluationKT-89433Frontend: Metadata of abstract/sealed full value classes declares equals/hashCode/toString that the JVM backend does not generateKT-89533class KtValueArgument is not a subtype of class KtCollectionLiteralExpression for factory UNRESOLVED_COLLECTION_LITERALKT-88589Full Value Classes: irrelevant SMARTCAST_IMPOSSIBLE for value class implemented in another moduleKT-89206Inlining of TODO() as a default value leads to an internal errorKT-89157Remove temporary useless casts introduced by KT-79212KT-73165"ANNOTATION_ARGUMENT_MUST_BE_CONST" caused by Enum name as a constant in AnnotationKT-89466KMP Separate Compilation: NoSuchElementException in case of classpath substitutionKT-79562NPE when passing non-lambda argument of nullable non-suspend function type into function that accepts nullable suspend function typeKT-86282Implement FIR builder based on KMP parserKT-89391KMP separate compilation: false-positiveEXPECT_ACTUAL_IR_MISMATCHon declarations from friend dependenciesKT-89475Missed MISSING_DEPENDENCY_SUPERCLASS for parameters of value classesKT-89259Collection literals: enabling+CollectionLiteralsBasedAnnotationResolutioncausesMISSING_DEPENDENCY_CLASSKT-82959IllegalArgumentException: Unhandled intrinsic in ExpressionCodegen for generated top-level declarationsKT-85104JVM compilation error when having TODO() as a parameter default value of an inline function when adding a call to itKT-85168Generate static initializers as proper IR functionsKT-89457companion block on@JvmRecordclass cannot be compiledKT-89453INVALID_NON_OPTIONAL_PARAMETER_POSITIONignoresexpect-chain defaultsKT-70118[KLIB Resolve] Stop using depends= property of klib manifest when building caches in NativeKT-86888Update PersistentMultimap to follow persistent collection naming conventionsKT-84001KIAEWA: Exception in type checkers when classpath contains newer Kotlin-compiled dependenciesKT-88520Equality applicability checker should account for custom equals in full value classesKT-89374Companion blocks: false positive PROPERTY_WITH_BACKING_FIELD_INSIDE_VALUE_CLASS for property inside companion block of value classKT-89112Move transformationarrayOf(...)->[...]in annotations to constant evaluatorKT-74051Add a Continuation for tail-call suspend functionsKT-81874NPE related to data race during Application disposalKT-63741K2: fix visibility inference with overridden + inherited memberKT-46419FIR: Investigate how integer-literal resolution worksKT-6843NPE in REPLKT-10001False unnecessary non-null assertion on a pair element
IR. Tree
KT-89203IR validation: New checker to prohibit use of legacy Ir*Reference nodes on 1st compilation stageKT-87442[IR] Introduce 1st stage warning on failed tailrec optimizationKT-87836Make sure that type, value and kind in IrConst are coherentKT-88082Do not allow constant folding if the resulting expression is Double.NaN and Float.NaNKT-87954UsekotlinLibraryfrom IrModuleFragment instead of a library from ModuleDescriptor
JVM. Reflection
New Features
KT-84275Support companion blocks & extensions in reflectionKT-42082Ability to retrieve a container/owner class of the KProperty/KFunctionKT-87955Reflection support for contextualized callable references
Fixes
KT-89918Reflection: IllegalStateException while processing the times overload during Duration property lookupKT-80710Reflection: change KCallable representation to avoid dependency on K1KT-89280NoSuchElementException in argumentsMakeSenseOnlyForMutableContainer for Java non-static inner class of generic outer classKT-89956KClass.isValue of mapped builtins like kotlin.Number ignores that their Java class is a value classKT-89952Reflection fails with NoSuchElementException when an inline class wraps a full value classKT-89949Reflection treats full value classes and Java value classes as inline classes when calling functionsKT-88503KType.isMarkedNullable always returns false for@Nullable-annotated Java parameters in K2 reflection implementationKT-85735Reflection: Java wildcard type based on Kotlin type with declaration-site variance is loaded differently in new implementationKT-89732Reflection: IllegalStateException in CovariantOverrideComparator for Java interface inheriting both raw and generic method with same erasureKT-89019Reflection: Java Enum.valueOf(value) has lost its parameter nameKT-89419Reflection: parameter annotations on bound constructor reference are loaded incorrectlyKT-89000KotlinReflectionInternalError on Array size.getter.annotations
JavaScript
New Features
KT-87029[Effect Analysis] Leverage effect analysis results in DCE to delete unused properties' initializersKT-87027[Effect Analysis] Propagate effects across the call graph based on function body callsKT-87026[Effect Analysis] Introduce a lowering for analyzing mutation of inputs and outer stateKT-87024[Effect Analysis] Mark up kotlin-stdlib declarations with effect annotationsKT-88024KJS: Allow exporting interfaces nested in other interfaces to JavaScript
Performance Improvements
KT-89682K/JS & K/Wasm: Initialize trivial objects eagerly even in dev mode
Fixes
KT-89984JS: nullable value class over a nullable type parameter holding null is treated as nullKT-89978JS and Native box single-field full value classes and call equals() when comparing them with ==KT-89920K/JS: Adapted::ulongArrayOfreference does not unbox ULong arguments, producing a corrupted ULongArrayKT-89919KJS: "Unhandled JavaScript exception: array.slice is not a function" when using non-adapted ::uintArrayOfKT-89449Kotlin/JS: Member names no longer minified in productionKT-89290Web: companion block members are not initialized when observed from a nested classKT-49422Fix test about support of DefinitelyNotNull type in backendsKT-64821KJS: "TypeError: * is not a function" with class which extends suspend lambdaKT-83337KJS: Difference in behavior on nested class initializationKT-88343KJS: ReportJS_MODULE_PROHIBITED_ON_VARwhen@file:JsModule` is presentKT-89591JS plain objects: generated top-level invoke/copy leak visibility for internal interfacesKT-85540Drop longArrayClass definitions from boxedLong.kt and longAsBigInt.ktKT-72720Setp up a nightly test suite for running all JS compiler tests with -Xir-generate-inline-anonymous-functionsKT-89372KJS: Run the second DCE pass after the optimization pipelineKT-85047Kotlin/JS:@JsStaticon suspend fun of class companion generates incorrect d.ts
Klibs
KT-86840KLIBs: Implement a component inside the compiler to compute DAG of dependencies for a given set of librariesKT-89276KLIBs: Check remaining usages ofKlibMetadataProtoBuf.Headerin compiler's source codeKT-89921klibs: failure with two identical static inline functions in the same file in different classesKT-89498IR linker performance: IrFileDeserializerImpl.getAllMatchingSignatures()KT-89825K/N: "IrClassSymbolImpl is already bound" when two cinterop libraries in the same package declare the same C structKT-87487KLIBs: Don't serialize empty metadata package fragmentsKT-89482[KLIB] Introduce special signature indices in regular & C-interop Native KLIBsKT-81624[KLIB Resolve] Kotlin/Native: -no-default-libs may lead to the final binary depending on a lot of system frameworksKT-61096[KLIB Resolve] Drop KLIB resolve inside the Kotlin/Native compilerKT-87387Fix K1 API usage in:kotlin-util-klib-metadata
Language Design
KT-12719Must-use return values: warn about unused return values
Libraries
New Features
KT-24908CodePoint value classKT-83426Add Tau=2*Pi to the stdlibKT-89662Stabilize Uuid.Companion.generateV{4,7}KT-89629Make some of the Timer.schedule overloads ignorableKT-87021[Effect Analysis] Introduce a new annotation for marking stdlib functionsKT-89332kotlin-metadata: stabilize RVC-related API
Performance Improvements
Fixes
KT-48530Asymmetric equality for progressions and rangesKT-89174Incorrect exception type documented in random function for rangesKT-56363Kotlin/Native: NativeRandom does not behave well with multiple threadsKT-88241kotlin-metadata-jvm: Consider renaming isStatic to isCompanionBlockMemberKT-89560Make kotlin.concurrent.thread's return value ignorableKT-85126Increase StringBuilder.append(obj: Any?) deprecation level to ERRORKT-89177Aggregate functions accepting a destination collection should be annotated with IgnorableReturnValueKT-82882Migratekotlinx-benchmarksGradle plugin from KLIB resolver toKlibLoaderAPIKT-64377Update Dokka Gradle integration tests build configurationKT-64200Dokka Integration tests refactoringKT-64916Update Dokka build config to use JB Gradle Enterprise
Native
KT-85131Native: freeze inLLVMGetTargetFromTripleduring a parallel test runKT-89541K/N: Enabling-Xcompanion-blocksin stdlib breaks some callable reference tests with OPT, NO_CACHEKT-89355Kotlin/Native: some benchmarks are missingKT-87872Native: a few tests inObjCToKotlinSteppingInLLDBTestfail with Xcode 27KT-87869Native: Xcode 27KT-89637K/N: Linking of linux (x64/arm64) binaries with cinterop on Windows is failingKT-84955Deprecate apple x86_64 targets as ErrorKT-89258Kotlin/Native: mute volatile benchmarks
Native. C Export
KT-89632[K/N][CExport] Header declaration order depends on -Xinclude order
Native. C and ObjC Import
KT-89463Native: 'Unable to compile C bridge' when implementing UIScreenshotServiceDelegateProtocolKT-89401K/N: NPE in IrLazilyBoundAnnotationImpl when a cinterop klib references an annotation from a regular klib
Native. ObjC Export
KT-89981Building an Objective-C framework fails with single-field full value classes in the APIKT-70626ObjCExport: init constructors order in Throwable
Native. Swift Export
Fixes
KT-88251Swift Export cross-language inheritance example cannot instantiate KotlinBaseKT-89647Native: failing test with state checker onKT-90024[Swift Export] improve compilation performance of Swift ExportKT-89702Swift Export: reverse bridge calls a member named init without backticksKT-89728Swift Export: Prohibit exporting objc-imported protocol conformances on kontlin typesKT-89701Swift Export: sealed-type switch references a subtype nested in an internal classKT-89842[Swift Export] extensions of Unavailable type results on conflictsKT-89839[Swift Export] there could be more than one incoming cinteropKT-89159[Swift export] val to var property override is unreadable: "ambiguous use" on the subclass, base value returned via the superclassKT-88256Swift Export: constructor of a Kotlin subclass with renamed params causes 'error: argument labels for initializer do not match'KT-88259Swift Export [Inheritance]: toString/hashCode/equals cause EXC_BAD_ACCESS on Swift subclass of an exported Kotlin classKT-88277Swift Export [Inheritance]: function override with lambda parameter is ignored
Tools. Build Tools API
KT-89804Protect build-tools-api-jps compatibility with an API dumpKT-89615Support daemon mode in the JPS-only BTA API surface for client-managed incremental JVM compilationKT-89673Use Path instead of String for file paths in the JPS BTA tracker APIKT-89513Introduce the JPS-only BTA API surface for client-managed incremental JVM compilationKT-84229Build reports missing memory metrics and incorrect in-process strategy indicators with BTA
Tools. CLI
KT-88174Show error when running the compiler on JDK < 17KT-89800KMP Separate Compilation: Single-JVM-target commonTest cannot reference jvmMain with separate compilationKT-89727EXPECT_ACTUAL_IR_MISMATCHwhen usingseparateCompilation=trueKT-88475IncrementalCompilationComponents instances are not being called anymoreKT-89211Show warning when running the compiler on JDK < 17KT-89356Check that CLI arguments configuring already-deprecated/removed language features are deprecated/removed themselvesKT-73967JDK 25: "IllegalArgumentException: 25-ea" with EA builds
Tools. Compiler Plugin API
KT-68878AA: LLFirIdePredicateBasedProvider can return declarations from dependant modules
Tools. Compiler Plugins
New Features
KT-76529Support lombok.fieldDefaults.defaultPrivate in Lombok plugin
Fixes
KT-89189@EqualsAndHashCodeon a Kotlin class must generate canEqualKT-83329Lombok. The case where the default builder is hidden as an internal and an auxiliary one is created doesn't work from kotlinKT-89973all-open makes value classes open, causing "Value class cannot be open" errorsKT-89972no-arg reports a redundant superclass error on inner classes it already rejectsKT-89971no-arg plugin silently generates zero-argument constructors for value classesKT-89970Parcelize assigns fields of a value class after super() in Valhalla modeKT-79199Add K/N FIR dump tests to atomicfu compiler pluginKT-89117Lombok: NoSuchMethodError when using Java class annotated with Builder and Singular in Kotlin and with lombok.singular.useGuava=trueKT-89045Lombok: some java.util.* collections supported in Java as@Singulartargets are not supported in KotlinKT-89084Lombok: lombok.singular.useGuava=true is not working for Kotlin collectionsKT-88904Lombok: Builder annotation generates invalid IR for generics with type-parametrized upper boundKT-83273Lombok. The inner builder class is unavailable in kotlinKT-89753Lombok: StackOverflowError when a Java class uses its own nested annotation on a memberKT-88941Lombok: KotlinIllegalArgumentExceptionWithAttachments in the IDE when@NoArgsConstructoror@Builderis applied to a Kotlin classKT-89185Lombok: toBuilder() silently drops a builder field with no property to read, where Lombok reports an errorKT-89218Lombok: no diagnostic when@Builder.Default or@Singularis applied to a body-declared property of a Kotlin classKT-88848Lombok: AssertionError when applying Builder annotation to a local classKT-89024Lombok: ClassFormatError when loading class annotated with@Builder(builderMethodName="")KT-88852Lombok: RuntimeException if Builder is applied to an inner classKT-89027Lombok:@Builder(access = AccessLevel.PRIVATE) in Kotlin produces unusable builder classKT-89040Lombok: no diagnostic and no codegen when@Builderapplied to top-level functionsKT-88891Lombok: Builder annotation generates setters for properties declared in a class body that do not workKT-88814Lombok: InstantiationError when using Builder with abstract or sealed classKT-71791[AFU plugin] Improve illegal use cases handlingKT-89412Add kotlin-atomicfu-compiler-plugin to .zip compiler distributionKT-88276REDECLARATION conflicts with the existing nested 'Companion'KT-86652Lombok: introduce NO_NOARG_CONSTRUCTOR_IN_SUPERCLASS for@NoArgsConstructorKT-86915Support for multiple annotations on the same classKT-89133Lombok: no navigation from a generated@Buildermember to the property it is generated fromKT-89152Lombok: use kotlin.test assertions in the plugin's test data instead of the hand-rolled assertEqualsKT-89162Lombok:@Builderon a method generates nothing in the IDE because the annotation is read off unresolved FIRKT-89169Lombok: constructor annotations on a Java inner class produce an uncallable constructorKT-88707Lombok: FileAnalysisException when creating an instance of an inner class with NoArgsConstructorKT-88659Lombok: RuntimeException when NoArgsContructor/Builder are applied to a class with non-property parameter in a primary constructorKT-88729Lombok: flagUsage does not report erros/warnings for constructor-related annotations used in Kotlin
Tools. Compiler plugins. Compose
KT-89681[WEB] Expression uses unlinked type parameter symbolKT-89969Compose ignores the stability configuration file for value classesKT-89968Compose infers abstract and sealed value classes as unstable instead of uncertainKT-89958Compose ignores type arguments of generic value classes when inferring stabilityKT-89961Compose crashes with StackOverflowError on a recursive full value classKT-89957Compose infers full value classes with uncertain properties as stable
Tools. Compiler plugins. Serialization
KT-81042Warn when Proto* annotations are applied to properties of inappropriate typeKT-69488Serialization: plugin should print a diagnostic or a warning when misusing@Serializable(with=...)KT-55738Report a diagnostic when@Serializableclass already has a serializer() function in companion with signature that matches plugin-generatedKT-66462Report a warning when the serializable class has a private companionKT-89275Kotlin/Wasm: Invalid Wasm is emitted for a@Serializablegeneric class with a class upper boundKT-89643Fix Protobuf tag reuse for full value classesKT-59088KJS / Serialization: Report a compiler error if@Serializableclass contains a property with dynamic typeKT-69067K2 + Serialization: provide a warning when plugin-related annotations are typealiasedKT-73207Report a compiler error when@Serializable(with) is applied and number of generic parameters does not matchKT-71680Report a warning when@Serializablepublic class has private serializer
Tools. Daemon
KT-83117Daemon mode: Clear jar caches at the end of the build
Tools. Gradle
New Features
KT-81782Enable CRI by defaultKT-74808Add Gradle DSL option for enabling unused return value checkerKT-88601Warn user on non-publishable targets when Kotlin Archive is enabledKT-88529Support compatibility mode with direct dependencies on platform components in KGP
Fixes
KT-90111Add missing generated files to 2.5.0 branchKT-88594Compatibility with Gradle 9.8 releaseKT-87910Implement Kotlin Archive (.kar) publication formatKT-87987Consume Swift Export metadata for published external dependenciesKT-87990Add consumer dependency overrides to Swift Export Xcode integrationKT-89323Consume Swift Export metadata for project dependenciesKT-85434Gradle: drop support for non-BTA JVM compiler execution modeKT-84114Bump the minimal supported Gradle version to 8.14.xKT-89340Adopt sources.jars publication to Kotlin ArchiveKT-87558Gradle: Remove property for disabling usage of non-packed klibsKT-88785Gradle: Remove kotlin.internal.classpathSnapshot.parseInlinedLocalClassesKT-88619Bump minimal supported AGP version to 8.8.2KT-88609Cleanup declarative Gradle prototype from ecosystem pluginKT-88583Kapt may unexpectedly load conflicting dependencies from the Gradle runtime classpathKT-73968KotlinDependencyManagement tries to mutate configuration after it was resolved
Tools. Gradle. JS
New Features
KT-88882Reimplement Node.js provisioning in KGPKT-88868Rework declaration and collection of npm dependencies in KGPKT-87087Integrate Analysis API based TypeScript generation into the KMP Gradle plugin as a separate taskKT-89230Expose allBrowserTestRunners as gradle named domain collectionKT-88856KGP/JS/Playwright: Provide Gradle test filtering arguments in KotlinJsTestsLocation
Fixes
KT-89605Use nodeJsToolchain in all tasks for nodeExecutableKT-88431Playwright JS tests don't run on Linux/ARMKT-88592Reporter option 'alsoWithHtml' has no effect. Because custom reporterOptions.Base was provided. In node-js testsKT-85440Remove kotlin-js pluginKT-89734Update JS tooling dependenciesKT-86683Use npm-installed mocha.js instead HTTP loaded variant in JS Browser test pipelineKT-89508JS/Wasm: Remove deprecated properties in NodeJsRootExtensionKT-89404wasmJs browser test returns timeout and cant load mocha.js and mocha.css because they are missing in the ems bundle
Tools. Gradle. Multiplatform
KT-89563KGP doesn't work with the new xcproj Xcode project formatKT-84736SPM import: the package name for the included build is just an underscoreKT-89413Multiplatform: jvmTest reports omit JUnit TestReporter.publishEntry entries on Gradle 9.4+KT-89900Disable partial resolution diagnostic in large projectsKT-86666Metadata (aka e.g. commonMain) unique_name does not include group prefixKT-87513Error deprecation for watchosArm32 targetKT-89878Raise deprecation to error for 'withJava()' APIKT-86611Deprecate hidden kotlin.mpp.freeCompilerArgsForSourceSet property
Tools. Gradle. Native
KT-89265K/N: Gradle 9.8 reports "Using the enum type KotlinNativeBundleArtifactsTypes as an attribute value type has been deprecated"KT-89480Changing swift export visibility doesn't affect incremental buildsKT-89622cleanSwiftImportFingerprintArtifacts fails to parse a fingerprint left by 2.4.20 after upgrading to 2.5.0-Beta1
Tools. Gradle. Swift Export
New Features
KT-78747Swift export for SPMKT-89803Swift package generation for Swift ExportKT-85687[Swift Export - Gradle] Add exposed and hidden dependency visibility overrides
Fixes
KT-90365Swift Export: rename Gradle properties to follow the naming conventionsKT-90020Swift Export: OutOfMemoryError in SwiftExportAction because of default 512 MB worker heapKT-90132Swift Export: Swift package export fails when Apple targets export different modulesKT-89393Report SwiftExportUnsupportedMetadataSchemaVersion when processing metadata from KotlinProjectSharedDataProviderKT-89495Changes in published metadata not picked up by Swift Export taskKT-89805Wire settings from the new Swift Export DSL into the Swift Export runKT-89720Add Swift Export metadata artifact to .kar archiveKT-89812Run Swift Export once per target and declare the outputs of its tasksKT-89680[Swift Export] Types from a transitive spm dependency are not exportedKT-89354embedSwiftExportForXcode can never be a no-opKT-89379Remove the ExperimentalExportDsl opt-in annotationKT-89289Move SwiftExportConfigurationCompat into the internal packageKT-88987Add an example to the documentation for the export.swift.rootPackage DSL property
Tools. Gradle. Wasm
KT-89269KGP/JS/Playwright: "Failed to load Kotlin WASM JS tests entry point TypeError"KT-87136K/Wasm: Add possibility to have a distribution without webpackKT-89832K/Wasm: deprecate node for wasmWasiKT-89521wasmJsTestBundleAsEsm fails instead of being skipped when there are no test sourcesKT-84258K/Wasm: Remove deprecated properties in BinaryenExecKT-89856K/Wasm: update Binaryen to 133KT-89813K/Wasm: Update wasmtime to 49.0.1KT-89510Wasm: Promote declarations deprecationsKT-87562K/Wasm: removeExperimentalWasmDslfrom wasm-js target-related declarations KGP
Tools. Incremental Compile
KT-90060Kotlin/JS: Internal compiler error "IrClassSymbolImpl is unbound. Signature: kotlin/Unit|null[0]" with incremental compilationKT-88539Incremental JS Klib compilation tests fail with LV 2.4+KT-89912Kotlin 2.4.20: JS/Wasm IC fails removing FIR-generated hint, then falls back to a full rebuildKT-90019IC: Classpath snapshot shrinking builds the reverse-impact resolver even when no classpath classes are referencedKT-89336IC: inferred interface member return type is not recompiled when its underlying type changesKT-89044K2 KMP JVM IC: Actual typealias overload change ignored by incremental compilationKT-89300K2 KMP JVM IC: Interface delegation causes IllegalStateExceptionKT-89342Investigate potential performance improvement for IC classpath snapshotting
Tools. JPS
KT-89464Compilation fails with NoClassDefFoundError in UtilsKtKT-88702Support incremental dumb-mode compiler execution with providing tracker data output for JPSKT-89569Remove copied APIs from JPS
Tools. Kapt
KT-70784Consider using LightTree instead of PSI in K2 KaptKT-89349Investigate failures in KAPT tests if one enables+CLBasedAnnotationResolutionKT-88608KAPT: Do not generate JTree in direct mode
Tools. Maven
KT-90004Maven and Gradle tests fail after scripting runtime migration
Tools. Performance benchmarks
KT-87324K/N: Add runtime benchmarks for release caches
Tools. REPL
KT-86291Drop GenericReplCompilerKT-89748K2 REPL tests: in-process and Analysis API REPL runners keep failed snippets in the historyKT-89747K2 REPL: a snippet failing after resolution stays in the history and consumes a snippet numberKT-89750K2 REPL: UNINITIALIZED_VARIABLE is not reported for snippet propertiesKT-89749K2 REPL: UNRESOLVED_REFERENCE to a previous snippet's class in a function with an implicit return typeKT-87432Implement JSR-223 variant on K2 compiler that compiles out of processKT-89459Remove-Xreploption fromkotlinc
Tools. Scripts
KT-90298JSR-223: ENGINE_SCOPE/GLOBAL_SCOPE bindings are lost after the ScriptContext is replacedKT-90299JSR-223: post-GC heap growth per evaluated snippet is ~6x higher in 2.5.20-dev-1225 than in 2.4.10 and ~3x higher than in 2.5.0-Beta1KT-90244Scripting, JSR-223: Each new ScriptEngine or ScriptContext retains its K2 compiler environment, leading to OutOfMemoryErrorKT-89627K2: a script processed before its definition's package sources causes 'Unresolved reference' in that packageKT-89220JSR-223: generic Java bindings break all subsequenteval()callsKT-89247Kotlin Script: NoClassDefFoundError on 2nd execution with transitive dependency from imported scriptKT-42101Scripts:@file:Import() in kotlin-main-kts uses a stale cacheKT-90022The completion doesn't work in main-kts scripts in IJKT-89752JSR-223 (K2): the engine's snippet number (repl.currentSnippetNo) is ignored by the compilerKT-74354Implement (and use) expected exceptions processing in K2 REPL tests
Tools. Statistics (FUS)
KT-88686Add FUS metrics to the new Swift Export DSL