From 0e706e350957dcc2e01434d4cd03cdf86caa7f4b Mon Sep 17 00:00:00 2001 From: Alexander Sysoev Date: Fri, 8 Aug 2025 16:36:37 +0200 Subject: [PATCH 1/7] Use compat-patrouille for compatibility settings --- dokka-plugin/build.gradle.kts | 4 ---- gradle-conventions/build.gradle.kts | 1 + .../main/kotlin/conventions-jvm.gradle.kts | 11 +++++----- .../main/kotlin/conventions-kmp.gradle.kts | 5 +++++ .../conventions-kotlin-version.gradle.kts | 20 ------------------- .../src/main/kotlin/util/targets/configure.kt | 4 ---- krpc/krpc-test/build.gradle.kts | 19 ++++++++++-------- versions-root/libs.versions.toml | 2 ++ 8 files changed, 25 insertions(+), 41 deletions(-) diff --git a/dokka-plugin/build.gradle.kts b/dokka-plugin/build.gradle.kts index c8a226da6..206470137 100644 --- a/dokka-plugin/build.gradle.kts +++ b/dokka-plugin/build.gradle.kts @@ -12,10 +12,6 @@ version = libs.versions.kotlinx.rpc.get() logger.lifecycle("[Dokka Plugin] kotlinx.rpc project version: $version, Kotlin version: ${libs.versions.kotlin.lang.get()}") -kotlin { - jvmToolchain(8) -} - dependencies { compileOnly(libs.dokka.core) compileOnly(libs.dokka.base) diff --git a/gradle-conventions/build.gradle.kts b/gradle-conventions/build.gradle.kts index fce7debd1..81c5468b0 100644 --- a/gradle-conventions/build.gradle.kts +++ b/gradle-conventions/build.gradle.kts @@ -12,6 +12,7 @@ dependencies { implementation(libs.dokka.gradle.plugin) implementation(libs.gradle.doctor.gradle.plugin) implementation(libs.gradle.publish.gradle.plugin) + implementation(libs.compat.patrouille.gradle.plugin) implementation(libs.kover.gradle.plugin) diff --git a/gradle-conventions/src/main/kotlin/conventions-jvm.gradle.kts b/gradle-conventions/src/main/kotlin/conventions-jvm.gradle.kts index 77b1bea6c..89c0c1b2e 100644 --- a/gradle-conventions/src/main/kotlin/conventions-jvm.gradle.kts +++ b/gradle-conventions/src/main/kotlin/conventions-jvm.gradle.kts @@ -1,9 +1,11 @@ /* - * Copyright 2023-2024 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. */ @file:OptIn(ExperimentalAbiValidation::class) +import compat.patrouille.configureJavaCompatibility +import compat.patrouille.configureKotlinCompatibility import org.jetbrains.kotlin.gradle.dsl.abi.ExperimentalAbiValidation import util.configureAbiFilters import util.enableAbiValidation @@ -18,11 +20,10 @@ java { withSourcesJar() } -kotlin { - jvmToolchain { - languageVersion.set(JavaLanguageVersion.of(8)) - } +configureJavaCompatibility(8) +configureKotlinCompatibility("2.0.0") +kotlin { explicitApi() abiValidation { diff --git a/gradle-conventions/src/main/kotlin/conventions-kmp.gradle.kts b/gradle-conventions/src/main/kotlin/conventions-kmp.gradle.kts index 44f80f0d1..58781cc69 100644 --- a/gradle-conventions/src/main/kotlin/conventions-kmp.gradle.kts +++ b/gradle-conventions/src/main/kotlin/conventions-kmp.gradle.kts @@ -4,6 +4,8 @@ @file:OptIn(ExperimentalAbiValidation::class) +import compat.patrouille.configureJavaCompatibility +import compat.patrouille.configureKotlinCompatibility import org.jetbrains.kotlin.gradle.dsl.abi.ExperimentalAbiValidation import util.* import util.targets.configureJs @@ -38,3 +40,6 @@ withKmpConfig { } configureJvm(isKmp = true) + +configureJavaCompatibility(8) +configureKotlinCompatibility("2.0.0") diff --git a/gradle-conventions/src/main/kotlin/conventions-kotlin-version.gradle.kts b/gradle-conventions/src/main/kotlin/conventions-kotlin-version.gradle.kts index 5994aa8e4..e3dad7042 100644 --- a/gradle-conventions/src/main/kotlin/conventions-kotlin-version.gradle.kts +++ b/gradle-conventions/src/main/kotlin/conventions-kotlin-version.gradle.kts @@ -2,10 +2,7 @@ * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. */ -import org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptions import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension -import org.jetbrains.kotlin.gradle.dsl.KotlinVersion -import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation import util.withKotlinJvmExtension import util.withKotlinKmpExtension @@ -16,27 +13,10 @@ fun KotlinProjectExtension.optInForRpcApi() { } } -/** - * Set the compatibility mode to the lower supported language version. - * - * This should be lined up with the minimal supported compiler plugin version. - * - * We update the language version only for the 'main' sources sets. - * This makes our tests execute against the latest compiler plugin version (for example, with K2 instead of K1). - */ -fun KotlinCommonCompilerOptions.setProjectLanguageVersion() { - languageVersion.set(KotlinVersion.KOTLIN_2_0) - apiVersion.set(KotlinVersion.KOTLIN_2_0) -} - withKotlinJvmExtension { optInForRpcApi() - - compilerOptions.setProjectLanguageVersion() } withKotlinKmpExtension { optInForRpcApi() - - compilerOptions.setProjectLanguageVersion() } diff --git a/gradle-conventions/src/main/kotlin/util/targets/configure.kt b/gradle-conventions/src/main/kotlin/util/targets/configure.kt index 2dc911583..77346f401 100644 --- a/gradle-conventions/src/main/kotlin/util/targets/configure.kt +++ b/gradle-conventions/src/main/kotlin/util/targets/configure.kt @@ -60,10 +60,6 @@ fun KmpConfig.configureKotlinExtension(action: Action { - if (this.name.contains("Test")) { - compilerOptions { - // for kotlin.time.Clock API - languageVersion.set(KotlinVersion.KOTLIN_2_1) - apiVersion.set(KotlinVersion.KOTLIN_2_1) +kotlin { + targets.all { + compilations.matching { + it.name.lowercase().endsWith("test") + }.all { + compileTaskProvider.configure { + compilerOptions { + languageVersion.set(KotlinVersion.KOTLIN_2_1) + apiVersion.set(KotlinVersion.KOTLIN_2_1) + } + } } } -} -kotlin { sourceSets { commonMain { dependencies { diff --git a/versions-root/libs.versions.toml b/versions-root/libs.versions.toml index 021d4708d..44aed85a2 100644 --- a/versions-root/libs.versions.toml +++ b/versions-root/libs.versions.toml @@ -28,6 +28,7 @@ detekt-gradle-plugin = "1.23.8" kover = "0.9.1" develocity = "3.19.2" common-custom-user-data = "2.3" +compat-patrouille = "0.0.0" [libraries] # kotlinx.rpc – references to the included builds @@ -110,6 +111,7 @@ kover-gradle-plugin = { module = "org.jetbrains.kotlinx:kover-gradle-plugin", ve dokka-gradle-plugin = { module = "org.jetbrains.dokka:dokka-gradle-plugin", version.ref = "dokka" } gradle-doctor-gradle-plugin = { module = "com.osacky.doctor:doctor-plugin", version.ref = "gradle-doctor" } gradle-publish-gradle-plugin = { module = "com.gradle.publish:plugin-publish-plugin", version.ref = "gradle-plugin-publish" } +compat-patrouille-gradle-plugin = { module = "com.gradleup.compat.patrouille:compat-patrouille-gradle-plugin", version.ref = "compat-patrouille" } [plugins] kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin-lang" } From 935b9ac95fdbd665c856f1e5deec510294439423 Mon Sep 17 00:00:00 2001 From: Alexander Sysoev Date: Fri, 8 Aug 2025 17:56:31 +0200 Subject: [PATCH 2/7] Update package jsons --- kotlin-js-store/package-lock.json | 60 +++++++++++++------------- kotlin-js-store/wasm/package-lock.json | 60 +++++++++++++------------- 2 files changed, 60 insertions(+), 60 deletions(-) diff --git a/kotlin-js-store/package-lock.json b/kotlin-js-store/package-lock.json index 50ab5ab3d..ce6c0ec69 100644 --- a/kotlin-js-store/package-lock.json +++ b/kotlin-js-store/package-lock.json @@ -1,12 +1,12 @@ { "name": "kotlinx-rpc", - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "kotlinx-rpc", - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "workspaces": [ "packages/kotlinx-rpc-core", "packages/kotlinx-rpc-core-test", @@ -4424,11 +4424,11 @@ "devDependencies": {} }, "packages/kotlinx-rpc-core": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "devDependencies": {} }, "packages/kotlinx-rpc-core-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "puppeteer": "24.9.0" }, @@ -4447,11 +4447,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-client": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-client-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "puppeteer": "24.9.0" }, @@ -4470,11 +4470,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-core": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-core-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "puppeteer": "24.9.0" }, @@ -4493,14 +4493,14 @@ } }, "packages/kotlinx-rpc-krpc-krpc-ktor-krpc-ktor-client": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "ws": "8.18.0" }, "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-ktor-krpc-ktor-client-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "puppeteer": "24.9.0", "ws": "8.18.0" @@ -4520,11 +4520,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-ktor-krpc-ktor-core": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-ktor-krpc-ktor-core-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "puppeteer": "24.9.0" }, @@ -4543,11 +4543,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-ktor-krpc-ktor-server": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-ktor-krpc-ktor-server-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "puppeteer": "24.9.0" }, @@ -4566,11 +4566,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-logging": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-logging-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "puppeteer": "24.9.0" }, @@ -4589,11 +4589,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-cbor": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-cbor-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "puppeteer": "24.9.0" }, @@ -4612,11 +4612,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-core": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-core-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "puppeteer": "24.9.0" }, @@ -4635,11 +4635,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-json": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-json-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "puppeteer": "24.9.0" }, @@ -4658,11 +4658,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-protobuf": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-protobuf-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "puppeteer": "24.9.0" }, @@ -4681,11 +4681,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-server": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-server-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "puppeteer": "24.9.0" }, @@ -4704,11 +4704,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-test-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "puppeteer": "24.9.0" }, @@ -4727,11 +4727,11 @@ } }, "packages/kotlinx-rpc-utils": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "devDependencies": {} }, "packages/kotlinx-rpc-utils-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "puppeteer": "24.9.0" }, diff --git a/kotlin-js-store/wasm/package-lock.json b/kotlin-js-store/wasm/package-lock.json index 1d255d66c..b73a3efda 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.9.1", + "version": "0.10.0-SNAPSHOT", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "kotlinx-rpc", - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "workspaces": [ "packages/kotlinx-rpc-core", "packages/kotlinx-rpc-core-test", @@ -4424,11 +4424,11 @@ "devDependencies": {} }, "packages/kotlinx-rpc-core": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "devDependencies": {} }, "packages/kotlinx-rpc-core-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "puppeteer": "24.9.0" }, @@ -4446,11 +4446,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-client": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-client-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "puppeteer": "24.9.0" }, @@ -4468,11 +4468,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-core": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-core-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "puppeteer": "24.9.0" }, @@ -4490,14 +4490,14 @@ } }, "packages/kotlinx-rpc-krpc-krpc-ktor-krpc-ktor-client": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "ws": "8.18.0" }, "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-ktor-krpc-ktor-client-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "puppeteer": "24.9.0", "ws": "8.18.0" @@ -4516,11 +4516,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-ktor-krpc-ktor-core": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-ktor-krpc-ktor-core-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "puppeteer": "24.9.0" }, @@ -4538,11 +4538,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-ktor-krpc-ktor-server": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-ktor-krpc-ktor-server-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "puppeteer": "24.9.0" }, @@ -4560,11 +4560,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-logging": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-logging-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "puppeteer": "24.9.0" }, @@ -4582,11 +4582,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-cbor": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-cbor-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "puppeteer": "24.9.0" }, @@ -4604,11 +4604,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-core": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-core-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "puppeteer": "24.9.0" }, @@ -4626,11 +4626,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-json": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-json-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "puppeteer": "24.9.0" }, @@ -4648,11 +4648,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-protobuf": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-serialization-krpc-serialization-protobuf-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "puppeteer": "24.9.0" }, @@ -4670,11 +4670,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-server": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-server-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "puppeteer": "24.9.0" }, @@ -4692,11 +4692,11 @@ } }, "packages/kotlinx-rpc-krpc-krpc-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "devDependencies": {} }, "packages/kotlinx-rpc-krpc-krpc-test-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "puppeteer": "24.9.0" }, @@ -4714,11 +4714,11 @@ } }, "packages/kotlinx-rpc-utils": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "devDependencies": {} }, "packages/kotlinx-rpc-utils-test": { - "version": "0.9.1", + "version": "0.10.0-SNAPSHOT", "dependencies": { "puppeteer": "24.9.0" }, From 08b7471336043efc14c87c767169f22beb2a53e7 Mon Sep 17 00:00:00 2001 From: Alexander Sysoev Date: Fri, 8 Aug 2025 18:13:16 +0200 Subject: [PATCH 3/7] Added Gradle toolchain auto provisioning --- compiler-plugin/gradle.properties | 2 ++ compiler-plugin/settings.gradle.kts | 1 - dokka-plugin/gradle.properties | 2 ++ dokka-plugin/settings.gradle.kts | 1 - gradle-plugin/gradle.properties | 2 ++ gradle-plugin/settings.gradle.kts | 1 - gradle.properties | 2 ++ gradle/gradle-daemon-jvm.properties | 16 ++++++++++++++++ settings.gradle.kts | 1 - 9 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 gradle/gradle-daemon-jvm.properties diff --git a/compiler-plugin/gradle.properties b/compiler-plugin/gradle.properties index 9792d43e3..92e16e3fe 100644 --- a/compiler-plugin/gradle.properties +++ b/compiler-plugin/gradle.properties @@ -16,6 +16,8 @@ org.gradle.workers.max=8 org.gradle.caching=true org.gradle.configuration-cache=true #org.gradle.configureondemand=true // breaks compiler tests +org.gradle.java.installations.auto-detect=true +org.gradle.java.installations.auto-download=true org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true diff --git a/compiler-plugin/settings.gradle.kts b/compiler-plugin/settings.gradle.kts index b7ad5e63e..c3dde8cfa 100644 --- a/compiler-plugin/settings.gradle.kts +++ b/compiler-plugin/settings.gradle.kts @@ -15,7 +15,6 @@ plugins { id("conventions-repositories") id("conventions-version-resolution") id("conventions-develocity") - id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" } includeRootAsPublic() diff --git a/dokka-plugin/gradle.properties b/dokka-plugin/gradle.properties index 9792d43e3..92e16e3fe 100644 --- a/dokka-plugin/gradle.properties +++ b/dokka-plugin/gradle.properties @@ -16,6 +16,8 @@ org.gradle.workers.max=8 org.gradle.caching=true org.gradle.configuration-cache=true #org.gradle.configureondemand=true // breaks compiler tests +org.gradle.java.installations.auto-detect=true +org.gradle.java.installations.auto-download=true org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true diff --git a/dokka-plugin/settings.gradle.kts b/dokka-plugin/settings.gradle.kts index cc02f5e7a..ccc0fb09d 100644 --- a/dokka-plugin/settings.gradle.kts +++ b/dokka-plugin/settings.gradle.kts @@ -15,5 +15,4 @@ plugins { id("conventions-repositories") id("conventions-version-resolution") id("conventions-develocity") - id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" } diff --git a/gradle-plugin/gradle.properties b/gradle-plugin/gradle.properties index 9792d43e3..92e16e3fe 100644 --- a/gradle-plugin/gradle.properties +++ b/gradle-plugin/gradle.properties @@ -16,6 +16,8 @@ org.gradle.workers.max=8 org.gradle.caching=true org.gradle.configuration-cache=true #org.gradle.configureondemand=true // breaks compiler tests +org.gradle.java.installations.auto-detect=true +org.gradle.java.installations.auto-download=true org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true diff --git a/gradle-plugin/settings.gradle.kts b/gradle-plugin/settings.gradle.kts index 264b38dd0..fb4cda70e 100644 --- a/gradle-plugin/settings.gradle.kts +++ b/gradle-plugin/settings.gradle.kts @@ -14,7 +14,6 @@ pluginManagement { plugins { id("conventions-repositories") id("conventions-version-resolution") - id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" } includeRootAsPublic() diff --git a/gradle.properties b/gradle.properties index 9792d43e3..92e16e3fe 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,6 +16,8 @@ org.gradle.workers.max=8 org.gradle.caching=true org.gradle.configuration-cache=true #org.gradle.configureondemand=true // breaks compiler tests +org.gradle.java.installations.auto-detect=true +org.gradle.java.installations.auto-download=true org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true diff --git a/gradle/gradle-daemon-jvm.properties b/gradle/gradle-daemon-jvm.properties new file mode 100644 index 000000000..a2f43c9e3 --- /dev/null +++ b/gradle/gradle-daemon-jvm.properties @@ -0,0 +1,16 @@ +# +# Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. +# + +#This file is generated by updateDaemonJvm +toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/a3c80d37c286009b1d548e3c70674f63/redirect +toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/1a92bba3eba7935eb104525d795e52ac/redirect +toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/a3c80d37c286009b1d548e3c70674f63/redirect +toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/1a92bba3eba7935eb104525d795e52ac/redirect +toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/248d28e3bedd4855911b6148420b621f/redirect +toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/3961347cf0fce4d0e5988f00c24ad144/redirect +toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/a3c80d37c286009b1d548e3c70674f63/redirect +toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/1a92bba3eba7935eb104525d795e52ac/redirect +toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/6ec1210b0458a2a6117f23bacf169319/redirect +toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/1baf62ce6809358a9f69b99fec1505e7/redirect +toolchainVersion=22 diff --git a/settings.gradle.kts b/settings.gradle.kts index 9c8dee01a..48b5a1aa0 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -19,7 +19,6 @@ plugins { id("conventions-repositories") id("conventions-version-resolution") id("conventions-develocity") - id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" } dependencyResolutionManagement { From 77ecc2afe281438acfa78bab14996f0b5156e5fb Mon Sep 17 00:00:00 2001 From: Martin Bonnin Date: Mon, 11 Aug 2025 14:11:15 +0200 Subject: [PATCH 4/7] Bump compat-patrouille version (#441) --- versions-root/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions-root/libs.versions.toml b/versions-root/libs.versions.toml index 44aed85a2..1d0a7d83d 100644 --- a/versions-root/libs.versions.toml +++ b/versions-root/libs.versions.toml @@ -28,7 +28,7 @@ detekt-gradle-plugin = "1.23.8" kover = "0.9.1" develocity = "3.19.2" common-custom-user-data = "2.3" -compat-patrouille = "0.0.0" +compat-patrouille = "0.0.1" [libraries] # kotlinx.rpc – references to the included builds From e38ae874596187c7cfaf953734a54a7dfb7d0239 Mon Sep 17 00:00:00 2001 From: Alexander Sysoev Date: Mon, 11 Aug 2025 14:22:37 +0200 Subject: [PATCH 5/7] Remove Gradle Doctor - no significant benefits are expected at this stage --- build.gradle.kts | 1 - compiler-plugin/build.gradle.kts | 2 +- dokka-plugin/build.gradle.kts | 1 - gradle-conventions/build.gradle.kts | 1 - .../kotlin/conventions-gradle-doctor.gradle.kts | 13 ------------- gradle-conventions/src/main/kotlin/empty.gradle.kts | 6 ++++++ gradle-plugin/build.gradle.kts | 1 - versions-root/libs.versions.toml | 3 --- 8 files changed, 7 insertions(+), 21 deletions(-) delete mode 100644 gradle-conventions/src/main/kotlin/conventions-gradle-doctor.gradle.kts create mode 100644 gradle-conventions/src/main/kotlin/empty.gradle.kts diff --git a/build.gradle.kts b/build.gradle.kts index 37dac2e20..516f8a6fe 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,7 +9,6 @@ plugins { alias(libs.plugins.kotlinx.rpc) apply false alias(libs.plugins.atomicfu) apply false alias(libs.plugins.conventions.kover) - alias(libs.plugins.conventions.gradle.doctor) alias(libs.plugins.conventions.root) } diff --git a/compiler-plugin/build.gradle.kts b/compiler-plugin/build.gradle.kts index 129b4df7e..6b9ab3c6c 100644 --- a/compiler-plugin/build.gradle.kts +++ b/compiler-plugin/build.gradle.kts @@ -5,7 +5,7 @@ import util.whenForIde plugins { - alias(libs.plugins.conventions.gradle.doctor) + id("empty") // resolve conventions classpath } val rpcVersion: String = libs.versions.kotlinx.rpc.get() diff --git a/dokka-plugin/build.gradle.kts b/dokka-plugin/build.gradle.kts index 206470137..08692e046 100644 --- a/dokka-plugin/build.gradle.kts +++ b/dokka-plugin/build.gradle.kts @@ -3,7 +3,6 @@ */ plugins { - alias(libs.plugins.conventions.gradle.doctor) alias(libs.plugins.kotlin.jvm) } diff --git a/gradle-conventions/build.gradle.kts b/gradle-conventions/build.gradle.kts index 81c5468b0..30489119f 100644 --- a/gradle-conventions/build.gradle.kts +++ b/gradle-conventions/build.gradle.kts @@ -10,7 +10,6 @@ dependencies { implementation(libs.kotlin.gradle.plugin) implementation(libs.detekt.gradle.plugin) implementation(libs.dokka.gradle.plugin) - implementation(libs.gradle.doctor.gradle.plugin) implementation(libs.gradle.publish.gradle.plugin) implementation(libs.compat.patrouille.gradle.plugin) diff --git a/gradle-conventions/src/main/kotlin/conventions-gradle-doctor.gradle.kts b/gradle-conventions/src/main/kotlin/conventions-gradle-doctor.gradle.kts deleted file mode 100644 index f90709cf5..000000000 --- a/gradle-conventions/src/main/kotlin/conventions-gradle-doctor.gradle.kts +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. - */ - -plugins { - id("com.osacky.doctor") -} - -doctor { - enableTestCaching.assign(false) - disallowMultipleDaemons.assign(false) - GCFailThreshold.assign(0.5f) -} diff --git a/gradle-conventions/src/main/kotlin/empty.gradle.kts b/gradle-conventions/src/main/kotlin/empty.gradle.kts new file mode 100644 index 000000000..fb187a997 --- /dev/null +++ b/gradle-conventions/src/main/kotlin/empty.gradle.kts @@ -0,0 +1,6 @@ +/* + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +// DON'T DELETE. +// Resolves conventions classpath where no other convention is applied diff --git a/gradle-plugin/build.gradle.kts b/gradle-plugin/build.gradle.kts index 8a5c44fae..bf9345d31 100644 --- a/gradle-plugin/build.gradle.kts +++ b/gradle-plugin/build.gradle.kts @@ -13,7 +13,6 @@ plugins { alias(libs.plugins.conventions.jvm) alias(libs.plugins.conventions.gradle.publish) alias(libs.plugins.gradle.plugin.publish) - alias(libs.plugins.conventions.gradle.doctor) } group = "org.jetbrains.kotlinx" diff --git a/versions-root/libs.versions.toml b/versions-root/libs.versions.toml index 1d0a7d83d..4bbaf7f7f 100644 --- a/versions-root/libs.versions.toml +++ b/versions-root/libs.versions.toml @@ -18,7 +18,6 @@ kotlin-wrappers = "2025.6.11" junit4 = "4.13.2" junit5 = "5.13.2" intellij = "241.19416.19" -gradle-doctor = "0.11.0" kotlinx-browser = "0.3" dokka = "2.0.0" puppeteer = "24.9.0" @@ -109,7 +108,6 @@ common-custom-user-data = { module ="com.gradle:common-custom-user-data-gradle-p detekt-gradle-plugin = { module = "io.gitlab.arturbosch.detekt:detekt-gradle-plugin", version.ref = "detekt-gradle-plugin" } kover-gradle-plugin = { module = "org.jetbrains.kotlinx:kover-gradle-plugin", version.ref = "kover" } dokka-gradle-plugin = { module = "org.jetbrains.dokka:dokka-gradle-plugin", version.ref = "dokka" } -gradle-doctor-gradle-plugin = { module = "com.osacky.doctor:doctor-plugin", version.ref = "gradle-doctor" } gradle-publish-gradle-plugin = { module = "com.gradle.publish:plugin-publish-plugin", version.ref = "gradle-plugin-publish" } compat-patrouille-gradle-plugin = { module = "com.gradleup.compat.patrouille:compat-patrouille-gradle-plugin", version.ref = "compat-patrouille" } @@ -130,7 +128,6 @@ conventions-jvm = { id = "conventions-jvm" } conventions-kmp = { id = "conventions-kmp" } conventions-gradle-publish = { id = "conventions-gradle-publish" } conventions-kover = { id = "conventions-kover" } -conventions-gradle-doctor = { id = "conventions-gradle-doctor" } conventions-npm = { id = "conventions-npm" } conventions-root = { id = "conventions-root" } conventions-dokka-spec = { id = "conventions-dokka-spec" } From 1596937f0eb547c48c2c8118728f0ea213849c83 Mon Sep 17 00:00:00 2001 From: Alexander Sysoev Date: Wed, 13 Aug 2025 17:07:43 +0200 Subject: [PATCH 6/7] Revert "Added Gradle toolchain auto provisioning" This reverts commit 91ffc6b11baf6e7d3c922c95392cc0e1443e67e5. --- compiler-plugin/gradle.properties | 2 -- compiler-plugin/settings.gradle.kts | 1 + dokka-plugin/gradle.properties | 2 -- dokka-plugin/settings.gradle.kts | 1 + gradle-plugin/gradle.properties | 2 -- gradle-plugin/settings.gradle.kts | 1 + gradle.properties | 2 -- gradle/gradle-daemon-jvm.properties | 16 ---------------- settings.gradle.kts | 1 + 9 files changed, 4 insertions(+), 24 deletions(-) delete mode 100644 gradle/gradle-daemon-jvm.properties diff --git a/compiler-plugin/gradle.properties b/compiler-plugin/gradle.properties index 92e16e3fe..9792d43e3 100644 --- a/compiler-plugin/gradle.properties +++ b/compiler-plugin/gradle.properties @@ -16,8 +16,6 @@ org.gradle.workers.max=8 org.gradle.caching=true org.gradle.configuration-cache=true #org.gradle.configureondemand=true // breaks compiler tests -org.gradle.java.installations.auto-detect=true -org.gradle.java.installations.auto-download=true org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true diff --git a/compiler-plugin/settings.gradle.kts b/compiler-plugin/settings.gradle.kts index c3dde8cfa..b7ad5e63e 100644 --- a/compiler-plugin/settings.gradle.kts +++ b/compiler-plugin/settings.gradle.kts @@ -15,6 +15,7 @@ plugins { id("conventions-repositories") id("conventions-version-resolution") id("conventions-develocity") + id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" } includeRootAsPublic() diff --git a/dokka-plugin/gradle.properties b/dokka-plugin/gradle.properties index 92e16e3fe..9792d43e3 100644 --- a/dokka-plugin/gradle.properties +++ b/dokka-plugin/gradle.properties @@ -16,8 +16,6 @@ org.gradle.workers.max=8 org.gradle.caching=true org.gradle.configuration-cache=true #org.gradle.configureondemand=true // breaks compiler tests -org.gradle.java.installations.auto-detect=true -org.gradle.java.installations.auto-download=true org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true diff --git a/dokka-plugin/settings.gradle.kts b/dokka-plugin/settings.gradle.kts index ccc0fb09d..cc02f5e7a 100644 --- a/dokka-plugin/settings.gradle.kts +++ b/dokka-plugin/settings.gradle.kts @@ -15,4 +15,5 @@ plugins { id("conventions-repositories") id("conventions-version-resolution") id("conventions-develocity") + id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" } diff --git a/gradle-plugin/gradle.properties b/gradle-plugin/gradle.properties index 92e16e3fe..9792d43e3 100644 --- a/gradle-plugin/gradle.properties +++ b/gradle-plugin/gradle.properties @@ -16,8 +16,6 @@ org.gradle.workers.max=8 org.gradle.caching=true org.gradle.configuration-cache=true #org.gradle.configureondemand=true // breaks compiler tests -org.gradle.java.installations.auto-detect=true -org.gradle.java.installations.auto-download=true org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true diff --git a/gradle-plugin/settings.gradle.kts b/gradle-plugin/settings.gradle.kts index fb4cda70e..264b38dd0 100644 --- a/gradle-plugin/settings.gradle.kts +++ b/gradle-plugin/settings.gradle.kts @@ -14,6 +14,7 @@ pluginManagement { plugins { id("conventions-repositories") id("conventions-version-resolution") + id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" } includeRootAsPublic() diff --git a/gradle.properties b/gradle.properties index 92e16e3fe..9792d43e3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,8 +16,6 @@ org.gradle.workers.max=8 org.gradle.caching=true org.gradle.configuration-cache=true #org.gradle.configureondemand=true // breaks compiler tests -org.gradle.java.installations.auto-detect=true -org.gradle.java.installations.auto-download=true org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true diff --git a/gradle/gradle-daemon-jvm.properties b/gradle/gradle-daemon-jvm.properties deleted file mode 100644 index a2f43c9e3..000000000 --- a/gradle/gradle-daemon-jvm.properties +++ /dev/null @@ -1,16 +0,0 @@ -# -# Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. -# - -#This file is generated by updateDaemonJvm -toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/a3c80d37c286009b1d548e3c70674f63/redirect -toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/1a92bba3eba7935eb104525d795e52ac/redirect -toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/a3c80d37c286009b1d548e3c70674f63/redirect -toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/1a92bba3eba7935eb104525d795e52ac/redirect -toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/248d28e3bedd4855911b6148420b621f/redirect -toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/3961347cf0fce4d0e5988f00c24ad144/redirect -toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/a3c80d37c286009b1d548e3c70674f63/redirect -toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/1a92bba3eba7935eb104525d795e52ac/redirect -toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/6ec1210b0458a2a6117f23bacf169319/redirect -toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/1baf62ce6809358a9f69b99fec1505e7/redirect -toolchainVersion=22 diff --git a/settings.gradle.kts b/settings.gradle.kts index 48b5a1aa0..9c8dee01a 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -19,6 +19,7 @@ plugins { id("conventions-repositories") id("conventions-version-resolution") id("conventions-develocity") + id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" } dependencyResolutionManagement { From 81efa80e75f30844d6af64da609a7128b93a7d96 Mon Sep 17 00:00:00 2001 From: Alexander Sysoev Date: Tue, 19 Aug 2025 17:12:03 +0200 Subject: [PATCH 7/7] Set LV for KMP manually because of the stdlib problems --- .../main/kotlin/conventions-kmp.gradle.kts | 1 - .../conventions-kotlin-version.gradle.kts | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/gradle-conventions/src/main/kotlin/conventions-kmp.gradle.kts b/gradle-conventions/src/main/kotlin/conventions-kmp.gradle.kts index 58781cc69..e99fe26ac 100644 --- a/gradle-conventions/src/main/kotlin/conventions-kmp.gradle.kts +++ b/gradle-conventions/src/main/kotlin/conventions-kmp.gradle.kts @@ -42,4 +42,3 @@ withKmpConfig { configureJvm(isKmp = true) configureJavaCompatibility(8) -configureKotlinCompatibility("2.0.0") diff --git a/gradle-conventions/src/main/kotlin/conventions-kotlin-version.gradle.kts b/gradle-conventions/src/main/kotlin/conventions-kotlin-version.gradle.kts index e3dad7042..b6d610615 100644 --- a/gradle-conventions/src/main/kotlin/conventions-kotlin-version.gradle.kts +++ b/gradle-conventions/src/main/kotlin/conventions-kotlin-version.gradle.kts @@ -2,7 +2,10 @@ * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. */ +import org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptions import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion +import util.other.libs import util.withKotlinJvmExtension import util.withKotlinKmpExtension @@ -13,10 +16,26 @@ fun KotlinProjectExtension.optInForRpcApi() { } } +/** + * Set the compatibility mode to the lower supported language version. + * + * This should be lined up with the minimal supported compiler plugin version. + * + * We update the language version only for the 'main' sources sets. + * This makes our tests execute against the latest compiler plugin version (for example, with K2 instead of K1). + */ +fun KotlinCommonCompilerOptions.setProjectLanguageVersion() { + languageVersion.set(KotlinVersion.KOTLIN_2_0) + apiVersion.set(KotlinVersion.KOTLIN_2_0) +} + withKotlinJvmExtension { optInForRpcApi() } withKotlinKmpExtension { optInForRpcApi() + + // We don't use `compat-patrouille` here because it sets stdlib version, and that breaks WASM tests. + compilerOptions.setProjectLanguageVersion() }