Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump kotlinx-serialization.version from 1.7.3 to 1.8.0 #145

Merged

Conversation

dependabot[bot]
Copy link
Contributor

@dependabot dependabot bot commented on behalf of github Jan 6, 2025

Bumps kotlinx-serialization.version from 1.7.3 to 1.8.0.
Updates org.jetbrains.kotlinx:kotlinx-serialization-cbor-jvm from 1.7.3 to 1.8.0

Release notes

Sourced from org.jetbrains.kotlinx:kotlinx-serialization-cbor-jvm's releases.

1.8.0

This release contains all of the changes from 1.8.0-RC. Kotlin 2.1.0 is used as a default, while upcoming 2.1.10 is also supported. Also added small bugfixes, including speedup of ProtoWireType.from (#2879).

Changelog for 1.8.0-RC is presented below:

@JsonIgnoreUnknownKeys annotation

Previously, only global setting JsonBuilder.ignoreUnknownKeys controlled whether Json parser would throw exception if input contained a property that was not declared in a @Serializable class. There were a lot of complaints that this setting is not flexible enough. To address them, we added new @JsonIgnoreUnknownKeys annotation that can be applied on a per-class basis. With this annotation, it is possible to allow unknown properties for annotated classes, while general decoding methods (such as Json.decodeFromString and others) would still reject them for everything else. See details in the corresponding PR.

Stabilization of SerialDescriptor API and @SealedSerializationApi annotation

SerialDescriptor, SerialKind, and related API has been around for a long time and has proven itself useful. The main reason @ExperimentalSerializationApi was on SerialDescriptor's properties is that we wanted to discourage people from subclassing it. Fortunately, Kotlin 2.1 provides a special mechanism for such a case — SubclassOptInRequired. New kotlinx.serialization.SealedSerializationApi annotation designates APIs as public for use, but closed for implementation — the case for SerialDescriptor, which is a non-sealed interface for technical reasons. Now you can use most of SerialDescriptor and its builders API without the need to opt-in into experimental serialization API. See the PR for more details.

Note: All SerialKinds are stable API now, except PolymorphicKind — we may want to expand it in the future.

Generate Java 8's default method implementations in interfaces

TL;DR This change ensures better binary compatibility in the future for library. You should not experience any difference from it.

kotlinx.serialization library contains a lot of interfaces with default method implementations. Historically, Kotlin compiled a synthetic DefaultImpls class for them. Starting from Kotlin 1.4, it was possible to compile them using as Java 8's default methods to ensure that new methods can still be added to interfaces without the need for implementors to recompile. To preserve binary compatibility with existing clients, a special all-compatbility mode is supported in compiler to generate both default methods and synthetic DefaultImpls class.

Now, kotlinx.serialization finally makes use of this all-compatibility mode, which potentially allows us to add new methods to interfaces such as SerialDescriptor, Encoder, Decoder, etc., without breaking existing clients. This change is expected to have no effect on existing clients, and no action from your side is required.

... (truncated)

Changelog

Sourced from org.jetbrains.kotlinx:kotlinx-serialization-cbor-jvm's changelog.

1.8.0 / 2025-01-06

This release contains all of the changes from 1.8.0-RC. Kotlin 2.1.0 is used as a default, while upcoming 2.1.10 is also supported. Also added small bugfixes, including speedup of ProtoWireType.from (#2879).

1.8.0-RC / 2024-12-10

This is a release candidate for the next version. It is based on Kotlin 2.1.0 and includes a few new features, as well as bugfixes and improvements:

@JsonIgnoreUnknownKeys annotation

Previously, only global setting JsonBuilder.ignoreUnknownKeys controlled whether Json parser would throw exception if input contained a property that was not declared in a @Serializable class. There were a lot of complaints that this setting is not flexible enough. To address them, we added new @JsonIgnoreUnknownKeys annotation that can be applied on a per-class basis. With this annotation, it is possible to allow unknown properties for annotated classes, while general decoding methods (such as Json.decodeFromString and others) would still reject them for everything else. See details in the corresponding PR.

Stabilization of SerialDescriptor API and @SealedSerializationApi annotation

SerialDescriptor, SerialKind, and related API has been around for a long time and has proven itself useful. The main reason @ExperimentalSerializationApi was on SerialDescriptor's properties is that we wanted to discourage people from subclassing it. Fortunately, Kotlin 2.1 provides a special mechanism for such a case — SubclassOptInRequired. New kotlinx.serialization.SealedSerializationApi annotation designates APIs as public for use, but closed for implementation — the case for SerialDescriptor, which is a non-sealed interface for technical reasons. Now you can use most of SerialDescriptor and its builders API without the need to opt-in into experimental serialization API. See the PR for more details.

Note: All SerialKinds are stable API now, except PolymorphicKind — we may want to expand it in the future.

Generate Java 8's default method implementations in interfaces

TL;DR This change ensures better binary compatibility in the future for library. You should not experience any difference from it.

kotlinx.serialization library contains a lot of interfaces with default method implementations. Historically, Kotlin compiled a synthetic DefaultImpls class for them. Starting from Kotlin 1.4, it was possible to compile them using as Java 8's default methods to ensure that new methods can still be added to interfaces without the need for implementors to recompile. To preserve binary compatibility with existing clients, a special all-compatbility mode is supported in compiler

... (truncated)

Commits

Updates org.jetbrains.kotlinx:kotlinx-serialization-cbor from 1.7.3 to 1.8.0

Release notes

Sourced from org.jetbrains.kotlinx:kotlinx-serialization-cbor's releases.

1.8.0

This release contains all of the changes from 1.8.0-RC. Kotlin 2.1.0 is used as a default, while upcoming 2.1.10 is also supported. Also added small bugfixes, including speedup of ProtoWireType.from (#2879).

Changelog for 1.8.0-RC is presented below:

@JsonIgnoreUnknownKeys annotation

Previously, only global setting JsonBuilder.ignoreUnknownKeys controlled whether Json parser would throw exception if input contained a property that was not declared in a @Serializable class. There were a lot of complaints that this setting is not flexible enough. To address them, we added new @JsonIgnoreUnknownKeys annotation that can be applied on a per-class basis. With this annotation, it is possible to allow unknown properties for annotated classes, while general decoding methods (such as Json.decodeFromString and others) would still reject them for everything else. See details in the corresponding PR.

Stabilization of SerialDescriptor API and @SealedSerializationApi annotation

SerialDescriptor, SerialKind, and related API has been around for a long time and has proven itself useful. The main reason @ExperimentalSerializationApi was on SerialDescriptor's properties is that we wanted to discourage people from subclassing it. Fortunately, Kotlin 2.1 provides a special mechanism for such a case — SubclassOptInRequired. New kotlinx.serialization.SealedSerializationApi annotation designates APIs as public for use, but closed for implementation — the case for SerialDescriptor, which is a non-sealed interface for technical reasons. Now you can use most of SerialDescriptor and its builders API without the need to opt-in into experimental serialization API. See the PR for more details.

Note: All SerialKinds are stable API now, except PolymorphicKind — we may want to expand it in the future.

Generate Java 8's default method implementations in interfaces

TL;DR This change ensures better binary compatibility in the future for library. You should not experience any difference from it.

kotlinx.serialization library contains a lot of interfaces with default method implementations. Historically, Kotlin compiled a synthetic DefaultImpls class for them. Starting from Kotlin 1.4, it was possible to compile them using as Java 8's default methods to ensure that new methods can still be added to interfaces without the need for implementors to recompile. To preserve binary compatibility with existing clients, a special all-compatbility mode is supported in compiler to generate both default methods and synthetic DefaultImpls class.

Now, kotlinx.serialization finally makes use of this all-compatibility mode, which potentially allows us to add new methods to interfaces such as SerialDescriptor, Encoder, Decoder, etc., without breaking existing clients. This change is expected to have no effect on existing clients, and no action from your side is required.

... (truncated)

Changelog

Sourced from org.jetbrains.kotlinx:kotlinx-serialization-cbor's changelog.

1.8.0 / 2025-01-06

This release contains all of the changes from 1.8.0-RC. Kotlin 2.1.0 is used as a default, while upcoming 2.1.10 is also supported. Also added small bugfixes, including speedup of ProtoWireType.from (#2879).

1.8.0-RC / 2024-12-10

This is a release candidate for the next version. It is based on Kotlin 2.1.0 and includes a few new features, as well as bugfixes and improvements:

@JsonIgnoreUnknownKeys annotation

Previously, only global setting JsonBuilder.ignoreUnknownKeys controlled whether Json parser would throw exception if input contained a property that was not declared in a @Serializable class. There were a lot of complaints that this setting is not flexible enough. To address them, we added new @JsonIgnoreUnknownKeys annotation that can be applied on a per-class basis. With this annotation, it is possible to allow unknown properties for annotated classes, while general decoding methods (such as Json.decodeFromString and others) would still reject them for everything else. See details in the corresponding PR.

Stabilization of SerialDescriptor API and @SealedSerializationApi annotation

SerialDescriptor, SerialKind, and related API has been around for a long time and has proven itself useful. The main reason @ExperimentalSerializationApi was on SerialDescriptor's properties is that we wanted to discourage people from subclassing it. Fortunately, Kotlin 2.1 provides a special mechanism for such a case — SubclassOptInRequired. New kotlinx.serialization.SealedSerializationApi annotation designates APIs as public for use, but closed for implementation — the case for SerialDescriptor, which is a non-sealed interface for technical reasons. Now you can use most of SerialDescriptor and its builders API without the need to opt-in into experimental serialization API. See the PR for more details.

Note: All SerialKinds are stable API now, except PolymorphicKind — we may want to expand it in the future.

Generate Java 8's default method implementations in interfaces

TL;DR This change ensures better binary compatibility in the future for library. You should not experience any difference from it.

kotlinx.serialization library contains a lot of interfaces with default method implementations. Historically, Kotlin compiled a synthetic DefaultImpls class for them. Starting from Kotlin 1.4, it was possible to compile them using as Java 8's default methods to ensure that new methods can still be added to interfaces without the need for implementors to recompile. To preserve binary compatibility with existing clients, a special all-compatbility mode is supported in compiler

... (truncated)

Commits

Updates org.jetbrains.kotlinx:kotlinx-serialization-core-jvm from 1.7.3 to 1.8.0

Release notes

Sourced from org.jetbrains.kotlinx:kotlinx-serialization-core-jvm's releases.

1.8.0

This release contains all of the changes from 1.8.0-RC. Kotlin 2.1.0 is used as a default, while upcoming 2.1.10 is also supported. Also added small bugfixes, including speedup of ProtoWireType.from (#2879).

Changelog for 1.8.0-RC is presented below:

@JsonIgnoreUnknownKeys annotation

Previously, only global setting JsonBuilder.ignoreUnknownKeys controlled whether Json parser would throw exception if input contained a property that was not declared in a @Serializable class. There were a lot of complaints that this setting is not flexible enough. To address them, we added new @JsonIgnoreUnknownKeys annotation that can be applied on a per-class basis. With this annotation, it is possible to allow unknown properties for annotated classes, while general decoding methods (such as Json.decodeFromString and others) would still reject them for everything else. See details in the corresponding PR.

Stabilization of SerialDescriptor API and @SealedSerializationApi annotation

SerialDescriptor, SerialKind, and related API has been around for a long time and has proven itself useful. The main reason @ExperimentalSerializationApi was on SerialDescriptor's properties is that we wanted to discourage people from subclassing it. Fortunately, Kotlin 2.1 provides a special mechanism for such a case — SubclassOptInRequired. New kotlinx.serialization.SealedSerializationApi annotation designates APIs as public for use, but closed for implementation — the case for SerialDescriptor, which is a non-sealed interface for technical reasons. Now you can use most of SerialDescriptor and its builders API without the need to opt-in into experimental serialization API. See the PR for more details.

Note: All SerialKinds are stable API now, except PolymorphicKind — we may want to expand it in the future.

Generate Java 8's default method implementations in interfaces

TL;DR This change ensures better binary compatibility in the future for library. You should not experience any difference from it.

kotlinx.serialization library contains a lot of interfaces with default method implementations. Historically, Kotlin compiled a synthetic DefaultImpls class for them. Starting from Kotlin 1.4, it was possible to compile them using as Java 8's default methods to ensure that new methods can still be added to interfaces without the need for implementors to recompile. To preserve binary compatibility with existing clients, a special all-compatbility mode is supported in compiler to generate both default methods and synthetic DefaultImpls class.

Now, kotlinx.serialization finally makes use of this all-compatibility mode, which potentially allows us to add new methods to interfaces such as SerialDescriptor, Encoder, Decoder, etc., without breaking existing clients. This change is expected to have no effect on existing clients, and no action from your side is required.

... (truncated)

Changelog

Sourced from org.jetbrains.kotlinx:kotlinx-serialization-core-jvm's changelog.

1.8.0 / 2025-01-06

This release contains all of the changes from 1.8.0-RC. Kotlin 2.1.0 is used as a default, while upcoming 2.1.10 is also supported. Also added small bugfixes, including speedup of ProtoWireType.from (#2879).

1.8.0-RC / 2024-12-10

This is a release candidate for the next version. It is based on Kotlin 2.1.0 and includes a few new features, as well as bugfixes and improvements:

@JsonIgnoreUnknownKeys annotation

Previously, only global setting JsonBuilder.ignoreUnknownKeys controlled whether Json parser would throw exception if input contained a property that was not declared in a @Serializable class. There were a lot of complaints that this setting is not flexible enough. To address them, we added new @JsonIgnoreUnknownKeys annotation that can be applied on a per-class basis. With this annotation, it is possible to allow unknown properties for annotated classes, while general decoding methods (such as Json.decodeFromString and others) would still reject them for everything else. See details in the corresponding PR.

Stabilization of SerialDescriptor API and @SealedSerializationApi annotation

SerialDescriptor, SerialKind, and related API has been around for a long time and has proven itself useful. The main reason @ExperimentalSerializationApi was on SerialDescriptor's properties is that we wanted to discourage people from subclassing it. Fortunately, Kotlin 2.1 provides a special mechanism for such a case — SubclassOptInRequired. New kotlinx.serialization.SealedSerializationApi annotation designates APIs as public for use, but closed for implementation — the case for SerialDescriptor, which is a non-sealed interface for technical reasons. Now you can use most of SerialDescriptor and its builders API without the need to opt-in into experimental serialization API. See the PR for more details.

Note: All SerialKinds are stable API now, except PolymorphicKind — we may want to expand it in the future.

Generate Java 8's default method implementations in interfaces

TL;DR This change ensures better binary compatibility in the future for library. You should not experience any difference from it.

kotlinx.serialization library contains a lot of interfaces with default method implementations. Historically, Kotlin compiled a synthetic DefaultImpls class for them. Starting from Kotlin 1.4, it was possible to compile them using as Java 8's default methods to ensure that new methods can still be added to interfaces without the need for implementors to recompile. To preserve binary compatibility with existing clients, a special all-compatbility mode is supported in compiler

... (truncated)

Commits

Updates org.jetbrains.kotlinx:kotlinx-serialization-core from 1.7.3 to 1.8.0

Release notes

Sourced from org.jetbrains.kotlinx:kotlinx-serialization-core's releases.

1.8.0

This release contains all of the changes from 1.8.0-RC. Kotlin 2.1.0 is used as a default, while upcoming 2.1.10 is also supported. Also added small bugfixes, including speedup of ProtoWireType.from (#2879).

Changelog for 1.8.0-RC is presented below:

@JsonIgnoreUnknownKeys annotation

Previously, only global setting JsonBuilder.ignoreUnknownKeys controlled whether Json parser would throw exception if input contained a property that was not declared in a @Serializable class. There were a lot of complaints that this setting is not flexible enough. To address them, we added new @JsonIgnoreUnknownKeys annotation that can be applied on a per-class basis. With this annotation, it is possible to allow unknown properties for annotated classes, while general decoding methods (such as Json.decodeFromString and others) would still reject them for everything else. See details in the corresponding PR.

Stabilization of SerialDescriptor API and @SealedSerializationApi annotation

SerialDescriptor, SerialKind, and related API has been around for a long time and has proven itself useful. The main reason @ExperimentalSerializationApi was on SerialDescriptor's properties is that we wanted to discourage people from subclassing it. Fortunately, Kotlin 2.1 provides a special mechanism for such a case — SubclassOptInRequired. New kotlinx.serialization.SealedSerializationApi annotation designates APIs as public for use, but closed for implementation — the case for SerialDescriptor, which is a non-sealed interface for technical reasons. Now you can use most of SerialDescriptor and its builders API without the need to opt-in into experimental serialization API. See the PR for more details.

Note: All SerialKinds are stable API now, except PolymorphicKind — we may want to expand it in the future.

Generate Java 8's default method implementations in interfaces

TL;DR This change ensures better binary compatibility in the future for library. You should not experience any difference from it.

kotlinx.serialization library contains a lot of interfaces with default method implementations. Historically, Kotlin compiled a synthetic DefaultImpls class for them. Starting from Kotlin 1.4, it was possible to compile them using as Java 8's default methods to ensure that new methods can still be added to interfaces without the need for implementors to recompile. To preserve binary compatibility with existing clients, a special all-compatbility mode is supported in compiler to generate both default methods and synthetic DefaultImpls class.

Now, kotlinx.serialization finally makes use of this all-compatibility mode, which potentially allows us to add new methods to interfaces such as SerialDescriptor, Encoder, Decoder, etc., without breaking existing clients. This change is expected to have no effect on existing clients, and no action from your side is required.

... (truncated)

Changelog

Sourced from org.jetbrains.kotlinx:kotlinx-serialization-core's changelog.

1.8.0 / 2025-01-06

This release contains all of the changes from 1.8.0-RC. Kotlin 2.1.0 is used as a default, while upcoming 2.1.10 is also supported. Also added small bugfixes, including speedup of ProtoWireType.from (#2879).

1.8.0-RC / 2024-12-10

This is a release candidate for the next version. It is based on Kotlin 2.1.0 and includes a few new features, as well as bugfixes and improvements:

@JsonIgnoreUnknownKeys annotation

Previously, only global setting JsonBuilder.ignoreUnknownKeys controlled whether Json parser would throw exception if input contained a property that was not declared in a @Serializable class. There were a lot of complaints that this setting is not flexible enough. To address them, we added new @JsonIgnoreUnknownKeys annotation that can be applied on a per-class basis. With this annotation, it is possible to allow unknown properties for annotated classes, while general decoding methods (such as Json.decodeFromString and others) would still reject them for everything else. See details in the corresponding PR.

Stabilization of SerialDescriptor API and @SealedSerializationApi annotation

SerialDescriptor, SerialKind, and related API has been around for a long time and has proven itself useful. The main reason @ExperimentalSerializationApi was on SerialDescriptor's properties is that we wanted to discourage people from subclassing it. Fortunately, Kotlin 2.1 provides a special mechanism for such a case — SubclassOptInRequired. New kotlinx.serialization.SealedSerializationApi annotation designates APIs as public for use, but closed for implementation — the case for SerialDescriptor, which is a non-sealed interface for technical reasons. Now you can use most of SerialDescriptor and its builders API without the need to opt-in into experimental serialization API. See the PR for more details.

Note: All SerialKinds are stable API now, except PolymorphicKind — we may want to expand it in the future.

Generate Java 8's default method implementations in interfaces

TL;DR This change ensures better binary compatibility in the future for library. You should not experience any difference from it.

kotlinx.serialization library contains a lot of interfaces with default method implementations. Historically, Kotlin compiled a synthetic DefaultImpls class for them. Starting from Kotlin 1.4, it was possible to compile them using as Java 8's default methods to ensure that new methods can still be added to interfaces without the need for implementors to recompile. To preserve binary compatibility with existing clients, a special all-compatbility mode is supported in compiler

... (truncated)

Commits

Updates org.jetbrains.kotlinx:kotlinx-serialization-hocon from 1.7.3 to 1.8.0

Release notes

Sourced from org.jetbrains.kotlinx:kotlinx-serialization-hocon's releases.

1.8.0

This release contains all of the changes from 1.8.0-RC. Kotlin 2.1.0 is used as a default, while upcoming 2.1.10 is also supported. Also added small bugfixes, including speedup of ProtoWireType.from (#2879).

Changelog for 1.8.0-RC is presented below:

@JsonIgnoreUnknownKeys annotation

Previously, only global setting JsonBuilder.ignoreUnknownKeys controlled whether Json parser would throw exception if input contained a property that was not declared in a @Serializable class. There were a lot of complaints that this setting is not flexible enough. To address them, we added new @JsonIgnoreUnknownKeys annotation that can be applied on a per-class basis. With this annotation, it is possible to allow unknown properties for annotated classes, while general decoding methods (such as Json.decodeFromString and others) would still reject them for everything else. See details in the corresponding PR.

Stabilization of SerialDescriptor API and @SealedSerializationApi annotation

SerialDescriptor, SerialKind, and related API has been around for a long time and has proven itself useful. The main reason @ExperimentalSerializationApi was on SerialDescriptor's properties is that we wanted to discourage people from subclassing it. Fortunately, Kotlin 2.1 provides a special mechanism for such a case — SubclassOptInRequired. New kotlinx.serialization.SealedSerializationApi annotation designates APIs as public for use, but closed for implementation — the case for SerialDescriptor, which is a non-sealed interface for technical reasons. Now you can use most of SerialDescriptor and its builders API without the need to opt-in into experimental serialization API. See the PR for more details.

Note: All SerialKinds are stable API now, except PolymorphicKind — we may want to expand it in the future.

Generate Java 8's default method implementations in interfaces

TL;DR This change ensures better binary compatibility in the future for library. You should not experience any difference from it.

kotlinx.serialization library contains a lot of interfaces with default method implementations. Historically, Kotlin compiled a synthetic DefaultImpls class for them. Starting from Kotlin 1.4, it was possible to compile them using as Java 8's default methods to ensure that new methods can still be added to interfaces without the need for implementors to recompile. To preserve binary compatibility with existing clients, a special all-compatbility mode is supported in compiler to generate both default methods and synthetic DefaultImpls class.

Now, kotlinx.serialization finally makes use of this all-compatibility mode, which potentially allows us to add new methods to interfaces such as SerialDescriptor, Encoder, Decoder, etc., without breaking existing clients. This change is expected to have no effect on existing clients, and no action from your side is required.

... (truncated)

Changelog

Sourced from org.jetbrains.kotlinx:kotlinx-serialization-hocon's changelog.

1.8.0 / 2025-01-06

This release contains all of the changes from 1.8.0-RC. Kotlin 2.1.0 is used as a default, while upcoming 2.1.10 is also supported. Also added small bugfixes, including speedup of ProtoWireType.from (#2879).

1.8.0-RC / 2024-12-10

This is a release candidate for the next version. It is based on Kotlin 2.1.0 and includes a few new features, as well as bugfixes and improvements:

@JsonIgnoreUnknownKeys annotation

Previously, only global setting JsonBuilder.ignoreUnknownKeys controlled whether Json parser would throw exception if input contained a property that was not declared in a @Serializable class. There were a lot of complaints that this setting is not flexible enough. To address them, we added new @JsonIgnoreUnknownKeys annotation that can be applied on a per-class basis. With this annotation, it is possible to allow unknown properties for annotated classes, while general decoding methods (such as Json.decodeFromString and others) would still reject them for everything else. See details in the corresponding PR.

Stabilization of SerialDescriptor API and @SealedSerializationApi annotation

SerialDescriptor, SerialKind, and related API has been around for a long time and has proven itself useful. The main reason @ExperimentalSerializationApi was on SerialDescriptor's properties is that we wanted to discourage people from subclassing it. Fortunately, Kotlin 2.1 provides a special mechanism for such a case — SubclassOptInRequired. New kotlinx.serialization.SealedSerializationApi annotation designates APIs as public for use, but closed for implementation — the case for SerialDescriptor, which is a non-sealed interface for technical reasons. Now you can use most of SerialDescriptor and its builders API without the need to opt-in into experimental serialization API. See the PR for more details.

Note: All SerialKinds are stable API now, except PolymorphicKind — we may want to expand it in the future.

Generate Java 8's default method implementations in interfaces

TL;DR This change ensures better binary compatibility in the future for library. You should not experience any difference from it.

kotlinx.serialization library contains a lot of interfaces with default method implementations. Historically, Kotlin compiled a synthetic DefaultImpls class for them. Starting from Kotlin 1.4, it was possible to compile them using as Java 8's default methods to ensure that new methods can still be added to interfaces without the need for implementors to recompile. To preserve binary compatibility with existing clients, a special all-compatbility mode is supported in compiler

... (truncated)

Commits

Updates org.jetbrains.kotlinx:kotlinx-serialization-json-jvm from 1.7.3 to 1.8.0

Release notes

Sourced from org.jetbrains.kotlinx:kotlinx-serialization-json-jvm's releases.

1.8.0

This release contains all of the changes from 1.8.0-RC. Kotlin 2.1.0 is used as a default, while upcoming 2.1.10 is also supported. Also added small bugfixes, including speedup of ProtoWireType.from (#2879).

Changelog for 1.8.0-RC is presented below:

@JsonIgnoreUnknownKeys annotation

Previously, only global setting JsonBuilder.ignoreUnknownKeys controlled whether Json parser would throw exception if input contained a property that was not declared in a @Serializable class. There were a lot of complaints that this setting is not flexible enough. To address them, we added new @JsonIgnoreUnknownKeys annotation that can be applied on a per-class basis. With this annotation, it is possible to allow unknown properties for annotated classes, while general decoding methods (such as Json.decodeFromString and others) would still reject them for everything else. See details in the corresponding PR.

Stabilization of SerialDescriptor API and @SealedSerializationApi annotation

SerialDescriptor, SerialKind, and related API has been around for a long time and has proven itself useful. The main reason @ExperimentalSerializationApi was on SerialDescriptor's properties is that we wanted to discourage people from subclassing it. Fortunately, Kotlin 2.1 provides a special mechanism for such a case — SubclassOptInRequired. New kotlinx.serialization.SealedSerializationApi annotation designates APIs as public for use, but closed for implementation — the case for SerialDescriptor, which is a non-sealed interface for technical reasons. Now you can use most of SerialDescriptor and its builders API without the need to opt-in into experimental serialization API. See the PR for more details.

Note: All SerialKinds are stable API now, except PolymorphicKind — we may want to expand it in the future.

Generate Java 8's default method implementations in interfaces

TL;DR This change ensures better binary compatibility in the future for library. You should not experience any difference from it.

kotlinx.serialization library contains a lot of interfaces with default method implementations. Historically, Kotlin compiled a synthetic DefaultImpls class for them. Starting from Kotlin 1.4, it was possible to compile them using as Java 8's default methods to ensure that new methods can still be added to interfaces without the need for implementors to recompile. To preserve binary compatibility with existing clients, a special all-compatbility mode is supported in compiler to generate both default methods and synthetic DefaultImpls class.

Now, kotlinx.serialization finally makes use of this all-compatibility mode, which potentially allows us to add new methods to interfaces such as SerialDescriptor, Encoder, Decoder, etc., without breaking existing clients. This change is expected to have no effect on existing clients, and no action from your side is required.

... (truncated)

Changelog

Sourced from org.jetbrains.kotlinx:kotlinx-serialization-json-jvm's changelog.

1.8.0 / 2025-01-06

This release contains all of the changes from 1.8.0-RC. Kotlin 2.1.0 is used as a default, while upcoming 2.1.10 is also supported. Also added small bugfixes, including speedup of ProtoWireType.from (#2879).

1.8.0-RC / 2024-12-10

This is a release candidate for the next version. It is based on Kotlin 2.1.0 and includes a few new features, as well as bugfixes and improvements:

@JsonIgnoreUnknownKeys annotation

Previously, only global setting JsonBuilder.ignoreUnknownKeys controlled whether Json parser would throw exception if input contained a property that was not declared in a @Serializable class. There were a lot of complaints that this setting is not flexible enough. To address them, we added new @JsonIgnoreUnknownKeys annotation that can be applied on a per-class basis. With this annotation, it is possible to allow unknown properties for annotated classes, while general decoding methods (such as Json.decodeFromString and others) would still reject them for everything else. See details in the corresponding PR.

Stabilization of SerialDescriptor API and @SealedSerializationApi annotation

SerialDescriptor, SerialKind, and related API has been around for a long time and has proven itself useful. The main reason @ExperimentalSerializationApi was on SerialDescriptor's properties is that we wanted to discourage people from subclassing it. Fortunately, Kotlin 2.1 provides a special mechanism for such a case — SubclassOptInRequired. New kotlinx.serialization.SealedSerializationApi annotation designates APIs as public for use, but closed for implementation — the case for SerialDescriptor, which is a non-sealed interface for technical reasons. Now you can use most of SerialDescriptor and its builders API without the need to opt-in into experimental serialization API. See the PR for more details.

Note: All SerialKinds are stable API now, except PolymorphicKind — we may want to expand it in the future.

Generate Java 8's default method implementations in interfaces

TL;DR This change ensures better binary compatibility in the future for library. You should not experience any difference from it.

kotlinx.serialization library contains a lot of interfaces with default method implementations. Historically, Kotlin compiled a synthetic DefaultImpls class for them. Starting from Kotlin 1.4, it was possible to compile them using as Java 8's default methods to ensure that new methods can still be added to interfaces without the need for implementors to recompile. To preserve binary compatibility with existing clients, a special all-compatbility mode is supported in compiler

... (truncated)

Commits

Updates org.jetbrains.kotlinx:kotlinx-serialization-json from 1.7.3 to 1.8.0

Release notes

Sourced from org.jetbrains.kotlinx:kotlinx-serialization-json's releases.

1.8.0

This release contains all of the changes from 1.8.0-RC. Kotlin 2.1.0 is used as a default, while upcoming 2.1.10 is also supported. Also added small bugfixes, including speedup of ProtoWireType.from (#2879).

Changelog for 1.8.0-RC is presented below:

@JsonIgnoreUnknownKeys annotation

Previously, only global setting JsonBuilder.ignoreUnknownKeys controlled whether Json parser would throw exception if input contained a property that was not declared in a @Serializable class. There were a lot of complaints that this setting is not f...

Description has been truncated

Bumps `kotlinx-serialization.version` from 1.7.3 to 1.8.0.

Updates `org.jetbrains.kotlinx:kotlinx-serialization-cbor-jvm` from 1.7.3 to 1.8.0
- [Release notes](https://github.com/Kotlin/kotlinx.serialization/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md)
- [Commits](Kotlin/kotlinx.serialization@v1.7.3...v1.8.0)

Updates `org.jetbrains.kotlinx:kotlinx-serialization-cbor` from 1.7.3 to 1.8.0
- [Release notes](https://github.com/Kotlin/kotlinx.serialization/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md)
- [Commits](Kotlin/kotlinx.serialization@v1.7.3...v1.8.0)

Updates `org.jetbrains.kotlinx:kotlinx-serialization-core-jvm` from 1.7.3 to 1.8.0
- [Release notes](https://github.com/Kotlin/kotlinx.serialization/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md)
- [Commits](Kotlin/kotlinx.serialization@v1.7.3...v1.8.0)

Updates `org.jetbrains.kotlinx:kotlinx-serialization-core` from 1.7.3 to 1.8.0
- [Release notes](https://github.com/Kotlin/kotlinx.serialization/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md)
- [Commits](Kotlin/kotlinx.serialization@v1.7.3...v1.8.0)

Updates `org.jetbrains.kotlinx:kotlinx-serialization-hocon` from 1.7.3 to 1.8.0
- [Release notes](https://github.com/Kotlin/kotlinx.serialization/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md)
- [Commits](Kotlin/kotlinx.serialization@v1.7.3...v1.8.0)

Updates `org.jetbrains.kotlinx:kotlinx-serialization-json-jvm` from 1.7.3 to 1.8.0
- [Release notes](https://github.com/Kotlin/kotlinx.serialization/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md)
- [Commits](Kotlin/kotlinx.serialization@v1.7.3...v1.8.0)

Updates `org.jetbrains.kotlinx:kotlinx-serialization-json` from 1.7.3 to 1.8.0
- [Release notes](https://github.com/Kotlin/kotlinx.serialization/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md)
- [Commits](Kotlin/kotlinx.serialization@v1.7.3...v1.8.0)

Updates `org.jetbrains.kotlinx:kotlinx-serialization-json-okio-jvm` from 1.7.3 to 1.8.0
- [Release notes](https://github.com/Kotlin/kotlinx.serialization/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md)
- [Commits](Kotlin/kotlinx.serialization@v1.7.3...v1.8.0)

Updates `org.jetbrains.kotlinx:kotlinx-serialization-json-okio` from 1.7.3 to 1.8.0
- [Release notes](https://github.com/Kotlin/kotlinx.serialization/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md)
- [Commits](Kotlin/kotlinx.serialization@v1.7.3...v1.8.0)

Updates `org.jetbrains.kotlinx:kotlinx-serialization-properties-jvm` from 1.7.3 to 1.8.0
- [Release notes](https://github.com/Kotlin/kotlinx.serialization/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md)
- [Commits](Kotlin/kotlinx.serialization@v1.7.3...v1.8.0)

Updates `org.jetbrains.kotlinx:kotlinx-serialization-properties` from 1.7.3 to 1.8.0
- [Release notes](https://github.com/Kotlin/kotlinx.serialization/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md)
- [Commits](Kotlin/kotlinx.serialization@v1.7.3...v1.8.0)

Updates `org.jetbrains.kotlinx:kotlinx-serialization-protobuf-jvm` from 1.7.3 to 1.8.0
- [Release notes](https://github.com/Kotlin/kotlinx.serialization/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md)
- [Commits](Kotlin/kotlinx.serialization@v1.7.3...v1.8.0)

Updates `org.jetbrains.kotlinx:kotlinx-serialization-protobuf` from 1.7.3 to 1.8.0
- [Release notes](https://github.com/Kotlin/kotlinx.serialization/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md)
- [Commits](Kotlin/kotlinx.serialization@v1.7.3...v1.8.0)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlinx:kotlinx-serialization-cbor-jvm
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.jetbrains.kotlinx:kotlinx-serialization-cbor
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.jetbrains.kotlinx:kotlinx-serialization-core-jvm
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.jetbrains.kotlinx:kotlinx-serialization-core
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.jetbrains.kotlinx:kotlinx-serialization-hocon
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.jetbrains.kotlinx:kotlinx-serialization-json-jvm
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.jetbrains.kotlinx:kotlinx-serialization-json
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.jetbrains.kotlinx:kotlinx-serialization-json-okio-jvm
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.jetbrains.kotlinx:kotlinx-serialization-json-okio
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.jetbrains.kotlinx:kotlinx-serialization-properties-jvm
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.jetbrains.kotlinx:kotlinx-serialization-properties
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.jetbrains.kotlinx:kotlinx-serialization-protobuf-jvm
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.jetbrains.kotlinx:kotlinx-serialization-protobuf
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
@dependabot dependabot bot added the Type: dependencies Version updates label Jan 6, 2025
@jangalinski jangalinski self-assigned this Jan 6, 2025
@jangalinski jangalinski added this to the 2025.1.0 milestone Jan 6, 2025
@jangalinski jangalinski merged commit 0347a22 into develop Jan 6, 2025
2 checks passed
@jangalinski jangalinski deleted the dependabot/maven/kotlinx-serialization.version-1.8.0 branch January 6, 2025 20:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: dependencies Version updates
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant