Skip to content

Commit

Permalink
Project configuration and compilation fixes:
Browse files Browse the repository at this point in the history
- apiDump
- Fix compilation for older Kotlin compiler plugins
- Fix configs for tests and yarn.lock
- Disable KSP plugin for local tests
- Added 100000 requests test (checks for possible memory leaks)
  • Loading branch information
Mr3zee committed Aug 14, 2024
1 parent 847b6f4 commit c322248
Show file tree
Hide file tree
Showing 14 changed files with 588 additions and 452 deletions.
8 changes: 4 additions & 4 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,10 @@ allprojects {

println("kotlinx.rpc project version: $version, Kotlin version: $kotlinVersion")

// If the prefix of the kPRC version is not Kotlin gradle plugin version - you have a problem :)
// Probably some dependency brings kotlin with higher version.
// To mitigate so, please refer to `gradle/kotlin-version-lookup.json`
// and it's usage in `gradle-conventions-settings/src/main/kotlin/settings-conventions.settings.gradle.kts`
// If the prefix of the kPRC version is not Kotlin gradle plugin version you have a problem :)
// Probably some dependency brings kotlin with the later version.
// To mitigate so, refer to `versions-root/kotlin-version-lookup.json`
// and its usage in `gradle-conventions-settings/src/main/kotlin/settings-conventions.settings.gradle.kts`
val kotlinGPVersion = getKotlinPluginVersion().kotlinVersionParsed()
if (kotlinVersion != kotlinGPVersion) {
error("KGP version mismatch. Project version: $kotlinVersion, KGP version: $kotlinGPVersion")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

package kotlinx.rpc.codegen

import kotlinx.rpc.codegen.extension.RPCIrExtension
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
import org.jetbrains.kotlin.compiler.plugin.CliOption
import org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor
Expand All @@ -27,8 +28,6 @@ class RPCCompilerPlugin : CompilerPluginRegistrar() {
override val supportsK2: Boolean = false

override fun ExtensionStorage.registerExtensions(configuration: CompilerConfiguration) {
val irExtension = RPCIrPlugin.provideExtension(configuration)

IrGenerationExtension.registerExtension(irExtension)
IrGenerationExtension.registerExtension(RPCIrExtension(configuration))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

package kotlinx.rpc.codegen

import kotlinx.rpc.codegen.extension.RPCIrExtension
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
import org.jetbrains.kotlin.com.intellij.mock.MockProject
import org.jetbrains.kotlin.compiler.plugin.CliOption
Expand All @@ -23,8 +24,6 @@ class RPCCompilerPlugin : ComponentRegistrar {
}

override fun registerProjectComponents(project: MockProject, configuration: CompilerConfiguration) {
val irExtension = RPCIrPlugin.provideExtension(configuration)

IrGenerationExtension.registerExtension(project, irExtension)
IrGenerationExtension.registerExtension(project, RPCIrExtension(configuration))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

package kotlinx.rpc.codegen

import kotlinx.rpc.codegen.extension.RPCIrExtension
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
import org.jetbrains.kotlin.com.intellij.mock.MockProject
import org.jetbrains.kotlin.compiler.plugin.CliOption
Expand All @@ -25,8 +26,6 @@ class RPCCompilerPlugin : ComponentRegistrar {
override val supportsK2: Boolean = false

override fun registerProjectComponents(project: MockProject, configuration: CompilerConfiguration) {
val irExtension = RPCIrPlugin.provideExtension(configuration)

IrGenerationExtension.registerExtension(project, irExtension)
IrGenerationExtension.registerExtension(project, RPCIrExtension(configuration))
}
}
16 changes: 16 additions & 0 deletions core/api/core.api
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
public final class kotlinx/rpc/AwaitFieldInitializationKt {
public static final fun awaitFieldInitialization (Lkotlinx/rpc/RPC;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
public static final fun awaitFieldInitialization (Lkotlinx/rpc/RPC;Lkotlin/reflect/KClass;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
}

public abstract interface class kotlinx/rpc/RPC : kotlinx/coroutines/CoroutineScope {
}

Expand Down Expand Up @@ -27,6 +32,7 @@ public final class kotlinx/rpc/RPCCall {
public final class kotlinx/rpc/RPCCall$Type : java/lang/Enum {
public static final field Field Lkotlinx/rpc/RPCCall$Type;
public static final field Method Lkotlinx/rpc/RPCCall$Type;
public static fun getEntries ()Lkotlin/enums/EnumEntries;
public static fun valueOf (Ljava/lang/String;)Lkotlinx/rpc/RPCCall$Type;
public static fun values ()[Lkotlinx/rpc/RPCCall$Type;
}
Expand Down Expand Up @@ -148,3 +154,13 @@ public final class kotlinx/rpc/StreamScopeKt {
public static final fun streamScoped (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
}

public final class kotlinx/rpc/UninitializedRPCFieldException : java/lang/Exception {
public fun <init> (Ljava/lang/String;Lkotlin/reflect/KProperty;)V
public fun getMessage ()Ljava/lang/String;
}

public final class kotlinx/rpc/WithServiceKt {
public static final fun withService (Lkotlinx/rpc/RPCClient;Lkotlin/reflect/KClass;)Lkotlinx/rpc/RPC;
public static final fun withService (Lkotlinx/rpc/RPCClient;Lkotlin/reflect/KType;)Lkotlinx/rpc/RPC;
}

1 change: 0 additions & 1 deletion core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

plugins {
alias(libs.plugins.conventions.kmp)
alias(libs.plugins.ksp)
alias(libs.plugins.atomicfu)
alias(libs.plugins.serialization)
}
Expand Down
4 changes: 2 additions & 2 deletions gradle-plugin/src/main/kotlin/kotlinx/rpc/RPCGradlePlugin.kt
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ class RPCGradlePlugin : Plugin<Project> {
}

// Will apply only if the KSP plugin is present.
// While K1 plugin is not present, it's alright to leave it this way.
// It will generate redundant code, but it's not critical,
// While the K1 plugin is not present, it is alright to leave it this way.
// It will generate redundant code, but it is not critical,
// since that code will not be used, and K1 will shortly remove KSP altogether
applyKspPlugin(target, target.isInternalDevelopment)

Expand Down
4 changes: 1 addition & 3 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,7 @@ org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.workers.max=6
org.gradle.caching=true

# there is the problem with this one. Basically kspKotlin* tasks are skipped for some reason sometimes on CI
#org.gradle.unsafe.configuration-cache=true
org.gradle.configuration-cache=true

# development mode for kotlinx.rpc gradle plugin. Uses local project paths to apply ksp and compiler plugins
kotlinx.rpc.plugin.internalDevelopment=true
Expand Down
Loading

0 comments on commit c322248

Please sign in to comment.