Skip to content

Commit ce2b133

Browse files
committed
Enable binary compatibility validation
1 parent 72a15f6 commit ce2b133

10 files changed

+1938
-0
lines changed

benchmarks/api/benchmarks.api

Whitespace-only changes.

build.gradle.kts

+8
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ plugins {
22
id("kotlinx.team.infra") version "0.4.0-dev-81"
33
kotlin("multiplatform") apply false
44
id("org.jetbrains.kotlinx.kover") version "0.8.0-Beta2"
5+
id("org.jetbrains.kotlinx.binary-compatibility-validator") version "0.16.3"
56
}
67

78
infra {
@@ -57,3 +58,10 @@ dependencies {
5758
kover(project(":kotlinx-datetime"))
5859
kover(project(":kotlinx-datetime-serialization"))
5960
}
61+
62+
apiValidation {
63+
@OptIn(kotlinx.validation.ExperimentalBCVApi::class)
64+
klib {
65+
enabled = true
66+
}
67+
}

core/api/kotlinx-datetime.api

+881
Large diffs are not rendered by default.

core/api/kotlinx-datetime.klib.api

+935
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
public abstract interface class kotlinx/time/Clock {
2+
public static final field Companion Lkotlinx/time/Clock$Companion;
3+
public abstract fun now ()Lkotlinx/time/Instant;
4+
}
5+
6+
public final class kotlinx/time/Clock$Companion {
7+
}
8+
9+
public final class kotlinx/time/Clock$System : kotlinx/time/Clock {
10+
public static final field INSTANCE Lkotlinx/time/Clock$System;
11+
public fun now ()Lkotlinx/time/Instant;
12+
}
13+
14+
public final class kotlinx/time/ConvertersKt {
15+
public static final fun toJavaInstant (Lkotlinx/time/Instant;)Ljava/time/Instant;
16+
public static final fun toKotlinInstant (Ljava/time/Instant;)Lkotlinx/time/Instant;
17+
}
18+
19+
public final class kotlinx/time/Instant : java/lang/Comparable {
20+
public static final field Companion Lkotlinx/time/Instant$Companion;
21+
public synthetic fun compareTo (Ljava/lang/Object;)I
22+
public fun compareTo (Lkotlinx/time/Instant;)I
23+
public fun equals (Ljava/lang/Object;)Z
24+
public final fun getEpochSeconds ()J
25+
public final fun getNanosecondsOfSecond ()I
26+
public fun hashCode ()I
27+
public final fun minus-5sfh64U (Lkotlinx/time/Instant;)J
28+
public final fun minus-LRDsOJo (J)Lkotlinx/time/Instant;
29+
public final fun plus-LRDsOJo (J)Lkotlinx/time/Instant;
30+
public final fun toEpochMilliseconds ()J
31+
public fun toString ()Ljava/lang/String;
32+
}
33+
34+
public final class kotlinx/time/Instant$Companion {
35+
public final fun fromEpochMilliseconds (J)Lkotlinx/time/Instant;
36+
public final fun fromEpochSeconds (JI)Lkotlinx/time/Instant;
37+
public final fun fromEpochSeconds (JJ)Lkotlinx/time/Instant;
38+
public static synthetic fun fromEpochSeconds$default (Lkotlinx/time/Instant$Companion;JJILjava/lang/Object;)Lkotlinx/time/Instant;
39+
public final fun getDISTANT_FUTURE ()Lkotlinx/time/Instant;
40+
public final fun getDISTANT_PAST ()Lkotlinx/time/Instant;
41+
public final fun now ()Lkotlinx/time/Instant;
42+
public final fun parse (Ljava/lang/CharSequence;)Lkotlinx/time/Instant;
43+
}
44+
45+
public final class kotlinx/time/InstantKt {
46+
public static final fun isDistantFuture (Lkotlinx/time/Instant;)Z
47+
public static final fun isDistantPast (Lkotlinx/time/Instant;)Z
48+
}
49+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
// Klib ABI Dump
2+
// Targets: [androidNativeArm32, androidNativeArm64, androidNativeX64, androidNativeX86, iosArm64, iosSimulatorArm64, iosX64, js, linuxArm32Hfp, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, wasmJs, wasmWasi, watchosArm32, watchosArm64, watchosDeviceArm64, watchosSimulatorArm64, watchosX64]
3+
// Rendering settings:
4+
// - Signature version: 2
5+
// - Show manifest properties: true
6+
// - Show declarations: true
7+
8+
// Library unique name: <org.jetbrains.kotlinx:fake-kotlinx-time>
9+
abstract interface kotlinx.time/Clock { // kotlinx.time/Clock|null[0]
10+
abstract fun now(): kotlinx.time/Instant // kotlinx.time/Clock.now|now(){}[0]
11+
12+
final object Companion // kotlinx.time/Clock.Companion|null[0]
13+
14+
final object System : kotlinx.time/Clock { // kotlinx.time/Clock.System|null[0]
15+
final fun now(): kotlinx.time/Instant // kotlinx.time/Clock.System.now|now(){}[0]
16+
}
17+
}
18+
19+
final class kotlinx.time/Instant : kotlin/Comparable<kotlinx.time/Instant> { // kotlinx.time/Instant|null[0]
20+
final val epochSeconds // kotlinx.time/Instant.epochSeconds|{}epochSeconds[0]
21+
final fun <get-epochSeconds>(): kotlin/Long // kotlinx.time/Instant.epochSeconds.<get-epochSeconds>|<get-epochSeconds>(){}[0]
22+
final val nanosecondsOfSecond // kotlinx.time/Instant.nanosecondsOfSecond|{}nanosecondsOfSecond[0]
23+
final fun <get-nanosecondsOfSecond>(): kotlin/Int // kotlinx.time/Instant.nanosecondsOfSecond.<get-nanosecondsOfSecond>|<get-nanosecondsOfSecond>(){}[0]
24+
25+
final fun compareTo(kotlinx.time/Instant): kotlin/Int // kotlinx.time/Instant.compareTo|compareTo(kotlinx.time.Instant){}[0]
26+
final fun equals(kotlin/Any?): kotlin/Boolean // kotlinx.time/Instant.equals|equals(kotlin.Any?){}[0]
27+
final fun hashCode(): kotlin/Int // kotlinx.time/Instant.hashCode|hashCode(){}[0]
28+
final fun minus(kotlin.time/Duration): kotlinx.time/Instant // kotlinx.time/Instant.minus|minus(kotlin.time.Duration){}[0]
29+
final fun minus(kotlinx.time/Instant): kotlin.time/Duration // kotlinx.time/Instant.minus|minus(kotlinx.time.Instant){}[0]
30+
final fun plus(kotlin.time/Duration): kotlinx.time/Instant // kotlinx.time/Instant.plus|plus(kotlin.time.Duration){}[0]
31+
final fun toEpochMilliseconds(): kotlin/Long // kotlinx.time/Instant.toEpochMilliseconds|toEpochMilliseconds(){}[0]
32+
final fun toString(): kotlin/String // kotlinx.time/Instant.toString|toString(){}[0]
33+
34+
final object Companion { // kotlinx.time/Instant.Companion|null[0]
35+
final val DISTANT_FUTURE // kotlinx.time/Instant.Companion.DISTANT_FUTURE|{}DISTANT_FUTURE[0]
36+
final fun <get-DISTANT_FUTURE>(): kotlinx.time/Instant // kotlinx.time/Instant.Companion.DISTANT_FUTURE.<get-DISTANT_FUTURE>|<get-DISTANT_FUTURE>(){}[0]
37+
final val DISTANT_PAST // kotlinx.time/Instant.Companion.DISTANT_PAST|{}DISTANT_PAST[0]
38+
final fun <get-DISTANT_PAST>(): kotlinx.time/Instant // kotlinx.time/Instant.Companion.DISTANT_PAST.<get-DISTANT_PAST>|<get-DISTANT_PAST>(){}[0]
39+
40+
final fun fromEpochMilliseconds(kotlin/Long): kotlinx.time/Instant // kotlinx.time/Instant.Companion.fromEpochMilliseconds|fromEpochMilliseconds(kotlin.Long){}[0]
41+
final fun fromEpochSeconds(kotlin/Long, kotlin/Int): kotlinx.time/Instant // kotlinx.time/Instant.Companion.fromEpochSeconds|fromEpochSeconds(kotlin.Long;kotlin.Int){}[0]
42+
final fun fromEpochSeconds(kotlin/Long, kotlin/Long =...): kotlinx.time/Instant // kotlinx.time/Instant.Companion.fromEpochSeconds|fromEpochSeconds(kotlin.Long;kotlin.Long){}[0]
43+
final fun now(): kotlinx.time/Instant // kotlinx.time/Instant.Companion.now|now(){}[0]
44+
final fun parse(kotlin/CharSequence): kotlinx.time/Instant // kotlinx.time/Instant.Companion.parse|parse(kotlin.CharSequence){}[0]
45+
}
46+
}
47+
48+
final val kotlinx.time/isDistantFuture // kotlinx.time/isDistantFuture|@kotlinx.time.Instant{}isDistantFuture[0]
49+
final fun (kotlinx.time/Instant).<get-isDistantFuture>(): kotlin/Boolean // kotlinx.time/isDistantFuture.<get-isDistantFuture>|<get-isDistantFuture>@kotlinx.time.Instant(){}[0]
50+
final val kotlinx.time/isDistantPast // kotlinx.time/isDistantPast|@kotlinx.time.Instant{}isDistantPast[0]
51+
final fun (kotlinx.time/Instant).<get-isDistantPast>(): kotlin/Boolean // kotlinx.time/isDistantPast.<get-isDistantPast>|<get-isDistantPast>@kotlinx.time.Instant(){}[0]
52+
53+
// Targets: [js]
54+
final fun (kotlin.js/Date).kotlinx.time/toKotlinInstant(): kotlinx.time/Instant // kotlinx.time/toKotlinInstant|[email protected](){}[0]
55+
56+
// Targets: [js]
57+
final fun (kotlinx.time/Instant).kotlinx.time/toJSDate(): kotlin.js/Date // kotlinx.time/toJSDate|[email protected](){}[0]

js-without-timezones/api/kotlinx-datetime-js-without-timezones.klib.api

Whitespace-only changes.

serialization/api/kotlinx-datetime-serialization.api

Whitespace-only changes.

serialization/api/kotlinx-datetime-serialization.klib.api

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// Klib ABI Dump
2+
// Targets: [wasmWasi]
3+
// Rendering settings:
4+
// - Signature version: 2
5+
// - Show manifest properties: true
6+
// - Show declarations: true
7+
8+
// Library unique name: <org.jetbrains.kotlinx:kotlinx-datetime-zoneinfo>

0 commit comments

Comments
 (0)