github JetBrains/kotlin v2.5.0-Beta1
Kotlin 2.5.0-Beta1

pre-release6 hours ago

Changelog

Analysis API

  • KT-88945 Analysis API: annotation resolution drops a class id when a source annotation shadows a library one
  • KT-87460 Flaky (Embeddable)SwiftExport tests
  • KT-68896 Support VirtualFile binary dependency inputs to Analysis API modules
  • KT-65417 K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets

Analysis API. FIR

  • KT-88962 False negative [AMBIGUOUS_ANNOTATION_ARGUMENT] diagnostic in some corner cases
  • KT-87651 [Analysis API] Unexpected FIR status exception on SAM interfaces
  • KT-87572 Symbols from companion blocks have dispatchReceiver in stub-based version
  • KT-69727 K2 IDE. Wrong error in the editor on calling clone function of actual enum instance in non-jvm platform
  • KT-69726 FP errors on declaring fun clone() in actual enum in not-jvm source-set
  • KT-72660 ISE: Recursive update at org.jetbrains.kotlin.analysis.low.level.api.fir.caches.FirCaffeineCache.getValue
  • KT-62892 K2 IDE. Java outer class from other module is not resolved when nested class is accessed with fq name in a type position

Analysis API. Infrastructure

  • KT-84914 Do not publish analysis-api-test-framework
  • KT-87672 Eliminate class duplication in the Analysis API JARs
  • KT-87998 Move out Standalone components from the 'kotlin-analysis-api-surface' and 'kotlin-analysis-api-implementation'
  • KT-88404 Merge the decompiler text and stubs into one test case
  • KT-88371 Optimize symbol light classes tests
  • KT-87607 Test Federation: Review domain Analysis API Smoke & Contract tests
  • KT-86787 Stop publish analysis-api-fe10-for-ide
  • KT-87593 Migrate Analysis API tests on JDK 11
  • KT-87529 Test Data Manager: introduce a separate task for checks

Analysis API. Light Classes

  • KT-57537 SLC: propagate default parameter value from (@JvmOverloads) expect declarations to actual declarations
  • KT-88879 Value classes / JvmExposeBoxed: false-negative resolve for overridden exposed functions
  • KT-88861 Value classes / JvmExposeBoxed: internal method from value class is shown as valid call on java side but cannot be compiled
  • KT-88805 SLC: @JvmInline value classis treated asPsiClass#isValueClass`
  • KT-65385 K2 IDE: Light classes incorrectly expose Companion class and the corresponding static field if the companion object is generated by a compiler plugin
  • KT-67711 K2: Pointer already disposed from SLC/AI

Analysis API. PSI

  • KT-89032 Missing PSI utilities for companion blocks
  • KT-88925 Restrict the KtElement hierarchy with @SubclassOptInRequired
  • KT-88788 Refine the new resolution API (PSI-part)
  • KT-74070 Cover the Kotlin PSI with KDocs
  • KT-87819 UseScope of private interfaces is incorrect
  • KT-85052 Move mutation methods out of the Kotlin PSI

Analysis API. Providers and Caches

  • KT-77194 Analysis API: Move union and intersection scope merge strategies to the Analysis API
  • KT-87231 Analysis API: Fallback dependencies must have a binary-only base content scope
  • KT-86402 False positive MISSING_DEPENDENCY_SUPERCLASS when using Scala case class in Kotlin
  • KT-87680 Analysis API: LL FIR sessions contain redundant BuiltinTypes instances

Analysis API. Standalone

  • KT-89242 Analysis API Standalone: KLIB/JAR file handles remain open after session disposal
  • KT-61404 Analysis API: implement proper library publishing structure
  • KT-88362 PsiMethod.findSuperMethods() always returns an empty array
  • KT-84851 Analysis API Standalone: 75% of CPU time spent in StringsKt.split via trie-based library scopes

Analysis API. Stubs and Decompilation

New Features

  • KT-10793 Improve decompiled text for annotations
  • KT-87857 Support strict equals in stubs
  • KT-85756 Support annotation arguments in the decompiler

Performance Improvements

  • KT-88067 Implement stub-based initializer for constant properties
  • KT-88060 Make KtParenthesizedExpression stub-based
  • KT-79396 Make KtBinaryExpression stub-based
  • KT-79397 Make KtUnaryExpression stub-based
  • KT-71787 PsiRawFirBuilder.Visitor#visitStringTemplateExpression forces AST loading

Fixes

  • KT-88984 compiler-common and analysis-api-impl-base cyclic depend on each other
  • KT-78356 Migrate stubs from stub element type to stub factories
  • KT-88500 Support multi-field value classes in Analysis API stubs / decompiler
  • KT-52806 Store type in callable stubs when callable have implicit type and trivial initializer
  • KT-77096 Implement more stub-based annotation arguments

Analysis API. Surface

New Features

  • KT-84255 Expose possible smart casts from ContextCollector in KaScopeContext
  • KT-88985 Refine the new resolution API around error handling
  • KT-88521 Analysis API surface: support "Strict equals" (equality bound types) language feature
  • KT-86610 Rework KaDiagnosticProvider to be more flexible
  • KT-68881 Analysis API: Introduce KaType.classId
  • KT-87311 Propagate psi from generated declarations to KaSymbols

Fixes

  • KT-84186 Unresolved annotation ClassId returns ""
  • KT-89175 Add contracts to the new resolution utilities
  • KT-88767 Refine the new resolution API
  • KT-87557 'Analysis API Public API Checks' run configuration should include the artifacts checks
  • KT-89030 [Analysis API] Generalize KaFirNestedInLocalClassFromCompilerPluginSymbolPointer
  • KT-73195 AA FIR: missing annotations on function literal
  • KT-82397 KaFunctionType should offer context parameter types, not context receivers
  • KT-88645 Stabilize KtResolvable(Call)
  • KT-88489 resolveToCallCandidates throws ClassCastException for callable reference expressions resolveToCallCandidates
  • KT-85528 Move diagnostic classes out of analysis-api-fir
  • KT-63221 K2: Analysis API: rework getDiagnosticsForElement API
  • KT-87210 KaSubstitutor.Empty shouldn't be a class
  • KT-75549 Deprecate KaTypeProvider#collectImplicitReceiverTypes
  • KT-54508 Re-design 'javaGetterName' and 'javaSetterName'
  • KT-86591 Rethink how the context parameters feature could be integrated into the Analysis API Surface
  • KT-87564 Analysis API: nested type alias qualifier resolves to expanded type owner
  • KT-87924 Consider dropping KaType.is*Type utilities
  • KT-87552 Compiler-internal types leak into the public Analysis API surface
  • KT-87578 Explicitly split implementations and APIs in symbols
  • KT-69959 fakeOverrideOriginal should support value/type/receiver parameters
  • KT-87338 Drop KaTypeParameterOwnerSymbol
  • KT-87343 AA: hasDefaultValue is incorrect for parameter of actual constructor
  • KT-73946 Analysis API: Add a way to navigate from "KaPropertySymbol" to "KaValueParameterSymbol" for primary constructor properties
  • KT-81264 K2 AA: KaValueParameterSymbol.hasDefaultValue is false for overriding or actual functions

Backend. Wasm

New Features

  • KT-88027 K/Wasm: Export cabi_realloc function from stdlib to support components

Fixes

  • KT-87125 K/Wasm: share a common base class for all suspend functions
  • KT-89009 [Wasm/MMCW] Compilation fail with exception on simple project
  • KT-87742 K/Wasm: initialization of properties with default value different from JVM
  • KT-87746 K/Wasm: Investigate if it is possible to enable floating point const folding on Wasm backend
  • KT-88808 K\Wasm: separate CoroutineImpl and CoroutineImplStackSwitching
  • KT-66089 K/WASM: assertSame failed in test static_smallIntIdentity.kt
  • KT-87862 K/Wasm: introduce a separate diagnostic ID for companion object inside external interface
  • KT-88434 K/Wasm: JS-to-Kotlin closure converter is shared between different external function types with the same JS-erased signature, injecting a wrong cast
  • KT-88543 K/Wasm: Automatically clean test output by default
  • KT-85772 K/Wasm: implement companion blocks and extensions
  • KT-83171 K/Wasm: Investigate import.meta usage in mjs files
  • KT-79411 K/WasmJs: "Can't link symbol kotlin.js/js|js(kotlin.String){}[0]"
  • KT-88387 K/Wasm: DWARF debuginfo accidentally swaps files and folders
  • KT-88366 [Wasm] mute failing coroutines stack switching test via WASM_IGNORE_FOR directive
  • KT-87583 Wasm IC cache is not invalidated when kotlin.wasm.compilationMode changes causing IndexOutOfBoundsException in WasmDeserializer
  • KT-87687 Investigate whether unboxing needed when accessing suspendResult in transformed doResume for suspend function
  • KT-87128 K/Wasm: investigate possible optimization of suspend "helper" functions
  • KT-87329 K/Wasm: child companion block static initializer runs before parent initializer in single-module mode
  • KT-87109 K/Wasm: Companion block initializer block fails in multi-module scenario

