Skip to content

docs: evaluate migrating from Gradle to the Kotlin Toolchain - #36

Merged
rocketraman merged 1 commit into
masterfrom
claude/gradle-kotlin-toolchain-migration-cf2e37
Oct 19, 2026
Merged

rocketraman merged 1 commit into
masterfrom
claude/gradle-kotlin-toolchain-migration-cf2e37

Conversation

@rocketraman

@rocketraman rocketraman commented Oct 19, 2026 •

Copy link
Copy Markdown
Owner

Adds docs/kotlin-toolchain-evaluation.adoc, the write-up of an evaluation of moving bootable's build from Gradle to Kotlin Toolchain 0.13.0 (formerly Amper).

Summary

  • Verdict: feasible, with two project-local plugins. A scratch conversion builds all modules, passes the TestBalloon tests, and runs the wiring examples.
  • Signing. The built-in signer needs an exported private key in an env var, so it can't use a YubiKey behind gpg-agent. A prototype plugin signs a staged publication with gpg (tested locally with a throwaway key; nothing uploaded).
  • GraalVM native image. No built-in support. A prototype plugin runs native-image with the reachability metadata repository applied the way native-build-tools does; the server-ktor executable serves requests and shuts down cleanly on SIGTERM.
  • Not blockers. The tag-derived version needs a one-line YAML rewrite in the release script, and the placeholder javadoc jar is an upstream design choice that Maven Central accepts.
  • Upstream feedback. Findings were shared in the Kotlin Slack #kotlin-toolchain channel; the doc lists the seven YouTrack issues the maintainers linked, plus their notes on Dokka and compiler plugin versions.
  • DI flavors. The toolchain needs one module per artifact. The doc records the decision to keep the flavors as source sets while on Gradle, and to split them into nested modules only if we migrate.

Notes for review

  • Docs only; no build or code changes.
  • The spike ran against the module set before the boot-db-* modules landed; module counts in the flavors section have been updated for current master.
  • The spike's configuration and both plugins' source live only in the appendix; the scratch project itself isn't committed.
  • Side finding: the Gradle server-ktor native smoke test on master currently builds a shared library (--shared, server-ktor.so) instead of an executable.

@claude

claude Bot commented Oct 19, 2026

Copy link
Copy Markdown

Code review

No issues found. Checked for bugs and CLAUDE.md compliance.

Record the results of converting a scratch copy of the build to Kotlin
Toolchain 0.13.0: build, tests and examples work, but releasing is
blocked by signing (no gpg-agent support), a static publishing version
and placeholder javadoc jars. Includes the upstream YouTrack issues
from the maintainers, a reproducer for an internal error, and the
decision to keep the DI flavors as source sets while on Gradle.
@rocketraman
rocketraman force-pushed the claude/gradle-kotlin-toolchain-migration-cf2e37 branch from 87a6f95 to 9749b8f Compare October 19, 2026 22:31
@rocketraman
rocketraman merged commit 60d5d71 into master Oct 19, 2026
2 checks passed
@rocketraman
rocketraman deleted the claude/gradle-kotlin-toolchain-migration-cf2e37 branch October 19, 2026 22:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant