Migration Guide

This project is pre-1.0. Treat minor-version changes as potentially breaking until a stable compatibility policy is published.

Current release baseline:

  • project version: 0.1.0
  • supported Kotlin lines: 2.3.10, 2.4.0-Beta1
  • JVM toolchain for library, compiler plugin, and Gradle plugin: JDK 21
  • IntelliJ plugin runtime target: JVM 17

Upgrade Checklist

  1. Update the Gradle plugin version:
plugins {
    kotlin("jvm") version "2.3.10"
    id("one.wabbit.acyclic") version "0.1.0"
}
  1. Update the annotations dependency to the same base version:
dependencies {
    implementation("one.wabbit:kotlin-acyclic:0.1.0")
}
  1. Keep the Kotlin Gradle plugin version on a published compiler-plugin line.

  2. Run the compiler-plugin checks on every configured Kotlin target.

./gradlew build

Kotlin Version Changes

The compiler plugin is published with a Kotlin-version suffix:

  • one.wabbit:kotlin-acyclic-plugin:<baseVersion>-kotlin-<kotlinVersion>

Gradle users normally do not reference this artifact directly. The Gradle plugin derives the right artifact from the applied Kotlin Gradle plugin version.

Direct compiler users must update the suffixed artifact manually when the Kotlin compiler version changes.

Breaking-Change Areas

The most likely migration points before 1.0 are:

  • changes to diagnostic wording
  • changes to which FIR dependencies are considered semantic edges
  • changes to declaration tracking scope
  • changes to Gradle DSL defaults
  • Kotlin compiler API compatibility changes between supported Kotlin lines

When a change has a mechanical upgrade path, it should be recorded in ../CHANGELOG.md and linked back here.