Skip to content

Releases: JetBrains/kotlin

Kotlin 2.0.10-RC2

29 Jul 12:16
Compare
Choose a tag to compare
Kotlin 2.0.10-RC2 Pre-release
Pre-release

2.0.10-RC2

Frontend

  • KT-69876 K2 Compile exception: Only IrBlockBody together with kotlinx serialization

Kotlin 1.9.25

19 Jul 12:52
Compare
Choose a tag to compare

Note: This is a technical release for IntelliJ IDEA.

Changelog

Tools. JPS

  • KT-69204 Generate lookups in dumb mode for compatibility with ref index

Kotlin 2.0.10-RC

11 Jul 16:09
Compare
Choose a tag to compare
Kotlin 2.0.10-RC Pre-release
Pre-release

Changelog

Apple Ecosystem

  • KT-68257 Xcode incorrectly reuses embedAndSign framework when moving to and from 2.0.0

Compiler

Fixes

  • KT-68521 K2: Property's private setters can be bypassed when using plusAssign and minusAssign operators
  • KT-68667 K2: Compiler hangs on mapNotNull and elvis inside lambda
  • KT-68747 K2: Long compilation time because of constraint solving when using typealias in different modules
  • KT-68940 K2: "IllegalArgumentException: All variables should be fixed to something"
  • KT-68797 K2 / Native: "java.lang.IllegalStateException: FIELD" caused by enabled caching
  • KT-68362 False-positive ABSTRACT_MEMBER_NOT_IMPLEMENTED for inheritor of java class which directly implements java.util.Map
  • KT-68449 K2: "when" expression returns Unit
  • KT-67072 K2: inconsistent stability of open vals on receivers of final type
  • KT-68570 K2: "Unresolved reference" in call with lambda argument and nested lambda argument
  • KT-69159 K2: KotlinNothingValueException in Exposed
  • KT-68623 K2: "Only safe or null-asserted calls are allowed" on safe call
  • KT-68193 JDK 21: new MutableList.addFirst/addLast methods allow adding nullable value for non-null types
  • KT-67804 removeFirst and removeLast return type with Java 21
  • KT-68727 K2: "Null argument in ExpressionCodegen for parameter VALUE_PARAMETER" caused by an enum class with default parameter in a different module
  • KT-68383 K2: "Argument type mismatch: actual type is 'kotlin.String', but 'T & Any' was expected." with intersection types
  • KT-68546 K2: false-positive conflicting overloads error on inheriting generic type with inherited generic and non-generic member overloads
  • KT-68626 K2: "Conflicting Overloads" for function if inherited from generic type
  • KT-68351 K2: "Suspension functions can only be called within coroutine body"
  • KT-68489 K2: WRONG_ANNOTATION_TARGET with Java and Kotlin @Target annotation positions
  • KT-69058 K2: Java-defined property annotations not persisted
  • KT-64515 K2 IDE: [NEW_INFERENCE_ERROR] in a build.gradle.kts script while applying "jvm-test-suite" plugin and then configuring targets for test suites
  • KT-68016 K2: Gradle repo test should compile correctly with Kotlin explicit api mode fails on K2
  • KT-68575 K2: @ParameterName annotation is not erased when inferring the type of it in lambdas
  • KT-67999 K2: lost flexibility on parameters of Java SAM
  • KT-59679 K2: Investigate extracting uncompleted candidates from blocks
  • KT-68401 K2: "IllegalAccessError: failed to access class" caused by package private super Java type, when inferencing a common super type of if or when branches on JVM
  • KT-68806 K/Wasm RuntimeError: unreachable on Sequence::toList
  • KT-68455 K2: False negative UPPER_BOUND_VIOLATED_BASED_ON_JAVA_ANNOTATIONS
  • KT-68538 KJS/K2: using while with break inside inline lambdas leads to an endless cycle
  • KT-68798 JVM compiler crashes on calling private expect constructor with a default parameter
  • KT-68734 K2: enum class in KMP: Expect declaration MMKVLogLevel is incompatible with actual MMKVLogLevel because modality is different
  • KT-68674 False positive ACTUAL_WITHOUT_EXPECT in K2
  • KT-68350 K2: "Inapplicable candidate(s)" caused by parameter reference of local class with type parameters from function
  • KT-68571 K2: "IllegalStateException: Fake override should have at least one overridden descriptor" caused by exceptions and when statement
  • KT-68523 K2: FileAnalysisException when using Definitely non-nullable types
  • KT-68339 K2: "Enum entry * is uninitialized here" caused by lazy property with enum in when expression
  • KT-66688 K2: false-negative "upper bound violated" error in extension receiver
  • KT-68630 DiagnosticsSuppressor is not invoked with Kotlin 2.0
  • KT-68222 K2. KMP. False negative Expected declaration must not have a body for expected top-level property with getter/setter
  • KT-64103 FirExpectActualDeclarationChecker reports diagnostic error for KtPsiSimpleDiagnostic with KtFakeSourceElement
  • KT-68191 K2. Static fake-overrides are not generated for kotlin Fir2IrLazyClass
  • KT-68024 K2: Gradle repo test accessors to kotlin internal task types... fails on K2
  • KT-64957 K1: drop ModuleAnnotationResolver

Compose compiler

Native

  • KT-68094 K2/Native: Member inherits different '@Throws' when inheriting from generic type

Tools. Compiler Plugins

  • KT-69187 Compose compiler for web doesn't support rememberComposableLambda
  • KT-68557 K2. Supertypes resolution of KJK hierarchy fails in presence of allopen plugin

Tools. Compiler plugins. Serialization

  • KT-68850 Compose lambda type not transformed with KGP 2 + new Compose plugin