Compiler

New Features

  • KT-87345 Swift Export: Support proper exception throwing from sync bridges in cross-language inheritance
  • KT-87767 Add JVM target bytecode version 27
  • KT-80964 Improve error messages for compile-time constants
  • KT-87412 Kotlin/Native: use JVM-like class initialization scheme with CompanionBlocksAndExtensions
  • KT-88415 Java type enhancement: support org.chromium.build.annotations nullability annotations as JSpecify equivalents
  • KT-87419 (De)serialize attribute set for strict equals
  • KT-86129 Strict equals checks
  • KT-87418 Incompatible == / != checks based on @EqualityBound
  • KT-86124 Set attribute equalityBoundType to parameters
  • KT-87498 Strict equals x interface delegation
  • KT-87417 Generate prologue of strict equals in Fir2Ir
  • KT-87420 Set equalityBoundType attribute for generated equals in data and value classes
  • KT-86127 Add smart casts based on strict operator equals
  • KT-87422 Smart casts inside the body of strict equals
  • KT-81676 Improve error reporting for underscores as type parameters
  • KT-58562 More concise error for "Incompatible classes were found in dependencies"
  • KT-80373 Add initial support for release compiler caches
  • KT-68819 Don't report "no corresponding expect/actual declaration" when signature contains error types
  • KT-85925 Native: rework virtual trampolines machinery
  • KT-83040 Collection literals: ensure normal interaction with CFG
  • KT-79656 Use org.jetbrains.annotations.UnmodifiableView and/or org.jetbrains.annotations.Unmodifiable to infer read-only types for Java entities

Performance Improvements

  • KT-57995 Extra anonymous class is created for lambda after upgrading from Kotlin 1.6.10 to 1.7.20
  • KT-89131 JVM: Hoist ResultKt.throwOnFailure out of SuspendLambda.invokeSuspend switch cases
  • KT-615 Optimize instanceof check for nullable type
  • KT-49139 NI: EnumMap constructor call in Kotlin source causes OutOfMemoryError during compilation and analysis in IntelliJ Idea
  • KT-52283 Never ending type inference while compiling Kotlin code with lots of self pointing generics
  • KT-85899 Performance problem around the second incorporation kind
  • KT-86022 K2 frontend hangs in approximateToSuperTypeWithRecursionPrevention
  • KT-88383 K/N CallGraph: Eager check before pushing elements onto the stack
  • KT-88352 JVM: redundant Character box/unbox and Ref.IntRef when a bound callable reference is passed to an inline function from within another inlined lambda
  • KT-88435 Kotlin/Native: Avoid redundant filtering in DevirtualizationAnalysis
  • KT-87033 [Native] Optimize dumpObjcSelectorToSignatureMapping to execute during frontend phase, bypassing IR linking
  • KT-87952 Bound receiver wrapped in a cast is needlessly stored in a $receiver field for property reference delegation
  • KT-87896 Make check for JvmFieldApplicabilityProblem.NOT_PUBLIC_VAL_WITH_JVMFIELD not quadratic
  • KT-69758 FastJarFS - avoid copying data on inflating (JDK 16+)
  • KT-83068 Investigate long compilation times with many generics & overloads
  • KT-66469 Long compilation with mockk import

