🥪 Sandwich is an adaptable and lightweight sealed API library designed for handling API responses and exceptions in Kotlin for Retrofit, Ktor, and Kotlin Multiplatform.
google/ksp (com.google.devtools.ksp)
### [`v2.0.20-1.0.25`](https://redirect.github.com/google/ksp/releases/tag/2.0.20-1.0.25)
[Compare Source](https://redirect.github.com/google/ksp/compare/2.0.20-1.0.24...2.0.20-1.0.25)
#### Bugs Fixed
Inlined JVM name is not correct [#1493](https://redirect.github.com/google/ksp/issues/1493)
\[KSP2] NullPointerException when getting name of nested annotation [#1963](https://redirect.github.com/google/ksp/issues/1963)
\[KSP2] The status was unresolved for FirSimpleFunctionImpl [#1938](https://redirect.github.com/google/ksp/issues/1938)
\[KSP2] Class values in type annotations get resolved to error type [#1933](https://redirect.github.com/google/ksp/issues/1933)
\[KSP2] Comparing KSType leads to exception [#1918](https://redirect.github.com/google/ksp/issues/1918)
\[KSP2] Can't find values in repeatable annotations [#1883](https://redirect.github.com/google/ksp/issues/1883)
incremental: aggregating outputs should always be invalidated [#2027](https://redirect.github.com/google/ksp/issues/2027)
\[KSP2] Not yet implemented: KSValueArgumentLiteImpl.getLocation [#2048](https://redirect.github.com/google/ksp/issues/2048)
\[KSP2] Not yet implemented: KSValueArgumentImpl.getParent [#2049](https://redirect.github.com/google/ksp/issues/2049)
getSymbolsWithAnnotation returns copy function from data class [#1996](https://redirect.github.com/google/ksp/issues/1996)
\[KSP2] Annotations got use-site target when there are none specified [#1882](https://redirect.github.com/google/ksp/issues/1882)
getting null pointer exception [#1929](https://redirect.github.com/google/ksp/issues/1929)
\[KSP2] Calling getDeclarationsInSourceOrder throws KotlinIllegalStateExceptionWithAttachments [#1930](https://redirect.github.com/google/ksp/issues/1930)
\[KSP2] A failure occurred while executing com.google.devtools.ksp.gradle.KspAAWorkerAction [#1941](https://redirect.github.com/google/ksp/issues/1941)
KSP2: Resolver.getJvmNames doesn't work for inline and internal classes [#1640](https://redirect.github.com/google/ksp/issues/1640)
kspCaches don't work together with Gradle build cache [#2042](https://redirect.github.com/google/ksp/issues/2042)
#### Contributors
Thank you so much! [@ansman](https://redirect.github.com/ansman), [@kuanyingchou](https://redirect.github.com/kuanyingchou)
**Full Changelog**: https://github.com/google/ksp/compare/2.0.20-1.0.24...2.0.20-1.0.25
### [`v2.0.20-1.0.24`](https://redirect.github.com/google/ksp/releases/tag/2.0.20-1.0.24)
[Compare Source](https://redirect.github.com/google/ksp/compare/2.0.10-1.0.24...2.0.20-1.0.24)
#### What's Changed
- UPDATE_KOTLIN_VERSION: 2.0.20 by [@ting-yuan](https://redirect.github.com/ting-yuan) in [https://github.com/google/ksp/pull/2040](https://redirect.github.com/google/ksp/pull/2040)
Kotlin/kotlinx.serialization (org.jetbrains.kotlinx:kotlinx-serialization-json)
### [`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.serialization/issues/2766))
- Improve readability of protobuf decoding exception messages ([#2768](https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2768)) (thanks to [xiaozhikang0916](https://redirect.github.com/xiaozhikang0916))
- docs(serializers): Fix grammatical errors ([#2779](https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2779)) (thanks to [jamhour1g](https://redirect.github.com/jamhour1g))
- Fixed VerifyError after ProGuard optimization ([#2728](https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2728))
- Add wasm-wasi target to Okio integration ([#2727](https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2727))
JetBrains/kotlin (org.jetbrains.kotlin.kapt)
### [`v2.0.20`](https://redirect.github.com/JetBrains/kotlin/compare/v2.0.10...v2.0.20)
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, 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:
2.0.10-1.0.24
->2.0.20-1.0.25
1.7.1
->1.7.2
2.0.10
->2.0.20
2.0.10
->2.0.20
2.0.10
->2.0.20
2.0.10
->2.0.20
Release Notes
google/ksp (com.google.devtools.ksp)
### [`v2.0.20-1.0.25`](https://redirect.github.com/google/ksp/releases/tag/2.0.20-1.0.25) [Compare Source](https://redirect.github.com/google/ksp/compare/2.0.20-1.0.24...2.0.20-1.0.25) #### Bugs Fixed Inlined JVM name is not correct [#1493](https://redirect.github.com/google/ksp/issues/1493) \[KSP2] NullPointerException when getting name of nested annotation [#1963](https://redirect.github.com/google/ksp/issues/1963) \[KSP2] The status was unresolved for FirSimpleFunctionImpl [#1938](https://redirect.github.com/google/ksp/issues/1938) \[KSP2] Class values in type annotations get resolved to error type [#1933](https://redirect.github.com/google/ksp/issues/1933) \[KSP2] Comparing KSType leads to exception [#1918](https://redirect.github.com/google/ksp/issues/1918) \[KSP2] Can't find values in repeatable annotations [#1883](https://redirect.github.com/google/ksp/issues/1883) incremental: aggregating outputs should always be invalidated [#2027](https://redirect.github.com/google/ksp/issues/2027) \[KSP2] Not yet implemented: KSValueArgumentLiteImpl.getLocation [#2048](https://redirect.github.com/google/ksp/issues/2048) \[KSP2] Not yet implemented: KSValueArgumentImpl.getParent [#2049](https://redirect.github.com/google/ksp/issues/2049) getSymbolsWithAnnotation returns copy function from data class [#1996](https://redirect.github.com/google/ksp/issues/1996) \[KSP2] Annotations got use-site target when there are none specified [#1882](https://redirect.github.com/google/ksp/issues/1882) getting null pointer exception [#1929](https://redirect.github.com/google/ksp/issues/1929) \[KSP2] Calling getDeclarationsInSourceOrder throws KotlinIllegalStateExceptionWithAttachments [#1930](https://redirect.github.com/google/ksp/issues/1930) \[KSP2] A failure occurred while executing com.google.devtools.ksp.gradle.KspAAWorkerAction [#1941](https://redirect.github.com/google/ksp/issues/1941) KSP2: Resolver.getJvmNames doesn't work for inline and internal classes [#1640](https://redirect.github.com/google/ksp/issues/1640) kspCaches don't work together with Gradle build cache [#2042](https://redirect.github.com/google/ksp/issues/2042) #### Contributors Thank you so much! [@ansman](https://redirect.github.com/ansman), [@kuanyingchou](https://redirect.github.com/kuanyingchou) **Full Changelog**: https://github.com/google/ksp/compare/2.0.20-1.0.24...2.0.20-1.0.25 ### [`v2.0.20-1.0.24`](https://redirect.github.com/google/ksp/releases/tag/2.0.20-1.0.24) [Compare Source](https://redirect.github.com/google/ksp/compare/2.0.10-1.0.24...2.0.20-1.0.24) #### What's Changed - UPDATE_KOTLIN_VERSION: 2.0.20 by [@ting-yuan](https://redirect.github.com/ting-yuan) in [https://github.com/google/ksp/pull/2040](https://redirect.github.com/google/ksp/pull/2040)Kotlin/kotlinx.serialization (org.jetbrains.kotlinx:kotlinx-serialization-json)
### [`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.serialization/issues/2766)) - Improve readability of protobuf decoding exception messages ([#2768](https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2768)) (thanks to [xiaozhikang0916](https://redirect.github.com/xiaozhikang0916)) - docs(serializers): Fix grammatical errors ([#2779](https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2779)) (thanks to [jamhour1g](https://redirect.github.com/jamhour1g)) - Fixed VerifyError after ProGuard optimization ([#2728](https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2728)) - Add wasm-wasi target to Okio integration ([#2727](https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2727))JetBrains/kotlin (org.jetbrains.kotlin.kapt)
### [`v2.0.20`](https://redirect.github.com/JetBrains/kotlin/compare/v2.0.10...v2.0.20)Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, 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.