Tools. Daemon

  • KT-68297 KGP 2.0 regression: JAVA_TOOL_OPTIONS is not considered in Kotlin daemon creation

Tools. Gradle

  • KT-69330 KotlinCompile friendPathsSet property is racy due causing build cache invalidation
  • KT-69026 Mark AGP 8.5.0 as compatible with KGP
  • KT-68447 ill-added intentionally-broken dependency source configurations
  • KT-69078 Gradle: Add option to disable FUS Service
  • KT-68278 Spring resource loading in combination with java-test-fixtures plugin broken
  • KT-66452 Gradle produces false positive configuration cache problem for Project usage at execution time
  • KT-68242 Run tests against AGP 8.4.0

Tools. Gradle. Multiplatform

  • KT-68805 KMP project (re-)import took a long time for downloading platform libs
  • KT-68248 kotlin multiplatform project fail to build on Fedora with corretto

Tools. Gradle. Native

  • KT-68638 KGP 2.0 breaks native test with api dependencies and configuration cache
  • KT-65761 Missing JDK Platform ClassLoader when compiling Kotlin native in daemon

Tools. JPS

  • KT-69204 Generate lookups in dumb mode for compatibility with ref index

Tools. Kapt

  • KT-68171 K2KAPT: boxed return types in overridden methods changed to primitives

Tools. Scripts

  • KT-68681 K2 / CLI / Script: "NullPointerException: getService(...) must not be null" caused by @DependsOn
  • KT-67747 K2: regression in Spring unit tests using javax.script.ScriptEngine

Kotlin 2.0.20-Beta2

10 Jul 10:00
Compare
Choose a tag to compare
Kotlin 2.0.20-Beta2 Pre-release
Pre-release

Changelog

Analysis. API

Fixes

  • KT-65417 K2 IDE: KTOR false positive expect-actual matching error on enum class because of implicit clone() in non-JVM source sets
  • KT-68882 Analysis API: Refactor KaSymbols
  • KT-68689 LL API: support analysis from builtins module
  • KT-67775 Analysis API: expose only interfaces/abstract classes for the user surface
  • KT-68009 K2: lowering transformers of Compose compiler plugin access AbstractFir2IrLazyFunction modality, which results in null point exception
  • KT-68918 collectCallCandidates works incorrectly for parenthesis invoke
  • KT-68462 Analysis API: Integrate project-structure module into analysis-api and analysis-api-platform-interface
  • KT-69131 AA: "provideDelegate" operator is not resolved from the delegation reference in FIR implementation
  • KT-69055 Analysis API: Stabilize KaScopes
  • KT-68959 Introduce KaSeverity
  • KT-68846 Mark KaFirReference and all implementations with internal modifier
  • KT-68845 Move KaSymbolBasedReference to resolution package
  • KT-68844 Move KaTypeProjection to types package
  • KT-65849 K2: Rename 'high-level-api' family of JARs to 'analysis-api'
  • KT-62540 Remove uses of TypeInfo.fromString and TypeInfo.createTypeText from Kotlin plugin
  • KT-68155 Analysis API: Add PSI validity check to analyze
  • KT-62936 Analysis API: NativeForwardDeclarationsSymbolProvider is not supported for Kotlin/Native

Analysis. Light Classes

  • KT-68261 SLC: Constructors of sealed classes should be private
  • KT-68696 Drop DecompiledPsiDeclarationProvider-related stuff
  • KT-68404 SLC: wrong binary resolution to declaration with @JvmName

Backend. Native. Debug

  • KT-67567 Native: after updating to LLVM 16 lldb hangs when smooth stepping

Backend. Wasm

  • KT-68828 Wasm test failure. expect-actual. private constructor in expect

Compiler

New Features

  • KT-58310 Consider non-functional type constraints for type variable which is an expected type for lambda argument
  • KT-57872 Improve "Public-API inline function cannot access non-public-API" check

