To accommodate for a future stable release as a part of Kotlin distribution. See also: KT-63156, KT-63161, and KT-63219
10 KiB
kotlinx-metadata-jvm
2.0.0 and higher
Starting with Kotlin 2.0, kotlin-metadata-jvm library is promoted to stable, and is a part of Kotlin distribution now.
It means that it has the same versioning as Kotlin compiler and Kotlin standard library, and the same release cycle.
To achieve this, coordinates of the library were changed: it is now in org.jetbrains.kotlin group with kotlin-metadata-jvm id (notice
the drop of X from the coordinates).
This also means that the root package was changed from kotlinx.metadata to kotlin.metadata.
Among other noticeable changes, all previously deprecated declarations were removed from the library. In case you need to perform a migration with aid, migrate your project to 0.9.0 version first using migration guide.
This is the last entry of this changelog. General changelog for Kotlin's Libraries subsystem is available in the ChangeLog.md at the repository root.
0.9.0
The main purpose of this release is to promote all previous deprecations to ERROR level if they were not already. Please refer to the migration guide if you are using deprecated functions. Also, this release includes several bugfixes. It still uses Kotlin 1.9, but is able to read or write metadata of version 2.0.
- Add missing documentation to
KmVersionRequirement.toString - Raise all deprecations in kotlinx-metadata-jvm to ERROR (KT-63157)
- Do not allow writing metadata versions that are too high (KT-64230)
- Add
KmVersionRequirementKind.UNKNOWN(KT-60870)
0.8.0
This release concludes our API overhaul: it features last significant API changes, as well as raised deprecations to ERROR level almost everywhere. To help with migration, we've prepared a special guide. It still uses Kotlin 1.9, but is able to read or write metadata of version 2.0.
- Provide a separate class for representing metadata version in kotlinx-metadata:
JvmMetadataVersion - Unify write() method and make it a member of
KotlinClassMetadata(alsoKotlinModuleMetadata) - Split
KotlinClassMetadata.readintoreadStrictandreadLenient - Promote most deprecations in kotlinx-metadata-jvm to ERROR, including Flags API and Visitors API.
- Deprecate
KmProperty.hasGetter(hasSetter)in favor ofKmProperty.getter(setter) - Add missing delegation in
KmDeclarationContainerVisitor.visitExtensionsfor consistency
0.7.0
This release features several significant API changes. To help with migration, we've prepared a special guide.
- Update to Kotlin 1.9 with metadata version 1.9, support reading/writing metadata of version 2.0 which will be used in Kotlin 2.0
- Rework flags API (see migration from Flags API to Attributes API).
- Restructure
KotlinClass(Module)Metadata.write/read(see changes in reading and writing API). - Add
@JvmStatic+@JvmOverloadsto writing functions inKotlinClassMetadata - Deprecate
KmModule.annotationsfor removal because it is always empty and should not be used. - Move
KmModuleFragmentto ankotlinx.metadata.internal.commonpackage. This class is intended for internal use only. If you have use-cases for it, please report an issue to YouTrack. - Improve
toString()forKmAnnotationArgument - Add missing deprecation for
KmExtensionTypeand experimentality forKmConstantValue. - Enhance kotlinx-metadata-jvm KDoc and set up Dokka.
0.6.2
This release uses Kotlin 1.8.20 with metadata version 1.8, and as a special case, is able to read metadata of version 2.0. This is done as an incentive to test K2 compiler and 2.0 language version. No other changes were made and no migration is needed. Note: 0.6.1 was released with an incorrect fix for this problem. Do not use 0.6.1.
0.6.0
This release features several significant API changes. To help with migration, we've prepared a special guide.
- Update to Kotlin 1.8 with metadata version 1.8, support reading/writing metadata of version 1.9 which will be used in Kotlin 1.9
- Deprecate Visitors API
- Replace usages of
KotlinClassHeaderwith direct usage ofkotlin.Metadataannotation. Former reserved exclusively for use from Java clients. implpackage renamed tointernal- Writers are deprecated. Special function family
KotlinClassMetadata.writeis introduced instead.
0.5.0
- Update to Kotlin 1.7 with metadata version 1.7, support reading/writing metadata of version 1.8 which will be used in Kotlin 1.8.
- kotlinx-metadata-jvm can no longer be used on JVM 1.6, and now requires JVM 1.8 or later.
- Add
Flag.Type.IS_DEFINITELY_NON_NULL. - Add
KmClass.contextReceiverTypes,KmFunction.contextReceiverTypes,KmProperty.contextReceiverTypes- The API is experimental and requires
@ExperimentalContextReceiverson the usages.
- The API is experimental and requires
0.4.2
- Add experimental internal API to read metadata of
.kotlin_builtins/.kotlin_metadatafiles.
0.4.1
- Add
KmProperty.syntheticMethodForDelegatefor optimized delegated properties (KT-39055).
0.4.0
- Update to Kotlin 1.6 with metadata version 1.6, support reading/writing metadata of version 1.7 which will be used in Kotlin 1.7.
- Add
JvmPropertyExtensionVisitor.visitSyntheticMethodForDelegatefor optimized delegated properties (KT-39055). - Add JVM-specific class flags:
JvmClassExtensionVisitor.visitJvmFlagsJvmFlag.Class.HAS_METHOD_BODIES_IN_INTERFACEJvmFlag.Class.IS_COMPILED_IN_COMPATIBILITY_MODE
KT-48965Make the type ofKmValueParameter.typenon-nullKmType- Remove unused
JvmTypeAliasExtensionVisitorandJvmValueParameterExtensionVisitor - Fix type flags (suspend, definitely non-null) on underlying type of inline class available via
KmClass.inlineClassUnderlyingType
0.3.0
- Update to Kotlin 1.5 with metadata version 1.5. Note: metadata of version 1.5 is readable by Kotlin compiler/reflection of versions 1.4 and later.
- Breaking change: improve API of annotation arguments.
KmAnnotationArgumentdoesn't haveval value: Tanymore, it was moved to a subclass namedKmAnnotationArgument.LiteralValue<T>. The propertyvalueis:- renamed to
annotationinAnnotationValue - renamed to
elementsinArrayValue - removed in favor of
enumClassName/enumEntryNameinEnumValue - removed in favor of
className/arrayDimensionCountinKClassValue - changed type from signed to unsigned integer types in
UByteValue,UShortValue,UIntValue,ULongValue
- renamed to
KT-44783Add Flag.IS_VALUE for value classes- Breaking change:
Flag.IS_INLINEis deprecated, useFlag.IS_VALUEinstead
- Breaking change:
- Breaking change: deprecate
KotlinClassHeader.bytecodeVersionandKotlinClassHeader's constructor that takes a bytecode version array. Related to 'KT-41758`. KT-45594KClass annotation argument containing array of classes is not read/written correctlyKT-45635Add underlying property name & type for inline classes
0.2.0
- 'KT-41011` Using KotlinClassMetadata.Class.Writer with metadata version < 1.4 will write incorrect version requirement table
- Breaking change:
KotlinClassMetadata.*.Writer.writethrows exception onmetadataVersionearlier than 1.4.0. Note: metadata of version 1.4 is readable by Kotlin compiler/reflection of versions 1.3 and later.
- Breaking change:
- Breaking change:
KotlinClassMetadata.*.Writer.writeno longer acceptbytecodeVersion. KT-42429Wrong interpretation of Flag.Constructor.IS_PRIMARY- Breaking change:
Flag.Constructor.IS_PRIMARYis deprecated, useFlag.Constructor.IS_SECONDARYinstead
- Breaking change:
KT-37421Add Flag.Class.IS_FUN for functional interfaces- Add
KmModule.optionalAnnotationClassesfor the new scheme of compilation of OptionalExpectation annotations in multiplatform projects (KT-38652)
0.1.0
KT-26602Provide a value-based API
0.0.6
KT-31308Add module name extensions to kotlinx-metadata-jvmKT-31338Retain "is moved from interface companion" property flag in kotlinx-metadata-jvm- Breaking change: JvmPropertyExtensionVisitor.visit has a new parameter
jvmFlags: Flags
- Breaking change: JvmPropertyExtensionVisitor.visit has a new parameter
- Correctly write "null" constant value in effect expression of a contract
- Rename
descparameters tosignaturein JvmFunctionExtensionVisitor, JvmPropertyExtensionVisitor, JvmConstructorExtensionVisitor - Do not expose KmExtensionType internals
- Add KmExtensionVisitor.type to get dynamic type of an extension visitor
0.0.5
KT-25371Support unsigned integers in kotlinx-metadata-jvmKT-28682Wrong character replacement in ClassName.jvmInternalName of kotlinx-metadata-jvm
0.0.4
KT-25920Compile kotlinx-metadata-jvm with JVM target bytecode version 1.6 instead of 1.8KT-25223Add JvmFunctionExtensionVisitor.visitEndKT-26188Do not pass field signature for accessor-only properties
0.0.3
- Support metadata of local delegated properties (see
JvmDeclarationContainerExtensionVisitor.visitLocalDelegatedProperty) KT-24881Use correct class loader in kotlinx-metadata to load MetadataExtensions implementationsKT-24945Relocate package org.jetbrains.kotlin to fix IllegalAccessError in annotation processing
0.0.2
- Change group ID from
org.jetbrains.kotlintoorg.jetbrains.kotlinx - Depend on a specific version of kotlin-stdlib from Maven Central instead of snapshot from Sonatype Nexus
- Use
JvmMethodSignatureandJvmFieldSignatureto represent JVM signatures instead of plain strings
0.0.1
- Initial release