Fixes

  • KT-88715 K/N: "Argument list too long" when linking with a large number of included static libraries
  • KT-86978 Type arguments are allowed (and unresolved) in qualifiers in compiler-required annotations
  • KT-87372 False positive INVISIBLE_REFERENCE when accessing protected companion block member of superclass
  • KT-87284 Implement type conversion from ILT/builtin numeric types into types marked with a special annotation
  • KT-88953 CCE caused by suspend conversion of nullable argument to nullable expected type
  • KT-86453 K2: Generate IrRich*Reference for all kinds of references
  • KT-86046 Put @K1Deprecation to all public declarations of K1 modules
  • KT-89325 Java Direct: no supertypes on resolution due to reentrance
  • KT-89184 JVM: anonymous function SAM-converted via invokedynamic loses its non-null parameter assertion
  • KT-89183 JVM: LambdaConversionException on JDK 9+ when a SAM method parameter is a type parameter with two interface upper bounds
  • KT-87385 Ensure that KMP mismatches in libraries in the HMPP scheme are reported reasonably
  • KT-87146 False negative REPEATED_ANNOTATION with actual typealias
  • KT-88339 JvmExposeBoxed: no null check is generated in exposed methods
  • KT-85879 Get rid of second incorporation kind in inference
  • KT-88995 Inline scopes numbers: wrong call site line numbers when a default argument value contains an inline call
  • KT-87499 ClassCastException "Float cannot be cast to Unit" when a suspend function's result is discarded in a when-branch
  • KT-79212 Resolve new type for class literal of unbounded reified type parameter
  • KT-88399 K2: StackOverflowError in FirPrefixAndSuffixSyntaxChecker.getLeaf for a long string-concatenation chain
  • KT-89057 IllegalArgumentException: source must not be null in FirOverrideChecker
  • KT-89049 JVM: do not generate DefaultImpls for companion block functions
  • KT-89043 Explicit context arguments: align sinceVersion with the 2.6.0 Stable plan
  • KT-77362 JVM diagnostics are not properly reported for scripts and REPL
  • KT-86556 Account for CSR in compiler required annotations transformer
  • KT-87020 Type aliased AnnotationTarget used in @Target()`
  • KT-87072 SINCE_KOTLIN doesn't work with non-literal arguments
  • KT-87025 Support aliased imports to compiler required annotations
  • KT-89123 Keep the visibility inconsistency about data class copy and primary constructor as a warning
  • KT-89065 JVM: companion block functions in interfaces do not compile with -jvm-default=disable
  • KT-89087 JVM: Initialization order of companion blocks is incorrect
  • KT-87940 [DFA] Remove VariableStorage
  • KT-88388 JvmExposeBoxed: Exposed constructor leads to NSME from another module
  • KT-88325 JvmExposeBoxed: False-positive "no effect" warning on extension properties
  • KT-88369 JvmExposeBoxed on overrides makes KAPT generate a standalone method with faulty @Override annotation
  • KT-87540 Fix potential issues in explicit context arguments implementation
  • KT-89013 K/N: auto-built release compiler caches are compiled at O1, not O3
  • KT-88260 java-direct: support Java 25 module import declarations (JEP 511)
  • KT-88304 java-direct: JavaUsingAst tests silently fall back to the PSI-based finder, hiding java-direct failures
  • KT-88078 Java Direct: Refactor binary class finder entanglement
  • KT-86376 New inline variables scheme: incorrect line number
  • KT-87825 Implement new frontend rules for companion blocks in interfaces
  • KT-87437 Restrict interface companion block properties
  • KT-89008 Constant condition elimination may break debug information of inline scopes
  • KT-89016 Replace early return with assertion in function type conversion
  • KT-88667 False negative POSITIONED_VALUE_ARGUMENT_FOR_JAVA_ANNOTATION on @get: use-site target and annotation constructor call
  • KT-87330 Introduce Static Initialization Control Flow Graph for Classes
  • KT-88427 K2: compiler crashes with IllegalArgumentException when escaped class name containing braces is used in diagnostic type rendering
  • KT-88961 K2: FirPrefixAndSuffixSyntaxChecker misses literal prefixes/suffixes outside binary expressions with the LightTree parser
  • KT-88576 False-negative OVERLOAD_RESOLUTION_AMBIGUITY on increment call in recursive initializer
  • KT-88934 Error in IrConstExpressionTransformer when lowering constant expression in subject for function reference
  • KT-88811 Compiler crashes with "IllegalArgumentException: List has more than one element" when separate KMP compilation is combined with useMetadataOnIncrementalClasspath
  • KT-88312 Implement 'returnsParameter' contract
  • KT-88307 Support actualization of multiple top-level expect functions with the same actual
  • KT-88012 Abstract diagnostic factories from source types
  • KT-88580 Kotlin/Native Release: "Unexpected receiver type: kotlin.collections.ArrayList" in generic collection code
  • KT-88316 K/N: StackOverflowError in CastsOptimization when two nullable local variables are assigned to each other across nested loops
  • KT-88770 KMP separate compilation: false-positive SUBCLASS_CANT_CALL_COMPANION_PROTECTED_NON_STATIC
  • KT-88769 KMP separate compilation: incorrect EXPECT_ACTUAL_INCOMPATIBLE_CLASS_SCOPE in case of complex inheritance by delegation
  • KT-88860 Fir2Ir crash "Expected argument type to be Nothing?" when a non-null value is null-checked and passed to a generic function
  • KT-64219 K2, Wasm: Green expect-actual code allows for invalid external type hierarchy
  • KT-88761 Native: remove custom validation phases
  • KT-87788 Incorrect smart cast stability of implicit when subject variables
  • KT-77718 K2: Remove workaround for KDF in FIR2IR implicit cast generation for receivers
  • KT-85368 ConstraintIncorporator#insideOtherConstraint is order-dependent
  • KT-78002 K2: local class function annotation observes the function parameters
  • KT-88218 -Xheader-mode: inline function bodies replaced with aconst_null/athrow stubs instead of being preserved
  • KT-53422 NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER in flow.collect
  • KT-71754 PCLA: compile-time failure on fixing a type variable on demand for an indexing operator assignment
  • KT-64802 K2: Investigate behavior change related to PCLA+Captured types+ILT
  • KT-88228 JVM: IllegalAccessError at runtime when delegating property to private member of sealed superclass
  • KT-88455 AssertionError "Inconsistent target list for lambda annotation" when Java annotation applied to lambda
  • KT-67462 Use new lowering phase creation API in Native backend
  • KT-71600 K2: missing WHEN_ENUM_CAN_BE_NULL_IN_JAVA
  • KT-36111 False negative warning on exhaustive when with flexible type of sealed class in subject
  • KT-88190 False positive UNEXHAUSTIVE_WHEN_BASED_ON_JAVA_ANNOTATIONS
  • KT-88766 K2 KMP JVM IC: "NoSuchElementException: Key Module is missing in the map" when an actual and its expect are recompiled together
  • KT-87967 Implement deprecation warning for concurrent maps purely implementation hierarchy
  • KT-87165 [K/N] computeTypes phase breaks boxed equality
  • KT-88721 KMP Separate Compilation: missing fake-override for internal declaration from a friend module
  • KT-88099 "ArithmeticException: / by zero" caused by Int.mod on division by zero in constant evaluation
  • KT-88332 IntrinsicConstEvaluation: false positive "const val initializer must be a constant value" on division by non-zero value that overflows to int zero
  • KT-88326 Enable IntrinsicConstEvaluation since 2.5
  • KT-88662 Render the actual receiver type in UNRESOLVED_REFERENCE_WRONG_RECEIVER
  • KT-88013 Native: migrate CastsOptimization from Predicate.Empty to Predicate.True and fix Predicates.or
  • KT-88132 False positive INCORRECT_RIGHT_COMPONENT_OF_INTERSECTION when typealias for Any used as right component of definitely-not-nullable supertype
  • KT-87659 No warning emitted when runtime-retained annotations on lambdas are silently discarded by invokedynamic codegen
  • KT-84499 Kotlin/Java interop: type mismatch when overriding methods from Java class with module import declaration (Java 25)
  • KT-70450 OuterThisLowering - consider merging it into InnerClassLowering
  • KT-87881 IllegalStateException: Expected some types crash in FIR type inference when buildList contains implicit receiver call and nested when expression with !is smartcast
  • KT-88340 'returnsResultOf' contract works incorrectly with named arguments
  • KT-88191 KMP Separate Compilation: Problems with throwNoWhenBranchMatchedException function
  • KT-87389 Change companion extension metadata serialization format
  • KT-88480 KMP parser: string literal content is remapped to IDENTIFIER if it matches a soft keyword
  • KT-88408 [IR] Consider eliminating ModuleDescriptor from IrActualizer module diagnostics
  • KT-87983 CCE on member extension property delegated to bound property reference
  • KT-88487 Return value checker: unresolved TODO about Array.contains in stdlib
  • KT-88102 Incompatible return type in delegated member not reported if it implements intersection override
  • KT-85403 kotlin.NoWhenBranchMatchedException on Kotlin Native with sealed interface
  • KT-87922 K1FakeDescriptorsForReferencesKt classes duplicated between kotlin-scripting-compiler-embeddable and kotlin-build-tools-impl
  • KT-73462 AssertionError "FUN LOCAL_FUNCTION_FOR_LAMBDA has no continuation" on suspend lambda with parameter of functional type called from another file
  • KT-87549 @IntroducedAt does not work correctly with inheritance
  • KT-87887 KJS: Prefix increment on dynamic array access is lowered into no-op
  • KT-87129 Decide what to do with tests in ScriptGenTest
  • KT-67014 K1/K2 handle when expression as annotation target differently
  • KT-80741 Fix rendering of inner classes with generic outer classes
  • KT-86119 JVM builtins dump for JDK21 does not include methods introduced after JDK8
  • KT-86742 JVM: missing accidental override error on companion block members
  • KT-86109 K2: Compiler crash on mix of static/companion in jkj hierarhy
  • KT-88103 Java Direct: use FirLazyJavaAnnotationList to avoid cycles in enums
  • KT-88101 Java Direct: Deduplicate repeated type resolution logic
  • KT-88064 Java Direct: Use lexer for lightweight "pre-parsing" instead of regexes
  • KT-88079 Java Direct: Get rid of VFS and VirtualFile use
  • KT-88066 Java Direct: (Re)introduce lazy AST calculations
  • KT-87368 Adjust the message of IMPOSSIBLE_IS_CHECK
  • KT-87664 JvmExposeBoxed: exposing constructor of ordinary class changes behavior
  • KT-88134 Improve diagnostics for name-based-destructuring=complete and using obsolete syntax
  • KT-88149 Mention operator token in UNRESOLVED_REFERENCE_WRONG_RECEIVER
  • KT-65832 K2: Support diagnostic suppression with complex expression argument
  • KT-81416 Native: compiler fails in case of cross-module Volatile references
  • KT-86740 K/JS: IllegalStateException "Serialization of IrErrorType is not supported" when type variable is inferred into empty intersection
  • KT-88127 Remove or replace usages of psiElement util
  • KT-88128 Rewrite JvmBackendClassResolver to get rid of descriptor usages
  • KT-88141 False negative MANY_IMPL_MEMBER_NOT_IMPLEMENTED when method is called equals, hashCode or toString
  • KT-86543 IllegalStateException: Parent of this declaration is not a class: PROPERTY IR_EXTERNAL_DECLARATION_STUB
  • KT-88142 False negative INTERFACE_AS_FUNCTION when Java interface contains function called toString, equals or hashCode with receiver or context parameters
  • KT-87261 K/N debug: 'is' check miscompilation — local variable reports wrong type when two smart-cast extractions precede an inline loop
  • KT-87830 Complementary value sets should include non-direct inheritors of supertypes
  • KT-87103 Drop compiler/fir/dump
  • KT-86131 Deprecate language version 2.2
  • KT-88045 Delete leftovers of javac integration (javac-wrapper) subsystem
  • KT-87577 Compiler crash on red code with ambiguous type parameter used as expression
  • KT-87931 CCE caused by suspend conversion in receiver position
  • KT-87676 Context Parameters: Cannot find local variable '$context-String' with type java.lang.String when evaluating contextual call that uses lambda context parameter
  • KT-87061 Companion blocks: compilation fails when companion function names clash with enum methods
  • KT-86518 K2: Enrich NoWhenBranchMatchedException with additional information about the cause
  • KT-88007 Don't report equals(Any?) in companion blocks of interfaces
  • KT-87926 USELESS_JVM_EXPOSE_BOXED confuses in case of argument presence
  • KT-61582 Kotlin/Native: deprecate and remove -generate-worker-test-runner
  • KT-87821 Do not promote visibility of local lambda classes in private inline scopes to Public
  • KT-80005 Kotlin/Native: remove eager GlobalData initialization
  • KT-87975 Reenable inline checks in noinline parameter default values
  • KT-87255 CompanionBlocksAndExtensions: companion blocks initialized before enum entires
  • KT-81816 False positive "Unreachable code" with lambda and elvis
  • KT-87864 K2IdeK2CodeKotlinSteppingTestGenerated$StepOver$Uncategorized.testSoSuspendableCallInEndOfFun fails
  • KT-82676 Replace reflection-based RuntimeFeatureToFlagMap with code generation
  • KT-29890 Inline constructors for arrays could not be inlined
  • KT-72903 K/N: combine Context and KonanBackendContext
  • KT-82462 Context sensitive resolution can use extension properties from imports
  • KT-82465 Context sensitive resolution does not resolve extension properties in presense of any additional receiver
  • KT-82461 Context sensitive resolution can use extension properties declared on Any receiver
  • KT-87269 Kotlin Debugger: ISE “Non-empty unresolved argument list.” on evaluating serializable value class with custom serializer
  • KT-65195 K2: Unexpected exception when executing dynamic array element inc/dec
  • KT-87297 'Underscore for unused variable' feature should be stable and enabled by default
  • KT-87838 IntroducedAt: Using @IntroducedAt in ordinary class constructor with inline class parameters leads to platform declaration clash
  • KT-87189 False negative NoWhenBranchMatchedException: when subtype implements multiple sealed interfaces
  • KT-87466 JvmExposeBoxed: Cannot generate code for delegating constructor of data class in IJ
  • KT-87725 Prohibit lambda implementations of sealed Java interfaces
  • KT-87436 Separate LFs and compiler arguments for companion extensions
  • KT-85143 Remove the unfinished "compile against klib" feature on JVM
  • KT-75945 Indy: Allow lambdas with annotations
  • KT-84802 Add new synthetic class flag to JVM metadata
  • KT-86635 Analysis API: arguments of applied annotation is sometimes (incorrectly) empty
  • KT-87553 K2: Incorrect argument evaluation order with explicit context argument in presence of explicit extension receiver
  • KT-87546 Fix slightly confusing test data for explicit context arguments in case of Java override
  • KT-87696 NBD doesn't work for smart-casted MFVC
  • KT-87695 Compiler crash while compilation of MFVC destructuring with a variable name mismatch
  • KT-85307 "Type argument is not within its bounds" for Java classes with recursive generic bounds (F-bounded polymorphism)
  • KT-87202 K/N IC: NoSuchFileException: metadata.properties when upgrading Kotlin from <2.2.10 to >2.2.20
  • KT-87606 Compiler crash on red code with redeclaration of type parameter which is used as expression
  • KT-87786 Make ConeLookupTagBasedType into a sealed class
  • KT-86554 Check suspicious when over ConeKotlinType in JavaOverrideChecker
  • KT-87775 Incorrect RETURN_VALUE_NOT_USED_COERCION where regular 'Return value not used' was expected
  • KT-87073 CompanionBlocksAndExtensions: calling companion extension function from project/binary dependency fails with java.lang.IndexOutOfBoundsException
  • KT-84780 The INITIALIZER_TYPE_MISMATCH diagnostic is reported on the assignment operator (=) instead of the initializer expression when there is a type mismatch
  • KT-87335 Context parameters: wrong LINENUMBER emitted for context argument loads in JVM bytecode
  • KT-86332 False positive MISSING_DEPENDENCY_IN_INFERRED_TYPE_ANNOTATION for implicit lambda parameters with inaccessible type annotations
  • KT-87273 K/N IC: cinterop klib caches are not recompiled
  • KT-84562 Get rid of usages of @K1Deprecation-annotated declarations in JVM backend
  • KT-87550 Drop the "too complex expression" error with @IntroducedAt
  • KT-87505 False positive INVALID_VERSIONING_ON_VALUE_CLASS_PARAMETER on value class secondary constructor with @IntroducedAt
  • KT-87504 Do not make @IntroducedAt a compiler-required annotation
  • KT-87194 K/N IC: changing an external library to an already-cached version in ~/.konan doesn't rebuild application's cache
  • KT-82677 Switch latest stable version in Kotlin project to 2.5
  • KT-84406 Remove support for IR serialization in JVM
  • KT-72706 Confusing "INVISIBLE_REFERENCE" when calling private constructor
  • KT-87592 Kotlin/Native: make remove redundant safepoints phase a proper LLVM pass
  • KT-87520 Implicit JvmExposeBoxed breaks delegation by interface
  • KT-87278 Smartcast to Any in RHS of == with nullable type parameter
  • KT-83575 Native: perf logging doesn't work correctly for subcompilations (like per-file caches)
  • KT-73771 K2: Infinite compilation caused by buildList without type
  • KT-85417 K2: False negative SUBCLASS_CANT_CALL_COMPANION_PROTECTED_NON_STATIC diagnostic when superclass is generic
  • KT-30062 "AssertionError: Recursion detected on input" with class implementing itself by delegation
  • KT-87507 False-positive ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED on fake-override with value parameter of type missing in dependencies
  • KT-87413 CompanionBlocksAndExtensions: impossible to use field in companion extension properties getters/setters
  • KT-87351 False positive WRONG_MODIFIER_CONTAINING_DECLARATION on internal companion block members in interface
  • KT-87364 False positive BACKING_FIELD_IN_INTERFACE on companion block member in interface
  • KT-87360 False positive DELEGATED_PROPERTY_IN_INTERFACE for delegated companion block member in interface
  • KT-87347 False negative NON_ABSTRACT_FUNCTION_WITH_NO_BODY/MUST_BE_INITIALIZED for companion block member in interface
  • KT-86905 DFA-based exhaustiveness bug with implicit companion access
  • KT-85764 Native: Prohibit compiling sources in 'kotlin' package by default
  • KT-86464 Support isPublicAbi JVM metadata flag for anonymous and synthetic local classes
  • KT-86524 JvmExposeBoxed: Collection does not implement abstract method
  • KT-80247 No diagnostic on unresolved type annotation from a dependency in an inferred type
  • KT-85230 False negative deprecation diagnostics on import of member of nested class
  • KT-85188 Don't poison binaries with companion blocks & extensions for LV >= 2.5
  • KT-63454 Properly check that inline fun is in the same module as callee in IrSourceCompilerForInline
  • KT-71854 K2 IDE. False positive red code because of external annotation on a generic parameter
  • KT-82132 False-positive type mismatch with -language-version 2.2
  • KT-59526 Store annotation default values in metadata on JVM
  • KT-57802 K2: Backend Internal error: RecordEnclosingMethodsLowering.kt
  • KT-11474 ISE: Requested A, got foo.A in JavaClassFinderImpl on Java file with package not matching directory

Compose compiler

  • b/555304803 Fixed a bug that made Compose stack trace mapping collection fail in certain cases in which a boolean variable was captured in a suspend lambda.
  • b/539644912 [Compose] Support rich callable references for @Composable functions
  • b/546101628 Fixed a bug that caused miscompilation whenever a when expression had a result that was computed by another when expression, and the inner when expression had a @Composable call in one of its conditions.
  • b/549552317 Fixed a bug that, in certain cases, prevented execution of non-local return statements inside lambdas called from when expressions.
  • b/481422057 Made the applier inferencer support repeated ComposableTarget annotations per the semantics described in the documentation of ComposableTarget
  • b/530458587 Start initializing the fields of ComposableSingletons objects lazily

IR. Inlining

  • KT-81022 KLIB inliner: Don't specify language features in test runners for IR Inliner on 1st stage
  • KT-87521 renderCascadingInlining throws NPE when reporting an AFU-transformed function
  • KT-87829 Volatile field leaking through internal inline function in friend module
  • KT-86578 Leaking of a private entity through a companion extension: cross-module case
  • KT-88020 [KLIBs] Enable cross-module inliner in stdlib & kotlin-test
  • KT-86558 Forbid accesing volatile references after inlining

IR. Interpreter

  • KT-84627 Disable IR interpreter in the compiler
  • KT-87043 Remove IR interpreter sources from the compiler

IR. Tree

Fixes

  • KT-88864 Cache deserializers using a stable key inside IR linker
  • KT-88610 Type parameter is out of bounds while returning fallback value
  • KT-88693 Investigate using the same IR validation settings for all backends
  • KT-70048 IR: remove addSimpleDelegatingConstructor
  • KT-85576 KLIBs: Add PL tests with companion blocks and companion extensions
  • KT-87456 Make sure IR renderer is working correctly with isStatic call
  • KT-69305 Re-enable reporting out-of-scope type parameter usages during pre-lowering IR validation
  • KT-88146 Replace IrDeclaration.module with IrDeclaration.moduleFragment
  • KT-84335 [Klib] Carefully revise usage of IR validator checkers in testrunners
  • KT-88177 IR: Mark DescriptorVisibility.isVisible with @ObsoleteDescriptorBasedAPI and ensure it is not used outside the old frontend and psi2ir
  • KT-77049 Avoid failing to produce an IR dump in tests
  • KT-87198 IR: Add IrModuleFragment link to IrExternalPackageFragment
  • KT-87300 IR: Replace module reference in ir.declarations.createEmptyExternalPackageFragment from ModuleDescriptor to IrModuleFragment
  • KT-87438 Make sure there are no duplicated names in lowerings on first and second stages
  • KT-87732 Don't use IrBuiltInsOverDescriptors in KLIB tool's dump-ir-inlinable-functions command
  • KT-87962 [IR] Add a checker that IrClass.superTypes is not empty
  • KT-85896 Type parameter is out of bounds (in setter) for a property with context parameters
  • KT-85698 Type parameter is out of bounds (in setter) for an extension property with type parameter
  • KT-78960 [FO] Limit static fake overrides generation for static functions
  • KT-83236 PeopleInSpace_mpp compilation error: The symbol table has been sealed

JVM. Reflection

New Features

  • KT-85904 Reflection: add a way to get companion extension class

Performance Improvements

  • KT-84354 kotlin-reflect: replace usages of SoftLazy with regular safe-publication lazy
  • KT-87408 kotlin-reflect: KCallable.callBy on a bound ::copy reference is ~55x slower since 2.2.20

Fixes

  • KT-80710 Reflection: change KCallable representation to avoid dependency on K1
  • KT-89280 NoSuchElementException in argumentsMakeSenseOnlyForMutableContainer for Java non-static inner class of generic outer class
  • KT-87709 Reflection: "invoke" in classes inheriting from suspend function types is loaded incorrectly
  • KT-87948 Reflection: AssertionError "Different tree sizes of bounds" on inheritance from Java raw class with self-recursive bound with method override
  • KT-87581 Reflection: extra abstract invoke() method shown for a Java class implementing a functional interface in the new implementation
  • KT-87464 Reflection: property accessor parameters are equal to property parameters in the new implementation
  • KT-87369 Reflection: KClass.members fails on Java class with self-referential raw type bounds
  • KT-88145 Investigate potential bug caused by incorrect statics handling in KClassImpl.Data#getInlineClassUnderlyingType
  • KT-87367 Reflection: memberFunctions fails on suspend-implementing classes
  • KT-87365 Reflection: java.util.LinkedList::class.supertypes contains a duplicate MutableList<E!> entry in the new implementation
  • KT-87363 Reflection: kotlin.Any constructor exposes @IntrinsicCandidate annotation in the new implementation
  • KT-87356 New Reflection: KotlinReflectionInternalError on .annotations of primitive/array constructors
  • KT-86926 Reflection: references to functions inherited in Java are not substituted in the new implementation
  • KT-87308 Reflection: KTypeParameter instances not equal for bound/unbound KProperty

JavaScript

New Features

  • KT-88294 Add es2020 target for Kotlin/JS and Gradle plugin
  • KT-88024 KJS: Allow exporting interfaces nested in other interfaces to JavaScript
  • KT-49791 KJS: Provide option to export dynamic and Any as unknown
  • KT-49795 KJS IR: Allow typealias of exportable type to be exported
  • KT-56493 KJS: Export documentation to generated d.ts files

Fixes

  • KT-87127 KJS: @JsPlainObject factory contains duplicated parameters
  • KT-87516 [K/JS, K/Wasm] Companion objects coming from super interfaces are not initialized
  • KT-86954 K/JS: hashCode() of Double/Float disagrees with equals() for NaN values
  • KT-89144 [JS, Wasm] static_init_called field for static initializers is not initialized correctly
  • KT-88463 K/JS: Rewrite JsToStringGenerationVisitor to Kotlin
  • KT-87753 Add "scopes" decoding to ECMA426BasedSourceMapParser
  • KT-88571 K/JS: "llegalStateException: Internal error: cannot find external signature" caused by @Serializable enum in 2.4.20-RC
  • KT-88698 [K/JS, tests] Remove obsolete DISABLE_IR_VISIBILITY_CHECKS from kotlinx-serialization test data
  • KT-87774 KJS: Refactor org.jetbrains.kotlin.js.testOld.utils.DirectiveTestUtils
  • KT-87008 K/JS: Preserve containers' names when lifting static members in StaticMembersLowering
  • KT-17719 JS: integer division by zero does not throw exception
  • KT-86771 KJS: @JsExport.Ignore on a Long member still triggers the -Xes-long-as-bigint compilation error
  • KT-86273 @JsExport.Ignore does not work properly with data classes properties
  • KT-87901 KJS: Perform WhileConditionFolding on IR instead of JS AST
  • KT-88117 K/JS: duplicated expression in generated JS comma expression for IrComposite
  • KT-88015 KJS: Exported sealed interfaces should not be implementable from TypeScript
  • KT-87352 Kotlin/JS: Ignore typealias inside @JsExported class
  • KT-87793 [Wasm, JS, IC] Invert IC cache invalidation keys list
  • KT-86648 [K/JS] Support companion blocks and extensions in TypeScript export
  • KT-86934 K/JS: Stack overflow when implementing interface with suspend fun using anonymous object
  • KT-87377 External classes can have field names colliding with minimized subclass field/method names
  • KT-80188 Design exporting of suspend lambdas into JS/TS
  • KT-86437 Incorrect handling of array destructuring with elision
  • KT-86433 JSCODE_ERROR for object destructuring assignment with default values
  • KT-85990 K/JS: Default parameter values ignored in @JsStatic suspend functions when class is exported
  • KT-75176 Add infrastructure for bundle size testing
  • KT-73067 Drop support for the legacy JS metadata from the metadata decompiler
  • KT-13338 JS: don't generate new class/object for empty enum entry

Klibs

New Features

  • KT-86081 KLIBs: Support moving companion fun to parent class

Fixes

  • KT-87965 [Tests][Klibs] Allow generated version overload wrappers appear during pre-serialization lowerings as legitimate Klib ABI entries.
  • KT-86687 Split KLIB_WRITING metric, toKLIB_IR_WRITING and KLIB_METADATA_WRITING
  • KT-87454 KLIBs: Add PL tests for references with context parameters
  • KT-77818 [KLIB resolve] "The same 'unique_name=kotlin' found in more than one library" warning during metadata compilation
  • KT-86572 -Xheader-mode: header klib omits members provided by interface delegation (by)
  • KT-84838 Get rid of ModuleDescriptor from IrModuleDeserializer
  • KT-54019 [PL] Unimplemented FO: Adding interface to abstract parent + direct reference to absent member: JS build is successful, Native fails
  • KT-87625 Wasm: a callable reference bound to a null receiver equals an unbound reference
  • KT-87443 KLIB: Store metadata flags in manifest
  • KT-87447 Wasm: Rework internal presentation of KFunction to support references with context parameters
  • KT-87445 Native: Rework internal presentation of KFunction to support references with context parameters
  • KT-87450 Advance KlibAbiCompatibilityLevel to 2.5
  • KT-87104 Make org.jetbrains.kotlin.konan.file.File to be implementation detail of the compiler
  • KT-86320 [PL] Replacing unusable classifiers with Any? type may cause a signature clash
  • KT-81947 [Wasm] Klib backward and forward compatibility testing
  • KT-84836 Minimize usages of IrBuiltIns in the KotlinIrLinker

Language Design

  • KT-11968 Research and prototype namespace-based solution for statics and static extensions
  • KT-86090 Stable release of "IntroduceAt": binary compatibility for optional parameters

Libraries

New Features

  • KT-6938 Boolean.onTrue/onFalse, ifOrNull
  • KT-88708 Consider documenting that MutableMap.put keeps the stored key instance
  • KT-88037 kotlin-metadata-jvm: add readLenient()/readStrict() to KotlinModuleMetadata
  • KT-39661 Support TypeVariable.getGenericDeclaration for types created in KType.javaType in kotlin-stdlib
  • KT-31305 Support JUnit5-like assertions with message suppliers in kotlin-test
  • KT-78462 Annotate kotlin-stdlib-jvm with @IgnorableReturnValue where appropriate

Fixes

  • KT-86151 AtomicFU + companion block: compiler plugin generated invalid IR
  • KT-86049 Check serialization lib for the Companion Blocks and extensions
  • KT-78174 Improve kotlin.AutoCloseable documentation
  • KT-87407 Adapt kotlinx.metadata to changes in companion extension metadata format
  • KT-87780 K/Wasm: review coroutine-related APIs annotated by PublishedApi
  • KT-87779 K/Wasm: remove DoNotInlineOnFirstStage from coroutine-related APIs
  • KT-78998 K/Wasm: consider using qualified name instead of simple name for JS Error created for exceptions
  • KT-78707 Wasm: Throwable.stackTraceToString misses exception's class if it has no message or cause
  • KT-86680 Revert allEqualBy to == comparison once KT-86678 is fixed
  • KT-57134 Native: Consider introducing public ExceptionInInitializerError and NoClassDefFound
  • KT-86760 Consider deprecating the assertNotNull 3-arg overload accepting a lambda
  • KT-87613 Test Federation: Review domain Core Libraries Smoke & Contract tests
  • KT-87849 Set @SinceKotlin(2.3) for ignorability annotations
  • KT-87312 Stabilize RVC and allow @IgnorableReturnValue even in disabled checker mode
  • KT-86956 Remove the JS guards from allDistinct NaN tests once KT-86954 is fixed
  • KT-52400 Deprecate @BuilderInference
  • KT-80605 Rename MustUseReturnValue -> MustUseReturnValues
  • KT-65526 Rewrite builtins as expect-actual

Native

  • KT-88857 Regression in LibraryPathFilter
  • KT-88965 [Native] Update minimal Xcode version
  • KT-86678 K/N: == on boxed Double/Float disagrees with equals() for NaN values

Native. Build Infrastructure

  • KT-87996 K/N test task fails with "No cache found for library"

Native. C Export

  • KT-87538 Kotlin/Native: hide companion blocks and extensions from C export

Native. C and ObjC Import

  • KT-81934 Swift export should look up SwiftBridge and SwiftName when translating types from platform libraries
  • KT-88374 Kotlin/Native: deprecate CStructVar.Type with error
  • KT-84721 Generate C-interop KLIBs in previous ABI version in Kotlin 2.5.0

Native. ObjC Export

  • KT-87738 Kotlin/Native: hide companion blocks and extensions from ObjC export
  • KT-86199 Scalability problems with PackageFragmentProviderImpl
  • KT-88052 [ObjCExport] AA: Property names are mangled differently and accessors do not match K1's output
  • KT-87852 [ObjCExport] AA: Replace name mangling of special method families
  • KT-88153 [ObjCExport] AA: documentation specifying annotation is not attached to receiver
  • KT-87626 @ObjCEnum interpreted as open enum in Swift

Native. Platforms

  • KT-78078 Remove armv7k(watchosArm32) target

Native. Runtime

  • KT-88954 [Native] Add -Wno-unknown-attributes to build of the runtime
  • KT-88156 Kotlin/Native: reduce number of runtime modules

Native. Runtime. Memory

  • KT-87963 Kotlin/Native: review atomics usage in GlobalData.cpp

Native. Swift Export

New Features

  • KT-87556 Kotlin/Native hide companion blocks and extensions from Swift Export
  • KT-87802 Swift Export: cross-language subtyping pt.2
  • KT-87574 Swift Export: unify error/exception throwing in sync & asynchronous bridges in cross-language inheritance
  • KT-80632 Swift export: symbol not found for cinterop protocol
  • KT-72556 Export top-level extension functions and properties from "main" package as Swift extensions
  • KT-84191 [Swift Export] export KDoc

Fixes

  • KT-88584 Swift Export: context parameter is dropped from export when declared in a flattened package: missing argument for parameter #1 in call
  • KT-88042 Swift Export [Inheritance]: Kotlin can't call an interface method on a Swift subclass that inherits the interface (ClassCastException)
  • KT-87947 Swift Export fails when inheriting Kotlin abstract class
  • KT-86403 Swift Export: Lean TypeInfo generation for swift inheritors
  • KT-89025 [Swift Export] generic type param with generic upper bound fails to compile
  • KT-88999 Swift export: leaf case of sealedType() is unreachable when the implementing class is not exported
  • KT-86510 [Swift Export. Tests] Exporting full API surface of kotlinx.coroutines causes runtime crashes
  • KT-87875 [Swift Export] Reverse bridges don't work with overloads
  • KT-88386 [Swift Export] SwiftExportConfig.errorTypeStrategy with SpecialType generates incompilable code
  • KT-88809 [Swift Export] intersection override with final implementation fails to compile
  • KT-88740 [Swift Export] declaration with internal OptIn fails to compile
  • KT-88669 [Swift Export] abstract class with multiple interfaces with same declaration fails to compile
  • KT-87398 Swift Export: issues with updating a user project
  • KT-88739 [Swift Export] function returning MutableList fails to export
  • KT-87457 Swift Export: NSInvalidArgumentException in _Kotlin_SwiftExport_wrapIntoExistential when Compose renders first iOS frame
  • KT-88330 KotlinExistential has no _createClassWrapperForExternalRCRef
  • KT-88723 [Swift Export] Support factory fun name based on suffix
  • KT-88682 Swift Export: can't export enum class implementing a sealed interface
  • KT-88495 [Swift Export] KDoc support: text after the @see identifier is dropped
  • KT-88378 [Swift Export] Special characters in interface names
  • KT-88474 [Swift Export] Typealias for inner interface is internal
  • KT-88473 [Swift Export] Can't implement sealedType function for leaf interface
  • KT-88368 [Swift Export] OptIn receiver extension in interface fails to compile
  • KT-87697 [Swift Export] conflicting ObjC marker names
  • KT-87391 [Swift Export] object returned from a function as an interface should be castable to a last public class, if that class conforms to that said interface
  • KT-88224 [Swift Export] @escaping is emitted on a variadic closure parameter, which Swift rejects
  • KT-88370 [Swift Export] Extension property on generic class with type param fails to compile
  • KT-87791 [Swift Export] OptIn interface member with default implementation fails to compile
  • KT-88019 Swift Export: parameter names in top level functions are not escaped
  • KT-88171 [Swift Export] enable KDoc export
  • KT-87874 [Swift Export] Generic start project param in closure fails to compile
  • KT-87798 [Swift Export] generic sealed interface fails to compile
  • KT-87808 [Swift Export] Nested generic fails to compile
  • KT-87236 [Swift Export] interface member with extension receiver fails to compile
  • KT-85545 [Swift Export] functional typealias with unavailable type
  • KT-85544 [Swift Export] property with hidden setter isn't exported

Tools. BCV

  • KT-85950 Add support of "com.android.kotlin.multiplatform.library" plugin [ABI validation]
  • KT-87551 Bring kotlin.test API back after migrating to JUnit5

Tools. Build Tools API

New Features

  • KT-84401 BTA: implement Kotlin/JS incremental compilation support
  • KT-88018 K2 Multiplatform incremental compilation of common code targeting JVM across multiple modules
  • KT-87086 Add Build Tools API entry point for Analysis API based TypeScript generation

Fixes

  • KT-88835 Wasm klib incremental compilation via daemon ignores configuration inputs
  • KT-85464 BTA: promote restricted arguments to ERROR
  • KT-88776 Remove deprecated JvmSnapshotBasedIncrementalCompilationConfiguration.MONOTONOUS_INCREMENTAL_COMPILE_SET_EXPANSION
  • KT-83937 Promote shrunk-classpath-snapshot configuration deprecation to error
  • KT-88299 JS and Wasm klib compilation and linking operations silently ignore the IR_OUTPUT_DIR and X_INCLUDE compiler arguments
  • KT-86169 [BTA] applyArgumentStrings silently drops typed arguments and suppresses typed validation when used on the same builder
  • KT-89050 LOOKUP_TRACKER is not propagated to JS/Wasm incremental compilation
  • KT-88298 Dropped JS/Wasm compiler arguments are still present in the public BTA
  • KT-88491 WasmLinkingOperation and WasmKlibCompilationOperation do not check option availability for the compiler version in set()
  • KT-88838 JsKlibCompilationOperation.shouldCompileIncrementally() error message mentions the JVM config type
  • KT-88478 JsLinkingOperationImpl uses Options(JsKlibCompilationOperation::class) instead of JsLinkingOperation::class
  • KT-88684 WasmLinkingOperation cannot target wasm-wasi: no Wasm target option available in linking arguments
  • KT-88381 Argument-parsing warnings are lost when compiling via Build Tools API
  • KT-88763 Default classpath metadata to the common sources IC property
  • KT-88777 Remove deprecated JvmSnapshotBasedIncrementalCompilationConfiguration.UNSAFE_INCREMENTAL_COMPILATION_FOR_MULTIPLATFORM
  • KT-87522 Separate enableUnsafeOptimizationsForMultiplatform for js and jvm
  • KT-85791 Remove compatibility wrapper for BTA IMPL 2.4.0 with lower versions
  • KT-88348 MessageCollector in IncrementalCompilerRunner drops diagnostics IDs
  • KT-87525 Add metrics for JVM metadata operations in Incremental Compilation
  • KT-87848 Guard JVM incremental metadata plumbing behind KMP metadata-on-classpath support
  • KT-87743 Make KotlinCoreEnvironment.disposeApplicationEnvironment() unnecessary for K2 BTA compilation
  • KT-87822 Clean up obsolete disk-based common metadata code after switching to IC-cache JVM metadata
  • KT-87792 [BTA] Handle removed arguments in BTA tests
  • KT-87654 [BTA] KotlinMetadataKlibCompilationOperation can silently produce a non-klib (legacy metadata) artifact
  • KT-87653 [BTA] Metadata operation reports a JVM-specific message for the restricted -d argument
  • KT-87597 [BTA] KotlinCompilationProcessFailedException causes LinkageError

Tools. CLI

New Features

  • KT-87671 Disallow using of any lifecycle version greater than KotlinVersion.CURRENT

Performance Improvements

  • KT-87868 In-process compilation via CLI/Build Tools API pays a large ThreadMXBean.getCurrentThreadUserTime penalty on Linux: PerformanceManager.measureSideTime measures unconditionally around every class file read

Fixes

  • KT-89211 Show warning when running the compiler on JDK < 17
  • KT-75990 Deprecate all K1-related compiler flags and modes
  • KT-89094 Rich Errors: Create LF
  • KT-88548 False positive "Member overrides different '@Throws' filter" when a nativeMain class overrides a commonMain member carrying the same @Throws filter
  • KT-88475 IncrementalCompilationComponents instances are not being called anymore
  • KT-86383 Use a language feature for new inline variables scheme
  • KT-87493 kotlinc.bat crashes with ClassNotFoundException when installed to a path with spaces on ReFS (dev drive)
  • KT-88222 kotlinc/kotlin bash scripts fail to handle spaces in KOTLIN_HOME path, producing %20-encoded classpath entries on macOS/Linux
  • KT-87373 Warn on the use of the kotlin executable and recommend kotlinr
  • KT-88026 large arithmetic expression causes java.lang.NoClassDefFoundError instead of stackoverflow
  • KT-85591 Remove Xklib-normalize-absolute-path compiler argument
  • KT-86626 Add Compiler Argument for Context-bound Callable References
  • KT-87826 Remove -Xcontext-receivers compiler argument
  • KT-68175 Remove CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY
  • KT-80348 Expose 'XXLanguage' compiler argument as a normal argument
  • KT-76498 Implement JSON dumper for performance stats

Tools. Compiler Plugin API

  • KT-46917 Dependencies of native compiler plugins are not resolved
  • KT-86900 FirSamResolver ignores plugin-generated abstract members when performing SAM conversion on fun interface

Tools. Compiler Plugins

New Features

  • KT-87731 AtomicFU + companion block: gracefully handle delegated companion properties
  • KT-87984 AtomicFU: support companion blocks and extensions for JS target
  • KT-87978 AtomicFU: support companion blocks and extensions for K/N
  • KT-87683 Support functions and constructors with @Builder on Kotlin classes
  • KT-87682 Support for @Singular annotation with @Builder on Kotlin classes
  • KT-88270 Support for @Singular with @Builder and Guava collections on Kotlin classes
  • KT-87886 Support for@Builder.Defaultannotations with@Builder` on Kotlin classes
  • KT-87685 Support generics with @Builder on Kotlin classes
  • KT-87686 Implement minimal viable functionality with @Builder on Kotlin classes

Fixes

  • KT-87277 AtomicFU: allow only private atomic companion extension and member properties
  • KT-88336 Change Lombok diagnostics severity from warning to strong warning
  • KT-84119 Power-assert: "StringIndexOutOfBoundsException: Range [0, -2) out of bounds for length 884" in a scratch file
  • KT-88179 Power-assert: IrGenerationExtensionException (StringIndexOutOfBoundsException) when assert() wraps a context-parameter function call
  • KT-54072 [K2] [JAVA_TYPE_MISMATCH] error in case sortedSetOf() is used as a param of a filed annotated with @ Singular which type is raw SortedSet
  • KT-87871 ANNOTATION_HAS_NO_EFFECT reported for interfaces/annotation class with @Log, although the log property is generated
  • KT-88505 Lombok: @Builder generates a setter for a Java static field
  • KT-88322 Add linuxArm32Hfp() to Power Assert runtime
  • KT-88803 PowerAssert: Create tests for diagram without runtime
  • KT-88337 Handle Lombok AccessLevel.PROTECTED, MODULE, and PACKAGE correctly for Kotlin classes
  • KT-86651 Lombok: "Constructor without parameters is already defined" checker for @NoArgConstructor
  • KT-87912 AtomicFU: compiler plugin can't handle loop function invocation inside an inline function initializing top-level property
  • KT-87784 AFU: compiler plugin does not support inline extension properties on atomics
  • KT-87612 Test Federation: Review domain Compiler Plugins Smoke & Contract tests
  • KT-75877 PowerAssert: don't display value for anonymous object
  • KT-88124 DataFrame: failing test when removing workaround in FIR2IR
  • KT-87889 Use Lombok implementation to singularize words
  • KT-85180 AtomicFU/Native IR validation error
  • KT-67440 Atomicfu-compiler-plugin: incorrect initialization order of delegated properties
  • KT-67839 Atomicfu plugin: support transformation of minusAssign/plusAssign operators
  • KT-87563 Lombok: StackOverflow with @SuperBuilder and cyclic inheritance hierarchy

