Skip to content

Commit 9eb7f0c

Browse files
committed
Add support for Wasm/Wasi to krpc #465
1 parent e449267 commit 9eb7f0c

File tree

9 files changed

+62
-13
lines changed

9 files changed

+62
-13
lines changed

docs/pages/kotlinx-rpc/topics/platforms.topic

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -89,39 +89,39 @@
8989
<td>krpc-client</td>
9090
<td>jvm</td>
9191
<td><list><li>browser</li><li>node</li></list></td>
92-
<td><list><li>wasmJs<list><li>browser</li><li>node</li></list></li></list></td>
92+
<td><list><li>wasmJs<list><li>browser</li><li>node</li></list></li><li>wasmWasi<list><li>node</li></list></li></list></td>
9393
<td><list><li>apple<list><li>ios<list><li>iosArm64</li><li>iosSimulatorArm64</li><li>iosX64</li></list></li><li>macos<list><li>macosArm64</li><li>macosX64</li></list></li><li>watchos<list><li>watchosArm64</li><li>watchosSimulatorArm64</li><li>watchosX64</li></list></li><li>tvos<list><li>tvosArm64</li><li>tvosSimulatorArm64</li><li>tvosX64</li></list></li></list></li><li>linux<list><li>linuxArm64</li><li>linuxX64</li></list></li><li>windows<list><li>mingwX64</li></list></li></list></td>
9494
</tr>
9595

9696
<tr>
9797
<td>krpc-core</td>
9898
<td>jvm</td>
9999
<td><list><li>browser</li><li>node</li></list></td>
100-
<td><list><li>wasmJs<list><li>browser</li><li>node</li></list></li></list></td>
100+
<td><list><li>wasmJs<list><li>browser</li><li>node</li></list></li><li>wasmWasi<list><li>node</li></list></li></list></td>
101101
<td><list><li>apple<list><li>ios<list><li>iosArm64</li><li>iosSimulatorArm64</li><li>iosX64</li></list></li><li>macos<list><li>macosArm64</li><li>macosX64</li></list></li><li>watchos<list><li>watchosArm64</li><li>watchosSimulatorArm64</li><li>watchosX64</li></list></li><li>tvos<list><li>tvosArm64</li><li>tvosSimulatorArm64</li><li>tvosX64</li></list></li></list></li><li>linux<list><li>linuxArm64</li><li>linuxX64</li></list></li><li>windows<list><li>mingwX64</li></list></li></list></td>
102102
</tr>
103103

104104
<tr>
105105
<td>krpc-logging</td>
106106
<td>jvm</td>
107107
<td><list><li>browser</li><li>node</li></list></td>
108-
<td><list><li>wasmJs<list><li>browser</li><li>node</li></list></li></list></td>
108+
<td><list><li>wasmJs<list><li>browser</li><li>node</li></list></li><li>wasmWasi<list><li>node</li></list></li></list></td>
109109
<td><list><li>apple<list><li>ios<list><li>iosArm64</li><li>iosSimulatorArm64</li><li>iosX64</li></list></li><li>macos<list><li>macosArm64</li><li>macosX64</li></list></li><li>watchos<list><li>watchosArm64</li><li>watchosSimulatorArm64</li><li>watchosX64</li></list></li><li>tvos<list><li>tvosArm64</li><li>tvosSimulatorArm64</li><li>tvosX64</li></list></li></list></li><li>linux<list><li>linuxArm64</li><li>linuxX64</li></list></li><li>windows<list><li>mingwX64</li></list></li></list></td>
110110
</tr>
111111

112112
<tr>
113113
<td>krpc-server</td>
114114
<td>jvm</td>
115115
<td><list><li>browser</li><li>node</li></list></td>
116-
<td><list><li>wasmJs<list><li>browser</li><li>node</li></list></li></list></td>
116+
<td><list><li>wasmJs<list><li>browser</li><li>node</li></list></li><li>wasmWasi<list><li>node</li></list></li></list></td>
117117
<td><list><li>apple<list><li>ios<list><li>iosArm64</li><li>iosSimulatorArm64</li><li>iosX64</li></list></li><li>macos<list><li>macosArm64</li><li>macosX64</li></list></li><li>watchos<list><li>watchosArm64</li><li>watchosSimulatorArm64</li><li>watchosX64</li></list></li><li>tvos<list><li>tvosArm64</li><li>tvosSimulatorArm64</li><li>tvosX64</li></list></li></list></li><li>linux<list><li>linuxArm64</li><li>linuxX64</li></list></li><li>windows<list><li>mingwX64</li></list></li></list></td>
118118
</tr>
119119

