chore(deps): update kotlin core dependencies
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| org.jetbrains.kotlinx:kotlinx-coroutines-core | 1.8.1 -> 1.10.2 |
||||
| org.jetbrains.kotlinx:kotlinx-datetime | 0.5.0 -> 0.7.1-0.6.x-compat |
||||
| org.jetbrains.kotlinx:kotlinx-serialization-properties | 1.6.3 -> 1.9.0 |
||||
| org.jetbrains.kotlinx:kotlinx-serialization-json | 1.6.3 -> 1.9.0 |
||||
| org.jetbrains.kotlinx:kotlinx-serialization-core | 1.6.3 -> 1.9.0 |
Release Notes
Kotlin/kotlinx.coroutines (org.jetbrains.kotlinx:kotlinx-coroutines-core)
v1.10.2
- Fixed the
kotlinx-coroutines-debugJAR file including themodule-info.classfile twice, resulting in failures in various tooling (#4314). Thanks, @RyuNen344! - Fixed
Flow.stateInhanging when the scope is cancelled in advance or the flow is empty (#4322). Thanks, @francescotescari! - Improved handling of dispatcher failures in
.limitedParallelism(#4330) and during flow collection (#4272). - Fixed
runBlockingfailing to run its coroutine to completion in some cases if its JVM thread got interrupted (#4399). - Small tweaks, fixes, and documentation improvements.
v1.10.1
v1.10.0
- Kotlin was updated to 2.1.0 (#4284).
- Introduced
Flow.any,Flow.all, andFlow.none(#4212). Thanks, @CLOVIS-AI! - Reorganized
kotlinx-coroutines-debugandkotlinx-coroutines-corecode to avoid a split package between the two artifacts (#4247). Note that directly referencingkotlinx.coroutines.debug.AgentPremainmust now be replaced withkotlinx.coroutines.debug.internal.AgentPremain. Thanks, @sellmair! - No longer shade byte-buddy in
kotlinx-coroutines-debug, reducing the artifact size and simplifying the build configuration of client code. Thanks, @sellmair! - Fixed
NullPointerExceptionwhen using Java-deserializedkotlinx-coroutines-coreexceptions (#4291). Thanks, @AlexRiedler! - Properly report exceptions thrown by
CoroutineDispatcher.dispatchinstead of raising internal errors (#4091). Thanks, @zuevmaxim! - Fixed a bug that delayed scheduling of a
Dispatchers.DefaultorDispatchers.IOtask after ayield()in rare scenarios (#4248). - Fixed a bug that prevented the
main()coroutine on Wasm/WASI from executing after adelay()call in some scenarios (#4239). - Fixed scheduling of
runBlockingtasks on Kotlin/Native that arrive after therunBlockingblock was exited (#4245). - Fixed some terminal
Flowoperators sometimes resuming without taking cancellation into account (#4254). Thanks, @jxdabc! - Fixed a bug on the JVM that caused coroutine-bound
ThreadLocalvalues not to get cleaned when using non-CoroutineDispatchercontinuation interceptors (#4296). - Small tweaks, fixes, and documentation improvements.
v1.9.0
Features
- Wasm/WASI target support (#4064). Thanks, @igoriakovlev!
-
limitedParallelismnow optionally accepts the name of the dispatcher view for easier debugging (#4023). - No longer initialize
Dispatchers.IOon the JVM when other standard dispatchers are accessed (#4166). Thanks, @metalhead8816! - Introduced the
Flow<T>.chunked(size: Int): Flow<List<T>>operator that groups emitted values into groups of the given size (#1290). - Closeable dispatchers are instances of
AutoCloseablenow (#4123).
Fixes
- Calling
hasNexton aChannel's iterator is idempotent (#4065). Thanks, @gitpaxultek! -
CoroutineScope()created without an explicit dispatcher usesDispatchers.Defaulton Native (#4074). Thanks, @whyoleg! - Fixed a bug that prevented non-Android
Dispatchers.Mainfrom initializing when the Firebase dependency is used (#3914). - Ensured a more intuitive ordering of tasks in
runBlocking(#4134). - Forbid casting a
MutextoSemaphore(#4176). - Worked around a stack overflow that may occur when calling
asDeferredon aFuturemany times (#4156).
Deprecations and promotions
- Advanced the deprecation levels for
BroadcastChannel-based API (#4197). - Advanced the deprecation levels for the old
kotlinx-coroutines-testAPI (#4198). - Deprecated
Job.cancelFutureOnCompletion(#4173). - Promoted
CoroutineDispatcher.limitedParallelismto stable (#3864). - Promoted
CoroutineStart.ATOMICfromExperimentalCoroutinesApitoDelicateCoroutinesApi(#4169). - Promoted
CancellableContinuation.resumewith anonCancellationlambda to stable, providing extra arguments to the lambda (#4088). - Marked the classes and interfaces that are not supposed to be inherited from with the new
InternalForInheritanceCoroutinesApiopt-in (#3770). - Marked the classes and interfaces inheriting from which is not stable with the new
ExperimentalForInheritanceCoroutinesApiopt-in (#3770).
Other
Kotlin/kotlinx-datetime (org.jetbrains.kotlinx:kotlinx-datetime)
v0.7.1-0.6.x-compat
v0.7.1
- Add
kotlinx.datetime.Instantandkotlinx.datetime.Clocktype aliases to, respectively,kotlin.time.Instantandkotlin.time.Clockto make migration more convenient. - Add a fallback timezone database implementation for Darwin that uses the Foundation framework if the timezone database is unavailable on the filesystem (#485).
- Restore binary compatibility in string format definitions utilizing dates on the JVM (#545).
v0.7.0-0.6.x-compat
v0.7.0
Breaking changes:
- Remove
kotlinx.datetime.Instantandkotlinx.datetime.Clockin favor ofkotlin.time.Instant(#506). See https://github.com/Kotlin/kotlinx-datetime?tab=readme-ov-file#deprecation-of-instant for a description of what to do if this causes problems. - Unify the range of admissible
LocalDateandLocalDateTimevalues on all platforms (#432). - Rename
dayOfMonthtoday,monthNumbertomonth(#84). - Make
DayOfWeekandMonthno longer type aliases tojava.time.DayOfWeekandjava.time.Month(#96). - Make
"UTC"and not"Z"be the timezone identifier forTimeZone.UTC(#474). - Accept
"z"inTimeZone.of, with the same meaning as"Z"(#529). - Add
DateTimeFormat-basedKSerializerimplementations for datetime entities, and change the default serializers to be based ontoString/parsepairs (#415).
Additions:
- Add
java.io.Serializableimplementations for most of the entities in the library (#143). Thanks for spotting and fixing a potential vulnerability, @lukellmann! - Add
LocalDateRange, a range ofLocalDatevalues (#190). Thanks, @PeterAttardo! - Add
YearMonthandYearMonthRange(#457).
Tweaks and fixes:
- Support obtaining the system timezone on old Debian-based distributions (#430).
- Fix not being able to parse some valid timezone identifiers using the
timeZoneId()directive (#444). - Use the grammar defined in RFC 9557 for parsing timezone identifiers in the
timeZoneId()directive, allowing parsing values not present in the timezone database (#531). - Improved error messages when formatting an invalid
DateTimeComponentsvalue (#471). - Set the JPMS dependency on
kotlinx.serialization.coreto be optional (#496).
v0.6.2
- Add the Wasm/WASI target support (#366). Thanks, @igoriakovlev!
- Add
TimeSource.asClock(#164). Thanks, @hfhbd! - Implement parsing and formatting day-of-year (#414)
- Improve the precision of
NSDatetoInstantconversions (#427) - Deprecate
DatePeriod.plusandDateTimePeriod.pluswith a warning (#381) - Deprecate
Clock.asTimeSourcewith a warning (#372) - Fix a bug in
module-infopreventing usingkotlinx.datetime.formattogether with JPMS (#438). Thanks, @cdelabou! - Small tweaks and fixes.
v0.6.1
- Prohibit parsing non-ASCII digits as numbers in
DateTimeFormat(#405) - More accurately determine which files represent time zones and which don't on Linux and Darwin (#395)
- Fix a regression that occasionally considered the right boundary of a time overlap to be a part of it on Native (#399)
- Introduce various small improvements to the timezone handling on Windows (#390)
- On Linux, allow not having any
/etc/localtimeset, defaulting toTimeZone.UTCas the system time zone (#426)
v0.6.0
- Introduce the widely requested API for locale-invariant parsing and formatting (#343)
- Completely overhaul the KDoc-based documentation (#347)
- Breaking change: forbid parsing
Instantvalues without the second-of-minute component on the JVM and JS, fixing inconsistency with Native (#369) - Breaking change: use the fully qualified name of classes in the JSON serializers (#308)
- Fix Proguard emitting warning about missing
kotlinx-serializationclasses when serialization is not used (#336) - Reimplement the timezone database handling for Native targets from scratch (#286, #327)
- Support Android NDK targets (#344)
- Small tweaks and fixes.
Changelog relative to version 0.6.0-RC.2
- Completely overhaul the KDoc-based documentation (#347)
- Breaking change: forbid parsing
Instantvalues without the second-of-minute component on the JVM and JS, fixing inconsistency with Native (#369) - Improve error descriptiveness in some cases (#360, #371)
- Remove
statusages to comply with Apple's new publishing requirements (#385) - Fix parsing of formats where
optionalis directly between numbers (#362) - Forbid empty and duplicate month, day-of-week, and AM/PM marker names in datetime formats (#362)
Kotlin/kotlinx.serialization (org.jetbrains.kotlinx:kotlinx-serialization-properties)
v1.9.0
==================
This release updates Kotlin version to 2.2.0, includes several bugfixes and provides serializers for kotlin.time.Instant.
Add kotlin.time.Instant serializers
Instant class was moved from kotlinx-datetime library to Kotlin standard library.
As a result, kotlinx-datetime 0.7.0 no longer has serializers for the Instant class.
To use new kotlin.time.Instant class in your @Serializable classes,
you can use this 1.9.0 kotlinx-serialization version (Kotlin 2.2 is required).
You can choose between default InstantSerializer which uses its string representation,
or specify InstantComponentSerializer that represents instant as its components.
See details in the PR.
Other bugfixes
v1.8.1
==================
This release updates Kotlin version to 2.1.20, while also providing several important improvements and bugfixes.
Improvements
- Implemented encoding null in key and value of a map in Protobuf (#2910)
- Make type argument in JsonTransformingSerializer nullable (#2911)
- Use SPDX identifier in POMs (#2936) (thanks to Leon Linhart)
- Add watchosDeviceArm64 to Okio integration module (#2920) (thanks to Daniel Santiago)
- Update kotlinx-io version to 0.6.0 (#2933) (thanks to Piotr Krzemiński)
Bugfixes
- Fix incorrect enum coercion during deserialization from JsonElement (#2962)
- Supply proper equals(), hashCode(), and toString() for SerialDescriptor() wrapper (#2942)
- Do not encode empty packed collections in protobuf (#2907)
v1.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).
v1.7.3
==================
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)
- Drop usage of deprecated Any?.freeze() in K/N target (#2819)
- Check against serialName instead of simpleClassName (#2802)
- Ignore NoClassDefFoundError when initializing builtins map for serializer() function (#2803)
- Clarify example for SerializationException (#2806)
v1.7.2
==================
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
@CborLabelannotation andpreferCborLabelsOverNamesflag. - Tagging of keys and values — see
encode*Tagsandverify*Tagsset 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
alwaysUseByteStringflag.
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, 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 to us by Bernd Prünster.
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 and in the PRs: #2758, #2669.
Serializer for kotlin.uuid.Uuid
Kotlin 2.0.20 added 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.
Plugin will be able to automatically insert Uuid serializer in Kotlin 2.1.0.
See more details in the corresponding PR.
Other bugfixes and improvements
- Prohibited using of zero and negative field numbers in ProtoNumber (#2766)
- Improve readability of protobuf decoding exception messages (#2768) (thanks to xiaozhikang0916)
- docs(serializers): Fix grammatical errors (#2779) (thanks to jamhour1g)
- Fixed VerifyError after ProGuard optimization (#2728)
- Add wasm-wasi target to Okio integration (#2727)
v1.7.1
==================
This is a bugfix release that aims to fix missing kotlinx-serialization-hocon artifact.
It also contains experimental integration with kotlinx-io library.
Kotlin 2.0.0 is used by default.
Fixed HOCON publication
Sadly, 1.7.0 release was published incomplete: kotlinx-serialization-hocon artifact is missing from 1.7.0 and 1.7.0-RC releases.
This release fixes this problem and now kotlinx-serialization-hocon is available again with 1.7.1 version.
No other changes were made to this artifact. Related ticket: #2717.
Add integration with a kotlinx-io library
kotlinx-io is an official multiplatform library that provides basic IO primitives, similar to Okio.
kotlinx.serialization integration is now available in a separate artifact, located at the kotlinx-serialization-json-io coordinates.
Integration artifact provides functions similar to existing Okio integration: encodeToSink, decodeFromSource, and decodeSourceToSequence.
Check out the PR for more details.
Other bugfixes
- Prohibited use of elements other than JsonObject in JsonTransformingSerializer with polymorphic serialization (#2715)
v1.7.0
==================
This release contains all of the changes from 1.7.0-RC and is compatible with Kotlin 2.0. Please note that for reasons explained in the 1.7.0-RC changelog, it may not be possible to use it with the Kotlin 1.9.x compiler plugin. Yet, it is still fully backwards compatible with previous versions.
The only difference with 1.7.0-RC is that classDiscriminatorMode property in JsonBuilder is marked as experimental,
as it should have been when it was introduced (#2680).
Configuration
📅 Schedule: Branch creation - "before 4am on Monday" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ 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 was generated by Mend Renovate. View the repository job log.
JUnit Tests (Windows, EnricoMi/publish-unit-test-result-action@v1)
30 tests 9 ✅ 1s ⏱️ 8 suites 2 💤 8 files 19 ❌
For more details on these failures, see this check.
Results for commit a0f2e67e.
:recycle: This comment has been updated with latest results.
JUnit Tests (Linux, EnricoMi/publish-unit-test-result-action@v1)
30 tests 9 ✅ 0s ⏱️ 8 suites 2 💤 8 files 19 ❌
For more details on these failures, see this check.
Results for commit a0f2e67e.