[!WARNING]
Some dependencies could not be looked up. Check the Dependency Dashboard for more information.
Release Notes
gradle/gradle (gradle)
### [`v8.10.2`](https://redirect.github.com/gradle/gradle/compare/v8.10.1...v8.10.2)
[Compare Source](https://redirect.github.com/gradle/gradle/compare/v8.10.1...v8.10.2)
### [`v8.10.1`](https://redirect.github.com/gradle/gradle/compare/v8.10.0...v8.10.1)
[Compare Source](https://redirect.github.com/gradle/gradle/compare/v8.10.0...v8.10.1)
### [`v8.10`](https://redirect.github.com/gradle/gradle/compare/v8.9.0...v8.10.0)
[Compare Source](https://redirect.github.com/gradle/gradle/compare/v8.9.0...v8.10.0)
### [`v8.9`](https://redirect.github.com/gradle/gradle/compare/v8.8.0...v8.9.0)
[Compare Source](https://redirect.github.com/gradle/gradle/compare/v8.8.0...v8.9.0)
### [`v8.8`](https://redirect.github.com/gradle/gradle/releases/tag/v8.8.0): 8.8
[Compare Source](https://redirect.github.com/gradle/gradle/compare/v8.7.0...v8.8.0)
The Gradle team is excited to announce Gradle 8.8.
[Read the Release Notes](https://docs.gradle.org/8.8/release-notes.html)
We would like to thank the following community members for their contributions to this release of Gradle:
[Björn Kautler](https://redirect.github.com/Vampire),
[Denes Daniel](https://redirect.github.com/pantherdd),
[Fabian Windheuser](https://redirect.github.com/fawind),
[Hélio Fernandes Sebastião](https://redirect.github.com/helfese),
[Jay Wei](https://redirect.github.com/JayWei1215),
[jhrom](https://redirect.github.com/jhrom),
[jwp345](https://redirect.github.com/jwp345),
[Jörgen Andersson](https://redirect.github.com/jorander),
[Kirill Gavrilov](https://redirect.github.com/gavvvr),
[MajesticMagikarpKing](https://redirect.github.com/yctomwang),
[Maksim Lazeba](https://redirect.github.com/M-Lazeba),
[Philip Wedemann](https://redirect.github.com/hfhbd),
[Robert Elliot](https://redirect.github.com/Mahoney),
[Róbert Papp](https://redirect.github.com/TWiStErRob),
[Stefan M.](https://redirect.github.com/StefMa),
[Tibor Vyletel](https://redirect.github.com/TiborVyletel),
[Tony Robalik](https://redirect.github.com/autonomousapps),
[Valentin Kulesh](https://redirect.github.com/unshare),
[Yanming Zhou](https://redirect.github.com/quaff),
[김용후](https://redirect.github.com/who-is-hu)
#### Upgrade instructions
Switch your build to use Gradle 8.8 by updating your wrapper:
./gradlew wrapper --gradle-version=8.8
See the Gradle [8.x upgrade guide](https://docs.gradle.org/8.8/userguide/upgrading_version\_8.html) to learn about deprecations, breaking changes and other considerations when upgrading.
For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/8.8/userguide/compatibility.html).
#### Reporting problems
If you find a problem with this release, please file a bug on [GitHub Issues](https://redirect.github.com/gradle/gradle/issues) adhering to our issue guidelines.
If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss).
We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://redirect.github.com/gradle).
Kotlin/kotlinx.coroutines (org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm)
### [`v1.9.0`](https://redirect.github.com/Kotlin/kotlinx.coroutines/blob/HEAD/CHANGES.md#Version-190)
[Compare Source](https://redirect.github.com/Kotlin/kotlinx.coroutines/compare/1.8.1...1.9.0)
##### Features
- Wasm/WASI target support ([#4064](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4064)). Thanks, [@igoriakovlev](https://redirect.github.com/igoriakovlev)!
- `limitedParallelism` now optionally accepts the name of the dispatcher view for easier debugging ([#4023](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4023)).
- No longer initialize `Dispatchers.IO` on the JVM when other standard dispatchers are accessed ([#4166](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4166)). Thanks, [@metalhead8816](https://redirect.github.com/metalhead8816)!
- Introduced the `Flow.chunked(size: Int): Flow>` operator that groups emitted values into groups of the given size ([#1290](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1290)).
- Closeable dispatchers are instances of `AutoCloseable` now ([#4123](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4123)).
##### Fixes
- Calling `hasNext` on a `Channel`'s iterator is idempotent ([#4065](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4065)). Thanks, [@gitpaxultek](https://redirect.github.com/gitpaxultek)!
- `CoroutineScope()` created without an explicit dispatcher uses `Dispatchers.Default` on Native ([#4074](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4074)). Thanks, [@whyoleg](https://redirect.github.com/whyoleg)!
- Fixed a bug that prevented non-Android `Dispatchers.Main` from initializing when the Firebase dependency is used ([#3914](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3914)).
- Ensured a more intuitive ordering of tasks in `runBlocking` ([#4134](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4134)).
- Forbid casting a `Mutex` to `Semaphore` ([#4176](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4176)).
- Worked around a stack overflow that may occur when calling `asDeferred` on a `Future` many times ([#4156](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4156)).
##### Deprecations and promotions
- Advanced the deprecation levels for `BroadcastChannel`-based API ([#4197](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4197)).
- Advanced the deprecation levels for the old `kotlinx-coroutines-test` API ([#4198](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4198)).
- Deprecated `Job.cancelFutureOnCompletion` ([#4173](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4173)).
- Promoted `CoroutineDispatcher.limitedParallelism` to stable ([#3864](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3864)).
- Promoted `CoroutineStart.ATOMIC` from `ExperimentalCoroutinesApi` to `DelicateCoroutinesApi` ([#4169](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4169)).
- Promoted `CancellableContinuation.resume` with an `onCancellation` lambda to stable, providing extra arguments to the lambda ([#4088](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4088)).
- Marked the classes and interfaces that are not supposed to be inherited from with the new `InternalForInheritanceCoroutinesApi` opt-in ([#3770](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3770)).
- Marked the classes and interfaces inheriting from which is not stable with the new `ExperimentalForInheritanceCoroutinesApi` opt-in ([#3770](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3770)).
##### Other
- Kotlin was updated to 2.0 ([#4137](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4137)).
- Reworked the documentation for `CoroutineStart` and `Channel`-based API ([#4147](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4147), [#4148](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4148), [#4167](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4167)). Thanks, [@globsterg](https://redirect.github.com/globsterg)!
- Simplified the internal implementation of `Job` ([#4053](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4053)).
- Small tweaks, fixes, and documentation improvements.
Kotlin/kotlinx.serialization (org.jetbrains.kotlinx:kotlinx-serialization-json)
### [`v1.7.3`](https://redirect.github.com/Kotlin/kotlinx.serialization/blob/HEAD/CHANGELOG.md#173--2024-09-19)
\==================
This release aims to fix important issues that were discovered in the 1.7.2 release,
including the inability to sync certain projects into Android Studio/IntelliJ IDEA and exceptions from custom Uuid serializers.
It uses Kotlin 2.0.20 by default.
- Use explicit kotlin-stdlib and kotlin-test versions from version catalog ([#2818](https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2818))
- Drop usage of deprecated Any?.freeze() in K/N target ([#2819](https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2819))
- Check against serialName instead of simpleClassName ([#2802](https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2802))
- Ignore NoClassDefFoundError when initializing builtins map for serializer() function ([#2803](https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2803))
- Clarify example for SerializationException ([#2806](https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2806))
### [`v1.7.2`](https://redirect.github.com/Kotlin/kotlinx.serialization/blob/HEAD/CHANGELOG.md#172--2024-08-28)
\==================
This release provides several new features, including a major Cbor configuration rework.
It uses Kotlin 2.0.20 by default.
#### Cbor feature set for COSE compliance
This change brings a lot of features to the CBOR format, namely:
- Serial Labels — see `@CborLabel` annotation and `preferCborLabelsOverNames` flag.
- Tagging of keys and values — see `encode*Tags` and `verify*Tags` set of flags
- Definite length encoding — see `useDefiniteLengthEncoding`. This flag affects object encoding, since decoding of arrays with definite lenghts is automatically supported.
- Option to globally prefer major type 2 for byte array encoding — see `alwaysUseByteString` flag.
Since there are quite a lot of flags now, they were restructured to a separate `CborConfiguration` class, similarly to `JsonConfiguration`.
It is possible to retrieve this configuration from `CborEncoder/CborDecoder` interfaces in your custom serializers (see their documentation for details).
All of these features make it possible to serialize and parse [COSE-compliant CBOR](https://datatracker.ietf.org/doc/html/rfc8152), for example, ISO/IEC 18013-5:2021-compliant mobile driving license data.
In case you want to make use of them, there is a predefined `Cbor.CoseCompliant` instance.
However, some canonicalization steps (such as sorting keys) still need to be performed manually.
This functionality [was contributed](https://redirect.github.com/Kotlin/kotlinx.serialization/pull/2412) to us by [Bernd Prünster](https://redirect.github.com/JesusMcCloud).
#### Keeping generated serializers
One of the most requested features for serialization plugin was to continue to generate a serializer even if a custom one is specified for the class.
It allows using a plugin-generated serializer in a fallback or delegate strategy, accessing type structure via descriptor, using default serialization behavior in inheritors that do not use custom serializers.
Starting with this release, you can specify the `@KeepGeneratedSerializer` annotation on the class declaration to instruct the plugin to continue generating the serializer.
In this case, the serializer will be accessible using the `.generatedSerializer()` function on the class's companion object.
> This annotation is currently experimental. Kotlin 2.0.20 or higher is required for this feature to work.
You can check out the examples in [the documentation](docs/serializers.md#simultaneous-use-of-plugin-generated-and-custom-serializers) and in the PRs: [#2758](https://redirect.github.com/Kotlin/kotlinx.serialization/pull/2758), [#2669](https://redirect.github.com/Kotlin/kotlinx.serialization/pull/2669).
#### Serializer for kotlin.uuid.Uuid
Kotlin 2.0.20 [added](https://kotlinlang.org/docs/whatsnew2020.html#support-for-uuids-in-the-common-kotlin-standard-library) a common class to represent UUIDs in a multiplatform code.
kotlinx.serialization 1.7.2 provides a corresponding `Uuid.serializer()` for it, making it possible to use it in `@Serializable` classes.
Note that for now, serializer should be provided manually with [`@Contextual` annotation](https://redirect.github.com/Kotlin/kotlinx.serialization/blob/master/docs/serializers.md#contextual-serialization).
Plugin will be able to automatically insert `Uuid` serializer in Kotlin 2.1.0.
See more details in the [corresponding PR](https://redirect.github.com/Kotlin/kotlinx.serialization/pull/2744).
#### Other bugfixes and improvements
- Prohibited using of zero and negative field numbers in ProtoNumber ([#2766](https://redirect.github.com/Kotlin/kotlinx
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
[ ] If you want to rebase/retry this PR, check this box
This PR contains the following updates:
8.7
->8.10.2
2023.03.00
->2023.10.01
1.8.1
->1.9.0
1.8.1
->1.9.0
1.6.3
->1.7.3
1.5.6
->1.5.8
2.3.11
->2.3.12
2.3.11
->2.3.12
2.3.11
->2.3.12
2.3.11
->2.3.12
2.3.11
->2.3.12
2.3.11
->2.3.12
2.3.11
->2.3.12
2.3.11
->2.3.12
2.3.11
->2.3.12
2.3.11
->2.3.12
2.3.11
->2.3.12
1.6.1
->1.7.3
2.3.11
->2.3.12
2.3.11
->2.3.12
2.3.11
->2.3.12
2.3.11
->2.3.12
2.3.11
->2.3.12
2.3.11
->2.3.12
1.6.8
->1.7.2
1.6.8
->1.7.2
1.2.0
->1.3.0
1.1.5
->1.2.1
1.11.0
->1.12.0
3.5.1
->3.6.1
1.12.0
->1.13.1
2.0.10
->2.0.20
1.6.8
->1.7.2
1.6.8
->1.7.2
1.6.8
->1.7.2
1.6.8
->1.7.2
1.6.8
->1.7.2
1.6.1
->1.7.0
2.0.10
->2.0.20
1.9.24
->1.9.25
1.8.1
->1.9.0
1.8.2
->1.9.2
2.3.11
->2.3.12
1.0.0-pre.747
->1.0.0-pre.812
8.2.0
->8.6.1
8.2.0
->8.6.1
2.0.10
->2.0.20
2.0.10
->2.0.20
2.0.10
->2.0.20
2.0.10
->2.0.20
2.0.10
->2.0.20
2.0.10
->2.0.20
2.0.10
->2.0.20
8.1.3
->8.6.1
Release Notes
gradle/gradle (gradle)
### [`v8.10.2`](https://redirect.github.com/gradle/gradle/compare/v8.10.1...v8.10.2) [Compare Source](https://redirect.github.com/gradle/gradle/compare/v8.10.1...v8.10.2) ### [`v8.10.1`](https://redirect.github.com/gradle/gradle/compare/v8.10.0...v8.10.1) [Compare Source](https://redirect.github.com/gradle/gradle/compare/v8.10.0...v8.10.1) ### [`v8.10`](https://redirect.github.com/gradle/gradle/compare/v8.9.0...v8.10.0) [Compare Source](https://redirect.github.com/gradle/gradle/compare/v8.9.0...v8.10.0) ### [`v8.9`](https://redirect.github.com/gradle/gradle/compare/v8.8.0...v8.9.0) [Compare Source](https://redirect.github.com/gradle/gradle/compare/v8.8.0...v8.9.0) ### [`v8.8`](https://redirect.github.com/gradle/gradle/releases/tag/v8.8.0): 8.8 [Compare Source](https://redirect.github.com/gradle/gradle/compare/v8.7.0...v8.8.0) The Gradle team is excited to announce Gradle 8.8. [Read the Release Notes](https://docs.gradle.org/8.8/release-notes.html) We would like to thank the following community members for their contributions to this release of Gradle: [Björn Kautler](https://redirect.github.com/Vampire), [Denes Daniel](https://redirect.github.com/pantherdd), [Fabian Windheuser](https://redirect.github.com/fawind), [Hélio Fernandes Sebastião](https://redirect.github.com/helfese), [Jay Wei](https://redirect.github.com/JayWei1215), [jhrom](https://redirect.github.com/jhrom), [jwp345](https://redirect.github.com/jwp345), [Jörgen Andersson](https://redirect.github.com/jorander), [Kirill Gavrilov](https://redirect.github.com/gavvvr), [MajesticMagikarpKing](https://redirect.github.com/yctomwang), [Maksim Lazeba](https://redirect.github.com/M-Lazeba), [Philip Wedemann](https://redirect.github.com/hfhbd), [Robert Elliot](https://redirect.github.com/Mahoney), [Róbert Papp](https://redirect.github.com/TWiStErRob), [Stefan M.](https://redirect.github.com/StefMa), [Tibor Vyletel](https://redirect.github.com/TiborVyletel), [Tony Robalik](https://redirect.github.com/autonomousapps), [Valentin Kulesh](https://redirect.github.com/unshare), [Yanming Zhou](https://redirect.github.com/quaff), [김용후](https://redirect.github.com/who-is-hu) #### Upgrade instructions Switch your build to use Gradle 8.8 by updating your wrapper: ./gradlew wrapper --gradle-version=8.8 See the Gradle [8.x upgrade guide](https://docs.gradle.org/8.8/userguide/upgrading_version\_8.html) to learn about deprecations, breaking changes and other considerations when upgrading. For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/8.8/userguide/compatibility.html). #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://redirect.github.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://redirect.github.com/gradle).Kotlin/kotlinx.coroutines (org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm)
### [`v1.9.0`](https://redirect.github.com/Kotlin/kotlinx.coroutines/blob/HEAD/CHANGES.md#Version-190) [Compare Source](https://redirect.github.com/Kotlin/kotlinx.coroutines/compare/1.8.1...1.9.0) ##### Features - Wasm/WASI target support ([#4064](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4064)). Thanks, [@igoriakovlev](https://redirect.github.com/igoriakovlev)! - `limitedParallelism` now optionally accepts the name of the dispatcher view for easier debugging ([#4023](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4023)). - No longer initialize `Dispatchers.IO` on the JVM when other standard dispatchers are accessed ([#4166](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4166)). Thanks, [@metalhead8816](https://redirect.github.com/metalhead8816)! - Introduced the `Flow>` operator that groups emitted values into groups of the given size ([#1290](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1290)). - Closeable dispatchers are instances of `AutoCloseable` now ([#4123](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4123)). ##### Fixes - Calling `hasNext` on a `Channel`'s iterator is idempotent ([#4065](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4065)). Thanks, [@gitpaxultek](https://redirect.github.com/gitpaxultek)! - `CoroutineScope()` created without an explicit dispatcher uses `Dispatchers.Default` on Native ([#4074](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4074)). Thanks, [@whyoleg](https://redirect.github.com/whyoleg)! - Fixed a bug that prevented non-Android `Dispatchers.Main` from initializing when the Firebase dependency is used ([#3914](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3914)). - Ensured a more intuitive ordering of tasks in `runBlocking` ([#4134](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4134)). - Forbid casting a `Mutex` to `Semaphore` ([#4176](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4176)). - Worked around a stack overflow that may occur when calling `asDeferred` on a `Future` many times ([#4156](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4156)). ##### Deprecations and promotions - Advanced the deprecation levels for `BroadcastChannel`-based API ([#4197](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4197)). - Advanced the deprecation levels for the old `kotlinx-coroutines-test` API ([#4198](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4198)). - Deprecated `Job.cancelFutureOnCompletion` ([#4173](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4173)). - Promoted `CoroutineDispatcher.limitedParallelism` to stable ([#3864](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3864)). - Promoted `CoroutineStart.ATOMIC` from `ExperimentalCoroutinesApi` to `DelicateCoroutinesApi` ([#4169](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4169)). - Promoted `CancellableContinuation.resume` with an `onCancellation` lambda to stable, providing extra arguments to the lambda ([#4088](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4088)). - Marked the classes and interfaces that are not supposed to be inherited from with the new `InternalForInheritanceCoroutinesApi` opt-in ([#3770](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3770)). - Marked the classes and interfaces inheriting from which is not stable with the new `ExperimentalForInheritanceCoroutinesApi` opt-in ([#3770](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3770)). ##### Other - Kotlin was updated to 2.0 ([#4137](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4137)). - Reworked the documentation for `CoroutineStart` and `Channel`-based API ([#4147](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4147), [#4148](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4148), [#4167](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4167)). Thanks, [@globsterg](https://redirect.github.com/globsterg)! - Simplified the internal implementation of `Job` ([#4053](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4053)). - Small tweaks, fixes, and documentation improvements.
Kotlin/kotlinx.serialization (org.jetbrains.kotlinx:kotlinx-serialization-json)
### [`v1.7.3`](https://redirect.github.com/Kotlin/kotlinx.serialization/blob/HEAD/CHANGELOG.md#173--2024-09-19) \================== This release aims to fix important issues that were discovered in the 1.7.2 release, including the inability to sync certain projects into Android Studio/IntelliJ IDEA and exceptions from custom Uuid serializers. It uses Kotlin 2.0.20 by default. - Use explicit kotlin-stdlib and kotlin-test versions from version catalog ([#2818](https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2818)) - Drop usage of deprecated Any?.freeze() in K/N target ([#2819](https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2819)) - Check against serialName instead of simpleClassName ([#2802](https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2802)) - Ignore NoClassDefFoundError when initializing builtins map for serializer() function ([#2803](https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2803)) - Clarify example for SerializationException ([#2806](https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2806)) ### [`v1.7.2`](https://redirect.github.com/Kotlin/kotlinx.serialization/blob/HEAD/CHANGELOG.md#172--2024-08-28) \================== This release provides several new features, including a major Cbor configuration rework. It uses Kotlin 2.0.20 by default. #### Cbor feature set for COSE compliance This change brings a lot of features to the CBOR format, namely: - Serial Labels — see `@CborLabel` annotation and `preferCborLabelsOverNames` flag. - Tagging of keys and values — see `encode*Tags` and `verify*Tags` set of flags - Definite length encoding — see `useDefiniteLengthEncoding`. This flag affects object encoding, since decoding of arrays with definite lenghts is automatically supported. - Option to globally prefer major type 2 for byte array encoding — see `alwaysUseByteString` flag. Since there are quite a lot of flags now, they were restructured to a separate `CborConfiguration` class, similarly to `JsonConfiguration`. It is possible to retrieve this configuration from `CborEncoder/CborDecoder` interfaces in your custom serializers (see their documentation for details). All of these features make it possible to serialize and parse [COSE-compliant CBOR](https://datatracker.ietf.org/doc/html/rfc8152), for example, ISO/IEC 18013-5:2021-compliant mobile driving license data. In case you want to make use of them, there is a predefined `Cbor.CoseCompliant` instance. However, some canonicalization steps (such as sorting keys) still need to be performed manually. This functionality [was contributed](https://redirect.github.com/Kotlin/kotlinx.serialization/pull/2412) to us by [Bernd Prünster](https://redirect.github.com/JesusMcCloud). #### Keeping generated serializers One of the most requested features for serialization plugin was to continue to generate a serializer even if a custom one is specified for the class. It allows using a plugin-generated serializer in a fallback or delegate strategy, accessing type structure via descriptor, using default serialization behavior in inheritors that do not use custom serializers. Starting with this release, you can specify the `@KeepGeneratedSerializer` annotation on the class declaration to instruct the plugin to continue generating the serializer. In this case, the serializer will be accessible using the `.generatedSerializer()` function on the class's companion object. > This annotation is currently experimental. Kotlin 2.0.20 or higher is required for this feature to work. You can check out the examples in [the documentation](docs/serializers.md#simultaneous-use-of-plugin-generated-and-custom-serializers) and in the PRs: [#2758](https://redirect.github.com/Kotlin/kotlinx.serialization/pull/2758), [#2669](https://redirect.github.com/Kotlin/kotlinx.serialization/pull/2669). #### Serializer for kotlin.uuid.Uuid Kotlin 2.0.20 [added](https://kotlinlang.org/docs/whatsnew2020.html#support-for-uuids-in-the-common-kotlin-standard-library) a common class to represent UUIDs in a multiplatform code. kotlinx.serialization 1.7.2 provides a corresponding `Uuid.serializer()` for it, making it possible to use it in `@Serializable` classes. Note that for now, serializer should be provided manually with [`@Contextual` annotation](https://redirect.github.com/Kotlin/kotlinx.serialization/blob/master/docs/serializers.md#contextual-serialization). Plugin will be able to automatically insert `Uuid` serializer in Kotlin 2.1.0. See more details in the [corresponding PR](https://redirect.github.com/Kotlin/kotlinx.serialization/pull/2744). #### Other bugfixes and improvements - Prohibited using of zero and negative field numbers in ProtoNumber ([#2766](https://redirect.github.com/Kotlin/kotlinxConfiguration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.