120120
<tr>
121121
<td>krpc-test</td>
122122
<td>jvm</td>
123123
<td><list><li>browser</li><li>node</li></list></td>
124-
<td><list><li>wasmJs<list><li>browser</li><li>node</li></list></li></list></td>
124+
<td><list><li>wasmJs<list><li>browser</li><li>node</li></list></li><li>wasmWasi<list><li>node</li></list></li></list></td>
125125
<td><list><li>apple<list><li>ios<list><li>iosArm64</li><li>iosSimulatorArm64</li><li>iosX64</li></list></li><li>macos<list><li>macosArm64</li><li>macosX64</li></list></li><li>watchos<list><li>watchosArm64</li><li>watchosSimulatorArm64</li><li>watchosX64</li></list></li><li>tvos<list><li>tvosArm64</li><li>tvosSimulatorArm64</li><li>tvosX64</li></list></li></list></li><li>linux<list><li>linuxArm64</li><li>linuxX64</li></list></li><li>windows<list><li>mingwX64</li></list></li></list></td>
126126
</tr>
127127

@@ -153,31 +153,31 @@
153153
<td>krpc-serialization-cbor</td>
154154
<td>jvm</td>
155155
<td><list><li>browser</li><li>node</li></list></td>
156-
<td><list><li>wasmJs<list><li>browser</li><li>node</li></list></li></list></td>
156+
<td><list><li>wasmJs<list><li>browser</li><li>node</li></list></li><li>wasmWasi<list><li>node</li></list></li></list></td>
157157
<td><list><li>apple<list><li>ios<list><li>iosArm64</li><li>iosSimulatorArm64</li><li>iosX64</li></list></li><li>macos<list><li>macosArm64</li><li>macosX64</li></list></li><li>watchos<list><li>watchosArm64</li><li>watchosSimulatorArm64</li><li>watchosX64</li></list></li><li>tvos<list><li>tvosArm64</li><li>tvosSimulatorArm64</li><li>tvosX64</li></list></li></list></li><li>linux<list><li>linuxArm64</li><li>linuxX64</li></list></li><li>windows<list><li>mingwX64</li></list></li></list></td>
158158
</tr>
159159

160160
<tr>
161161
<td>krpc-serialization-core</td>
162162
<td>jvm</td>
163163
<td><list><li>browser</li><li>node</li></list></td>
164-
<td><list><li>wasmJs<list><li>browser</li><li>node</li></list></li></list></td>
164+
<td><list><li>wasmJs<list><li>browser</li><li>node</li></list></li><li>wasmWasi<list><li>node</li></list></li></list></td>
165165
<td><list><li>apple<list><li>ios<list><li>iosArm64</li><li>iosSimulatorArm64</li><li>iosX64</li></list></li><li>macos<list><li>macosArm64</li><li>macosX64</li></list></li><li>watchos<list><li>watchosArm64</li><li>watchosSimulatorArm64</li><li>watchosX64</li></list></li><li>tvos<list><li>tvosArm64</li><li>tvosSimulatorArm64</li><li>tvosX64</li></list></li></list></li><li>linux<list><li>linuxArm64</li><li>linuxX64</li></list></li><li>windows<list><li>mingwX64</li></list></li></list></td>
166166
</tr>
167167

168168
<tr>
169169
<td>krpc-serialization-json</td>
170170
<td>jvm</td>
171171
<td><list><li>browser</li><li>node</li></list></td>
172-
<td><list><li>wasmJs<list><li>browser</li><li>node</li></list></li></list></td>
172+
<td><list><li>wasmJs<list><li>browser</li><li>node</li></list></li><li>wasmWasi<list><li>node</li></list></li></list></td>
173173
<td><list><li>apple<list><li>ios<list><li>iosArm64</li><li>iosSimulatorArm64</li><li>iosX64</li></list></li><li>macos<list><li>macosArm64</li><li>macosX64</li></list></li><li>watchos<list><li>watchosArm64</li><li>watchosSimulatorArm64</li><li>watchosX64</li></list></li><li>tvos<list><li>tvosArm64</li><li>tvosSimulatorArm64</li><li>tvosX64</li></list></li></list></li><li>linux<list><li>linuxArm64</li><li>linuxX64</li></list></li><li>windows<list><li>mingwX64</li></list></li></list></td>
174174
</tr>
175175

