Skip to content

Commit 4d77999

Browse files
committed
Add BCV API dumps
- add BCV - hide internal KxBM functionality with an opt-in annotation - minor tidying of plugin build script https://youtrack.jetbrains.com/issue/KT-66948
1 parent ba52ce1 commit 4d77999

23 files changed

+1148
-67
lines changed

build.gradle

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ buildscript {
1212
}
1313
}
1414

15+
plugins {
16+
id("org.jetbrains.kotlinx.binary-compatibility-validator") version "0.15.0-Beta.1"
17+
}
18+
1519
apply plugin: 'kotlinx.team.infra'
1620

1721
infra {
@@ -35,15 +39,32 @@ repositories {
3539
mavenCentral()
3640
}
3741

42+
// region Workarounds for https://github.com/gradle/gradle/issues/22335
43+
tasks.register("apiDump") {
44+
it.dependsOn(gradle.includedBuild("plugin").task(":apiDump"))
45+
}
46+
3847
afterEvaluate {
3948
gradle.includedBuilds.forEach { included ->
4049
project(":kotlinx-benchmark-runtime").tasks.named("publishToMavenLocal") { dependsOn(included.task(":publishToMavenLocal")) }
4150
}
4251
}
52+
//endregion
4353

4454
allprojects {
4555
logger.info("Using Kotlin $kotlin_version for project $it")
4656
repositories {
4757
KotlinCommunity.addDevRepositoryIfEnabled(delegate, project)
4858
}
4959
}
60+
61+
apiValidation {
62+
ignoredProjects += [
63+
"examples",
64+
"integration",
65+
]
66+
67+
klib {
68+
it.enabled = true
69+
}
70+
}
Lines changed: 238 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,238 @@
1+
public class kotlinx/benchmark/gradle/BenchmarkConfiguration {
2+
public fun <init> (Lkotlinx/benchmark/gradle/BenchmarksExtension;Ljava/lang/String;)V
3+
public final fun advanced (Ljava/lang/String;Ljava/lang/Object;)V
4+
public final fun capitalizedName ()Ljava/lang/String;
5+
public final fun exclude (Ljava/lang/String;)V
6+
public final fun getAdvanced ()Ljava/util/Map;
7+
public final fun getExcludes ()Ljava/util/List;
8+
public final fun getExtension ()Lkotlinx/benchmark/gradle/BenchmarksExtension;
9+
public final fun getIncludes ()Ljava/util/List;
10+
public final fun getIterationTime ()Ljava/lang/Long;
11+
public final fun getIterationTimeUnit ()Ljava/lang/String;
12+
public final fun getIterations ()Ljava/lang/Integer;
13+
public final fun getMode ()Ljava/lang/String;
14+
public final fun getName ()Ljava/lang/String;
15+
public final fun getOutputTimeUnit ()Ljava/lang/String;
16+
public final fun getParams ()Ljava/util/Map;
17+
public final fun getReportFormat ()Ljava/lang/String;
18+
public final fun getWarmups ()Ljava/lang/Integer;
19+
public final fun include (Ljava/lang/String;)V
20+
public final fun param (Ljava/lang/String;[Ljava/lang/Object;)V
21+
public final fun prefixName (Ljava/lang/String;)Ljava/lang/String;
22+
public final fun reportFileExt ()Ljava/lang/String;
23+
public final fun setAdvanced (Ljava/util/Map;)V
24+
public final fun setExcludes (Ljava/util/List;)V
25+
public final fun setIncludes (Ljava/util/List;)V
26+
public final fun setIterationTime (Ljava/lang/Long;)V
27+
public final fun setIterationTimeUnit (Ljava/lang/String;)V
28+
public final fun setIterations (Ljava/lang/Integer;)V
29+
public final fun setMode (Ljava/lang/String;)V
30+
public final fun setOutputTimeUnit (Ljava/lang/String;)V
31+
public final fun setParams (Ljava/util/Map;)V
32+
public final fun setReportFormat (Ljava/lang/String;)V
33+
public final fun setWarmups (Ljava/lang/Integer;)V
34+
}
35+
36+
public class kotlinx/benchmark/gradle/BenchmarkTarget {
37+
public fun <init> (Lkotlinx/benchmark/gradle/BenchmarksExtension;Ljava/lang/String;)V
38+
public final fun getExtension ()Lkotlinx/benchmark/gradle/BenchmarksExtension;
39+
public final fun getName ()Ljava/lang/String;
40+
public final fun getWorkingDir ()Ljava/lang/String;
41+
public final fun setWorkingDir (Ljava/lang/String;)V
42+
}
43+
44+
public class kotlinx/benchmark/gradle/BenchmarksExtension {
45+
public final fun configurations (Lgroovy/lang/Closure;)Lorg/gradle/api/NamedDomainObjectContainer;
46+
public final fun getBenchsDescriptionDir ()Ljava/lang/String;
47+
public final fun getBuildDir ()Ljava/lang/String;
48+
public final fun getConfigurations ()Lorg/gradle/api/NamedDomainObjectContainer;
49+
public final fun getProject ()Lorg/gradle/api/Project;
50+
public final fun getReportsDir ()Ljava/lang/String;
51+
public final fun getTargets ()Lorg/gradle/api/NamedDomainObjectContainer;
52+
public final fun getVersion ()Ljava/lang/String;
53+
public final fun setBenchsDescriptionDir (Ljava/lang/String;)V
54+
public final fun setBuildDir (Ljava/lang/String;)V
55+
public final fun setReportsDir (Ljava/lang/String;)V
56+
public final fun targets (Lgroovy/lang/Closure;)Lorg/gradle/api/NamedDomainObjectContainer;
57+
}
58+
59+
public final class kotlinx/benchmark/gradle/BenchmarksExtensionKt {
60+
public static final fun benchmark (Lorg/gradle/api/Project;Lorg/gradle/api/Action;)V
61+
}
62+
63+
public abstract class kotlinx/benchmark/gradle/BenchmarksPlugin : org/gradle/api/Plugin {
64+
public static final field ASSEMBLE_BENCHMARKS_TASKNAME Ljava/lang/String;
65+
public static final field BENCHMARKS_TASK_GROUP Ljava/lang/String;
66+
public static final field BENCHMARK_COMPILATION_SUFFIX Ljava/lang/String;
67+
public static final field BENCHMARK_COMPILE_SUFFIX Ljava/lang/String;
68+
public static final field BENCHMARK_EXEC_SUFFIX Ljava/lang/String;
69+
public static final field BENCHMARK_EXTENSION_NAME Ljava/lang/String;
70+
public static final field BENCHMARK_GENERATE_SUFFIX Ljava/lang/String;
71+
public static final field BENCHMARK_JAR_SUFFIX Ljava/lang/String;
72+
public static final field Companion Lkotlinx/benchmark/gradle/BenchmarksPlugin$Companion;
73+
public static final field JMH_CORE_DEPENDENCY Ljava/lang/String;
74+
public static final field JMH_GENERATOR_DEPENDENCY Ljava/lang/String;
75+
public static final field PLUGIN_ID Ljava/lang/String;
76+
public static final field PLUGIN_VERSION Ljava/lang/String;
77+
public static final field RUN_BENCHMARKS_TASKNAME Ljava/lang/String;
78+
public synthetic fun apply (Ljava/lang/Object;)V
79+
public fun apply (Lorg/gradle/api/Project;)V
80+
}
81+
82+
public final class kotlinx/benchmark/gradle/BenchmarksPlugin$Companion {
83+
}
84+
85+
public final class kotlinx/benchmark/gradle/JavaBenchmarkTarget : kotlinx/benchmark/gradle/JvmBenchmarkTarget {
86+
public fun <init> (Lkotlinx/benchmark/gradle/BenchmarksExtension;Ljava/lang/String;Lorg/gradle/api/tasks/SourceSet;)V
87+
public final fun getSourceSet ()Lorg/gradle/api/tasks/SourceSet;
88+
}
89+
90+
public class kotlinx/benchmark/gradle/JmhBytecodeGeneratorTask : org/gradle/api/DefaultTask {
91+
public field inputClassesDirs Lorg/gradle/api/file/FileCollection;
92+
public field inputCompileClasspath Lorg/gradle/api/file/FileCollection;
93+
public field outputResourcesDir Ljava/io/File;
94+
public field outputSourcesDir Ljava/io/File;
95+
public field runtimeClasspath Lorg/gradle/api/file/FileCollection;
96+
public final fun generate ()V
97+
public final fun getExecutableProvider ()Lorg/gradle/api/provider/Provider;
98+
public final fun getInputClassesDirs ()Lorg/gradle/api/file/FileCollection;
99+
public final fun getInputCompileClasspath ()Lorg/gradle/api/file/FileCollection;
100+
public final fun getOutputResourcesDir ()Ljava/io/File;
101+
public final fun getOutputSourcesDir ()Ljava/io/File;
102+
public final fun getRuntimeClasspath ()Lorg/gradle/api/file/FileCollection;
103+
public final fun setExecutableProvider (Lorg/gradle/api/provider/Provider;)V
104+
public final fun setInputClassesDirs (Lorg/gradle/api/file/FileCollection;)V
105+
public final fun setInputCompileClasspath (Lorg/gradle/api/file/FileCollection;)V
106+
public final fun setOutputResourcesDir (Ljava/io/File;)V
107+
public final fun setOutputSourcesDir (Ljava/io/File;)V
108+
public final fun setRuntimeClasspath (Lorg/gradle/api/file/FileCollection;)V
109+
}
110+
111+
public final class kotlinx/benchmark/gradle/JsBenchmarkTarget : kotlinx/benchmark/gradle/BenchmarkTarget {
112+
public fun <init> (Lkotlinx/benchmark/gradle/BenchmarksExtension;Ljava/lang/String;Lorg/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrCompilation;)V
113+
public final fun getCompilation ()Lorg/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrCompilation;
114+
public final fun getJsBenchmarksExecutor ()Lkotlinx/benchmark/gradle/JsBenchmarksExecutor;
115+
public final fun setJsBenchmarksExecutor (Lkotlinx/benchmark/gradle/JsBenchmarksExecutor;)V
116+
}
117+
118+
public final class kotlinx/benchmark/gradle/JsBenchmarksExecutor : java/lang/Enum {
119+
public static final field BenchmarkJs Lkotlinx/benchmark/gradle/JsBenchmarksExecutor;
120+
public static final field BuiltIn Lkotlinx/benchmark/gradle/JsBenchmarksExecutor;
121+
public static fun valueOf (Ljava/lang/String;)Lkotlinx/benchmark/gradle/JsBenchmarksExecutor;
122+
public static fun values ()[Lkotlinx/benchmark/gradle/JsBenchmarksExecutor;
123+
}
124+
125+
public class kotlinx/benchmark/gradle/JsSourceGeneratorTask : org/gradle/api/DefaultTask {
126+
public field inputClassesDirs Lorg/gradle/api/file/FileCollection;
127+
public field inputDependencies Lorg/gradle/api/file/FileCollection;
128+
public field outputResourcesDir Ljava/io/File;
129+
public field outputSourcesDir Ljava/io/File;
130+
public field title Ljava/lang/String;
131+
public final fun generate ()V
132+
public final fun getInputClassesDirs ()Lorg/gradle/api/file/FileCollection;
133+
public final fun getInputDependencies ()Lorg/gradle/api/file/FileCollection;
134+
public final fun getOutputResourcesDir ()Ljava/io/File;
135+
public final fun getOutputSourcesDir ()Ljava/io/File;
136+
public final fun getTitle ()Ljava/lang/String;
137+
public final fun getUseBenchmarkJs ()Z
138+
public final fun setInputClassesDirs (Lorg/gradle/api/file/FileCollection;)V
139+
public final fun setInputDependencies (Lorg/gradle/api/file/FileCollection;)V
140+
public final fun setOutputResourcesDir (Ljava/io/File;)V
141+
public final fun setOutputSourcesDir (Ljava/io/File;)V
142+
public final fun setTitle (Ljava/lang/String;)V
143+
public final fun setUseBenchmarkJs (Z)V
144+
}
145+
146+
public abstract class kotlinx/benchmark/gradle/JvmBenchmarkTarget : kotlinx/benchmark/gradle/BenchmarkTarget {
147+
public fun <init> (Lkotlinx/benchmark/gradle/BenchmarksExtension;Ljava/lang/String;)V
148+
public final fun getJmhVersion ()Ljava/lang/String;
149+
public final fun setJmhVersion (Ljava/lang/String;)V
150+
}
151+
152+
public class kotlinx/benchmark/gradle/KotlinJvmBenchmarkTarget : kotlinx/benchmark/gradle/JvmBenchmarkTarget {
153+
public fun <init> (Lkotlinx/benchmark/gradle/BenchmarksExtension;Ljava/lang/String;Lorg/jetbrains/kotlin/gradle/plugin/mpp/KotlinJvmCompilation;)V
154+
public final fun getCompilation ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/KotlinJvmCompilation;
155+
}
156+
157+
public class kotlinx/benchmark/gradle/NativeBenchmarkExec : org/gradle/api/DefaultTask {
158+
public field benchProgressPath Ljava/lang/String;
159+
public field benchsDescriptionDir Ljava/io/File;
160+
public field configFile Ljava/io/File;
161+
public field executable Ljava/io/File;
162+
public field reportFile Ljava/io/File;
163+
public final fun getBenchProgressPath ()Ljava/lang/String;
164+
public final fun getBenchsDescriptionDir ()Ljava/io/File;
165+
public final fun getConfigFile ()Ljava/io/File;
166+
public final fun getExecutable ()Ljava/io/File;
167+
public final fun getNativeFork ()Ljava/lang/String;
168+
public final fun getReportFile ()Ljava/io/File;
169+
public final fun getWorkingDir ()Ljava/lang/String;
170+
public final fun run ()V
171+
public final fun setBenchProgressPath (Ljava/lang/String;)V
172+
public final fun setBenchsDescriptionDir (Ljava/io/File;)V
173+
public final fun setConfigFile (Ljava/io/File;)V
174+
public final fun setExecutable (Ljava/io/File;)V
175+
public final fun setNativeFork (Ljava/lang/String;)V
176+
public final fun setReportFile (Ljava/io/File;)V
177+
public final fun setWorkingDir (Ljava/lang/String;)V
178+
}
179+
180+
public final class kotlinx/benchmark/gradle/NativeBenchmarkTarget : kotlinx/benchmark/gradle/BenchmarkTarget {
181+
public fun <init> (Lkotlinx/benchmark/gradle/BenchmarksExtension;Ljava/lang/String;Lorg/jetbrains/kotlin/gradle/plugin/mpp/KotlinNativeCompilation;)V
182+
public final fun getCompilation ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/KotlinNativeCompilation;
183+
}
184+
185+
public class kotlinx/benchmark/gradle/NativeSourceGeneratorTask : org/gradle/api/DefaultTask {
186+
public field inputClassesDirs Lorg/gradle/api/file/FileCollection;
187+
public field inputDependencies Lorg/gradle/api/file/FileCollection;
188+
public field nativeTarget Ljava/lang/String;
189+
public field outputResourcesDir Ljava/io/File;
190+
public field outputSourcesDir Ljava/io/File;
191+
public field title Ljava/lang/String;
192+
public final fun generate ()V
193+
public final fun getInputClassesDirs ()Lorg/gradle/api/file/FileCollection;
194+
public final fun getInputDependencies ()Lorg/gradle/api/file/FileCollection;
195+
public final fun getNativeTarget ()Ljava/lang/String;
196+
public final fun getOutputResourcesDir ()Ljava/io/File;
197+
public final fun getOutputSourcesDir ()Ljava/io/File;
198+
public final fun getTitle ()Ljava/lang/String;
199+
public final fun setInputClassesDirs (Lorg/gradle/api/file/FileCollection;)V
200+
public final fun setInputDependencies (Lorg/gradle/api/file/FileCollection;)V
201+
public final fun setNativeTarget (Ljava/lang/String;)V
202+
public final fun setOutputResourcesDir (Ljava/io/File;)V
203+
public final fun setOutputSourcesDir (Ljava/io/File;)V
204+
public final fun setTitle (Ljava/lang/String;)V
205+
}
206+
207+
public final class kotlinx/benchmark/gradle/UtilsKt$sam$i$org_gradle_api_Action$0 : org/gradle/api/Action {
208+
public fun <init> (Lkotlin/jvm/functions/Function1;)V
209+
public final synthetic fun execute (Ljava/lang/Object;)V
210+
}
211+
212+
public final class kotlinx/benchmark/gradle/WasmBenchmarkTarget : kotlinx/benchmark/gradle/BenchmarkTarget {
213+
public fun <init> (Lkotlinx/benchmark/gradle/BenchmarksExtension;Ljava/lang/String;Lorg/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrCompilation;)V
214+
public final fun getCompilation ()Lorg/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrCompilation;
215+
}
216+
217+
public class kotlinx/benchmark/gradle/WasmSourceGeneratorTask : org/gradle/api/DefaultTask {
218+
public field inputClassesDirs Lorg/gradle/api/file/FileCollection;
219+
public field inputDependencies Lorg/gradle/api/file/FileCollection;
220+
public field outputResourcesDir Ljava/io/File;
221+
public field outputSourcesDir Ljava/io/File;
222+
public field title Ljava/lang/String;
223+
public final fun generate ()V
224+
public final fun getInputClassesDirs ()Lorg/gradle/api/file/FileCollection;
225+
public final fun getInputDependencies ()Lorg/gradle/api/file/FileCollection;
226+
public final fun getOutputResourcesDir ()Ljava/io/File;
227+
public final fun getOutputSourcesDir ()Ljava/io/File;
228+
public final fun getTitle ()Ljava/lang/String;
229+
public final fun setInputClassesDirs (Lorg/gradle/api/file/FileCollection;)V
230+
public final fun setInputDependencies (Lorg/gradle/api/file/FileCollection;)V
231+
public final fun setOutputResourcesDir (Ljava/io/File;)V
232+
public final fun setOutputSourcesDir (Ljava/io/File;)V
233+
public final fun setTitle (Ljava/lang/String;)V
234+
}
235+
236+
public abstract interface annotation class kotlinx/benchmark/gradle/internal/KotlinxBenchmarkPluginInternalApi : java/lang/annotation/Annotation {
237+
}
238+

plugin/build.gradle

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask
2+
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
3+
14
buildscript {
25
ext.kotlinDevUrl = rootProject.properties["kotlin_repo_url"]
36
repositories {
@@ -9,7 +12,6 @@ buildscript {
912
}
1013
dependencies {
1114
classpath "kotlinx.team:kotlinx.team.infra:$infra_version"
12-
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
1315
}
1416

1517
}
@@ -18,10 +20,11 @@ plugins {
1820
id 'java-gradle-plugin'
1921
id 'maven-publish'
2022
id 'com.gradle.plugin-publish' version '0.21.0'
23+
id("org.jetbrains.kotlinx.binary-compatibility-validator") version "0.15.0-Beta.1"
24+
id("org.jetbrains.kotlin.jvm") version "$kotlin_version"
2125
}
2226

23-
apply plugin: 'org.jetbrains.kotlin.jvm'
24-
apply plugin: 'kotlinx.team.infra'
27+
apply(plugin: 'kotlinx.team.infra')
2528

2629
infra {
2730
teamcity {
@@ -75,10 +78,14 @@ sourceSets {
7578
}
7679
}
7780

78-
compileKotlin {
79-
kotlinOptions {
80-
freeCompilerArgs += "-Xopt-in=kotlin.RequiresOptIn"
81-
apiVersion = "1.4" // the version of Kotlin embedded in Gradle
81+
tasks.named("compileKotlin", KotlinCompilationTask.class) {
82+
compilerOptions {
83+
optIn.addAll(
84+
"kotlinx.benchmark.gradle.internal.KotlinxBenchmarkPluginInternalApi",
85+
"kotlin.RequiresOptIn",
86+
)
87+
//noinspection GrDeprecatedAPIUsage
88+
apiVersion = KotlinVersion.KOTLIN_1_4 // the version of Kotlin embedded in Gradle
8289
}
8390
}
8491

@@ -90,7 +97,7 @@ dependencies {
9097
implementation group: 'org.jetbrains.kotlin', name: 'kotlin-util-klib-metadata', version: kotlin_version
9198
implementation group: 'org.jetbrains.kotlin', name: 'kotlin-util-klib', version: kotlin_version
9299
implementation group: 'org.jetbrains.kotlin', name: 'kotlin-util-io', version: kotlin_version
93-
100+
94101
compileOnly group: 'org.jetbrains.kotlin.multiplatform', name: 'org.jetbrains.kotlin.multiplatform.gradle.plugin', version: kotlin_version
95102
compileOnly "org.jetbrains.kotlin:kotlin-compiler-embeddable:$kotlin_version"
96103
compileOnly "org.openjdk.jmh:jmh-generator-bytecode:$jmhVersion" // used in worker
@@ -130,3 +137,7 @@ if (project.findProperty("publication_repository") == "space") {
130137
}
131138
}
132139
}
140+
141+
apiValidation {
142+
nonPublicMarkers += ["kotlinx.benchmark.gradle.internal.KotlinxBenchmarkPluginInternalApi"]
143+
}

0 commit comments

Comments
 (0)