Tools. Compiler plugins. Compose

  • KT-88069 [Compose Compiler] NoClassDefFoundError when invoking @Composable lambda directly
  • KT-88028 Compose compiler: IndexOutOfBoundsException in ComposableTargetAnnotationsTransformer when overriding a @Composable function with default parameter in another module
  • KT-82808 [CMP] IrLinkageError: Abstract function is not implemented

Tools. Compiler plugins. Serialization

  • KT-88540 Warn when @SerialInfo/@InheritableSerialInfo-annotated annotation has inapplicable target
  • KT-75702 Support array content equality when deciding whether to encode a default value in kotlinx.serialization plugin

Tools. Gradle

New Features

  • KT-88526 Initial implementation of Kotlin Archive in KGP

Performance Improvements

  • KT-88084 Each build leaves a strong reference to an instance of BuildMetricsService
  • KT-69613 Remove usages of getCanonicalPath and getCanonicalFile in plugins code

Fixes

  • KT-87986 Publish Swift Export metadata
  • KT-88622 Unconditionally deprecate direct integration with AGP
  • KT-87971 Make multiple loaded plugins detection compatible with project isolation
  • KT-88290 Make kotlin.user.home support relative paths
  • KT-71968 Setting custom kotlin.project.persistent.dir causes NoSuchFileException: ./custom-cache-dir/sessions/kotlin-compiler-12437393244673679493.salive
  • KT-69336 Support kotlin.project.persistent.dir that is outside of rootProject
  • KT-88380 Raise deprecation level to error for Kotlin source sets in Android extension
  • KT-88850 Add explicit xcodeIntegration and opt-in task wiring
  • KT-84114 Bump the minimal supported Gradle version to 8.14.x
  • KT-87989 Deprecate the legacy Swift Export DSL and provide migration diagnostics
  • KT-77241 KGP: Remove CleanData infrastructure
  • KT-88853 Derive Swift Export module export modes from KMP api and implementation dependencies
  • KT-82426 Improve publishing with cross compilation
  • KT-87993 Compile against Gradle API 9.7
  • KT-87994 Run Gradle integration tests against Gradle 9.7
  • KT-87995 Run Gradle functional tests using Gradle runtime 9.7
  • KT-87840 Isolated projects: "Project ... cannot access 'Project.extensions' functionality on another project" when configuring JS/Wasm targets (NodeJsPlugin/D8Plugin)
  • KT-88192 KMP Separate Compilation: separate compilation mode is incompatible with configuration cache
  • KT-87726 Run functional tests against the Gradle 9.6 release
  • KT-87256 KotlincOutputParser fails to parse compilation errors under Gradle when task path prefixes are enabled (Kotlin 2.4.20-Beta1)
  • KT-87509 Stop using Gradle Problems API severity field
  • KT-87508 Wire buildNeeded/buildDependent only for Gradle <9.5.0
  • KT-86835 [KGP] Migrate KotlinSecondaryVariantsDataSharing to kotlinx-serialization
  • KT-86833 [KGP] Migrate Apple/Swift-export/Native Gson usages to kotlinx-serialization; introduce FileSerializer
  • KT-87724 Fix failing SwiftPM Import Tests
  • KT-87970 Extend test coverage for multiple loaded plugins detection
  • KT-87679 Bump version of file-leak-detector used in KGP ITs
  • KT-87911 Report an actionable diagnostic when .kar files reach compilation classpaths in Kotlin 2.4.20
  • KT-86435 Replace File.ensureParentDirsCreated() with NIO Path createDirectories()
  • KT-61225 Turn "Kotlin Gradle plugin was loaded multiple times" warnings into error
  • KT-87729 Update KGP test to use jvm-test-suite
  • KT-86040 Run tests against the Gradle 9.6.0 release