176176
<tr>
177177
<td>krpc-serialization-protobuf</td>
178178
<td>jvm</td>
179179
<td><list><li>browser</li><li>node</li></list></td>
180-
<td><list><li>wasmJs<list><li>browser</li><li>node</li></list></li></list></td>
180+
<td><list><li>wasmJs<list><li>browser</li><li>node</li></list></li><li>wasmWasi<list><li>node</li></list></li></list></td>
181181
<td><list><li>apple<list><li>ios<list><li>iosArm64</li><li>iosSimulatorArm64</li><li>iosX64</li></list></li><li>macos<list><li>macosArm64</li><li>macosX64</li></list></li><li>watchos<list><li>watchosArm64</li><li>watchosSimulatorArm64</li><li>watchosX64</li></list></li><li>tvos<list><li>tvosArm64</li><li>tvosSimulatorArm64</li><li>tvosX64</li></list></li></list></li><li>linux<list><li>linuxArm64</li><li>linuxX64</li></list></li><li>windows<list><li>mingwX64</li></list></li></list></td>
182182
</tr>
183183

krpc/gradle.properties

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,5 @@
33
#
44

55
# https://github.com/oshai/kotlin-logging/issues/433
6-
kotlinx.rpc.exclude.wasmWasi=true
76
kotlinx.rpc.exclude.watchosArm32=true
87
kotlinx.rpc.exclude.watchosDeviceArm64=true

krpc/krpc-core/src/wasmJsMain/kotlin/kotlinx/rpc/krpc/internal/ExceptionUtils.wasm.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66

77
package kotlinx.rpc.krpc.internal
88

9-
import kotlinx.rpc.internal.utils.InternalRpcApi
10-
119
internal actual class DeserializedException actual constructor(
1210
private val toStringMessage: String,
1311
actual override val message: String,
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/*
2+
* Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
3+
*/
4+
5+
package kotlinx.rpc.krpc.internal
6+
7+
internal actual class DeserializedException actual constructor(
8+
private val toStringMessage: String,
9+
actual override val message: String,
10+
stacktrace: List<StackElement>,
11+
cause: SerializedException?,
12+
className: String
13+
) : Throwable() {
14+
15+
override val cause: Throwable? = cause?.deserialize()
16+
17+
override fun toString(): String = toStringMessage
18+
}
19+
20+
internal actual fun Throwable.stackElements(): List<StackElement> = emptyList()
21+
22+
internal actual fun SerializedException.deserializeUnsafe(): Throwable {
23+
return nonJvmManualCancellationExceptionDeserialize()
24+
?: DeserializedException(toStringMessage, message, stacktrace, cause, className)
25+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
/*
2+
* Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
3+
*/
4+
5+
package kotlinx.rpc.krpc
6+
7+
internal actual val stressIterations: Int = 3000
8+
internal actual val stressBufferSize: Int = 1500

krpc/krpc-ktor/gradle.properties

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#
2+
# Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
3+
#
4+
5+
kotlinx.rpc.exclude.wasmWasi=true
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
/*
2+
* Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
3+
*/
4+
5+
package kotlinx.rpc.krpc.test
6+
7+
internal actual val isJs: Boolean = true
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
/*
2+
* Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
3+
*/
4+
5+
package kotlinx.rpc.krpc.test
6+
7+
internal actual val testIterations: Int = 100

versions-root/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ kotlin-compiler = "0.0.0" # default to kotlin-lang or env.KOTLIN_COMPILER_VERSIO
1010
detekt-analyzer = "1.23.6"
1111
coroutines = "1.10.2"
1212
ktor = "3.3.0"
13-
kotlin-logging = "7.0.7"
13+
kotlin-logging = "7.0.13"
1414
slf4j = "2.0.17"
1515
logback = "1.3.14"
1616
gradle-plugin-publish = "1.3.1"

0 commit comments

Comments
 (0)