Skip to content

Commit c9613e8

Browse files
committed
create baseline for abi and add validation to ci
1 parent 179a48d commit c9613e8

24 files changed

Lines changed: 14851 additions & 4 deletions

.github/workflows/main.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ on:
77

88
jobs:
99

10+
abi:
11+
uses: ./.github/workflows/task-runner.yml
12+
with:
13+
runner: ubuntu-24.04-arm
14+
task: checkLegacyAbi
15+
1016
lint:
1117
uses: ./.github/workflows/task-runner.yml
1218
with:

.github/workflows/pr.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ on:
77

88
jobs:
99

10+
abi:
11+
uses: ./.github/workflows/task-runner.yml
12+
with:
13+
runner: ubuntu-24.04-arm
14+
task: checkLegacyAbi
15+
1016
lint:
1117
uses: ./.github/workflows/task-runner.yml
1218
with:

ast/api/ast.api

Lines changed: 5841 additions & 0 deletions
Large diffs are not rendered by default.

ast/api/ast.klib.api

Lines changed: 5690 additions & 0 deletions
Large diffs are not rendered by default.

ast/build.gradle.kts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import org.jetbrains.kotlin.gradle.dsl.abi.ExperimentalAbiValidation
2+
13
plugins {
24
alias(libs.plugins.conventions.kmp)
35
alias(libs.plugins.conventions.linting)
@@ -6,6 +8,11 @@ plugins {
68

79
kotlin {
810

11+
@OptIn(ExperimentalAbiValidation::class)
12+
abiValidation {
13+
enabled.set(true)
14+
}
15+
916
sourceSets {
1017
commonMain {
1118
dependencies {
Lines changed: 173 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,173 @@
1+
public abstract interface annotation class io/github/charlietap/chasm/gradle/ChasmDsl : java/lang/annotation/Annotation {
2+
}
3+
4+
public class io/github/charlietap/chasm/gradle/ChasmExtension {
5+
public fun <init> (Lorg/gradle/api/model/ObjectFactory;)V
6+
public final fun getMode ()Lorg/gradle/api/provider/Property;
7+
public final fun getModules ()Lorg/gradle/api/NamedDomainObjectContainer;
8+
public final fun getRuntimeDependencyConfiguration ()Lorg/gradle/api/provider/Property;
9+
}
10+
11+
public final class io/github/charlietap/chasm/gradle/ChasmPlugin : org/gradle/api/Plugin {
12+
public fun <init> ()V
13+
public synthetic fun apply (Ljava/lang/Object;)V
14+
public fun apply (Lorg/gradle/api/Project;)V
15+
}
16+
17+
public final class io/github/charlietap/chasm/gradle/ChasmPlugin$inlined$sam$i$org_gradle_api_Action$0 : org/gradle/api/Action {
18+
public fun <init> (Lkotlin/jvm/functions/Function1;)V
19+
public final synthetic fun execute (Ljava/lang/Object;)V
20+
}
21+
22+
public final class io/github/charlietap/chasm/gradle/CodegenConfig : java/io/Serializable {
23+
public fun <init> ()V
24+
public fun <init> (Z)V
25+
public synthetic fun <init> (ZILkotlin/jvm/internal/DefaultConstructorMarker;)V
26+
public final fun component1 ()Z
27+
public final fun copy (Z)Lio/github/charlietap/chasm/gradle/CodegenConfig;
28+
public static synthetic fun copy$default (Lio/github/charlietap/chasm/gradle/CodegenConfig;ZILjava/lang/Object;)Lio/github/charlietap/chasm/gradle/CodegenConfig;
29+
public fun equals (Ljava/lang/Object;)Z
30+
public final fun getGenerateTypesafeGlobalProperties ()Z
31+
public fun hashCode ()I
32+
public fun toString ()Ljava/lang/String;
33+
}
34+
35+
public abstract class io/github/charlietap/chasm/gradle/CodegenTask : org/gradle/api/DefaultTask {
36+
public fun <init> ()V
37+
public final fun generate ()V
38+
public abstract fun getBinary ()Lorg/gradle/api/file/RegularFileProperty;
39+
public abstract fun getConfig ()Lorg/gradle/api/provider/Property;
40+
public abstract fun getFunctions ()Lorg/gradle/api/provider/ListProperty;
41+
public abstract fun getImplementationVisibility ()Lorg/gradle/api/provider/Property;
42+
public abstract fun getInitializers ()Lorg/gradle/api/provider/SetProperty;
43+
public abstract fun getInterfaceName ()Lorg/gradle/api/provider/Property;
44+
public abstract fun getInterfaceVisibility ()Lorg/gradle/api/provider/Property;
45+
public abstract fun getOutputDirectory ()Lorg/gradle/api/file/DirectoryProperty;
46+
public abstract fun getPackageName ()Lorg/gradle/api/provider/Property;
47+
}
48+
49+
public final class io/github/charlietap/chasm/gradle/FunctionParameterDefinition : java/io/Serializable {
50+
public fun <init> (Ljava/lang/String;Lio/github/charlietap/chasm/gradle/Type;Lio/github/charlietap/chasm/gradle/StringEncodingStrategy;)V
51+
public synthetic fun <init> (Ljava/lang/String;Lio/github/charlietap/chasm/gradle/Type;Lio/github/charlietap/chasm/gradle/StringEncodingStrategy;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
52+
public final fun component1 ()Ljava/lang/String;
53+
public final fun component2 ()Lio/github/charlietap/chasm/gradle/Type;
54+
public final fun component3 ()Lio/github/charlietap/chasm/gradle/StringEncodingStrategy;
55+
public final fun copy (Ljava/lang/String;Lio/github/charlietap/chasm/gradle/Type;Lio/github/charlietap/chasm/gradle/StringEncodingStrategy;)Lio/github/charlietap/chasm/gradle/FunctionParameterDefinition;
56+
public static synthetic fun copy$default (Lio/github/charlietap/chasm/gradle/FunctionParameterDefinition;Ljava/lang/String;Lio/github/charlietap/chasm/gradle/Type;Lio/github/charlietap/chasm/gradle/StringEncodingStrategy;ILjava/lang/Object;)Lio/github/charlietap/chasm/gradle/FunctionParameterDefinition;
57+
public fun equals (Ljava/lang/Object;)Z
58+
public final fun getName ()Ljava/lang/String;
59+
public final fun getStringEncodingStrategy ()Lio/github/charlietap/chasm/gradle/StringEncodingStrategy;
60+
public final fun getType ()Lio/github/charlietap/chasm/gradle/Type;
61+
public fun hashCode ()I
62+
public fun toString ()Ljava/lang/String;
63+
}
64+
65+
public final class io/github/charlietap/chasm/gradle/Mode : java/lang/Enum {
66+
public static final field CONSUMER Lio/github/charlietap/chasm/gradle/Mode;
67+
public static final field PRODUCER Lio/github/charlietap/chasm/gradle/Mode;
68+
public static fun getEntries ()Lkotlin/enums/EnumEntries;
69+
public static fun valueOf (Ljava/lang/String;)Lio/github/charlietap/chasm/gradle/Mode;
70+
public static fun values ()[Lio/github/charlietap/chasm/gradle/Mode;
71+
}
72+
73+
public final class io/github/charlietap/chasm/gradle/ReturnTypeDefinition : java/io/Serializable {
74+
public fun <init> (Lio/github/charlietap/chasm/gradle/Type;Lio/github/charlietap/chasm/gradle/StringEncodingStrategy;)V
75+
public synthetic fun <init> (Lio/github/charlietap/chasm/gradle/Type;Lio/github/charlietap/chasm/gradle/StringEncodingStrategy;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
76+
public final fun component1 ()Lio/github/charlietap/chasm/gradle/Type;
77+
public final fun component2 ()Lio/github/charlietap/chasm/gradle/StringEncodingStrategy;
78+
public final fun copy (Lio/github/charlietap/chasm/gradle/Type;Lio/github/charlietap/chasm/gradle/StringEncodingStrategy;)Lio/github/charlietap/chasm/gradle/ReturnTypeDefinition;
79+
public static synthetic fun copy$default (Lio/github/charlietap/chasm/gradle/ReturnTypeDefinition;Lio/github/charlietap/chasm/gradle/Type;Lio/github/charlietap/chasm/gradle/StringEncodingStrategy;ILjava/lang/Object;)Lio/github/charlietap/chasm/gradle/ReturnTypeDefinition;
80+
public fun equals (Ljava/lang/Object;)Z
81+
public final fun getStringEncodingStrategy ()Lio/github/charlietap/chasm/gradle/StringEncodingStrategy;
82+
public final fun getType ()Lio/github/charlietap/chasm/gradle/Type;
83+
public fun hashCode ()I
84+
public fun toString ()Ljava/lang/String;
85+
}
86+
87+
public final class io/github/charlietap/chasm/gradle/RuntimeDependencyConfiguration : java/lang/Enum {
88+
public static final field API Lio/github/charlietap/chasm/gradle/RuntimeDependencyConfiguration;
89+
public static final field IMPLEMENTATION Lio/github/charlietap/chasm/gradle/RuntimeDependencyConfiguration;
90+
public static fun getEntries ()Lkotlin/enums/EnumEntries;
91+
public static fun valueOf (Ljava/lang/String;)Lio/github/charlietap/chasm/gradle/RuntimeDependencyConfiguration;
92+
public static fun values ()[Lio/github/charlietap/chasm/gradle/RuntimeDependencyConfiguration;
93+
}
94+
95+
public final class io/github/charlietap/chasm/gradle/Scalar : java/lang/Enum, io/github/charlietap/chasm/gradle/Type {
96+
public static final field Double Lio/github/charlietap/chasm/gradle/Scalar;
97+
public static final field Float Lio/github/charlietap/chasm/gradle/Scalar;
98+
public static final field Integer Lio/github/charlietap/chasm/gradle/Scalar;
99+
public static final field Long Lio/github/charlietap/chasm/gradle/Scalar;
100+
public static final field String Lio/github/charlietap/chasm/gradle/Scalar;
101+
public static final field Unit Lio/github/charlietap/chasm/gradle/Scalar;
102+
public static fun getEntries ()Lkotlin/enums/EnumEntries;
103+
public static fun valueOf (Ljava/lang/String;)Lio/github/charlietap/chasm/gradle/Scalar;
104+
public static fun values ()[Lio/github/charlietap/chasm/gradle/Scalar;
105+
}
106+
107+
public final class io/github/charlietap/chasm/gradle/StringEncodingStrategy : java/lang/Enum {
108+
public static final field LENGTH_PREFIXED Lio/github/charlietap/chasm/gradle/StringEncodingStrategy;
109+
public static final field NULL_TERMINATED Lio/github/charlietap/chasm/gradle/StringEncodingStrategy;
110+
public static final field PACKED_POINTER_AND_LENGTH Lio/github/charlietap/chasm/gradle/StringEncodingStrategy;
111+
public static final field POINTER_AND_LENGTH Lio/github/charlietap/chasm/gradle/StringEncodingStrategy;
112+
public static fun getEntries ()Lkotlin/enums/EnumEntries;
113+
public static fun valueOf (Ljava/lang/String;)Lio/github/charlietap/chasm/gradle/StringEncodingStrategy;
114+
public static fun values ()[Lio/github/charlietap/chasm/gradle/StringEncodingStrategy;
115+
}
116+
117+
public abstract interface class io/github/charlietap/chasm/gradle/Type : java/io/Serializable {
118+
}
119+
120+
public final class io/github/charlietap/chasm/gradle/TypeVisibility : java/lang/Enum {
121+
public static final field INTERNAL Lio/github/charlietap/chasm/gradle/TypeVisibility;
122+
public static final field PUBLIC Lio/github/charlietap/chasm/gradle/TypeVisibility;
123+
public static fun getEntries ()Lkotlin/enums/EnumEntries;
124+
public static fun valueOf (Ljava/lang/String;)Lio/github/charlietap/chasm/gradle/TypeVisibility;
125+
public static fun values ()[Lio/github/charlietap/chasm/gradle/TypeVisibility;
126+
}
127+
128+
public final class io/github/charlietap/chasm/gradle/WasmFunction : java/io/Serializable {
129+
public fun <init> (Ljava/lang/String;Ljava/util/List;Lio/github/charlietap/chasm/gradle/ReturnTypeDefinition;)V
130+
public final fun component1 ()Ljava/lang/String;
131+
public final fun component2 ()Ljava/util/List;
132+
public final fun component3 ()Lio/github/charlietap/chasm/gradle/ReturnTypeDefinition;
133+
public final fun copy (Ljava/lang/String;Ljava/util/List;Lio/github/charlietap/chasm/gradle/ReturnTypeDefinition;)Lio/github/charlietap/chasm/gradle/WasmFunction;
134+
public static synthetic fun copy$default (Lio/github/charlietap/chasm/gradle/WasmFunction;Ljava/lang/String;Ljava/util/List;Lio/github/charlietap/chasm/gradle/ReturnTypeDefinition;ILjava/lang/Object;)Lio/github/charlietap/chasm/gradle/WasmFunction;
135+
public fun equals (Ljava/lang/Object;)Z
136+
public final fun getName ()Ljava/lang/String;
137+
public final fun getParameters ()Ljava/util/List;
138+
public final fun getReturnType ()Lio/github/charlietap/chasm/gradle/ReturnTypeDefinition;
139+
public fun hashCode ()I
140+
public fun toString ()Ljava/lang/String;
141+
}
142+
143+
public final class io/github/charlietap/chasm/gradle/WasmFunctionBuilder {
144+
public fun <init> (Ljava/lang/String;)V
145+
public final fun build ()Lio/github/charlietap/chasm/gradle/WasmFunction;
146+
public final fun doubleParam (Ljava/lang/String;)V
147+
public final fun doubleReturnType ()V
148+
public final fun floatParam (Ljava/lang/String;)V
149+
public final fun floatReturnType ()V
150+
public final fun getName ()Ljava/lang/String;
151+
public final fun intParam (Ljava/lang/String;)V
152+
public final fun intReturnType ()V
153+
public final fun longParam (Ljava/lang/String;)V
154+
public final fun longReturnType ()V
155+
public final fun stringReturnType (Lio/github/charlietap/chasm/gradle/StringEncodingStrategy;)V
156+
public static synthetic fun stringReturnType$default (Lio/github/charlietap/chasm/gradle/WasmFunctionBuilder;Lio/github/charlietap/chasm/gradle/StringEncodingStrategy;ILjava/lang/Object;)V
157+
}
158+
159+
public abstract class io/github/charlietap/chasm/gradle/WasmModule {
160+
public static final field DEFAULT_MODULE_FILE_PATH Ljava/lang/String;
161+
public fun <init> (Lorg/gradle/api/Project;Ljava/lang/String;)V
162+
public final fun function (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V
163+
public abstract fun getBinary ()Lorg/gradle/api/file/RegularFileProperty;
164+
public abstract fun getCodegenConfig ()Lorg/gradle/api/provider/Property;
165+
public abstract fun getFunctions ()Lorg/gradle/api/provider/ListProperty;
166+
public abstract fun getImplementationVisibility ()Lorg/gradle/api/provider/Property;
167+
public abstract fun getInitializers ()Lorg/gradle/api/provider/SetProperty;
168+
public abstract fun getInterfaceVisibility ()Lorg/gradle/api/provider/Property;
169+
public final fun getName ()Ljava/lang/String;
170+
public abstract fun getPackageName ()Lorg/gradle/api/provider/Property;
171+
public final fun getProject ()Lorg/gradle/api/Project;
172+
}
173+

chasm-gradle-plugin/build.gradle.kts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import org.jetbrains.kotlin.gradle.dsl.abi.ExperimentalAbiValidation
2+
13
plugins {
24
alias(libs.plugins.kotlin.jvm)
35
alias(libs.plugins.build.config)
@@ -30,6 +32,12 @@ gradlePlugin {
3032
}
3133

3234
kotlin {
35+
36+
@OptIn(ExperimentalAbiValidation::class)
37+
abiValidation {
38+
enabled.set(true)
39+
}
40+
3341
compilerOptions {
3442
freeCompilerArgs.add("-Xwhen-guards")
3543
}

0 commit comments

Comments
 (0)