From 3561d6adee3c9b5e807ad45a0fd7dfbe1ada5884 Mon Sep 17 00:00:00 2001
From: Alexander Sysoev
Date: Fri, 1 Nov 2024 15:53:26 +0100
Subject: [PATCH 1/3] Updated docs for 0.4.0; bumped version
---
.github/workflows/docs.yml | 2 +-
README.md | 65 ++++---------
docs/pages/kotlinx-rpc/help-versions.json | 2 +-
docs/pages/kotlinx-rpc/rpc.tree | 1 +
docs/pages/kotlinx-rpc/topics/0-4-0.topic | 74 +++++++++++++++
docs/pages/kotlinx-rpc/topics/features.topic | 13 ++-
.../kotlinx-rpc/topics/get-started.topic | 22 ++---
docs/pages/kotlinx-rpc/topics/plugins.topic | 92 ++-----------------
docs/pages/kotlinx-rpc/topics/services.topic | 5 +-
docs/pages/kotlinx-rpc/topics/transport.topic | 2 +-
docs/pages/kotlinx-rpc/topics/versions.topic | 9 +-
docs/pages/kotlinx-rpc/v.list | 5 +-
docs/pages/kotlinx-rpc/writerside.cfg | 2 +-
gradle.properties | 2 +-
versions-root/libs.versions.toml | 2 +-
15 files changed, 138 insertions(+), 160 deletions(-)
create mode 100644 docs/pages/kotlinx-rpc/topics/0-4-0.topic
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index 382e1a045..9cc8b7380 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -20,7 +20,7 @@ env:
ALGOLIA_INDEX_NAME: 'prod_kotlin_rpc'
ALGOLIA_KEY: '${{ secrets.ALGOLIA_KEY }}'
CONFIG_JSON_PRODUCT: 'kotlinx-rpc'
- CONFIG_JSON_VERSION: '0.3.0'
+ CONFIG_JSON_VERSION: '0.4.0'
jobs:
build:
diff --git a/README.md b/README.md
index 593376240..125e43e37 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,7 @@
[](https://kotlinlang.org/docs/components-stability.html)
[](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
-[](http://kotlinlang.org)
+[](http://kotlinlang.org)
[](http://www.apache.org/licenses/LICENSE-2.0)
[//]: # ([](https://teamcity.jetbrains.com/viewType.html?buildTypeId=Build_kRPC_All&guest=1))
@@ -84,33 +84,18 @@ Check out our [getting started guide](https://kotlin.github.io/kotlinx-rpc) for
### Plugin dependencies
-`kotlinx.rpc` has the following plugin dependencies:
-- The `org.jetbrains.kotlinx.rpc.plugin` will set up BOM and code generation for targets in the project.
-- The `org.jetbrains.kotlinx.rpc.platform` will only set up BOM. It is useful when you want to split your app into modules,
-and some of them will contain service declarations, thus using code generation, while others will only consume them.
+`kotlinx.rpc` provides Gradle plugin `org.jetbrains.kotlinx.rpc.plugin`
+that will set up code generation in a project.
-Example of plugins setup in a project's `build.gradle.kts`:
+Example of a setup in a project's `build.gradle.kts`:
```kotlin
plugins {
- kotlin("jvm") version "2.0.10"
- kotlin("plugin.serialization") version "2.0.10"
- id("org.jetbrains.kotlinx.rpc.plugin") version "0.3.0"
+ kotlin("multiplatform") version "2.0.21"
+ kotlin("plugin.serialization") version "2.0.21"
+ id("org.jetbrains.kotlinx.rpc.plugin") version "0.4.0"
}
```
-For Kotlin versions prior to 2.0,
-KSP plugin is required
-(Corresponding configurations will be set up automatically by `org.jetbrains.kotlinx.rpc.plugin` plugin):
-
-```kotlin
-// build.gradle.kts
-plugins {
- kotlin("jvm") version "1.9.25"
- kotlin("plugin.serialization") version "1.9.25"
- id("com.google.devtools.ksp") version "1.9.25-1.0.20"
- id("org.jetbrains.kotlinx.rpc.plugin") version "0.3.0"
-}
-```
### Runtime dependencies
To use `kotlinx.rpc` runtime dependencies, add Maven Central to the list of your repositories:
```kotlin
@@ -121,16 +106,16 @@ repositories {
And now you can add dependencies to your project:
```kotlin
dependencies {
- // client API
- implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-client")
- // server API
- implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-server")
- // serialization module. also, protobuf and cbor are available
- implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-serialization-json")
+ // Client API
+ implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-client:0.4.0")
+ // Server API
+ implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-server:0.4.0")
+ // Serialization module. Also, protobuf and cbor are provided
+ implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-serialization-json:0.4.0")
- // transport implementation for Ktor
- implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-ktor-client")
- implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-ktor-server")
+ // Transport implementation for Ktor
+ implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-ktor-client:0.4.0")
+ implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-ktor-server:0.4.0")
// Ktor API
implementation("io.ktor:ktor-client-cio-jvm:$ktor_version")
@@ -143,7 +128,7 @@ You can see example projects in the [samples](samples) folder.
`kotlinx.rpc` is designed to be transport agnostic.
That means that the library aims to provide the best RPC experience regardless of how the resulting messages are transferred.
That allows for easy integration into existing solutions, such as Ktor, without the need to rewrite code.
-Just plug-in `kotlinx.rpc`, provide it with means to transfer encoded data (or use out-of-the-box integrations) and it will run.
+Add `kotlinx.rpc`, provide it with means to transfer encoded data (or use out-of-the-box integrations) and it will run.
With enough time it might even work with [avian carriers](https://en.wikipedia.org/wiki/IP_over_Avian_Carriers).
`kotlinx.rpc` provides its own transfer protocol called kRPC, which takes responsibility for tracking serializing and handling other complex request operations.
@@ -154,26 +139,12 @@ Besides that, one can even provide their own protocol or integration with one to
Though possible, it is much more complicated way to use the library and generally not needed.
`kotlinx.rpc` aims to provide most common protocols integrations as well as the in-house one called kRPC.
Integrations in progress:
-- Integration with [gRPC](https://grpc.io/) (in prototype)
+- Integration with [gRPC](https://grpc.io/) (in prototype)
## Kotlin compatibility
We support all stable Kotlin versions starting from 2.0.0:
- 2.0.0, 2.0.10, 2.0.20, 2.0.21
-To simplify project configuration, our Gradle plugin sets a proper library version automatically using BOM,
-based on the project's Kotlin version:
-```kotlin
-plugins {
- kotlin("jvm") version "2.0.10"
- id("org.jetbrains.kotlinx.rpc.plugin") version "0.3.0"
-}
-
-dependencies {
- // version 0.3.0 is set by the Gradle plugin
- implementation("org.jetbrains.kotlinx:kotlinx-rpc-core")
-}
-```
-
For a full compatibility checklist,
see [Versions](https://kotlin.github.io/kotlinx-rpc/versions.html).
diff --git a/docs/pages/kotlinx-rpc/help-versions.json b/docs/pages/kotlinx-rpc/help-versions.json
index aefc80e92..a5e4e23e9 100644
--- a/docs/pages/kotlinx-rpc/help-versions.json
+++ b/docs/pages/kotlinx-rpc/help-versions.json
@@ -1,3 +1,3 @@
[
- {"version":"0.3.0","url":"/kotlinx-rpc/0.3.0/","isCurrent":true}
+ {"version":"0.4.0","url":"/kotlinx-rpc/0.4.0/","isCurrent":true}
]
diff --git a/docs/pages/kotlinx-rpc/rpc.tree b/docs/pages/kotlinx-rpc/rpc.tree
index 23ab1e140..53f20105a 100644
--- a/docs/pages/kotlinx-rpc/rpc.tree
+++ b/docs/pages/kotlinx-rpc/rpc.tree
@@ -26,6 +26,7 @@
+
diff --git a/docs/pages/kotlinx-rpc/topics/0-4-0.topic b/docs/pages/kotlinx-rpc/topics/0-4-0.topic
new file mode 100644
index 000000000..346363bc4
--- /dev/null
+++ b/docs/pages/kotlinx-rpc/topics/0-4-0.topic
@@ -0,0 +1,74 @@
+
+
+
+
+ Version 0.4.0
introduces breaking changes.
+
+
+
+ This version brings changes to service definitions.
+ Prior to 0.4.0
a service was defined as following:
+
+
+ interface MyService : RPC
+
+
+ Starting from 0.4.0
new service definition is required:
+
+
+ @Rpc
+ interface MyService
+
+
+ This definition will be enough for the project to build, but it is not sufficient for use in IDE.
+ All interfaces annotated with @Rpc
are inherently RemoteService
.
+ This supertype is added by our compiler plugin.
+ However, IDE can't resolve it yet, so for the code to be highlighted properly,
+ explicit typing is required:
+
+
+ @Rpc
+ interface MyService : RemoteService
+
+
+ The reasoning behind this change is that Kotlin Compiler Plugin API has changed.
+ Versions 2.0.0
and 2.0.10
allowed our plugin to resolve marker interfaces (which RPC
was)
+ before the code generation phase. Starting from 2.0.20
this doesn't work,
+ and we are forced to use annotations to reliably detect RPC services.
+ To track changes in this regard, we created an issue for the compiler team.
+ This change is not the final API design decision, and it may be changed before the stable release.
+
+
+
+
+ We stopped publishing compiler plugin artifacts for Kotlin versions prior to 2.0.
+ The reason for this is high maintenance cost with little to no usage.
+ We encourage the migration to Kotlin 2.0, where all stable versions are now supported.
+
+ List of Kotlin versions that are currently supported: 2.0.0
, 2.0.10
, 2.0.20
, 2.0.21
+
+
+
+
+ Gradle plugin with id org.jetbrains.kotlinx.rpc.platform
is not being published anymore.
+ The reason is that it's sole role was to set BOM in the project, which is now considered unnecessary.
+ Gradle version catalogs
+ can be used instead.
+
+
+
+
+ The Gradle plugin that is left (org.jetbrains.kotlinx.rpc.plugin
)
+ does not set BOM for the project anymore. Instead, manual dependency can be set:
+
+
+ dependencies {
+ implementation(platform("org.jetbrains.kotlinx:kotlinx-rpc-bom:%kotlinx-rpc-version%"))
+ }
+
+
+
\ No newline at end of file
diff --git a/docs/pages/kotlinx-rpc/topics/features.topic b/docs/pages/kotlinx-rpc/topics/features.topic
index 9b236eae8..4e213ebd5 100644
--- a/docs/pages/kotlinx-rpc/topics/features.topic
+++ b/docs/pages/kotlinx-rpc/topics/features.topic
@@ -36,7 +36,8 @@
that will provide your flows with their lifetime:
- interface MyService {
+ @Rpc
+ interface MyService : RemoteService {
suspend fun sendFlow(flow: Flow<Int>)
}
@@ -81,6 +82,16 @@
}
Note that this API is experimental and may be removed in future releases.
+
+ Another way of managing streams - is to do it manually.
+ For this, StreamScope
constructor function can be used on pair with withStreamScope
:
+
+
+ val streamScope = StreamScope(myJob)
+ withStreamScope(streamScope) {
+ // use streams here
+ }
+
Our protocol provides you with an ability to declare service fields:
diff --git a/docs/pages/kotlinx-rpc/topics/get-started.topic b/docs/pages/kotlinx-rpc/topics/get-started.topic
index 1b2652ec3..6ba7fe8f1 100644
--- a/docs/pages/kotlinx-rpc/topics/get-started.topic
+++ b/docs/pages/kotlinx-rpc/topics/get-started.topic
@@ -110,21 +110,8 @@
- kotlinx.rpc
provides two Gradle plugins:
-
-
-
- org.jetbrains.kotlinx.rpc.platform
-
-
-
-
- org.jetbrains.kotlinx.rpc.plugin
-
-
-
- To add a plugin to your project, you need to define the following in your build.gradle.kts:
+ To add a Gradle plugin to your project, you need to define the following in your build.gradle.kts:
@@ -132,11 +119,14 @@
id("org.jetbrains.kotlinx.rpc.plugin") version "%kotlinx-rpc-version%"
}
- To learn more about versioning, see .
+
+
+ This will configure code generation for your project.
+
- kotlinx.rpc
requires you to add
+
kotlinx.rpc
requires you to add the
kotlinx.serialization
Gradle plugin to your project.
diff --git a/docs/pages/kotlinx-rpc/topics/plugins.topic b/docs/pages/kotlinx-rpc/topics/plugins.topic
index e799e7df8..7e1620329 100644
--- a/docs/pages/kotlinx-rpc/topics/plugins.topic
+++ b/docs/pages/kotlinx-rpc/topics/plugins.topic
@@ -9,98 +9,24 @@
xsi:noNamespaceSchemaLocation="https://resources.jetbrains.com/writerside/1.0/topic.v2.xsd"
title="Plugins" id="plugins">
- The kotlinx.rpc
library offers plugins that simplify project configuration by automating repetitive
- tasks.
- Specifically, kotlinx.rpc
provides two Gradle plugins:
+ The kotlinx.rpc
library offers a Gradle plugin
+ that simplifies project configuration by automating repetitive tasks: `org.jetbrains.kotlinx.rpc.plugin`
-
-
-
- org.jetbrains.kotlinx.rpc.platform
-
-
-
-
- org.jetbrains.kotlinx.rpc.plugin
-
-
-
-
- The org.jetbrains.kotlinx.rpc.platform
plugin
- is particularly useful for versioning project dependencies.
- It adds BOM
- dependency to your project, that specifies proper versions for kotlinx.rpc
dependencies.
- With this, you can skip specifying versions for each runtime dependency:
-
-
- plugins {
- kotlin("jvm") version "%kotlin-version%"
- id("org.jetbrains.kotlinx.rpc.platform") version "%kotlinx-rpc-version%"
- }
-
- dependencies {
- // versions are set automatically to %kotlinx-rpc-version%
- implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-client")
- implementation("org.jetbrains.kotlinx:kotlinx-rpc-krpc-server")
- }
-
- Using this plugin with version catalogs, your code can be rewritten like this:
-
-
- # gradle / libs.versions.toml
- [versions]
- kotlinx-rpc-core = "%kotlinx-rpc-version%";
-
- [libraries]
- kotlinx-rpc-client = { module = "org.jetbrains.kotlinx:kotlinx-rpc-krpc-client" }
-
- [plugins]
- kotlinx-rpc-platform = { id = "org.jetbrains.kotlinx.rpc.platform"; version.ref = "kotlinx-rpc-core"; }
-
-
-
- // build.gradle.kts
- plugins {
- alias(libs.plugins.kotlinx.rpc.platform)
- }
-
- dependencies {
- implementation(libs.kotlinx.rpc.client)
- }
-
-
- The org.jetbrains.kotlinx.rpc.plugin
plugin
- has the same BOM functionality as org.jetbrains.kotlinx.rpc.platform
and it also sets
- up code generation configurations.
+ The org.jetbrains.kotlinx.rpc.plugin
plugin sets up code generation configurations.
- It is useful for multi-project setups
- where you define your RPC services in one set of subprojects and use in the
- other. In such a setup, you can add the plugin only to modules with service definitions
- to save time on building your project.
-
plugins {
kotlin("jvm") version "%kotlin-version%"
id("org.jetbrains.kotlinx.rpc.plugin") version "%kotlinx-rpc-version%"
}
-
-
-
- If you are using a version of Kotlin prior to 2.0,
- you must also add the KSP (Kotlin Symbol Processing) Gradle plugin:
-
-
- plugins {
- kotlin("jvm") version "1.9.25"
- id("org.jetbrains.kotlinx.rpc.plugin") version "%kotlinx-rpc-version%"
- id("com.google.devtools.ksp") version "1.9.25-1.0.20"
- }
-
-
+
+ For multi-project setups
+ where you define your RPC services in one set of subprojects and use them in
+ another, you can add the plugin only to modules with service definitions.
+
-
\ No newline at end of file
+
diff --git a/docs/pages/kotlinx-rpc/topics/services.topic b/docs/pages/kotlinx-rpc/topics/services.topic
index a2840eb18..90a36f2fa 100644
--- a/docs/pages/kotlinx-rpc/topics/services.topic
+++ b/docs/pages/kotlinx-rpc/topics/services.topic
@@ -9,9 +9,12 @@
xsi:noNamespaceSchemaLocation="https://resources.jetbrains.com/writerside/1.0/topic.v2.xsd"
title="Services" id="services">
Services are the centerpieces of the library.
- A service is an interface annotated with the RPC
annotation,
+ A service is an interface annotated with the @Rpc
annotation,
and contains a set of methods and fields
that can be executed or accessed remotely.
+ Additionally, a service always has a type of RemoteService
,
+ which can be specified explicitly, or assumed implicitly and added by a compiler
+ (the latter option does not work in IDE right now, but WIP).
A simple service can be declared as follows:
diff --git a/docs/pages/kotlinx-rpc/topics/transport.topic b/docs/pages/kotlinx-rpc/topics/transport.topic
index a89f193db..17547d0f6 100644
--- a/docs/pages/kotlinx-rpc/topics/transport.topic
+++ b/docs/pages/kotlinx-rpc/topics/transport.topic
@@ -88,7 +88,7 @@
@Rpc
interface ImageService : RemoteService {
- suspend fun processImage(url: Srting): ProcessedImage
+ suspend fun processImage(url: String): ProcessedImage
}
// ### CLIENT CODE ###
diff --git a/docs/pages/kotlinx-rpc/topics/versions.topic b/docs/pages/kotlinx-rpc/topics/versions.topic
index 08ed609c9..7a5611c8c 100644
--- a/docs/pages/kotlinx-rpc/topics/versions.topic
+++ b/docs/pages/kotlinx-rpc/topics/versions.topic
@@ -8,7 +8,7 @@
- As kotlinx.rpc
uses Kotlin compiler plugin and KSP plugins,
+
As kotlinx.rpc
uses Kotlin compiler plugin,
we rely on internal functionality that may change over time with any new Kotlin version.
To prevent the library from breaking with an incompatible Kotlin version,
we use version prefix for artifacts with code generating functionality.
@@ -69,9 +69,12 @@
id("org.jetbrains.kotlinx.rpc.plugin") version "%kotlinx-rpc-version%"
}
- Our Gradle plugin will add this dependency to all applicable configurations:
+ Our Gradle plugin will add these dependencies to all applicable configurations:
- org.jetbrains.kotlinx:kotlinx-rpc-compiler-plugin:%kotlin-version%-%kotlinx-rpc-version%
+ org.jetbrains.kotlinx:kotlinx-rpc-compiler-plugin-cli:%kotlin-version%-%kotlinx-rpc-version%
+ org.jetbrains.kotlinx:kotlinx-rpc-compiler-plugin-common:%kotlin-version%-%kotlinx-rpc-version%
+ org.jetbrains.kotlinx:kotlinx-rpc-compiler-plugin-k2:%kotlin-version%-%kotlinx-rpc-version%
+ org.jetbrains.kotlinx:kotlinx-rpc-compiler-plugin-backend:%kotlin-version%-%kotlinx-rpc-version%
Such dependencies are managed automatically, and should not be used explicitly.
diff --git a/docs/pages/kotlinx-rpc/v.list b/docs/pages/kotlinx-rpc/v.list
index 1897ccfc9..8a6dc0d6c 100644
--- a/docs/pages/kotlinx-rpc/v.list
+++ b/docs/pages/kotlinx-rpc/v.list
@@ -14,7 +14,6 @@
-
-
-
+
+
diff --git a/docs/pages/kotlinx-rpc/writerside.cfg b/docs/pages/kotlinx-rpc/writerside.cfg
index 2fc05fd86..0a0f6d429 100644
--- a/docs/pages/kotlinx-rpc/writerside.cfg
+++ b/docs/pages/kotlinx-rpc/writerside.cfg
@@ -12,5 +12,5 @@
-
+
diff --git a/gradle.properties b/gradle.properties
index 2d4b2c2fc..9ca28dedf 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -16,7 +16,7 @@ org.gradle.workers.max=6
org.gradle.caching=true
org.gradle.configuration-cache=true
-# development mode for kotlinx.rpc gradle plugin. Uses local project paths to apply ksp and compiler plugins
+# development mode for kotlinx.rpc gradle plugin. Uses local project paths to apply compiler plugins
kotlinx.rpc.plugin.internalDevelopment=true
# https://github.com/gradle/gradle/issues/20416
diff --git a/versions-root/libs.versions.toml b/versions-root/libs.versions.toml
index 3ed3b4133..1646cd8b4 100644
--- a/versions-root/libs.versions.toml
+++ b/versions-root/libs.versions.toml
@@ -1,6 +1,6 @@
[versions]
# core library version
-kotlinx-rpc = "0.3.0"
+kotlinx-rpc = "0.4.0"
# kotlin
kotlin-lang = "2.0.21" # or env.KOTLIN_VERSION
From 65270707322206fdd3436a9586c0f5da55f7b91b Mon Sep 17 00:00:00 2001
From: Viktoriya Nikolova
Date: Tue, 5 Nov 2024 16:15:18 +0100
Subject: [PATCH 2/3] docs adjustments for formatting and grammar
---
docs/pages/kotlinx-rpc/topics/0-4-0.topic | 56 +++++++++++++-------
docs/pages/kotlinx-rpc/topics/features.topic | 5 +-
docs/pages/kotlinx-rpc/topics/services.topic | 9 ++--
3 files changed, 45 insertions(+), 25 deletions(-)
diff --git a/docs/pages/kotlinx-rpc/topics/0-4-0.topic b/docs/pages/kotlinx-rpc/topics/0-4-0.topic
index 346363bc4..7878c27b2 100644
--- a/docs/pages/kotlinx-rpc/topics/0-4-0.topic
+++ b/docs/pages/kotlinx-rpc/topics/0-4-0.topic
@@ -9,52 +9,65 @@
- This version brings changes to service definitions.
- Prior to 0.4.0
a service was defined as following:
+ This version brings changes to service definitions. Starting with this version, service definitions require
+ the @Rpc
annotation.
+
+
+ Prior to 0.4.0
, a service was defined as follows:
interface MyService : RPC
- Starting from 0.4.0
new service definition is required:
+ Starting from 0.4.0
, the new service definition should be:
@Rpc
interface MyService
- This definition will be enough for the project to build, but it is not sufficient for use in IDE.
- All interfaces annotated with @Rpc
are inherently RemoteService
.
- This supertype is added by our compiler plugin.
- However, IDE can't resolve it yet, so for the code to be highlighted properly,
- explicit typing is required:
+ This definition is sufficient for the project to build. However, it will not fully support IDE features,
+ such as code highlighting.
+ All interfaces annotated with @Rpc
are inherently of type RemoteService
, which is
+ added by the compiler plugin, but IDEs won't be able to resolve it.
+
+
+ To ensure proper IDE support, add explicit typing:
@Rpc
interface MyService : RemoteService
- The reasoning behind this change is that Kotlin Compiler Plugin API has changed.
- Versions 2.0.0
and 2.0.10
allowed our plugin to resolve marker interfaces (which RPC
was)
- before the code generation phase. Starting from 2.0.20
this doesn't work,
- and we are forced to use annotations to reliably detect RPC services.
- To track changes in this regard, we created an issue for the compiler team.
- This change is not the final API design decision, and it may be changed before the stable release.
+
+ The reasoning behind this update is that the Kotlin Compiler Plugin API has changed.
+ Versions 2.0.0
and 2.0.10
allowed our plugin to resolve marker interfaces (like RPC
)
+ before the code generation phase. Starting from version 2.0.20
, this behaviour changed,
+ making annotations the only reliable way to detect RPC services.
+
+
+ To track changes in this regard, we raised an issue
+ with the compiler team.
+ Note that this approach is subject to change, and the final API design may be updated before the stable
+ release.
+
- We stopped publishing compiler plugin artifacts for Kotlin versions prior to 2.0.
- The reason for this is high maintenance cost with little to no usage.
+ We stopped publishing compiler plugin artifacts for Kotlin versions prior to 2.0.0
.
+ The reason being its high maintenance cost with little to no usage.
We encourage the migration to Kotlin 2.0, where all stable versions are now supported.
- List of Kotlin versions that are currently supported: 2.0.0
, 2.0.10
, 2.0.20
, 2.0.21
+
+
+ Currently supported Kotlin versions: 2.0.0
, 2.0.10
, 2.0.20
, 2.0.21
- Gradle plugin with id org.jetbrains.kotlinx.rpc.platform
is not being published anymore.
+ The Gradle plugin with id org.jetbrains.kotlinx.rpc.platform
is not being published anymore.
The reason is that it's sole role was to set BOM in the project, which is now considered unnecessary.
Gradle version catalogs
can be used instead.
@@ -62,8 +75,11 @@
- The Gradle plugin that is left (org.jetbrains.kotlinx.rpc.plugin
)
- does not set BOM for the project anymore. Instead, manual dependency can be set:
+ The Gradle plugin with id org.jetbrains.kotlinx.rpc.plugin
+ does not set BOM for the project anymore.
+
+
+ To configure BOM manually, add the following dependency:
dependencies {
diff --git a/docs/pages/kotlinx-rpc/topics/features.topic b/docs/pages/kotlinx-rpc/topics/features.topic
index 4e213ebd5..9a611edba 100644
--- a/docs/pages/kotlinx-rpc/topics/features.topic
+++ b/docs/pages/kotlinx-rpc/topics/features.topic
@@ -83,8 +83,9 @@
Note that this API is experimental and may be removed in future releases.
- Another way of managing streams - is to do it manually.
- For this, StreamScope
constructor function can be used on pair with withStreamScope
:
+ Another way of managing streams is to do it manually.
+ For this, you can use the StreamScope
constructor function together with
+ withStreamScope
:
val streamScope = StreamScope(myJob)
diff --git a/docs/pages/kotlinx-rpc/topics/services.topic b/docs/pages/kotlinx-rpc/topics/services.topic
index 90a36f2fa..b10a1dee0 100644
--- a/docs/pages/kotlinx-rpc/topics/services.topic
+++ b/docs/pages/kotlinx-rpc/topics/services.topic
@@ -13,9 +13,12 @@
and contains a set of methods and fields
that can be executed or accessed remotely.
Additionally, a service always has a type of RemoteService
,
- which can be specified explicitly, or assumed implicitly and added by a compiler
- (the latter option does not work in IDE right now, but WIP).
- A simple service can be declared as follows:
+ which can be specified explicitly, or assumed implicitly by the compiler.
+
+
+ Note that implicit typing is currently not supported in IDEs, but is a work in progress.
+
+ A simple service can be declared as follows:
@Rpc
From aae30bad924d45a1e8a8785501d66a7e22edcadc Mon Sep 17 00:00:00 2001
From: Alexander Sysoev
Date: Tue, 5 Nov 2024 17:00:49 +0100
Subject: [PATCH 3/3] type fix
---
gradle.properties | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gradle.properties b/gradle.properties
index 9ca28dedf..1f2386b10 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -16,7 +16,7 @@ org.gradle.workers.max=6
org.gradle.caching=true
org.gradle.configuration-cache=true
-# development mode for kotlinx.rpc gradle plugin. Uses local project paths to apply compiler plugins
+# development mode for kotlinx.rpc gradle plugin. Uses local project paths to apply the compiler plugin
kotlinx.rpc.plugin.internalDevelopment=true
# https://github.com/gradle/gradle/issues/20416