diff --git a/build-logic/src/main/kotlin/dfbuild.kotlinJvmCommon.gradle.kts b/build-logic/src/main/kotlin/dfbuild.kotlinJvmCommon.gradle.kts index e670be80ec..3f31e100ab 100644 --- a/build-logic/src/main/kotlin/dfbuild.kotlinJvmCommon.gradle.kts +++ b/build-logic/src/main/kotlin/dfbuild.kotlinJvmCommon.gradle.kts @@ -1,3 +1,5 @@ +import org.jetbrains.kotlin.gradle.dsl.abi.ExperimentalAbiValidation + plugins { alias(conventions.plugins.dfbuild.base) // enables the linter for every Kotlin module in the project @@ -9,6 +11,19 @@ plugins { kotlin { explicitApi() jvmToolchain(libs.versions.gradle.jdk.get().toInt()) + + @OptIn(ExperimentalAbiValidation::class) + abiValidation() +} + +// Aliases akin to the old binary compatibility validator plugin +val apiCheck by tasks.registering { + group = "verification" + dependsOn("checkKotlinAbi") +} +val apiDump by tasks.registering { + group = "verification" + dependsOn("updateKotlinAbi") } // Adds the instrumentedJars configuration/artifact to all Kotlin sub-projects. diff --git a/build.gradle.kts b/build.gradle.kts index b10e4631fd..ae3ef313b3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -113,3 +113,6 @@ kotlinPublications { } } } + +tasks.checkKotlinAbi { onlyIf { false } } +tasks.updateKotlinAbi { onlyIf { false } } diff --git a/core/api/core.api b/core/api/core.api index bb76090655..a716a92a0a 100644 --- a/core/api/core.api +++ b/core/api/core.api @@ -192,7 +192,6 @@ public abstract interface class org/jetbrains/kotlinx/dataframe/aggregation/Colu public final class org/jetbrains/kotlinx/dataframe/aggregation/NamedValue { public static final field Companion Lorg/jetbrains/kotlinx/dataframe/aggregation/NamedValue$Companion; - public synthetic fun (Lorg/jetbrains/kotlinx/dataframe/columns/ColumnPath;Ljava/lang/Object;Lkotlin/reflect/KType;Ljava/lang/Object;ZLkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Lorg/jetbrains/kotlinx/dataframe/columns/ColumnPath; public final fun component2 ()Ljava/lang/Object; public final fun component3 ()Lkotlin/reflect/KType; @@ -1939,7 +1938,6 @@ public abstract class org/jetbrains/kotlinx/dataframe/api/DateTimeParserOptions public class org/jetbrains/kotlinx/dataframe/api/DateTimeParserOptions$Java : org/jetbrains/kotlinx/dataframe/api/DateTimeParserOptions { public static final field Companion Lorg/jetbrains/kotlinx/dataframe/api/DateTimeParserOptions$Java$Companion; - public synthetic fun (Ljava/util/Locale;Ljava/util/Set;Lkotlin/jvm/internal/DefaultConstructorMarker;)V public fun copy ()Lorg/jetbrains/kotlinx/dataframe/api/DateTimeParserOptions$Java; public synthetic fun copy ()Lorg/jetbrains/kotlinx/dataframe/api/DateTimeParserOptions; public final fun copy (Ljava/util/Locale;Ljava/lang/Iterable;)Lorg/jetbrains/kotlinx/dataframe/api/DateTimeParserOptions$Java; @@ -1968,7 +1966,6 @@ public final class org/jetbrains/kotlinx/dataframe/api/DateTimeParserOptions$Jav public class org/jetbrains/kotlinx/dataframe/api/DateTimeParserOptions$Kotlin : org/jetbrains/kotlinx/dataframe/api/DateTimeParserOptions { public static final field Companion Lorg/jetbrains/kotlinx/dataframe/api/DateTimeParserOptions$Kotlin$Companion; - public synthetic fun (Ljava/util/Set;Lkotlin/jvm/internal/DefaultConstructorMarker;)V public fun copy ()Lorg/jetbrains/kotlinx/dataframe/api/DateTimeParserOptions$Kotlin; public synthetic fun copy ()Lorg/jetbrains/kotlinx/dataframe/api/DateTimeParserOptions; public final fun copy (Ljava/lang/Iterable;)Lorg/jetbrains/kotlinx/dataframe/api/DateTimeParserOptions$Kotlin; @@ -4998,7 +4995,6 @@ public abstract interface class org/jetbrains/kotlinx/dataframe/codeGen/TypeCast public final class org/jetbrains/kotlinx/dataframe/codeGen/TypeCastGenerator$DataFrameApi : org/jetbrains/kotlinx/dataframe/codeGen/TypeCastGenerator { public static final field Companion Lorg/jetbrains/kotlinx/dataframe/codeGen/TypeCastGenerator$DataFrameApi$Companion; - public synthetic fun ([Ljava/lang/String;Lkotlin/jvm/internal/DefaultConstructorMarker;)V public fun addCastTo (Ljava/lang/String;)Ljava/lang/String; public final fun getTypes ()[Ljava/lang/String; public fun toString ()Ljava/lang/String; @@ -5016,7 +5012,6 @@ public final class org/jetbrains/kotlinx/dataframe/codeGen/TypeCastGenerator$Emp public final class org/jetbrains/kotlinx/dataframe/codeGen/ValidFieldName { public static final field Companion Lorg/jetbrains/kotlinx/dataframe/codeGen/ValidFieldName$Companion; - public synthetic fun (Ljava/lang/String;ZLkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun getNeedsQuote ()Z public final fun getQuotedIfNeeded ()Ljava/lang/String; public final fun getUnquoted ()Ljava/lang/String; @@ -5089,7 +5084,6 @@ public class org/jetbrains/kotlinx/dataframe/columns/ColumnKind : java/lang/Enum public static final field Frame Lorg/jetbrains/kotlinx/dataframe/columns/ColumnKind; public static final field Group Lorg/jetbrains/kotlinx/dataframe/columns/ColumnKind; public static final field Value Lorg/jetbrains/kotlinx/dataframe/columns/ColumnKind; - public synthetic fun (Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public static fun getEntries ()Lkotlin/enums/EnumEntries; public static fun valueOf (Ljava/lang/String;)Lorg/jetbrains/kotlinx/dataframe/columns/ColumnKind; public static fun values ()[Lorg/jetbrains/kotlinx/dataframe/columns/ColumnKind; diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 8c8d095df1..43823562de 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -17,7 +17,6 @@ plugins { alias(publisher) alias(serialization) alias(korro) - alias(binary.compatibility.validator) alias(kotlinx.benchmark) } } diff --git a/dataframe-arrow/build.gradle.kts b/dataframe-arrow/build.gradle.kts index cdc66f0129..65f1e4d5d9 100644 --- a/dataframe-arrow/build.gradle.kts +++ b/dataframe-arrow/build.gradle.kts @@ -4,7 +4,6 @@ plugins { } with(libs.plugins) { alias(publisher) - alias(binary.compatibility.validator) } } diff --git a/dataframe-csv/build.gradle.kts b/dataframe-csv/build.gradle.kts index f1f08d273e..fbbf283f11 100644 --- a/dataframe-csv/build.gradle.kts +++ b/dataframe-csv/build.gradle.kts @@ -6,7 +6,6 @@ plugins { with(libs.plugins) { alias(publisher) alias(serialization) - alias(binary.compatibility.validator) alias(kotlinx.benchmark) } } diff --git a/dataframe-excel/build.gradle.kts b/dataframe-excel/build.gradle.kts index 1e7dbb87b4..ab58d8d494 100644 --- a/dataframe-excel/build.gradle.kts +++ b/dataframe-excel/build.gradle.kts @@ -5,7 +5,6 @@ plugins { } with(libs.plugins) { alias(publisher) - alias(binary.compatibility.validator) } } diff --git a/dataframe-jdbc/build.gradle.kts b/dataframe-jdbc/build.gradle.kts index 968984f0f3..d139dc8e16 100644 --- a/dataframe-jdbc/build.gradle.kts +++ b/dataframe-jdbc/build.gradle.kts @@ -6,7 +6,6 @@ plugins { } with(libs.plugins) { alias(publisher) - alias(binary.compatibility.validator) } } diff --git a/dataframe-json/build.gradle.kts b/dataframe-json/build.gradle.kts index 4f4859c808..9efcbfaee8 100644 --- a/dataframe-json/build.gradle.kts +++ b/dataframe-json/build.gradle.kts @@ -7,7 +7,6 @@ plugins { with(libs.plugins) { alias(publisher) alias(serialization) - alias(binary.compatibility.validator) } } diff --git a/dataframe-jupyter/build.gradle.kts b/dataframe-jupyter/build.gradle.kts index 627afdaf51..5a6bd885fe 100644 --- a/dataframe-jupyter/build.gradle.kts +++ b/dataframe-jupyter/build.gradle.kts @@ -8,7 +8,6 @@ plugins { with(libs.plugins) { alias(publisher) alias(jupyter.api) - alias(binary.compatibility.validator) } } diff --git a/dataframe-openapi-generator/build.gradle.kts b/dataframe-openapi-generator/build.gradle.kts index a48d8b2cf5..b4baf7afe1 100644 --- a/dataframe-openapi-generator/build.gradle.kts +++ b/dataframe-openapi-generator/build.gradle.kts @@ -7,7 +7,6 @@ plugins { with(libs.plugins) { alias(publisher) alias(serialization) - alias(binary.compatibility.validator) } } diff --git a/dataframe-openapi/build.gradle.kts b/dataframe-openapi/build.gradle.kts index 79d1d311fa..6a838d1373 100644 --- a/dataframe-openapi/build.gradle.kts +++ b/dataframe-openapi/build.gradle.kts @@ -4,7 +4,6 @@ plugins { } with(libs.plugins) { alias(publisher) - alias(binary.compatibility.validator) } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 43240e506b..b02a982262 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -24,7 +24,6 @@ maven-invoker = "3.3.0" maven-wrapper = "3.3.4" maven = "3.9.11" maven-surefire = "3.5.6" -binaryCompatibilityValidator = "0.18.1" deephavenCsv = "0.19.0" fastDoubleParser = "2.0.1" commonsCsv = "1.14.1" @@ -253,7 +252,6 @@ androidx-material3 = { group = "androidx.compose.material3", name = "material3" [plugins] jupyter-api = { id = "org.jetbrains.kotlin.jupyter.api", version.ref = "kotlinJupyter" } -binary-compatibility-validator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version.ref = "binaryCompatibilityValidator" } kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" } publisher = { id = "org.jetbrains.kotlin.libs.publisher", version.ref = "libsPublisher" }