Skip to content

Conversation

dependabot[bot]
Copy link
Contributor

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

Bumps serialization from 1.7.3 to 1.8.0.
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 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'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-okio from 1.7.3 to 1.8.0

Release notes

Sourced from org.jetbrains.kotlinx:kotlinx-serialization-json-okio'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-okio'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

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
@dependabot dependabot bot added the dependencies Dependencies update to newer versions label Jan 7, 2025
@dependabot dependabot bot force-pushed the dependabot/gradle/serialization-1.8.0 branch 4 times, most recently from ea1f6ce to a33808b Compare January 15, 2025 12:49
Bumps `serialization` from 1.7.3 to 1.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` 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-json 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 ... Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot bot force-pushed the dependabot/gradle/serialization-1.8.0 branch from a33808b to 15f6736 Compare January 18, 2025 12:56
@OptimumCode OptimumCode added the ABI breaking changes that break binary compatibility (does not mean they break API) label Jan 18, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Jan 18, 2025

PR introduces changes to the public API

Please add "ABI breaking" label if any line in API file was changed or deleted.
Please add "API breaking" label if any public method in API file was changed or deleted.

Generated by 🚫 Danger Kotlin against af3eec5

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark 'KMP JSON schema validator'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.50.

Benchmark suite Current: af3eec5 Previous: 9706717 Ratio
macosArm64.CommonAvgTimeBench.validateFlag ( {"objectPath":"openapi.json","schemaPath":"openapi_schema.json"} ) 1225.8874526785717 us/op 788.5133391912909 us/op 1.55
macosX64.CommonAvgTimeBench.validateBasic ( {"objectPath":"openapi-invalid.json","schemaPath":"openapi_schema.json"} ) 4048.7280325342463 us/op 2675.849175466667 us/op 1.51
macosX64.CommonAvgTimeBench.validateDetailed ( {"objectPath":"openapi.json","schemaPath":"openapi_schema.json"} ) 8615.045943269233 us/op 5678.910136516854 us/op 1.52
macosX64.CommonAvgTimeBench.validateDetailed ( {"objectPath":"openapi-invalid.json","schemaPath":"openapi_schema.json"} ) 9648.875048780486 us/op 6106.166725454546 us/op 1.58

This comment was automatically generated by workflow using github-action-benchmark.

CC: @OptimumCode

@codecov
Copy link

codecov bot commented Jan 18, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 90.53%. Comparing base (71dd3a8) to head (af3eec5).
Report is 1 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@ ## main #230 +/- ## ======================================= Coverage 90.53% 90.53% ======================================= Files 133 133 Lines 3983 3983 Branches 1059 1059 ======================================= Hits 3606 3606 Misses 82 82 Partials 295 295 

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@OptimumCode OptimumCode enabled auto-merge (squash) January 18, 2025 14:02
@OptimumCode OptimumCode merged commit f6e5a67 into main Jan 18, 2025
20 checks passed
@OptimumCode OptimumCode deleted the dependabot/gradle/serialization-1.8.0 branch January 18, 2025 14:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ABI breaking changes that break binary compatibility (does not mean they break API) dependencies Dependencies update to newer versions

1 participant