This release features several significant API changes. To help with migration, we've prepared a special guide.
KotlinClassHeader with direct usage of kotlin.Metadata annotation. Former reserved exclusively for use from Java clients.impl package renamed to internalKotlinClassMetadata.write is introduced instead.Flag.Type.IS_DEFINITELY_NON_NULL.KmClass.contextReceiverTypes, KmFunction.contextReceiverTypes, KmProperty.contextReceiverTypes@ExperimentalContextReceivers on the usages..kotlin_builtins/.kotlin_metadata files.KmProperty.syntheticMethodForDelegate for optimized delegated properties (KT-39055).JvmPropertyExtensionVisitor.visitSyntheticMethodForDelegate for optimized delegated properties (KT-39055).JvmClassExtensionVisitor.visitJvmFlagsJvmFlag.Class.HAS_METHOD_BODIES_IN_INTERFACEJvmFlag.Class.IS_COMPILED_IN_COMPATIBILITY_MODEKT-48965 Make the type of KmValueParameter.type non-null KmTypeJvmTypeAliasExtensionVisitor and JvmValueParameterExtensionVisitorKmClass.inlineClassUnderlyingTypeKmAnnotationArgument doesn't have val value: T anymore, it was moved to a subclass named KmAnnotationArgument.LiteralValue<T>. The property value is:annotation in AnnotationValueelements in ArrayValueenumClassName/enumEntryName in EnumValueclassName/arrayDimensionCount in KClassValueUByteValue, UShortValue, UIntValue, ULongValueKT-44783 Add Flag.IS_VALUE for value classesFlag.IS_INLINE is deprecated, use Flag.IS_VALUE insteadKotlinClassHeader.bytecodeVersion and KotlinClassHeader's constructor that takes a bytecode version array. Related to 'KT-41758`.KT-45594 KClass annotation argument containing array of classes is not read/written correctlyKT-45635 Add underlying property name & type for inline classesKotlinClassMetadata.*.Writer.write throws exception on metadataVersion earlier than 1.4.0. Note: metadata of version 1.4 is readable by Kotlin compiler/reflection of versions 1.3 and later.KotlinClassMetadata.*.Writer.write no longer accept bytecodeVersion.KT-42429 Wrong interpretation of Flag.Constructor.IS_PRIMARYFlag.Constructor.IS_PRIMARY is deprecated, use Flag.Constructor.IS_SECONDARY insteadKT-37421 Add Flag.Class.IS_FUN for functional interfacesKmModule.optionalAnnotationClasses for the new scheme of compilation of OptionalExpectation annotations in multiplatform projects (KT-38652)KT-26602 Provide a value-based APIKT-31308 Add module name extensions to kotlinx-metadata-jvmKT-31338 Retain “is moved from interface companion” property flag in kotlinx-metadata-jvmjvmFlags: Flagsdesc parameters to signature in JvmFunctionExtensionVisitor, JvmPropertyExtensionVisitor, JvmConstructorExtensionVisitorKT-25371 Support unsigned integers in kotlinx-metadata-jvmKT-28682 Wrong character replacement in ClassName.jvmInternalName of kotlinx-metadata-jvmKT-25920 Compile kotlinx-metadata-jvm with JVM target bytecode version 1.6 instead of 1.8KT-25223 Add JvmFunctionExtensionVisitor.visitEndKT-26188 Do not pass field signature for accessor-only propertiesJvmDeclarationContainerExtensionVisitor.visitLocalDelegatedProperty)KT-24881 Use correct class loader in kotlinx-metadata to load MetadataExtensions implementationsKT-24945 Relocate package org.jetbrains.kotlin to fix IllegalAccessError in annotation processingorg.jetbrains.kotlin to org.jetbrains.kotlinxJvmMethodSignature and JvmFieldSignature to represent JVM signatures instead of plain strings