Tools. Gradle. JS

New Features

  • KT-86731 Integrate new Kotlin JS Browser Test pipeline with IDEA in debug mode
  • KT-86715 Add ability to configure Dev-server URL (or specification) to run browser tests from

Fixes

  • KT-87641 Having a few same js targets with configured tests leads to Cannot add task 'kotlinInstallPlaywrightBrowsers'
  • KT-88709 Deprecate NpmDependencyExtension
  • KT-88718 [TechDebt] Add dependsOnNpmTooling to simplify task dependency on NPM tooling
  • KT-84740 Promote deprecation of NpmApiExecution#resolveRootProject to ERROR
  • KT-89052 Add a cacheability annotation to EsmBundleKotlinJsTests
  • KT-86112 Promote KotlinJsIrTarget constructor deprecation from WARN to ERROR
  • KT-85179 Remove NodeJsExec.create
  • KT-88597 Fix failing Gradle Integration Tests Gradle Kotlin JS with Browser tests Linux
  • KT-87502 Validate customBrowserExecutable path in new JS test DSL
  • KT-88504 Gradle Integration Tests Gradle Kotlin JS with Browser tests (Windows) fails after Gradle 9.7 Bump
  • KT-86708 Add FUS events for new JS test API
  • KT-84724 NPM dependency versions do not invalidate KotlinWebpack task cache key in kotlin multiplatform project
  • KT-86797 Failed JS tests don't report errors in the output
  • KT-86799 Report browser environment to IJ
  • KT-87501 Throw an error if new JS test DSL is used with Wasm
  • KT-87600 Playwright install on multiple subprojects cause Gradle build to fail
  • KT-53687 Don't trigger npm and yarn related tasks if it not relevant for assemble

