Migrate to Kotlin 2.4.0 (+ ksrpc 1.1.1, lsp-types 1.1.0)#48
Merged
Conversation
Bumps the Kotlin toolchain 2.3.20 -> 2.4.0 and the two in-fleet libs that
were already published on 2.4.0 (their wasm-js klib ABI 2.4.0 was
unconsumable by the 2.3.20 compiler): ksrpc 1.1.0 -> 1.1.1 and
lsp-types 1.0.0 -> 1.1.0.
lsp-types 1.1.0 carries the UnionGenerator empty-object capability-parse
fix (12 provider serializers no longer throw on a spec-valid {} object),
which clears the latent LSP go-live risk against arbitrary kotlin-lsp
builds.
Compose Multiplatform stays at 1.10.3 (verified compatible with Kotlin
2.4.0; kept pinned to avoid any Compose-runtime UI delta). hauler 0.4.0
and kodemirror 0.3.2 stay as-is — their pre-2.4.0 klibs are
backward-consumable by the 2.4.0 compiler, so this migration does not
wait on their 2.4.0 republish. The compose-compiler plugin follows the
kotlin version ref automatically.
No source changes required. Spike-verified: full shadowJar + frontend
wasmJs distribution green, and the full :e2e suite passes locally on
2.4.0.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
monkopedia-reviewer
approved these changes
Jun 4, 2026
Collaborator
monkopedia-reviewer
left a comment
There was a problem hiding this comment.
Approve (tier-2). Kotlin 2.4.0 compiler-toolchain migration (+ ksrpc 1.1.1, lsp-types 1.1.0). CI 'build-and-test' SUCCESS (11m38s) exercising spotless (all modules), shadowJar, test, and :e2e:test -Pe2e under Xvfb on 2.4.0; diff is exactly the 3 version lines (no smuggled changes); no source changes required (no allWarningsAsErrors, so the Instant/ExperimentalWasmJsInterop items are warnings-only follow-ups). Backward-compat verified: hauler 0.4.0 + kodemirror 0.3.2 consume cleanly on 2.4.0. Tier-2 signoff obtained from Jason (driving Chain-A #5).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Bumps the Kotlin toolchain 2.3.20 → 2.4.0 plus the two in-fleet libs already published on 2.4.0: ksrpc 1.1.0 → 1.1.1 and lsp-types 1.0.0 → 1.1.0. A 3-line version-catalog change; no source edits.
Why now (Chain-A #5)
ksrpc 1.1.1 and lsp-types 1.1.0 were published on Kotlin 2.4.0 — their wasm-js klib ABI (2.4.0) is unconsumable by our 2.3.20 compiler (forward-incompat), so consuming them requires this toolchain bump. lsp-types 1.1.0 also carries the UnionGenerator empty-object fix (12 capability-provider serializers no longer throw on a spec-valid
{}), clearing the latent LSP go-live risk against arbitrary kotlin-lsp builds.Scope decisions
:frontend:compileKotlinWasmJs— the strictest klib-ABI case — links kodemirror 0.3.2 green). So this migration does not wait on their 2.4.0 republish; bumping them later is a routine, non-forcing dep bump.kotlinversion ref automatically; konstructor uses no KSP, so no KSP-2.4.0 wall.Verification
shadowJar+:frontend:wasmJsBrowserDistributiongreen on 2.4.0;spotlessCheckgreen all modules; no BCV/apiDump churn; deterministic (no flaky ICE).clean :e2e:test -Pe2eGREEN locally on this branch (5m57s, all tests) — the runtime/screenshot gate for the compiler bump.build-and-testwill re-run the same gates.Non-blocking follow-ups (separable, not in this PR)
protocol/.../LogFormatter.kt—kotlinx.datetime.Instant→kotlin.time.Instant(deprecation warning only).@OptIn(kotlin.js.ExperimentalWasmJsInterop)for the threejs/FilePicker wasm-interop files (new 2.4.0 opt-in warnings).Part of the Chain-A Kotlin 2.4.0 migration (#5).