Skip to content

Commit 8c84a5b

Browse files
authored
Prepare 1.7.2 release (#2798)
1 parent b3cfe56 commit 8c84a5b

File tree

4 files changed

+67
-14
lines changed

4 files changed

+67
-14
lines changed

CHANGELOG.md

+53
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,57 @@
11

2+
1.7.2 / 2024-08-28
3+
==================
4+
5+
This release provides several new features, including a major Cbor configuration rework.
6+
It uses Kotlin 2.0.20 by default.
7+
8+
## Cbor feature set for COSE compliance
9+
10+
This change brings a lot of features to the CBOR format, namely:
11+
12+
- Serial Labels — see `@CborLabel` annotation and `preferCborLabelsOverNames` flag.
13+
- Tagging of keys and values — see `encode*Tags` and `verify*Tags` set of flags
14+
- Definite length encoding — see `useDefiniteLengthEncoding`. This flag affects object encoding, since decoding of arrays with definite lenghts is automatically supported.
15+
- Option to globally prefer major type 2 for byte array encoding — see `alwaysUseByteString` flag.
16+
17+
Since there are quite a lot of flags now, they were restructured to a separate `CborConfiguration` class, similarly to `JsonConfiguration`.
18+
It is possible to retrieve this configuration from `CborEncoder/CborDecoder` interfaces in your custom serializers (see their documentation for details).
19+
20+
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.
21+
In case you want to make use of them, there is a predefined `Cbor.CoseCompliant` instance.
22+
However, some canonicalization steps (such as sorting keys) still need to be performed manually.
23+
24+
This functionality [was contributed](https://github.com/Kotlin/kotlinx.serialization/pull/2412) to us by [Bernd Prünster](https://github.com/JesusMcCloud).
25+
26+
## Keeping generated serializers
27+
28+
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.
29+
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.
30+
31+
Starting with this release, you can specify the `@KeepGeneratedSerializer` annotation on the class declaration to instruct the plugin to continue generating the serializer.
32+
In this case, the serializer will be accessible using the `.generatedSerializer()` function on the class's companion object.
33+
34+
> This annotation is currently experimental. Kotlin 2.0.20 or higher is required for this feature to work.
35+
36+
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://github.com/Kotlin/kotlinx.serialization/pull/2758), [#2669](https://github.com/Kotlin/kotlinx.serialization/pull/2669).
37+
38+
## Serializer for kotlin.uuid.Uuid
39+
40+
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.
41+
kotlinx.serialization 1.7.2 provides a corresponding `Uuid.serializer()` for it, making it possible to use it in `@Serializable` classes.
42+
Note that for now, serializer should be provided manually with [`@Contextual` annotation](https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/serializers.md#contextual-serialization).
43+
Plugin will be able to automatically insert `Uuid` serializer in Kotlin 2.1.0.
44+
45+
See more details in the [corresponding PR](https://github.com/Kotlin/kotlinx.serialization/pull/2744).
46+
47+
## Other bugfixes and improvements
48+
49+
* Prohibited using of zero and negative field numbers in ProtoNumber (#2766)
50+
* Improve readability of protobuf decoding exception messages (#2768) (thanks to [xiaozhikang0916](https://github.com/xiaozhikang0916))
51+
* docs(serializers): Fix grammatical errors (#2779) (thanks to [jamhour1g](https://github.com/jamhour1g))
52+
* Fixed VerifyError after ProGuard optimization (#2728)
53+
* Add wasm-wasi target to Okio integration (#2727)
54+
255
1.7.1 / 2024-06-25
356
==================
457

README.md

+12-12
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
[![JetBrains official project](https://jb.gg/badges/official.svg)](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
55
[![GitHub license](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg?style=flat)](http://www.apache.org/licenses/LICENSE-2.0)
66
[![TeamCity build](https://img.shields.io/teamcity/http/teamcity.jetbrains.com/s/KotlinTools_KotlinxSerialization_Ko.svg)](https://teamcity.jetbrains.com/viewType.html?buildTypeId=KotlinTools_KotlinxSerialization_Ko&guest=1)
7-
[![Kotlin](https://img.shields.io/badge/kotlin-2.0.0-blue.svg?logo=kotlin)](http://kotlinlang.org)
8-
[![Maven Central](https://img.shields.io/maven-central/v/org.jetbrains.kotlinx/kotlinx-serialization-core/1.7.1)](https://central.sonatype.com/artifact/org.jetbrains.kotlinx/kotlinx-serialization-core/1.7.1)
7+
[![Kotlin](https://img.shields.io/badge/kotlin-2.0.20-blue.svg?logo=kotlin)](http://kotlinlang.org)
8+
[![Maven Central](https://img.shields.io/maven-central/v/org.jetbrains.kotlinx/kotlinx-serialization-core/1.7.2)](https://central.sonatype.com/artifact/org.jetbrains.kotlinx/kotlinx-serialization-core/1.7.2)
99
[![KDoc link](https://img.shields.io/badge/API_reference-KDoc-blue)](https://kotlinlang.org/api/kotlinx.serialization/)
1010
[![Slack channel](https://img.shields.io/badge/chat-slack-blue.svg?logo=slack)](https://kotlinlang.slack.com/messages/serialization/)
1111

@@ -95,17 +95,17 @@ Kotlin DSL:
9595

9696
```kotlin
9797
plugins {
98-
kotlin("jvm") version "2.0.0" // or kotlin("multiplatform") or any other kotlin plugin
99-
kotlin("plugin.serialization") version "2.0.0"
98+
kotlin("jvm") version "2.0.20" // or kotlin("multiplatform") or any other kotlin plugin
99+
kotlin("plugin.serialization") version "2.0.20"
100100
}
101101
```
102102

103103
Groovy DSL:
104104

105105
```gradle
106106
plugins {
107-
id 'org.jetbrains.kotlin.multiplatform' version '2.0.0'
108-
id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.0'
107+
id 'org.jetbrains.kotlin.multiplatform' version '2.0.20'
108+
id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.20'
109109
}
110110
```
111111

@@ -123,7 +123,7 @@ buildscript {
123123
repositories { mavenCentral() }
124124

125125
dependencies {
126-
val kotlinVersion = "2.0.0"
126+
val kotlinVersion = "2.0.20"
127127
classpath(kotlin("gradle-plugin", version = kotlinVersion))
128128
classpath(kotlin("serialization", version = kotlinVersion))
129129
}
@@ -134,7 +134,7 @@ Groovy DSL:
134134

135135
```gradle
136136
buildscript {
137-
ext.kotlin_version = '2.0.0'
137+
ext.kotlin_version = '2.0.20'
138138
repositories { mavenCentral() }
139139
140140
dependencies {
@@ -164,7 +164,7 @@ repositories {
164164
}
165165

166166
dependencies {
167-
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.1")
167+
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.2")
168168
}
169169
```
170170

@@ -176,7 +176,7 @@ repositories {
176176
}
177177
178178
dependencies {
179-
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.1"
179+
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.2"
180180
}
181181
```
182182

@@ -266,8 +266,8 @@ Ensure the proper version of Kotlin and serialization version:
266266

267267
```xml
268268
<properties>
269-
<kotlin.version>2.0.0</kotlin.version>
270-
<serialization.version>1.7.1</serialization.version>
269+
<kotlin.version>2.0.20</kotlin.version>
270+
<serialization.version>1.7.2</serialization.version>
271271
</properties>
272272
```
273273

gradle.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#
44

55
group=org.jetbrains.kotlinx
6-
version=1.7.2-SNAPSHOT
6+
version=1.7.3-SNAPSHOT
77
jdk_toolchain_version=11
88
# This version takes precedence if 'bootstrap' property passed to project
99
kotlin.version.snapshot=2.0.255-SNAPSHOT

integration-test/gradle.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#
44

55
mainKotlinVersion=2.0.20
6-
mainLibVersion=1.7.2-SNAPSHOT
6+
mainLibVersion=1.7.3-SNAPSHOT
77

88
kotlin.code.style=official
99
kotlin.js.compiler=ir

0 commit comments

Comments
 (0)