Tools. Gradle. Multiplatform

  • KT-60724 Legacy dependencies are not reported if used in tests
  • KT-80897 Drop implementationMetadataConfigurationName from KGP
  • KT-88890 Stabilize MppIdeDependencyResolutionIT IDE resolution strict mode
  • KT-88590 NoSuchElementException thrown with new KMP compilation scheme
  • KT-87790 Kotlin 2.4.0 increases Gradle sync times
  • KT-82417 KMP Separate Compilation: missing fragment dependencies for custom darwin source set that mirrors appleMain
  • KT-87946 Flaky JSBrowserTestsIT

Tools. Gradle. Native

New Features

  • KT-84852 Wire linkage package integration check with Swift Export's embedAndSign

Fixes

  • KT-88813 Delete native tasks API deprecated as ERROR
  • KT-87632 Native test: empty unnamed Output tab appears in Test Results when test process exits abnormally
  • KT-76147 Gradle Configuration Cache: 'compile*KotlinMetadata' caused invocation of 'Task.project' in 'commonizeCInterop'
  • KT-87576 Simplify SwiftPM lock file sync by moving logic from sync tasks into fetch task
  • KT-87535 Make SwiftPM fingerprint file structured
  • KT-53477 Native: Gradle plugin doesn't add compiler plugin transitive dependencies to compiler plugin classpath
  • KT-85468 Don't fail IDE import if the SwiftPM import pipeline has failed somewhere
  • KT-87394 Publishing fails with FileNotFoundException: iosArm64 KLIB missing when compilation skipped due to cross-compilation disabled in a project dependency
  • KT-88008 SwiftPM-import Gradle IT fails after watchosArm32 removal and platform-condition change
  • KT-27683 Most Kotlin compiler plugins cannot be used in Gradle MPP with Kotlin/Native
  • KT-87873 Deprecation warning on AndroidNative gradle DSL
  • KT-87630 Lenient import doesn't work with awaits introduced in KT-85933

Tools. Gradle. Swift Export

  • KT-88672 Gracefully fail embedSwiftExport task if the minimal target version is less then iOS 18
  • KT-88523 Introduce the new export extension with a swift configuration block
  • KT-89059 Introduce a bridging layer between the legacy SwiftExportExtension and the new ExportExtension.SwiftExportConfiguration

Tools. Gradle. Wasm

  • KT-87082 Support new playwright-based browser test DSL in wasmjs
  • KT-88566 K/Wasm: Webpack configuration generated after user defined chunks from the webpack.config.d directory
  • KT-88285 WasmJS tooling version overrides are ignored
  • KT-88115 "Your lockfile needs to be updated": Outdated bundled yarn.lock breaks kotlinWasmToolingSetup with --frozen-lockfile
  • KT-86879 K/Wasm: Update wasmtime to 47.0.0
  • KT-87831 NPM install on Windows fails if project path contains braces
  • KT-87565 Add validation for kotlin.wasm.compilationMode Gradle property values

Tools. Incremental Compile

  • KT-88801 Incremental compilation fails for a serializable class hierarchy in multiple files with private properties
  • KT-86121 Incremental compilation fails for a serializable sealed inheritance chain in multiple files
  • KT-88762 Make kotlin.internal.jvm.enableUnsafeOptimizationsForMultiplatform a user-facing Gradle property
  • KT-62686 K2: Common module sees platform declarations in case of MPP project incremental compilation

Tools. Kapt

  • KT-71883 Kapt: generate Java sources directly instead of using JCTree
  • KT-88559 KAPT: 'com.sun.tools.java.util.Context' class can't be found ('tools.jar' is absent in the plugin classpath) on 28-ea JDK
  • KT-85195 KAPT: IntroducedAt is not supported in KAPT
  • KT-80882 K2 KAPT: Dagger fails to process code annotated with @Composable
  • KT-70804 Cleanup kapt implementations for K1 and K2

Tools. Maven

  • KT-83374 CRI: it is not clear that CRI generation requires IC being enabled in Maven

Tools. Scripts

  • KT-87958 K2 scripting: FirPropertyImpl transformation crash when using class from @file:Import-ed script in 2.4.0+
  • KT-88453 VirtualFileScriptSource.text leaks an unclosed file stream — script source file handle held until GC, blocks file deletion on Windows
  • KT-87047 Scripts: ClassNotFoundException for 'kotlin.script.experimental.dependencies.Repository' when compiling .main.kts with '-Xuse-fir-lt=false'
  • KT-87041 Scripting: classpath extraction fails to extract stdlib from kotlinc

Tools. Statistics (FUS)

  • KT-88758 Enable FUS for all Gradle IT tests

Don't miss a new kotlin release

NewReleases is sending notifications on new releases.