Fixes

  • KT-65546 K2. implement extended checker for unused anonymous parameter in lambda
  • KT-60445 K2/Java: investigate possible symbol clash while enhancing Java class type parameter bounds
  • KT-68358 @EnhancedNullability is missing on value parameter type after inheritance by delegation with strict JSpecify enabled
  • KT-67791 False negative "Synchronizing by Meters is forbidden" with inline value classes
  • KT-69495 k2: inconsistent output of unsigned number in string templates
  • KT-67693 Implement checkers for K1 compiler which will check the usage of K2 new features and report that they are not supported in K1 compiler
  • KT-44139 Don't report overload resolution ambiguities if arguments contain an error type
  • KT-69282 K2: equality of unsigned types with nullability works incorrectly
  • KT-69619 K2. JAVA_TYPE_MISMATCH when Kotlin out generic type used in Java
  • KT-68996 K2: "Not enough information to infer type argument" caused by typealias annotation with fixed generic argument
  • KT-69563 trying to call .source on FirPackageFragmentDescriptor results in exception
  • KT-69611 Internal annotation FlexibleArrayElementVariance is written to output jar
  • KT-69463 K2: false negative SUPER_CALL_WITH_DEFAULT_PARAMETERS with expect/actual declarations
  • KT-68556 K2: false negative PROPERTY_WITH_NO_TYPE_NO_INITIALIZER on uninitialized property without type
  • KT-68997 K2: "No accessor found" for an inline value class when query the value of a delegated class by reflection
  • KT-68724 K2: "ABSTRACT_MEMBER_NOT_IMPLEMENTED" caused by open modifier on interface
  • KT-68667 K2: Compiler hangs on mapNotNull and elvis inside lambda
  • KT-68747 K2: Long compilation time because of constraint solving when using typealias in different modules
  • KT-68940 K2: "IllegalArgumentException: All variables should be fixed to something"
  • KT-69182 K2: OptIn on enum companion blocks enum constants
  • KT-69191 K2: "Unresolved reference" caused by nested data objects
  • KT-68797 K2 / Native: "java.lang.IllegalStateException: FIELD" caused by enabled caching
  • KT-69569 Wrong paths when one type has multiple annotated arguments
  • KT-63871 K2: different value of isNotDefault flag for property inherited from delegate
  • KT-63828 K2: Missing signature metadata for accessors of properties inherited from delegate
  • KT-68669 K2: Generate inherited delegated members after actualization
  • KT-69402 FirSupertypeResolverVisitor: ConcurrentModificationException
  • KT-68449 K2: "when" expression returns Unit
  • KT-67072 K2: inconsistent stability of open vals on receivers of final type
  • KT-68570 K2: "Unresolved reference" in call with lambda argument and nested lambda argument
  • KT-69476 False negative NO_ELSE_IN_WHEN on when over intersection type with expect enum/sealed class
  • KT-67069 K2: Delegated member calls interface method instead of fake override
  • KT-63864 K2: Missing abbreviated type in metadata
  • KT-69421 K2: Resolve changed from delegated function to java default function
  • KT-69392 K2: "UNSAFE_CALL": when with some variable subjects does not smartcast the variable
  • KT-69159 K2: KotlinNothingValueException in Exposed
  • KT-69053 K2: Unsupported intersection overrides for fields
  • KT-69227 K2: "Argument type mismatch" caused by generic typealias and upper bound
  • KT-31371 NOT_YET_SUPPORTED_IN_INLINE: incorrect error message for local inline function
  • KT-49473 PROTECTED_CALL_FROM_PUBLIC_INLINE_ERROR: specialize error message for 'inline' property
  • KT-49474 NON_PUBLIC_CALL_FROM_PUBLIC_INLINE: specialize error message for 'inline' property
  • KT-49503 SUPER_CALL_FROM_PUBLIC_INLINE_ERROR: specialize error message for 'inline' property
  • KT-11302 On inapplicable '@JvmStatic' annotation, highlight only the annotation, not the function signature
  • KT-59510 K2: do not render annotations in the deprecation diagnostic
  • KT-68532 "This code uses error suppression for 'INAPPLICABLE_JVM_NAME'. While it might compile and work, the compiler behavior is UNSPECIFIED and WON'T BE PRESERVED"
  • KT-68859 K2: unable to suppress only "JAVA_MODULE_DOES_NOT_EXPORT_PACKAGE"
  • KT-68623 K2: "Only safe or null-asserted calls are allowed" on safe call
  • [KT-68364](https://y...
Read more

Kotlin 2.0.20-Beta1

18 Jun 08:48
Compare
Choose a tag to compare
Kotlin 2.0.20-Beta1 Pre-release
Pre-release

Changelog

Analysis. API

New Features

  • KT-68143 Analysis API: support KtWhenConditionInRange call resolution

Performance Improvements

  • KT-67195 K2: do not call redundant resolve on body resolution phase for classes

Fixes

  • KT-66216 K2 IDE. "FirDeclaration was not found for class org.jetbrains.kotlin.psi.KtProperty, fir is null" on incorrect string template
  • KT-53669 Analysis API: redesign KtSymbolOrigin to distinguish kotlin/java source/library declarations
  • KT-62889 K2 IDE. FP MISSING_DEPENDENCY_CLASS on not available type alias with available underlying type
  • KT-62343 Analysis API: fix binary incopatibility problems cause by KtAnalysisSessionProvider.analyze being inline
  • KT-68498 To get reference symbol the one should be KtSymbolBasedReference
  • KT-68393 Analysis API: Rename KaClassLikeSymbol. classIdIfNonLocal to classId
  • KT-62924 Analysis API: rename KtCallableSymbol.callableIdIfNonLocal -> callableId
  • KT-66712 K2 IDE. SOE on settings string template for string variable with the same name
  • KT-65892 K2: "We should be able to find a symbol" for findNonLocalFunction
  • KT-67360 Analysis API: KtDestructuringDeclarationSymbol#entries shouldn't be KtLocalVariableSymbol
  • KT-68198 Analysis API: Support application service registration in plugin XMLs
  • KT-68273 AA: support KtFirKDocReference#isReferenceToImportAlias
  • KT-68272 AA: KtFirReference.isReferenceToImportAlias doesn't work for references on constructor
  • KT-67996 Analysis API: rename Kt prefix to Ka
  • KT-66996 Analysis API: Expose the abbreviated type of an expanded KtType
  • KT-66646 K2: Expected FirResolvedTypeRef with ConeKotlinType but was FirUserTypeRefImpl from FirJsHelpersKt.isExportedObject
  • KT-68203 K2: Analysis API: wrong type of receiver value in case of imported object member
  • KT-68031 LL resolve crash in case of PCLA inference with local object
  • KT-67851 K2: PsiReference#isReferenceTo always returns false for references to Java getters
  • KT-68076 AA: use type code fragments for import alias detection
  • KT-65915 K2: Analysis API: extract services registration into xml file
  • KT-68049 Analysis API: do not expose imported symbols
  • KT-68075 K2: Analysis API: Type arguments for delegation constructor to java constructor with type parameters not supported
  • KT-65190 AA: reference to the super type is not resolved
  • KT-68070 AA: KtExpressionInfoProvider#isUsedAsExpression doesn't work for KtPropertyDelegate
  • KT-67748 K2: AllCandidatesResolver modifies the original FirDelegatedConstructorCall
  • KT-67743 K2: Stubs & AbbreviatedTypeAttribute
  • KT-67706 K2: "KtDotQualifiedExpression is not a subtype of class KtNamedDeclaration" from UnusedChecker
  • KT-68021 Analysis API: do not break the diagnostic collection in a case of exception from some collector
  • KT-67949 AA: Type arguments of Java methods' calls are not reported as used by KtFirImportOptimizer
  • KT-67988 AA: functional type at receiver position should be wrapped in parenthesis
  • KT-66536 Analysis API: ContextCollector doesn't provide implicit receivers from FirExpressionResolutionExtension
  • KT-67321 AA: Type arguments of Java methods' calls are not resolved
  • KT-64158 K2: "KotlinIllegalArgumentExceptionWithAttachments: No fir element was found for KtParameter"
  • KT-60344 K2 IDE. "KotlinExceptionWithAttachments: expect createKtCall to succeed for resolvable case with callable symbol" on attempt to assign value to param named getParam
  • KT-64599 K2: "expect createKtCall to succeed for resolvable case with callable" for unfinished if statement
  • KT-60330 K2 IDE. ".KotlinExceptionWithAttachments: expect createKtCall to succeed for resolvable case with callable symbol" on attempt to assign or compare true with something
  • KT-66672 K2 IDE. False positive INVISIBLE_REFERENCE on accessing private subclass as type argument in parent class declaration
  • KT-67750 Analysis API: Remove infix modifiers from type equality and subtyping functions
  • KT-67655 Analysis API: declare a rule how to deal with parameters in KtLifetimeOwner
  • KT-61775 Analysis API: KtKClassAnnotationValue lacks complete type information
  • KT-67168 K2: Analysis API: Rendering is broken for JSR-305 enhanced Java types
  • KT-66689 Analysis API: KtFirPackageScope shouldn't rely on KotlinDeclarationProvider for binary dependencies in standalone mode
  • KT-60483 Analysis API: add isTailrec property to KtFunctionSymbol
  • KT-67472 K2: Analysis API FIR: KtFunctionCall misses argument with desugared expressions
  • KT-65759 Analysis API: Avoid hard references to LLFirSession in session validity trackers
  • KT-60272 K2: Implement active invalidation of KtAnalysisSessions
  • KT-66765 K2: Analysis API: support classpath substitution with library dependencies in super type transformer
  • KT-67265 K2: status phase should resolve original declarations in the case of classpath subsitution
  • KT-67244 K2: StackOverflowError in the case of cyclic type hierarchy and library classpath substitution
  • KT-67080 K2: clearer contract for lazyResolveToPhaseWithCallableMembers
  • KT-65413 K2 IDE: KTOR unresolved serializer() call for @Serializable class in common code
  • KT-66713 K2 FIR: Expose a way to get the module name used for name mangling
  • KT-61892 KtType#asPsiType could provide nullability annotations
  • KT-66122 Analysis API: Pass KtTestModule instead of TestModule to tests based on AbstractAnalysisApiBasedTest

Analysis. Light Classes

  • KT-68275 LC: no arg constructor is not visible in light classes
  • KT-66687 Symbol Light Classes: Duplicate field names for classes with companion objects
  • KT-66804 Symbol Light Classes: Fields from the parent interface's companion are added to DefaultImpls

Apple Ecosystem

  • KT-68257 Xcode incorrectly reuses embedAndSign framework when moving to and from 2.0.0
  • KT-65542 Cinterop tasks fails if Xcode 15.3 is used

Backend. Wasm

  • KT-65798 K/Wasm: make an error on default export usage
  • KT-68453 K/Wasm: "Supported JS engine not detected" in Web Worker
  • KT-64565 Kotlin/wasm removeEventListener function did not remove the event listener
  • KT-66099 Wasm: local.get of type f64 has to be in the same reference type hierarchy as (ref 686) @+237036

Compiler

New Features

Read more

Kotlin 2.0.0

21 May 10:50
Compare
Choose a tag to compare

Changelog

Analysis. API

New Features

  • KT-65327 Support reading klib contents in Analysis API

Performance Improvements

  • KT-65560 K2: Anaysis API: ContextCollector triggers redundant resolution in the case of file elements
  • KT-64987 Analysis API: 50GB memory allocation on creating empty kotlinx.collections.immutable.persistentMapOf
  • KT-61789 K2: optimize getFirForNonKtFileElement for references inside super type reference
  • KT-59498 K2: getOnAirGetTowerContextProvider took too much time due to on air resolve
  • KT-61728 Analysis API: optimize AllCandidatesResolver.getAllCandidates

Fixes

  • KT-65561 Analysis API: dummy.kt is not a physical file
  • KT-65616 K2: FirDeclarationStatusImpl cannot be cast to FirResolvedDeclarationStatus from STATUS
  • KT-65600 Analysis Api: FirFile for KtCodeFragments are created and not updated on changes
  • KT-64919 K2 IDE: Implement KMP support for sealed class inheritors
  • KT-64241 K2: Unresolved calls to functions in scripts depending on included projects
  • KT-65813 Analysis API Standalone: FirDeclarationForCompiledElementSearcher does not find compiled elements
  • KT-66052 AA: render expect/actual modifier
  • KT-66795 KtCodeFragment.clone() is broken
  • KT-66532 K2 CodeGen AA: missing annotation setup for function in source module but not in a compile target file
  • KT-64833 Analysis API: Members implemented by delegation have no overridden symbols
  • KT-62405 Analysis API: Symbols SUBSTITUTION_OVERRIDE have no overridden symbols
  • KT-66749 K2: "Collection contains no element matching the predicate" on an unresolved call
  • KT-62832 K2: ClassCastException: FirDeclarationStatusImpl cannot be cast to FirResolvedDeclarationStatus
  • KT-66719 AbstractGetKlibSourceFileNameTest: The dependency to ":native:analysis-api-klib-reader" breaks JPS compilation
  • KT-66603 Analysis API: support type annotations in KtPsiTypeProviderMixIn#asPsiType
  • KT-64505 Analysis API Standalone: Remove test-specific calculation of sealed class inheritors
  • KT-66013 Analysis API Standalone: Sealed inheritors aren't correctly calculated for source classes
  • KT-62880 K2 IDE: Unresolved java annotation methods in KDoc
  • KT-66530 K2: Analysis API: KtPsiTypeProvider#asKtType crashes on PsiClassType for Java type parameter with wrong use site
  • KT-65571 Support VirtualFile inputs to Analysis API modules
  • KT-66485 Substituted types are not provided for callable references
  • KT-66498 Analysis API: 'KtFe10SymbolDeclarationOverridesProvider' considers a class to be a subclass of itself
  • KT-64579 K2 IDE: "Expected FirResolvedArgumentList for FirAnnotationCallImpl of FirValueParameterImpl(Source) but FirArgumentListImpl found"
  • KT-65978 Analysis API: Use soft references in FileStructureCache
  • KT-64051 K2 IDE: Analysis API: Unresolved links to typealias in KDoc
  • KT-66189 K2 / IDE: KtFirExpressionTypeProvider bugs
  • KT-61422 K2 IDE: "No array element type for vararg value parameter: org.jetbrains.kotlin.fir.declarations.impl.FirValueParameterImpl"
  • KT-66276 K2: Analysis API: TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM false positive for script parameter
  • KT-66232 K2: Analysis API: cover ScriptWithCustomDefDiagnosticsTestBaseGenerated by LL FIR tests
  • KT-60996 K2: Stub Based Deserializer: Set versionRequirements to enable VERSION_REQUIREMENT_DEPRECATION diagnostics
  • KT-66306 K2: Analysis API: drop ability to enable global phase resolve lock
  • KT-55750 LL FIR: Implement multi-threaded resolve
  • KT-65563 Analysis API: Missing session component FirExpectActualMatchingContextFactory in LLFirLibrarySession
  • KT-66173 K2: No 'org.jetbrains.kotlin.fir.scopes.impl.FirDelegatedMembersFilter' in array owner: LLFirLibrarySession
  • KT-66238 Gradle kotlin build scripts - a lot of unresolved symbols after latest changes in kotlin master
  • KT-65099 K2: Recursive local storage cache check for Fir2IrDeclarationStorage::createAndCacheIrPropertySymbols()
  • KT-65265 Analysis API: Add library session invalidation tests
  • KT-56288 Analysis API: Add tests for session invalidation on the Analysis API side
  • KT-64000 K2: make AnnotationArgumentsStateKeepers more accurate
  • KT-63606 K2: Analysis API: rewrite FirLazyAnnotationTransformer to avoid redundant transformations
  • KT-65191 KtFirMultiplatformInfoProvider#getExpectForActual doesn't return expect function for slightly broken code
  • KT-62136 Analysis API: Add concurrent tests for CleanableSoftValueCache
  • KT-61222 K2: Add lifecycle management for KtResolveExtension
  • KT-65960 Analysis API: Test infrastructure indexes binary libraries from decompiled files instead of stubs during IDE mode tests
  • KT-65240 K2: CodeGen API fails to resolve Annotation parameter type when it runs FIR2IR for a class with a parent class from other module if the parent class has an annotation from another module
  • KT-65344 K2: make FirScript statements (declarations) independent
  • KT-65930 AA: receiver type for Int?::foo misses nullability
  • KT-65914 AA: receiver type for this::foo returns return type of the target callable
  • KT-62071 Analysis API: KtFirScopeProvider.getScopeContextForPosition throws exception when ImplicitReceiverValue.implicitScope is null
  • KT-65780 K2: polish FileStructure implementation for FirFile
  • KT-62840 K2 Script: everything around destructuring declaration on top level of scripts are broken
  • KT-64528 K2 IDE: MPP: unregistered component 'org.jetbrains.kotlin.fir.scopes.impl.FirDelegatedMembersFilter'
  • KT-64921 K2 IDE: references in platform code resolve to expect classifier instead of actual
  • KT-61296 K2: do not resolve the entire file on lazyResolve call if FirFile is passed
  • KT-65683 Analysis API: Dangling file session creation causes a computeIfAbsent contract violation
  • KT-64884 K2 IDE. FP [NAMED_PARAMETER_NOT_FOUND] for copy method of library data class when class has not parameter-properties
  • KT-65763 K2: value parameter from library data class copy have RAW_FIR phase
  • KT-65665 Analysis API: support KtDelegatedSuperTypeEntry in KtFirExpressionInfoProvider.isUsedAsExpression
  • KT-62899 K2 IDE. IDE ignores @Suppress annotation for errors
  • KT-65655 Analysis API: KtCodeCompilationException should not strongly reference FIR sessions
  • KT-62302 Support PsiType -> KtType conversion
  • KT-64604 K2: IDE K2: "Modules are inconsistent during performance tests"
  • KT-65345 K2: unify FirDesignation and ...
Read more

Kotlin 2.0.0-RC3

10 May 11:01
Compare
Choose a tag to compare
Kotlin 2.0.0-RC3 Pre-release
Pre-release

Changelog

Apple Ecosystem

  • KT-67892 KotlinNativeLink task instantiates with a fixed list of apiFiles

Compiler

  • KT-67993 K2: PCLA Inference throws exception with local objects
  • KT-67912 K2: Cannot inference type properly from inline function with Type parameter
  • KT-68056 Prohibit referencing java field in case of conflict with property from companion object of the derived class
  • KT-67609 K2: False negative INFERRED_TYPE_VARIABLE_INTO_EMPTY_INTERSECTION_ERROR
  • KT-67875 K2: Resolution ambiguity between Iterable and varargs
  • KT-67699 Not enough information to infer type argument for 'Error' using Arrow's Raise context receiver since Kotlin 2.0.0-Beta3
  • KT-59897 K2: Disappeared PACKAGE_OR_CLASSIFIER_REDECLARATION
  • KT-50020 K2: False-negative USAGE_IS_NOT_INLINEABLE when lambda in receiver position
  • KT-67810 K2: public-API inline function cannot access non-public-API annotation enum

JavaScript

  • KT-67978 K2: Declaration of such kind (expect) cannot be exported to JavaScript

Native

  • KT-67218 Native: nested classes in kx.serialization ProtoBuf produce empty array for release binary

Tools. Gradle

  • KT-67746 Indicate for users they need to apply the new Kotlin Compose Gradle plugin
  • KT-67387 Enable intrinsic remember by default in compose compiler gradle plugin
  • KT-67762 Rename Kotlin Compose Compiler plugin on Gradle portal
  • KT-67778 Clarify documentation for compose metricsDestination property

Tools. Gradle. Multiplatform

  • KT-67806 KMP import fails if android target has flavors
  • KT-67636 Gradle configuration error when use withJava()
  • KT-67042 K2: Unresolved reference 'convertRadiusToSigma'

Tools. Scripts

  • KT-67727 Kotlin Scripting with language version 2.0 fails during IR lowering on empty scripts

Tools. Wasm

  • KT-67785 Kotlin/Wasm: Node.JS 22 does not need experimental-wasm-gc flag anymore

1.9.24

07 May 09:49
Compare
Choose a tag to compare

Changelog

Backend. Wasm

  • KT-64890 K/Wasm compiler crash with external class and Kodein

Compiler

  • KT-65235 JDK 21 might lead to change in overloads resolution
  • KT-66768 K1: False positive UNRESOLVED_REFERENCE in super.getFirst/getLast call

Native

  • KT-67218 Native: nested classes in kx.serialization ProtoBuf produce empty array for release binary

Tools. Gradle

  • KT-67139 Build reports can be overridden
  • KT-67138 Json report is empty for incremental compilation

Tools. Gradle. Multiplatform

  • KT-67127 KMP: IDE Dependency Resolver for CInterops reports errors on linux and windows machines
  • KT-66514 Don't get output file from Cinterop task for IDE Import if host os doesn't support it

Tools. JPS

  • KT-65043 JPS dumb mode should respect maps needed for the compiler

Tools. Wasm

  • KT-67785 Kotlin/Wasm: Node.JS 22 does not need experimental-wasm-gc flag anymore
  • KT-65864 K/Wasm: update Node.js to 22.x

Kotlin 2.0.0-RC2

29 Apr 13:40
Compare
Choose a tag to compare
Kotlin 2.0.0-RC2 Pre-release
Pre-release

Changelog

Backend. Wasm

  • KT-66515 Wasm: "call param types must match" during the build
  • KT-67435 K/Wasm: import.meta.url transforming into absolute local path in webpack
  • KT-66905 K/Wasm: support new version of exception handling proposal

Compiler

New Features

  • KT-59688 K2: consider removing smartcasts only from the only visibile property with specific name, not from all of them

Performance Improvements

  • KT-67388 FP intellij: performance degradation in build 611
  • KT-67507 K2: Slow compilation times when a class has a lot of possibly conflicting declarations

Fixes

  • KT-57678 K2: Inconsistency in how K2 analyzes unresolved code for loops and changing closures
  • KT-66976 Some value class diagnostics are missed
  • KT-54920 K2: when with a single branch stops being exhaustive the second time it's done
  • KT-67307 K2: "Cannot find cached type parameter by FIR symbol" in JpaRepository.saveAll
  • KT-65771 K2: "IndexOutOfBoundsException: Cannot pop operand off an empty stack" when calling method imported using typealias as callable qualifier
  • KT-67502 K2: "property must be initialized or be abstract" with try-finally in secondary constructor
  • KT-67456 K2: "property must be initialized or be abstract" depending on constructor declaration order
  • KT-67628 K2: "IllegalArgumentException: Expected nullable type" β€” alias of nullable type analyzed as non-nullable in type parameter
  • KT-67625 K2: Array aliases can't be used as vararg values
  • KT-67624 K2: False negative "The feature "break continue in inline lambdas" is experimental and should be enabled explicitly" in elvis operator
  • KT-60271 K2: origins are not set on compare operators
  • KT-44557 Implement main function detection to FIR
  • KT-67593 K2: false negative SUPER_CALL_WITH_DEFAULT_PARAMETERS
  • KT-67484 K2: FIR2IR generates incorrect access to f/o of lateinit internal var
  • KT-67486 K2: Calling method from a Java (implementing a Kotlin class) with named parameters is no longer possible if Java method has different parameter names
  • KT-47382 JVM / IR: "AssertionError: Unbound private symbol IrFieldSymbolImpl" caused by string template in constructor and extension property
  • KT-67581 K2: Compiler fails on actualizing abstract class with sealed Java class via type alias
  • KT-67014 K1/K2 handle when expression as annotation target differently
  • KT-67254 K1/K2 both allow annotations on loops, assignments, array sets
  • KT-67224 K2/Native: Member overrides different '@Throws' filter from separate module
  • KT-66960 K2. KMP. False negative 'when' expression must be exhaustive without sealed class inheritor from common source-set
  • KT-63466 @NonNull on a type-variable usage doesn't take precedence over a wildcard type argument
  • KT-56134 K2: NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER diagnostic is reported for the wrong symbol
  • KT-59872 K2: Disappeared TYPE_MISMATCH
  • KT-67192 K2: Disappeared TYPE_MISMATCH [3]
  • KT-67191 K2: Disappeared TYPE_MISMATCH [4]
  • KT-64860 K2: Consider using different ConstraintPosition when fixing variables for PCLA
  • KT-67189 K2: Disappeared TYPE_MISMATCH [5]
  • KT-67551 K2: No wrong annotation target error for for statement
  • KT-67367 K2: Incorrect resolution to top-level function with less specific signature in presence of SAM constructor on the same tower level
  • KT-67374 K2: Object is not smartcasted to type parameter type
  • KT-67264 K2: "argument type mismatch" with suspend lambda and java wildcard
  • KT-67221 K2: "new inference error [NewConstraintError at Incorporate TypeVariable" for captured type
  • KT-67311 K2: "Argument type mismatch" caused by lambda type when using named arguments
  • KT-62043 K2: Fix FirCompileKotlinAgainstCustomBinariesTest.testRawTypes
  • KT-66743 Lambda receivers and anonymous function parameters of inaccessible types are allowed
  • KT-67315 K2: Some default imports are not excluded
  • KT-56126 Avoid using descriptors at JvmPlatformAnalyzerServices::computePlatformSpecificDefaultImports
  • KT-66513 K2: Suppressing OPT_IN_USAGE_ERROR is now a warning in K2, preventing safe code gen compatible with -Werror
  • KT-67314 PCLA works inconsistently with smart-cast related CS forks
  • KT-67144 K2: potential NPE when assigning to unstable vars
  • KT-66971 K2: missing SMARTCAST_IMPOSSIBLE on open val declared in another module
  • KT-66904 K2: possible NPE when reassigning captured variables
  • KT-67212 K2: "Failed to find functional supertype for class org.jetbrains.kotlin.fir.types.ConeCapturedType"
  • KT-67283 K2: No SAM conversion for fun interface with abstract toString
  • KT-66768 K1: False positive UNRESOLVED_REFERENCE in super.getFirst/getLast call
  • KT-67318 Compiler fails with OutOfMemoryError on combination of PCLA+smart cast
  • KT-65812 K2: "OutOfMemoryError: Java heap space" in kotlin.utils.SmartList.add
  • KT-66956 K2: false negative CONST_VAL_WITH_NON_CONST_INITIALIZER for inc/dec operators
  • KT-67205 K2: can't deserialize annotation with local class as argument
  • KT-65449 K2: build KAPT user project and pass it to CI
  • KT-67142 K2: IrFakeOverrideBuilder: AbstractMethodError on raw type argument in a Java superclass
  • KT-62570 IncompatibleClassChangeError due to overriding final method
  • KT-67190 K2: Disappeared TYPE_MISMATCH [2]
  • KT-67188 K2: Disappeared TYPE_MISMATCH [6]
  • KT-67187 K2: Disappeared TYPE_MISMATCH [1]
  • KT-63381 IrFakeOverrideBuilder: PublishedApi affects overridability of internal members
  • KT-59856 K2: Check ConeDiagnostics that are not mapped to KtDiagnostics
  • KT-57502 K2: Smart casts should be forbidden if variable that remembers the smart cast is declared by delegation
  • KT-63967 K2: Missing getterSignature in metadata for script variables
  • KT-59372 K2: Missing SELF_CALL_IN_NESTED_OBJECT_CONSTRUCTOR_ERROR
  • KT-60526 K2: Fix the TODO in convertToIr.kt
  • KT-67027 K2: Review all use-sites of annotation arguments utilities
  • KT-66953 K2: toByte() call on Char leads to ClassCastException for klib backends
  • KT-65415 K2: Stdlib K2 build error: IrConstructorSymbolImpl is already bound

IR. Actualizer

  • KT-67488 K2: AssertionError No such value argument slot in IrConstructorCallImpl: 0 (total=0

JavaScript

Read more

Kotlin 2.0.0-RC1

09 Apr 09:03
Compare
Choose a tag to compare
Kotlin 2.0.0-RC1 Pre-release
Pre-release

Changelog

Analysis. API

Fixes

  • KT-65616 K2: FirDeclarationStatusImpl cannot be cast to FirResolvedDeclarationStatus from STATUS
  • KT-64241 K2: Unresolved calls to functions in scripts depending on included projects
  • KT-65813 Analysis API Standalone: FirDeclarationForCompiledElementSearcher does not find compiled elements
  • KT-66052 AA: render expect/actual modifier
  • KT-66795 KtCodeFragment.clone() is broken
  • KT-66532 K2 CodeGen AA: missing annotation setup for function in source module but not in a compile target file
  • KT-65561 Analysis API: dummy.kt is not a physical file
  • KT-64833 Analysis API: Members implemented by delegation have no overridden symbols
  • KT-62405 Analysis API: Symbols SUBSTITUTION_OVERRIDE have no overridden symbols
  • KT-66749 K2: "Collection contains no element matching the predicate" on an unresolved call
  • KT-66719 AbstractGetKlibSourceFileNameTest: The dependency to ":native:analysis-api-klib-reader" breaks JPS compilation
  • KT-66603 Analysis API: support type annotations in KtPsiTypeProviderMixIn#asPsiType
  • KT-64505 Analysis API Standalone: Remove test-specific calculation of sealed class inheritors
  • KT-66013 Analysis API Standalone: Sealed inheritors aren't correctly calculated for source classes
  • KT-62880 K2 IDE: Unresolved java annotation methods in KDoc
  • KT-66530 K2: Analysis API: KtPsiTypeProvider#asKtType crashes on PsiClassType for Java type parameter with wrong use site
  • KT-66485 Substituted types are not provided for callable references
  • KT-66498 Analysis API: 'KtFe10SymbolDeclarationOverridesProvider' considers a class to be a subclass of itself
  • KT-66189 K2 / IDE: KtFirExpressionTypeProvider bugs
  • KT-59732 FirLazyResolveContractViolationException: lazyResolveToPhase(IMPORTS) cannot be called from a transformer with a phase IMPORTS from serialisation plugin

Analysis. Light Classes

  • KT-66692 SLC: findAttributeValue for attribute w/ default value in Java returns null

Apple Ecosystem

  • KT-66446 Diagnostic never showed, and build fails when CocoaPods dependency is used with embedAndSign task and linking type is dynamic
  • KT-66445 Diagnostic never showed when CocoaPods dependency is used with embedAndSign task and linking type is static

Backend. Wasm

  • KT-66471 Null method reference with Kotlin/Wasm on 2.0.0-Beta4
  • KT-65210 K/Wasm ::class operator produces Number KClass for Short expression
  • KT-58088 [PL] Support & enable partial linkage for Wasm
  • KT-66104 Wasm: compiler crash: NoSuchElementException: Sequence contains no element matching the predicate
  • KT-64449 K2: Implement K1WasmWasiCodegenBoxTestGenerated for K2
  • KT-61263 K/Wasm: add a way to turn on k2 in wasm examples using Compose

Compiler

New Features

  • KT-32754 Choose existing extensions over additional built-ins members from JDK except overrides
  • KT-64350 K2: deprecate using typealias as a callable qualifier in imports
  • KT-62547 Introduce a language feature flag for smartcasts based on "memory" variables

Performance Improvements

  • KT-65005 K2: Investigate testCommonSuperTypeContravariant performance
  • KT-65579 K2: performance regression in FP Space
  • KT-61121 [K/N] Kotlin Native compiler performance is slow when generating large frameworks

Fixes

  • KT-67185 K2: Incorrect coercion-to-Unit leading to CCE at runtime
  • KT-63836 K2: No deprecation error message in common metadata compilation
  • KT-57618 K2: complex deprecation messages are not printed in the error
  • KT-61787 K2 doesn't report warnings for some Gradle tasks
  • KT-62063 K2: drop pre-release flag in 2.0-RC
  • KT-65578 K2: implement a deprecation warning for KT-57014 (wrong nullability returned from JDK SAM constructor lambda)
  • KT-65120 K2 Consider turn into platform checkers ones which checks for objC
  • KT-67090 K2: Exception from metadata compilation when compiling class with annotations from dependencies
  • KT-59479 K2: build KorGE
  • KT-62560 K2: KAPT4: annotation @ReplaceWith is missing a default value for the element 'imports'
  • KT-67027 K2: Review all use-sites of annotation arguments utilities
  • KT-60096 K2: Introduced API_NOT_AVAILABLE
  • KT-64151 K2: consider implementing FIR-level constant evaluation
  • KT-65195 K2: Unexpected exception when executing dynamic array element inc/dec
  • KT-63416 K2 / Contracts: False positive "Leaked in-place lambda" warning caused by suspend lambda with callsInPlace contract
  • KT-57812 K2: support serialization of type annotation's arguments
  • KT-66717 Incorrect diagnostics around intersection property overrides
  • KT-65603 K2: No approximation is done on public, but effectively private property
  • KT-59932 K2: Disappeared AMBIGUOUS_ANONYMOUS_TYPE_INFERRED
  • KT-66527 K2: type mismatch on override for type
  • KT-59400 K2: Missing CANNOT_INFER_VISIBILITY
  • KT-64534 K2: org.jetbrains.kotlin.util.FileAnalysisException: Somewhere in file
  • KT-65649 K2: IR has incorrect origins for some inplace updating operators
  • KT-66748 K2: False-positive AMBIGUOUS_SUPER in toString
  • KT-67013 K2: ClassCastException: class FirConstructorSymbol cannot be cast to class FirNamedFunctionSymbol
  • KT-52175 K2: WRONG_ANNOTATION_TARGET for annotation that used inside if
  • KT-66902 K2: "Named arguments are prohibited for non-Kotlin functions" with Java interop
  • KT-66793 K2: "assigning single elements to varargs in named form is prohibited." caused by varargs supplied from java with elvis operator
  • KT-65235 JDK 21 might lead to change in overloads resolution
  • KT-66350 K2: "IllegalStateException: Unsupported compile-time value STRING_CONCATENATION" when evaluating an annotation argument string
  • KT-65035 IrFakeOverrideBuilder: AbstractMethodError on inheritance from Java subclass of CharSequence with inherited implementations
  • KT-66447 Implement KT-59138 under a language feature
  • KT-66701 K2: Java interface method override via Kotlin class rejected
  • KT-66730 K2: False positive RETURN_TYPE_MISMATCH in return statement in SAM constructor
  • KT-66909 K2: Implement a diagnostic for returning null from a lambda with expected return type Unit!
  • KT-66570 Generic wildcard upper bound inference error
  • KT-65272 K2: invoke operator applies "restricted suspen...
Read more