diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 3c827aeef..0992b6011 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -30,7 +30,7 @@ env: ALGOLIA_INDEX_NAME: 'prod_kotlin_rpc' ALGOLIA_KEY: '${{ secrets.ALGOLIA_KEY }}' CONFIG_JSON_PRODUCT: 'kotlinx-rpc' - CONFIG_JSON_VERSION: '0.8.0' + CONFIG_JSON_VERSION: '0.8.1' DOKKA_ARTIFACT: 'dokka.zip' ASSEMBLE_DIR: '__docs_assembled' ASSEMBLE_ARTIFACT: 'assembled.zip' diff --git a/CHANGELOG.md b/CHANGELOG.md index 491a5e251..013e15dc1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,31 @@ +# 0.8.1 +> Published 9 July 2025 + +### Bug fixes ๐Ÿ› +* Propagate transport coroutine context by @yakivy in https://github.com/Kotlin/kotlinx-rpc/pull/374 +* Fix compiler bugs by @Mr3zee in https://github.com/Kotlin/kotlinx-rpc/pull/382 +* kRPC client initialization is not single shot by @Mr3zee in https://github.com/Kotlin/kotlinx-rpc/pull/385 + +### Documentation ๐Ÿ“— +* Grpc sample update by @Mr3zee in https://github.com/Kotlin/kotlinx-rpc/pull/371 +* Fix dokka API button for all modules by @Mr3zee in https://github.com/Kotlin/kotlinx-rpc/pull/381 + +### Infra ๐Ÿšง +* Update pages publication and api link by @Mr3zee in https://github.com/Kotlin/kotlinx-rpc/pull/375 +* Added artifacts validation by @Mr3zee in https://github.com/Kotlin/kotlinx-rpc/pull/377 + +### Other Changes ๐Ÿงน +* Ci updates by @Mr3zee in https://github.com/Kotlin/kotlinx-rpc/pull/370 +* Updated CSM sources for template generation by @Mr3zee in https://github.com/Kotlin/kotlinx-rpc/pull/372 +* Update strict-mode.topic by @BierDav in https://github.com/Kotlin/kotlinx-rpc/pull/380 +* Update Ktor to 3.2.1 and samples by @Mr3zee in https://github.com/Kotlin/kotlinx-rpc/pull/383 + +## New Contributors +* @yakivy made their first contribution in https://github.com/Kotlin/kotlinx-rpc/pull/374 +* @BierDav made their first contribution in https://github.com/Kotlin/kotlinx-rpc/pull/380 + +**Full Changelog**: https://github.com/Kotlin/kotlinx-rpc/compare/0.8.0...0.8.1 + # 0.8.0 > Published 30 June 2025 diff --git a/README.md b/README.md index a9605b3b1..f255dc72c 100644 --- a/README.md +++ b/README.md @@ -136,7 +136,7 @@ Example of a setup in a project's `build.gradle.kts`: plugins { kotlin("multiplatform") version "2.2.0" kotlin("plugin.serialization") version "2.2.0" - id("org.jetbrains.kotlinx.rpc.plugin") version "0.8.0" + id("org.jetbrains.kotlinx.rpc.plugin") version "0.8.1" } ``` @@ -151,15 +151,15 @@ And now you can add dependencies to your project: ```kotlin dependencies { // Client API - implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-client:0.8.0") + implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-client:0.8.1") // Server API - implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-server:0.8.0") + implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-server:0.8.1") // Serialization module. Also, protobuf and cbor are provided - implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-serialization-json:0.8.0") + implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-serialization-json:0.8.1") // Transport implementation for Ktor - implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-ktor-client:0.8.0") - implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-ktor-server:0.8.0") + implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-ktor-client:0.8.1") + implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-ktor-server:0.8.1") // Ktor API implementation("io.ktor:ktor-client-cio-jvm:$ktor_version") diff --git a/core/api/core.api b/core/api/core.api index d208cb15c..f9064281a 100644 --- a/core/api/core.api +++ b/core/api/core.api @@ -49,6 +49,7 @@ public abstract interface class kotlinx/rpc/descriptor/RpcParameter { public abstract fun getAnnotations ()Ljava/util/List; public abstract fun getName ()Ljava/lang/String; public abstract fun getType ()Lkotlinx/rpc/descriptor/RpcType; + public abstract fun isOptional ()Z } public abstract interface class kotlinx/rpc/descriptor/RpcServiceDescriptor { diff --git a/core/api/core.klib.api b/core/api/core.klib.api index 258d8ca34..4af66af8d 100644 --- a/core/api/core.klib.api +++ b/core/api/core.klib.api @@ -38,6 +38,8 @@ abstract interface <#A: kotlin/Any> kotlinx.rpc.descriptor/RpcServiceDescriptor abstract interface kotlinx.rpc.descriptor/RpcParameter { // kotlinx.rpc.descriptor/RpcParameter|null[0] abstract val annotations // kotlinx.rpc.descriptor/RpcParameter.annotations|{}annotations[0] abstract fun (): kotlin.collections/List // kotlinx.rpc.descriptor/RpcParameter.annotations.|(){}[0] + abstract val isOptional // kotlinx.rpc.descriptor/RpcParameter.isOptional|{}isOptional[0] + abstract fun (): kotlin/Boolean // kotlinx.rpc.descriptor/RpcParameter.isOptional.|(){}[0] abstract val name // kotlinx.rpc.descriptor/RpcParameter.name|{}name[0] abstract fun (): kotlin/String // kotlinx.rpc.descriptor/RpcParameter.name.|(){}[0] abstract val type // kotlinx.rpc.descriptor/RpcParameter.type|{}type[0] diff --git a/docs/pages/kotlinx-rpc/help-versions.json b/docs/pages/kotlinx-rpc/help-versions.json index 2c7d0e0ad..1fe84fcc5 100644 --- a/docs/pages/kotlinx-rpc/help-versions.json +++ b/docs/pages/kotlinx-rpc/help-versions.json @@ -1,3 +1,3 @@ [ - {"version":"0.8.0","url":"/kotlinx-rpc/0.8.0/","isCurrent":true} + {"version":"0.8.1","url":"/kotlinx-rpc/0.8.1/","isCurrent":true} ] diff --git a/docs/pages/kotlinx-rpc/topics/changelog.md b/docs/pages/kotlinx-rpc/topics/changelog.md index 8c293a22f..f40fa3f52 100644 --- a/docs/pages/kotlinx-rpc/topics/changelog.md +++ b/docs/pages/kotlinx-rpc/topics/changelog.md @@ -2,6 +2,35 @@ This page contains all changes throughout releases of the library. +## 0.8.1 +> Published 9 July 2025 + +**Full Changelog**: [0.8.0...0.8.1](https://github.com/Kotlin/kotlinx-rpc/compare/0.8.0...0.8.1) + +#### Bug fixes ๐Ÿ› {id=Bug_fixes_0_8_1} +* Propagate transport coroutine context by [@yakivy](https://github.com/yakivy) in [#374](https://github.com/Kotlin/kotlinx-rpc/pull/374) +* Fix compiler bugs by [@Mr3zee](https://github.com/Mr3zee) in [#382](https://github.com/Kotlin/kotlinx-rpc/pull/382) +* kRPC client initialization is not single shot by [@Mr3zee](https://github.com/Mr3zee) in [#385](https://github.com/Kotlin/kotlinx-rpc/pull/385) + +#### Documentation ๐Ÿ“— {id=Documentation_0_8_1} +* Grpc sample update by [@Mr3zee](https://github.com/Mr3zee) in [#371](https://github.com/Kotlin/kotlinx-rpc/pull/371) +* Fix dokka API button for all modules by [@Mr3zee](https://github.com/Mr3zee) in [#381](https://github.com/Kotlin/kotlinx-rpc/pull/381) + +#### Infra ๐Ÿšง {id=Infra_0_8_1} +* Update pages publication and api link by [@Mr3zee](https://github.com/Mr3zee) in [#375](https://github.com/Kotlin/kotlinx-rpc/pull/375) +* Added artifacts validation by [@Mr3zee](https://github.com/Mr3zee) in [#377](https://github.com/Kotlin/kotlinx-rpc/pull/377) + +#### Other Changes ๐Ÿงน {id=Other_Changes_0_8_1} +* Ci updates by [@Mr3zee](https://github.com/Mr3zee) in [#370](https://github.com/Kotlin/kotlinx-rpc/pull/370) +* Updated CSM sources for template generation by [@Mr3zee](https://github.com/Mr3zee) in [#372](https://github.com/Kotlin/kotlinx-rpc/pull/372) +* Update strict-mode.topic by [@BierDav](https://github.com/BierDav) in [#380](https://github.com/Kotlin/kotlinx-rpc/pull/380) +* Update Ktor to 3.2.1 and samples by [@Mr3zee](https://github.com/Mr3zee) in [#383](https://github.com/Kotlin/kotlinx-rpc/pull/383) + +### New Contributors {id=New_Contributors_0_8_1} +* [@yakivy](https://github.com/yakivy) made their first contribution in [#374](https://github.com/Kotlin/kotlinx-rpc/pull/374) +* [@BierDav](https://github.com/BierDav) made their first contribution in [#380](https://github.com/Kotlin/kotlinx-rpc/pull/380) + + ## 0.8.0 > Published 30 June 2025 diff --git a/docs/pages/kotlinx-rpc/v.list b/docs/pages/kotlinx-rpc/v.list index d556cded1..61262d2f6 100644 --- a/docs/pages/kotlinx-rpc/v.list +++ b/docs/pages/kotlinx-rpc/v.list @@ -14,6 +14,6 @@ - + diff --git a/docs/pages/kotlinx-rpc/writerside.cfg b/docs/pages/kotlinx-rpc/writerside.cfg index 69d888c34..2d7ff9821 100644 --- a/docs/pages/kotlinx-rpc/writerside.cfg +++ b/docs/pages/kotlinx-rpc/writerside.cfg @@ -12,5 +12,5 @@ - + diff --git a/kotlin-js-store/package-lock.json b/kotlin-js-store/package-lock.json index a58ae0d02..5160c59fa 100644 --- a/kotlin-js-store/package-lock.json +++ b/kotlin-js-store/package-lock.json @@ -1,12 +1,12 @@ { "name": "kotlinx-rpc", - "version": "0.8.0", + "version": "0.8.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "kotlinx-rpc", - "version": "0.8.0", + "version": "0.8.1", "workspaces": [ "packages/kotlinx-rpc-core", "packages/kotlinx-rpc-core-test", @@ -36,7 +36,7 @@ "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-json-test", "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-protobuf", "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-protobuf-test", - "packages_imported/ktor-ktor-client-core/3.2.0" + "packages_imported/ktor-ktor-client-core/3.2.1" ], "devDependencies": {} }, @@ -2491,7 +2491,7 @@ "link": true }, "node_modules/ktor-ktor-client-core": { - "resolved": "packages_imported/ktor-ktor-client-core/3.2.0", + "resolved": "packages_imported/ktor-ktor-client-core/3.2.1", "link": true }, "node_modules/lines-and-columns": { @@ -4406,8 +4406,9 @@ "resolved": "https://packages.jetbrains.team/npm/p/krpc/build-deps/zod/-/zod-3.25.67.tgz", "integrity": "sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==" }, - "packages_imported/ktor-ktor-client-core/3.2.0": { - "version": "3.2.0", + "packages_imported/ktor-ktor-client-core/3.2.1": { + "name": "ktor-ktor-client-core", + "version": "3.2.1", "dependencies": { "ws": "8.18.0" }, @@ -4423,11 +4424,11 @@ "devDependencies": {} }, "packages/kotlinx-rpc-core": { - "version": "0.8.0", + "version": "0.8.1", "devDependencies": {} }, "packages/kotlinx-rpc-core-test": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "puppeteer": "24.9.0" }, @@ -4446,11 +4447,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-client": { - "version": "0.8.0", + "version": "0.8.1", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-client-test": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "puppeteer": "24.9.0" }, @@ -4469,11 +4470,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-core": { - "version": "0.8.0", + "version": "0.8.1", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-core-test": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "puppeteer": "24.9.0" }, @@ -4492,14 +4493,14 @@ } }, "packages/kotlinx-rpc-krpc-krpc-ktor-krpc-ktor-client": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "ws": "8.18.0" }, "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-ktor-krpc-ktor-client-test": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "puppeteer": "24.9.0", "ws": "8.18.0" @@ -4519,11 +4520,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-ktor-krpc-ktor-core": { - "version": "0.8.0", + "version": "0.8.1", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-ktor-krpc-ktor-core-test": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "puppeteer": "24.9.0" }, @@ -4542,11 +4543,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-ktor-krpc-ktor-server": { - "version": "0.8.0", + "version": "0.8.1", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-ktor-krpc-ktor-server-test": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "puppeteer": "24.9.0" }, @@ -4565,11 +4566,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-logging": { - "version": "0.8.0", + "version": "0.8.1", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-logging-test": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "puppeteer": "24.9.0" }, @@ -4588,11 +4589,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-cbor": { - "version": "0.8.0", + "version": "0.8.1", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-cbor-test": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "puppeteer": "24.9.0" }, @@ -4611,11 +4612,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-core": { - "version": "0.8.0", + "version": "0.8.1", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-core-test": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "puppeteer": "24.9.0" }, @@ -4634,11 +4635,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-json": { - "version": "0.8.0", + "version": "0.8.1", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-json-test": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "puppeteer": "24.9.0" }, @@ -4657,11 +4658,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-protobuf": { - "version": "0.8.0", + "version": "0.8.1", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-protobuf-test": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "puppeteer": "24.9.0" }, @@ -4680,11 +4681,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-server": { - "version": "0.8.0", + "version": "0.8.1", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-server-test": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "puppeteer": "24.9.0" }, @@ -4703,11 +4704,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-test": { - "version": "0.8.0", + "version": "0.8.1", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-test-test": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "puppeteer": "24.9.0" }, @@ -4726,11 +4727,11 @@ } }, "packages/kotlinx-rpc-utils": { - "version": "0.8.0", + "version": "0.8.1", "devDependencies": {} }, "packages/kotlinx-rpc-utils-test": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "puppeteer": "24.9.0" }, diff --git a/kotlin-js-store/wasm/package-lock.json b/kotlin-js-store/wasm/package-lock.json index 75d47c3e6..9865b374c 100644 --- a/kotlin-js-store/wasm/package-lock.json +++ b/kotlin-js-store/wasm/package-lock.json @@ -1,12 +1,12 @@ { "name": "kotlinx-rpc", - "version": "0.8.0", + "version": "0.8.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "kotlinx-rpc", - "version": "0.8.0", + "version": "0.8.1", "workspaces": [ "packages/kotlinx-rpc-core", "packages/kotlinx-rpc-core-test", @@ -36,7 +36,7 @@ "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-json-test", "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-protobuf", "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-protobuf-test", - "packages_imported/ktor-ktor-client-core-wasm-js/3.2.0" + "packages_imported/ktor-ktor-client-core-wasm-js/3.2.1" ], "devDependencies": {} }, @@ -2491,7 +2491,7 @@ "link": true }, "node_modules/ktor-ktor-client-core-wasm-js": { - "resolved": "packages_imported/ktor-ktor-client-core-wasm-js/3.2.0", + "resolved": "packages_imported/ktor-ktor-client-core-wasm-js/3.2.1", "link": true }, "node_modules/lines-and-columns": { @@ -4406,8 +4406,9 @@ "resolved": "https://packages.jetbrains.team/npm/p/krpc/build-deps/zod/-/zod-3.25.67.tgz", "integrity": "sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==" }, - "packages_imported/ktor-ktor-client-core-wasm-js/3.2.0": { - "version": "3.2.0", + "packages_imported/ktor-ktor-client-core-wasm-js/3.2.1": { + "name": "ktor-ktor-client-core-wasm-js", + "version": "3.2.1", "dependencies": { "ws": "8.18.0" }, @@ -4423,11 +4424,11 @@ "devDependencies": {} }, "packages/kotlinx-rpc-core": { - "version": "0.8.0", + "version": "0.8.1", "devDependencies": {} }, "packages/kotlinx-rpc-core-test": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "puppeteer": "24.9.0" }, @@ -4445,11 +4446,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-client": { - "version": "0.8.0", + "version": "0.8.1", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-client-test": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "puppeteer": "24.9.0" }, @@ -4467,11 +4468,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-core": { - "version": "0.8.0", + "version": "0.8.1", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-core-test": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "puppeteer": "24.9.0" }, @@ -4489,14 +4490,14 @@ } }, "packages/kotlinx-rpc-krpc-krpc-ktor-krpc-ktor-client": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "ws": "8.18.0" }, "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-ktor-krpc-ktor-client-test": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "puppeteer": "24.9.0", "ws": "8.18.0" @@ -4515,11 +4516,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-ktor-krpc-ktor-core": { - "version": "0.8.0", + "version": "0.8.1", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-ktor-krpc-ktor-core-test": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "puppeteer": "24.9.0" }, @@ -4537,11 +4538,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-ktor-krpc-ktor-server": { - "version": "0.8.0", + "version": "0.8.1", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-ktor-krpc-ktor-server-test": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "puppeteer": "24.9.0" }, @@ -4559,11 +4560,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-logging": { - "version": "0.8.0", + "version": "0.8.1", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-logging-test": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "puppeteer": "24.9.0" }, @@ -4581,11 +4582,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-cbor": { - "version": "0.8.0", + "version": "0.8.1", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-cbor-test": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "puppeteer": "24.9.0" }, @@ -4603,11 +4604,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-core": { - "version": "0.8.0", + "version": "0.8.1", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-core-test": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "puppeteer": "24.9.0" }, @@ -4625,11 +4626,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-json": { - "version": "0.8.0", + "version": "0.8.1", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-json-test": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "puppeteer": "24.9.0" }, @@ -4647,11 +4648,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-protobuf": { - "version": "0.8.0", + "version": "0.8.1", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-protobuf-test": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "puppeteer": "24.9.0" }, @@ -4669,11 +4670,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-server": { - "version": "0.8.0", + "version": "0.8.1", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-server-test": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "puppeteer": "24.9.0" }, @@ -4691,11 +4692,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-test": { - "version": "0.8.0", + "version": "0.8.1", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-test-test": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "puppeteer": "24.9.0" }, @@ -4713,11 +4714,11 @@ } }, "packages/kotlinx-rpc-utils": { - "version": "0.8.0", + "version": "0.8.1", "devDependencies": {} }, "packages/kotlinx-rpc-utils-test": { - "version": "0.8.0", + "version": "0.8.1", "dependencies": { "puppeteer": "24.9.0" }, diff --git a/krpc/krpc-core/src/commonMain/kotlin/kotlinx/rpc/krpc/internal/SerializationUtils.kt b/krpc/krpc-core/src/commonMain/kotlin/kotlinx/rpc/krpc/internal/SerializationUtils.kt index f32b6dd98..5ed02c722 100644 --- a/krpc/krpc-core/src/commonMain/kotlin/kotlinx/rpc/krpc/internal/SerializationUtils.kt +++ b/krpc/krpc-core/src/commonMain/kotlin/kotlinx/rpc/krpc/internal/SerializationUtils.kt @@ -15,7 +15,6 @@ import kotlinx.serialization.descriptors.buildClassSerialDescriptor import kotlinx.serialization.encoding.* import kotlinx.serialization.modules.SerializersModule import kotlin.reflect.KType -import kotlin.reflect.KTypeParameter @OptIn(ExperimentalSerializationApi::class) internal fun SerializersModule.buildContextualInternal(type: KType): KSerializer? { diff --git a/krpc/krpc-test/src/commonTest/kotlin/kotlinx/rpc/krpc/test/TransportTest.kt b/krpc/krpc-test/src/commonTest/kotlin/kotlinx/rpc/krpc/test/TransportTest.kt index 6be7387f2..6e29b8f46 100644 --- a/krpc/krpc-test/src/commonTest/kotlin/kotlinx/rpc/krpc/test/TransportTest.kt +++ b/krpc/krpc-test/src/commonTest/kotlin/kotlinx/rpc/krpc/test/TransportTest.kt @@ -6,6 +6,7 @@ package kotlinx.rpc.krpc.test import kotlinx.atomicfu.atomic import kotlinx.coroutines.* +import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.test.TestResult import kotlinx.coroutines.test.TestScope import kotlinx.rpc.* @@ -87,12 +88,20 @@ class TransportTest { val logger = RpcInternalCommonLogger.logger("TransportTest") val logs = mutableListOf() + val logsChannel = Channel(Channel.UNLIMITED) + + val logsJob = launch(CoroutineName("logs collector")) { + for (log in logsChannel) { + logs.add(log) + } + } + RpcInternalDumpLoggerContainer.set(object : RpcInternalDumpLogger { override val isEnabled: Boolean = true override fun dump(vararg tags: String, message: () -> String) { val message = "${tags.joinToString(" ") { "[$it]" }} ${message()}" - logs.add(message) + logsChannel.trySend(message) logger.info { message } } }) @@ -100,6 +109,8 @@ class TransportTest { block(logs) RpcInternalDumpLoggerContainer.set(null) + logsJob.cancelAndJoin() + logsChannel.close() } @Test @@ -247,21 +258,24 @@ class TransportTest { transports.cancel() } - private val clientHandshake = ".*\\[Client] \\[Send] \\{\"type\":\"${KrpcProtocolMessage.Handshake.serializer().descriptor.serialName}\".*+".toRegex() + private val handshakeClassSerialName = KrpcProtocolMessage.Handshake.serializer().descriptor.serialName + @Suppress("RegExpRedundantEscape") // fails on js otherwise + private val clientHandshake = ".*\\[Client\\] \\[Send\\] \\{\"type\":\"$handshakeClassSerialName\".*".toRegex() + + private val transportInitialized = atomic(0) + private val configInitialized = atomic(0) @Test fun transportInitializedOnlyOnce() = runTest { logs -> val localTransport = LocalTransport() - var transportInitialized = 0 - var configInitialized = 0 val client = object : KrpcClient() { override suspend fun initializeTransport(): KrpcTransport { - transportInitialized++ + transportInitialized.getAndIncrement() return localTransport.client } override fun initializeConfig(): KrpcConfig.Client { - configInitialized++ + configInitialized.getAndIncrement() return clientConfig } } @@ -274,8 +288,8 @@ class TransportTest { client.withService().apply { echo("foo"); echo("bar") } client.withService().apply{ second("bar"); second("baz") } - assertEquals(1, transportInitialized) - assertEquals(1, configInitialized) + assertEquals(1, transportInitialized.value) + assertEquals(1, configInitialized.value) assertEquals(1, logs.count { it.matches(clientHandshake) }) } diff --git a/samples/ktor-all-platforms-app/gradle/libs.versions.toml b/samples/ktor-all-platforms-app/gradle/libs.versions.toml index ef451a2f6..0954b4b7b 100644 --- a/samples/ktor-all-platforms-app/gradle/libs.versions.toml +++ b/samples/ktor-all-platforms-app/gradle/libs.versions.toml @@ -19,7 +19,7 @@ ktor = "3.2.1" logback = "1.5.18" serialization = "1.8.1" coroutines = "1.10.2" -kotlinx-rpc = "0.8.0" +kotlinx-rpc = "0.8.1" [libraries] # kotlin diff --git a/samples/ktor-android-app/gradle/libs.versions.toml b/samples/ktor-android-app/gradle/libs.versions.toml index 469252019..03ada9a45 100644 --- a/samples/ktor-android-app/gradle/libs.versions.toml +++ b/samples/ktor-android-app/gradle/libs.versions.toml @@ -15,7 +15,7 @@ ktor = "3.2.1" kotlinx-serialization-json = "1.8.1" kotlinx-coroutines-core = "1.10.2" logback = "1.5.18" -kotlinx-rpc = "0.8.0" +kotlinx-rpc = "0.8.1" [libraries] # kotlin diff --git a/samples/ktor-web-app/gradle/libs.versions.toml b/samples/ktor-web-app/gradle/libs.versions.toml index b3269be9e..c138f3f49 100644 --- a/samples/ktor-web-app/gradle/libs.versions.toml +++ b/samples/ktor-web-app/gradle/libs.versions.toml @@ -5,7 +5,7 @@ ktor = "3.2.1" kotlinx-serialization-json = "1.8.1" kotlinx-coroutines-core = "1.10.2" logback = "1.5.18" -kotlinx-rpc = "0.8.0" +kotlinx-rpc = "0.8.1" [libraries] # kotlin diff --git a/samples/simple-ktor-app/build.gradle.kts b/samples/simple-ktor-app/build.gradle.kts index fc8fa3192..9d4fd2c0c 100644 --- a/samples/simple-ktor-app/build.gradle.kts +++ b/samples/simple-ktor-app/build.gradle.kts @@ -6,7 +6,7 @@ plugins { kotlin("jvm") version "2.2.0" kotlin("plugin.serialization") version "2.2.0" id("io.ktor.plugin") version "3.2.1" - id("org.jetbrains.kotlinx.rpc.plugin") version "0.8.0" + id("org.jetbrains.kotlinx.rpc.plugin") version "0.8.1" } group = "kotlinx.rpc.sample" @@ -28,12 +28,12 @@ kotlin { } dependencies { - implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-client:0.8.0") - implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-server:0.8.0") - implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-serialization-json:0.8.0") + implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-client:0.8.1") + implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-server:0.8.1") + implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-serialization-json:0.8.1") - implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-ktor-client:0.8.0") - implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-ktor-server:0.8.0") + implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-ktor-client:0.8.1") + implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-ktor-server:0.8.1") implementation("io.ktor:ktor-client-cio") implementation("io.ktor:ktor-server-netty-jvm") diff --git a/versions-root/libs.versions.toml b/versions-root/libs.versions.toml index ebda05bc6..29c961c90 100644 --- a/versions-root/libs.versions.toml +++ b/versions-root/libs.versions.toml @@ -1,6 +1,6 @@ [versions] # core library version -kotlinx-rpc = "0.8.0" +kotlinx-rpc = "0.8.1" # kotlin kotlin-lang = "2.2.0" # or env.KOTLIN_VERSION