diff --git a/.github/renovate.json b/.github/renovate.json index a9ea19d..d46582a 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -23,6 +23,20 @@ "groupName": "kotlin", "allowedVersions": "/^\\d+\\.\\d+\\.\\d+$/" }, + { + "description": "Hold the bundled Analysis API at 2.4.10 until 2.5.0: from 2.4.20 kotlin-compiler can no longer host a standalone session (see libs.versions.toml)", + "matchPackageNames": [ + "org.jetbrains.kotlin:kotlin-compiler", + "org.jetbrains.kotlin:analysis-api-for-ide", + "org.jetbrains.kotlin:analysis-api-impl-base-for-ide", + "org.jetbrains.kotlin:analysis-api-platform-interface-for-ide", + "org.jetbrains.kotlin:analysis-api-standalone-for-ide", + "org.jetbrains.kotlin:analysis-api-k2-for-ide", + "org.jetbrains.kotlin:low-level-api-fir-for-ide", + "org.jetbrains.kotlin:symbol-light-classes-for-ide" + ], + "allowedVersions": "/^(2\\.4\\.10|2\\.([5-9]|[1-9]\\d)\\.\\d+|[3-9]\\.\\d+\\.\\d+)$/" + }, { "matchPackageNames": [ "org.junit:junit-bom", diff --git a/CLAUDE.md b/CLAUDE.md index 5a14267..7397705 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -53,7 +53,7 @@ Runs inside the worker's isolated classloader. Bundles the Kotlin Analysis API ( - Korro's own version lives in `gradle.properties` (`version=...`). Both subprojects inherit it via `subprojects { version = rootProject.version }` in the root `build.gradle.kts`. At runtime the plugin reads it from a generated `META-INF/korro-gradle-plugin.properties` resource (`KorroPlugin.readKorroPluginVersion`). - Every other version lives in `gradle/libs.versions.toml`. The catalog is the single source of truth — do not hard-code versions in subproject scripts; add to the catalog and reference as `libs.*` / `libs.plugins.*`. -- `libs.versions.kotlin` — pinned Kotlin / Analysis API version. `libs.versions.kotlinLanguage` — Kotlin `languageVersion`/`apiVersion` used to compile Korro itself; unrelated to the bundled Analysis API. JVM target is hard-coded to `17` in the root `build.gradle.kts`. +- `libs.versions.kotlin` — Kotlin Gradle plugin and stdlib used to build Korro. `libs.versions.analysisApi` — the bundled Analysis API (`*-for-ide` artifacts) together with the `kotlin-compiler` jar it runs on; they always move as one and may lag `kotlin` (the catalog comment says why). `libs.versions.kotlinLanguage` — Kotlin `languageVersion`/`apiVersion` used to compile Korro itself; unrelated to the bundled Analysis API. JVM target is hard-coded to `17` in the root `build.gradle.kts`. ## Invariants to preserve diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 000a72d..dae5283 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,8 @@ [versions] -kotlin = "2.4.10" +kotlin = "2.4.21" +# Bundled Analysis API + the kotlin-compiler jar it runs on. Held at 2.4.10 until 2.5.0: from 2.4.20 kotlin-compiler lacks +# the decompiler and IntelliJ classes a standalone session needs (NoClassDefFoundError: ClsKotlinBinaryClassCache). +analysisApi = "2.4.10" kotlinLanguage = "2.1" shadow = "9.6.1" pluginPublish = "2.1.1" @@ -10,15 +13,15 @@ mavenPublish = "0.37.0" [libraries] kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" } -kotlin-compiler = { module = "org.jetbrains.kotlin:kotlin-compiler", version.ref = "kotlin" } +kotlin-compiler = { module = "org.jetbrains.kotlin:kotlin-compiler", version.ref = "analysisApi" } -kotlin-analysisApi = { module = "org.jetbrains.kotlin:analysis-api-for-ide", version.ref = "kotlin" } -kotlin-analysisApi-implBase = { module = "org.jetbrains.kotlin:analysis-api-impl-base-for-ide", version.ref = "kotlin" } -kotlin-analysisApi-platformInterface = { module = "org.jetbrains.kotlin:analysis-api-platform-interface-for-ide", version.ref = "kotlin" } -kotlin-analysisApi-standalone = { module = "org.jetbrains.kotlin:analysis-api-standalone-for-ide", version.ref = "kotlin" } -kotlin-analysisApi-k2 = { module = "org.jetbrains.kotlin:analysis-api-k2-for-ide", version.ref = "kotlin" } -kotlin-lowLevelApiFir = { module = "org.jetbrains.kotlin:low-level-api-fir-for-ide", version.ref = "kotlin" } -kotlin-symbolLightClasses = { module = "org.jetbrains.kotlin:symbol-light-classes-for-ide", version.ref = "kotlin" } +kotlin-analysisApi = { module = "org.jetbrains.kotlin:analysis-api-for-ide", version.ref = "analysisApi" } +kotlin-analysisApi-implBase = { module = "org.jetbrains.kotlin:analysis-api-impl-base-for-ide", version.ref = "analysisApi" } +kotlin-analysisApi-platformInterface = { module = "org.jetbrains.kotlin:analysis-api-platform-interface-for-ide", version.ref = "analysisApi" } +kotlin-analysisApi-standalone = { module = "org.jetbrains.kotlin:analysis-api-standalone-for-ide", version.ref = "analysisApi" } +kotlin-analysisApi-k2 = { module = "org.jetbrains.kotlin:analysis-api-k2-for-ide", version.ref = "analysisApi" } +kotlin-lowLevelApiFir = { module = "org.jetbrains.kotlin:low-level-api-fir-for-ide", version.ref = "analysisApi" } +kotlin-symbolLightClasses = { module = "org.jetbrains.kotlin:symbol-light-classes-for-ide", version.ref = "analysisApi" } kotlinx-serialization-core = { module = "org.jetbrains.kotlinx:kotlinx-serialization-core", version.ref = "kotlinxSerialization" } caffeine = { module = "com.github.ben-manes.caffeine:caffeine", version.ref = "caffeine" }