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

Prepare 1.1.0-RC #1316

Merged
merged 6 commits into from
Feb 3, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,47 @@
1.1.0-RC / 2021-02-03
==================

This is a release candidate of 1.1.0 version. Note that final 1.1.0 version may include more features and bugfixes,
which would be listed in the corresponding changelog.

### Kotlin version requirement updated

Due to changes in calling conventions between compiler plugin and serialization core runtime, this release requires
Kotlin version at least 1.4.30-M1. However, this changes should not affect your code,
because only deprecated functions were removed from public API.
See [corresponding PR](https://github.com/Kotlin/kotlinx.serialization/pull/1260) for the details.

### Experimental support for inline classes (IR only)

Using 1.1.0-RC, you can mark inline classes as `@Serializable` and use them in other serializable classes.
Unsigned integer types (`UByte`, `UShort`, `UInt` and `ULong`) are serializable as well and have special support in JSON.
This feature requires Kotlin compiler 1.4.30-RC and enabling new IR compilers for [JS](https://kotlinlang.org/docs/reference/js-ir-compiler.html) and [JVM](https://kotlinlang.org/docs/reference/whatsnew14.html#new-jvm-ir-backend).

You can learn more in the [documentation](docs/inline-classes.md)
and corresponding [pull request](https://github.com/Kotlin/kotlinx.serialization/pull/1244).

### Other features

* Add `serializerOrNull` function for `KType` and `Type` arguments (#1164)
* Allow shared prefix names in `Properties` (#1183) (thanks to [TorRanfelt](https://github.com/TorRanfelt))
* Add support for encoding/decoding `Properties` values as Strings (#1158) (thanks to [daniel-jasinski](https://github.com/daniel-jasinski))

### Bugfixes and performance improvements

* Support contextual serialization for derived classes (#1277) (thanks to [Martin Raison](https://github.com/martinraison))
* Ensure serialization is usable from K/N background thread (#1282)
* Fail on primitive type overflow during `JsonElement` deserialization (#1300)
* Throw `SerializationException` instead of ISE when encountering an invalid boolean in JSON (#1299)
* Optimize the loop for writing large varints in `ProtoBuf` (#1294)
* Fix serializing property with custom accessors and backing field (#1197)
* Optimize check for missing fields in deserialization and improve `MissingFieldException` message (#1153)
* Improved support of nullable serializer in `@UseSerializers` annotation (#1195)
* Correctly escape keys in `JsonObject.toString()` (#1246) (thanks to [Karlatemp](https://github.com/Karlatemp))
* Treat `Collection` as `ArrayList` in serializer by type lookups (#1257)
* Do not try to end structure in encode/decode structure extensions if an exception has been thrown, so the original exception will be propagated (#1201)
* Properly cache serial names in order to improve performance of JSON parser with strict mode (#1209)
* Fix dynamic serialization for nullable values (#1199) (thanks to [ankushg](https://github.com/ankushg))

1.0.1 / 2020-10-28
==================

Expand Down
4 changes: 2 additions & 2 deletions docs/serializers.md
Original file line number Diff line number Diff line change
Expand Up @@ -815,7 +815,7 @@ All the previous approaches to specifying custom serialization strategies were _
fully defined at compile-time. The exception was the [Passing a serializer manually](#passing-a-serializer-manually)
approach, but it worked only on a top-level object. You might need to change the serialization
strategy for objects deep in the serialized object tree at run-time, with the strategy being selected in a context-dependent way.
For example, you might want to represent `java.util.Date` in JSON format as an ISO 6801 string or as a long integer
For example, you might want to represent `java.util.Date` in JSON format as an ISO 8601 string or as a long integer
depending on a version of a protocol you are serializing data for. This is called _contextual_ serialization, and it
is supported by a built-in [ContextualSerializer] class. Usually we don't have to use this serializer class explicitly—there
is the [Contextual] annotation providing a shortcut to
Expand Down Expand Up @@ -933,7 +933,7 @@ object ProjectSerializer
```

You must bind this serializer to a class using one of the approaches explained in this chapter. We'll
follow the [Passing a serializer manually](#passing-a-serializer-manually) appraoch for this example.
follow the [Passing a serializer manually](#passing-a-serializer-manually) approach for this example.

```kotlin
fun main() {
Expand Down
4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
#

group=org.jetbrains.kotlinx
version=1.1.0-SNAPSHOT
version=1.1.0-RC

kotlin.version=1.4.30-RC
kotlin.version=1.4.30-270

# This version take precedence if 'bootstrap' property passed to project
kotlin.version.snapshot=1.4.255-SNAPSHOT
Expand Down
4 changes: 2 additions & 2 deletions integration-test/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
# Copyright 2017-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
#

mainKotlinVersion=1.4.30-RC
mainLibVersion=1.1.0-SNAPSHOT
mainKotlinVersion=1.4.30-270
mainLibVersion=1.1.0-RC

kotlin.code.style=official
kotlin.js.compiler=both
Expand Down