Skip to content

Commit

Permalink
Enable KLib ABI validation (#402)
Browse files Browse the repository at this point in the history
  • Loading branch information
Goooler authored Nov 6, 2024
1 parent a38320f commit 4a0ea16
Show file tree
Hide file tree
Showing 10 changed files with 341 additions and 2 deletions.
5 changes: 5 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@ plugins {

}
apiValidation {
@OptIn(kotlinx.validation.ExperimentalBCVApi::class)
klib {
enabled = true
}

nonPublicMarkers.add("co.touchlab.kermit.ExperimentalKermitApi")
// ignoredProjects.addAll(listOf("kermit-gradle-plugin", "kermit-ir-plugin", "kermit-ir-plugin-native"))
}
Expand Down
8 changes: 8 additions & 0 deletions extensions/kermit-bugsnag/api/kermit-bugsnag.klib.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
// Klib ABI Dump
// Targets: [iosArm64, iosSimulatorArm64, iosX64, macosArm64, macosX64, tvosArm64, tvosSimulatorArm64, tvosX64, watchosArm32, watchosArm64, watchosDeviceArm64, watchosSimulatorArm64, watchosX64]
// Rendering settings:
// - Signature version: 2
// - Show manifest properties: true
// - Show declarations: true

// Library unique name: <co.touchlab:kermit-bugsnag>
8 changes: 8 additions & 0 deletions extensions/kermit-crashlytics/api/kermit-crashlytics.klib.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
// Klib ABI Dump
// Targets: [iosArm64, iosSimulatorArm64, iosX64, macosArm64, macosX64, tvosArm64, tvosSimulatorArm64, tvosX64, watchosArm32, watchosArm64, watchosDeviceArm64, watchosSimulatorArm64, watchosX64]
// Rendering settings:
// - Signature version: 2
// - Show manifest properties: true
// - Show declarations: true

// Library unique name: <co.touchlab:kermit-crashlytics>
16 changes: 16 additions & 0 deletions extensions/kermit-koin/api/kermit-koin.klib.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// Klib ABI Dump
// Targets: [iosArm64, iosSimulatorArm64, iosX64, js, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, watchosArm64, watchosSimulatorArm64, watchosX64]
// Rendering settings:
// - Signature version: 2
// - Show manifest properties: true
// - Show declarations: true

// Library unique name: <co.touchlab:kermit-koin>
final class co.touchlab.kermit.koin/KermitKoinLogger : org.koin.core.logger/Logger { // co.touchlab.kermit.koin/KermitKoinLogger|null[0]
constructor <init>(co.touchlab.kermit/Logger) // co.touchlab.kermit.koin/KermitKoinLogger.<init>|<init>(co.touchlab.kermit.Logger){}[0]

final fun display(org.koin.core.logger/Level, kotlin/String) // co.touchlab.kermit.koin/KermitKoinLogger.display|display(org.koin.core.logger.Level;kotlin.String){}[0]
}

final fun co.touchlab.kermit.koin/kermitLoggerModule(co.touchlab.kermit/Logger): org.koin.core.module/Module // co.touchlab.kermit.koin/kermitLoggerModule|kermitLoggerModule(co.touchlab.kermit.Logger){}[0]
final inline fun <#A: reified co.touchlab.kermit/Logger> (org.koin.core.scope/Scope).co.touchlab.kermit.koin/getLoggerWithTag(kotlin/String): #A // co.touchlab.kermit.koin/getLoggerWithTag|[email protected](kotlin.String){0§<co.touchlab.kermit.Logger>}[0]
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ compileSdk = "34"

# Dependencies
kotlin = "1.9.22"
binaryCompatability = "0.13.2"
binaryCompatability = "0.16.3"

androidx-core = "1.12.0"
androidx-appcompat = "1.6.1"
Expand Down
190 changes: 190 additions & 0 deletions kermit-core/api/kermit-core.klib.api

Large diffs are not rendered by default.

57 changes: 57 additions & 0 deletions kermit-simple/api/kermit-simple.klib.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
// Klib ABI Dump
// Targets: [androidNativeArm32, androidNativeArm64, androidNativeX64, androidNativeX86, iosArm64, iosSimulatorArm64, iosX64, js, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, wasmJs, watchosArm32, watchosArm64, watchosDeviceArm64, watchosSimulatorArm64, watchosX64]
// Rendering settings:
// - Signature version: 2
// - Show manifest properties: true
// - Show declarations: true

// Library unique name: <co.touchlab:kermit-simple>
final fun (co.touchlab.kermit/Logger).co.touchlab.kermit/a(kotlin/Function0<kotlin/String>) // co.touchlab.kermit/a|[email protected](kotlin.Function0<kotlin.String>){}[0]
final fun (co.touchlab.kermit/Logger).co.touchlab.kermit/a(kotlin/String) // co.touchlab.kermit/a|[email protected](kotlin.String){}[0]
final fun (co.touchlab.kermit/Logger).co.touchlab.kermit/a(kotlin/String, kotlin/Throwable) // co.touchlab.kermit/a|[email protected](kotlin.String;kotlin.Throwable){}[0]
final fun (co.touchlab.kermit/Logger).co.touchlab.kermit/a(kotlin/Throwable, kotlin/Function0<kotlin/String>) // co.touchlab.kermit/a|[email protected](kotlin.Throwable;kotlin.Function0<kotlin.String>){}[0]
final fun (co.touchlab.kermit/Logger).co.touchlab.kermit/d(kotlin/Function0<kotlin/String>) // co.touchlab.kermit/d|[email protected](kotlin.Function0<kotlin.String>){}[0]
final fun (co.touchlab.kermit/Logger).co.touchlab.kermit/d(kotlin/String) // co.touchlab.kermit/d|[email protected](kotlin.String){}[0]
final fun (co.touchlab.kermit/Logger).co.touchlab.kermit/d(kotlin/String, kotlin/Throwable) // co.touchlab.kermit/d|[email protected](kotlin.String;kotlin.Throwable){}[0]
final fun (co.touchlab.kermit/Logger).co.touchlab.kermit/d(kotlin/Throwable, kotlin/Function0<kotlin/String>) // co.touchlab.kermit/d|[email protected](kotlin.Throwable;kotlin.Function0<kotlin.String>){}[0]
final fun (co.touchlab.kermit/Logger).co.touchlab.kermit/e(kotlin/Function0<kotlin/String>) // co.touchlab.kermit/e|[email protected](kotlin.Function0<kotlin.String>){}[0]
final fun (co.touchlab.kermit/Logger).co.touchlab.kermit/e(kotlin/String) // co.touchlab.kermit/e|[email protected](kotlin.String){}[0]
final fun (co.touchlab.kermit/Logger).co.touchlab.kermit/e(kotlin/String, kotlin/Throwable) // co.touchlab.kermit/e|[email protected](kotlin.String;kotlin.Throwable){}[0]
final fun (co.touchlab.kermit/Logger).co.touchlab.kermit/e(kotlin/Throwable, kotlin/Function0<kotlin/String>) // co.touchlab.kermit/e|[email protected](kotlin.Throwable;kotlin.Function0<kotlin.String>){}[0]
final fun (co.touchlab.kermit/Logger).co.touchlab.kermit/i(kotlin/Function0<kotlin/String>) // co.touchlab.kermit/i|[email protected](kotlin.Function0<kotlin.String>){}[0]
final fun (co.touchlab.kermit/Logger).co.touchlab.kermit/i(kotlin/String) // co.touchlab.kermit/i|[email protected](kotlin.String){}[0]
final fun (co.touchlab.kermit/Logger).co.touchlab.kermit/i(kotlin/String, kotlin/Throwable) // co.touchlab.kermit/i|[email protected](kotlin.String;kotlin.Throwable){}[0]
final fun (co.touchlab.kermit/Logger).co.touchlab.kermit/i(kotlin/Throwable, kotlin/Function0<kotlin/String>) // co.touchlab.kermit/i|[email protected](kotlin.Throwable;kotlin.Function0<kotlin.String>){}[0]
final fun (co.touchlab.kermit/Logger).co.touchlab.kermit/v(kotlin/Function0<kotlin/String>) // co.touchlab.kermit/v|[email protected](kotlin.Function0<kotlin.String>){}[0]
final fun (co.touchlab.kermit/Logger).co.touchlab.kermit/v(kotlin/String) // co.touchlab.kermit/v|[email protected](kotlin.String){}[0]
final fun (co.touchlab.kermit/Logger).co.touchlab.kermit/v(kotlin/String, kotlin/Throwable) // co.touchlab.kermit/v|[email protected](kotlin.String;kotlin.Throwable){}[0]
final fun (co.touchlab.kermit/Logger).co.touchlab.kermit/v(kotlin/Throwable, kotlin/Function0<kotlin/String>) // co.touchlab.kermit/v|[email protected](kotlin.Throwable;kotlin.Function0<kotlin.String>){}[0]
final fun (co.touchlab.kermit/Logger).co.touchlab.kermit/w(kotlin/Function0<kotlin/String>) // co.touchlab.kermit/w|[email protected](kotlin.Function0<kotlin.String>){}[0]
final fun (co.touchlab.kermit/Logger).co.touchlab.kermit/w(kotlin/String) // co.touchlab.kermit/w|[email protected](kotlin.String){}[0]
final fun (co.touchlab.kermit/Logger).co.touchlab.kermit/w(kotlin/String, kotlin/Throwable) // co.touchlab.kermit/w|[email protected](kotlin.String;kotlin.Throwable){}[0]
final fun (co.touchlab.kermit/Logger).co.touchlab.kermit/w(kotlin/Throwable, kotlin/Function0<kotlin/String>) // co.touchlab.kermit/w|[email protected](kotlin.Throwable;kotlin.Function0<kotlin.String>){}[0]
final fun co.touchlab.kermit/a(kotlin/Function0<kotlin/String>) // co.touchlab.kermit/a|a(kotlin.Function0<kotlin.String>){}[0]
final fun co.touchlab.kermit/a(kotlin/String) // co.touchlab.kermit/a|a(kotlin.String){}[0]
final fun co.touchlab.kermit/a(kotlin/String, kotlin/Throwable) // co.touchlab.kermit/a|a(kotlin.String;kotlin.Throwable){}[0]
final fun co.touchlab.kermit/a(kotlin/Throwable, kotlin/Function0<kotlin/String>) // co.touchlab.kermit/a|a(kotlin.Throwable;kotlin.Function0<kotlin.String>){}[0]
final fun co.touchlab.kermit/d(kotlin/Function0<kotlin/String>) // co.touchlab.kermit/d|d(kotlin.Function0<kotlin.String>){}[0]
final fun co.touchlab.kermit/d(kotlin/String) // co.touchlab.kermit/d|d(kotlin.String){}[0]
final fun co.touchlab.kermit/d(kotlin/String, kotlin/Throwable) // co.touchlab.kermit/d|d(kotlin.String;kotlin.Throwable){}[0]
final fun co.touchlab.kermit/d(kotlin/Throwable, kotlin/Function0<kotlin/String>) // co.touchlab.kermit/d|d(kotlin.Throwable;kotlin.Function0<kotlin.String>){}[0]
final fun co.touchlab.kermit/e(kotlin/Function0<kotlin/String>) // co.touchlab.kermit/e|e(kotlin.Function0<kotlin.String>){}[0]
final fun co.touchlab.kermit/e(kotlin/String) // co.touchlab.kermit/e|e(kotlin.String){}[0]
final fun co.touchlab.kermit/e(kotlin/String, kotlin/Throwable) // co.touchlab.kermit/e|e(kotlin.String;kotlin.Throwable){}[0]
final fun co.touchlab.kermit/e(kotlin/Throwable, kotlin/Function0<kotlin/String>) // co.touchlab.kermit/e|e(kotlin.Throwable;kotlin.Function0<kotlin.String>){}[0]
final fun co.touchlab.kermit/i(kotlin/Function0<kotlin/String>) // co.touchlab.kermit/i|i(kotlin.Function0<kotlin.String>){}[0]
final fun co.touchlab.kermit/i(kotlin/String) // co.touchlab.kermit/i|i(kotlin.String){}[0]
final fun co.touchlab.kermit/i(kotlin/String, kotlin/Throwable) // co.touchlab.kermit/i|i(kotlin.String;kotlin.Throwable){}[0]
final fun co.touchlab.kermit/i(kotlin/Throwable, kotlin/Function0<kotlin/String>) // co.touchlab.kermit/i|i(kotlin.Throwable;kotlin.Function0<kotlin.String>){}[0]
final fun co.touchlab.kermit/v(kotlin/Function0<kotlin/String>) // co.touchlab.kermit/v|v(kotlin.Function0<kotlin.String>){}[0]
final fun co.touchlab.kermit/v(kotlin/String) // co.touchlab.kermit/v|v(kotlin.String){}[0]
final fun co.touchlab.kermit/v(kotlin/String, kotlin/Throwable) // co.touchlab.kermit/v|v(kotlin.String;kotlin.Throwable){}[0]
final fun co.touchlab.kermit/v(kotlin/Throwable, kotlin/Function0<kotlin/String>) // co.touchlab.kermit/v|v(kotlin.Throwable;kotlin.Function0<kotlin.String>){}[0]
final fun co.touchlab.kermit/w(kotlin/Function0<kotlin/String>) // co.touchlab.kermit/w|w(kotlin.Function0<kotlin.String>){}[0]
final fun co.touchlab.kermit/w(kotlin/String) // co.touchlab.kermit/w|w(kotlin.String){}[0]
final fun co.touchlab.kermit/w(kotlin/String, kotlin/Throwable) // co.touchlab.kermit/w|w(kotlin.String;kotlin.Throwable){}[0]
final fun co.touchlab.kermit/w(kotlin/Throwable, kotlin/Function0<kotlin/String>) // co.touchlab.kermit/w|w(kotlin.Throwable;kotlin.Function0<kotlin.String>){}[0]
final fun co.touchlab.kermit/withTag(kotlin/String): co.touchlab.kermit/Logger // co.touchlab.kermit/withTag|withTag(kotlin.String){}[0]
8 changes: 8 additions & 0 deletions kermit-test/api/kermit-test.klib.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
// Klib ABI Dump
// Targets: [androidNativeArm32, androidNativeArm64, androidNativeX64, androidNativeX86, iosArm64, iosSimulatorArm64, iosX64, js, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, wasmJs, watchosArm32, watchosArm64, watchosDeviceArm64, watchosSimulatorArm64, watchosX64]
// Rendering settings:
// - Signature version: 2
// - Show manifest properties: true
// - Show declarations: true

// Library unique name: <co.touchlab:kermit-test>
45 changes: 45 additions & 0 deletions kermit/api/kermit.klib.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
// Klib ABI Dump
// Targets: [androidNativeArm32, androidNativeArm64, androidNativeX64, androidNativeX86, iosArm64, iosSimulatorArm64, iosX64, js, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, wasmJs, watchosArm32, watchosArm64, watchosDeviceArm64, watchosSimulatorArm64, watchosX64]
// Rendering settings:
// - Signature version: 2
// - Show manifest properties: true
// - Show declarations: true

// Library unique name: <co.touchlab:kermit>
open class co.touchlab.kermit/Logger : co.touchlab.kermit/BaseLogger { // co.touchlab.kermit/Logger|null[0]
constructor <init>(co.touchlab.kermit/LoggerConfig, kotlin/String =...) // co.touchlab.kermit/Logger.<init>|<init>(co.touchlab.kermit.LoggerConfig;kotlin.String){}[0]

open val tag // co.touchlab.kermit/Logger.tag|{}tag[0]
open fun <get-tag>(): kotlin/String // co.touchlab.kermit/Logger.tag.<get-tag>|<get-tag>(){}[0]

final fun withTag(kotlin/String): co.touchlab.kermit/Logger // co.touchlab.kermit/Logger.withTag|withTag(kotlin.String){}[0]
final inline fun a(kotlin/String, kotlin/Throwable? =..., kotlin/String =...) // co.touchlab.kermit/Logger.a|a(kotlin.String;kotlin.Throwable?;kotlin.String){}[0]
final inline fun a(kotlin/Throwable? =..., kotlin/String =..., kotlin/Function0<kotlin/String>) // co.touchlab.kermit/Logger.a|a(kotlin.Throwable?;kotlin.String;kotlin.Function0<kotlin.String>){}[0]
final inline fun d(kotlin/String, kotlin/Throwable? =..., kotlin/String =...) // co.touchlab.kermit/Logger.d|d(kotlin.String;kotlin.Throwable?;kotlin.String){}[0]
final inline fun d(kotlin/Throwable? =..., kotlin/String =..., kotlin/Function0<kotlin/String>) // co.touchlab.kermit/Logger.d|d(kotlin.Throwable?;kotlin.String;kotlin.Function0<kotlin.String>){}[0]
final inline fun e(kotlin/String, kotlin/Throwable? =..., kotlin/String =...) // co.touchlab.kermit/Logger.e|e(kotlin.String;kotlin.Throwable?;kotlin.String){}[0]
final inline fun e(kotlin/Throwable? =..., kotlin/String =..., kotlin/Function0<kotlin/String>) // co.touchlab.kermit/Logger.e|e(kotlin.Throwable?;kotlin.String;kotlin.Function0<kotlin.String>){}[0]
final inline fun i(kotlin/String, kotlin/Throwable? =..., kotlin/String =...) // co.touchlab.kermit/Logger.i|i(kotlin.String;kotlin.Throwable?;kotlin.String){}[0]
final inline fun i(kotlin/Throwable? =..., kotlin/String =..., kotlin/Function0<kotlin/String>) // co.touchlab.kermit/Logger.i|i(kotlin.Throwable?;kotlin.String;kotlin.Function0<kotlin.String>){}[0]
final inline fun v(kotlin/String, kotlin/Throwable? =..., kotlin/String =...) // co.touchlab.kermit/Logger.v|v(kotlin.String;kotlin.Throwable?;kotlin.String){}[0]
final inline fun v(kotlin/Throwable? =..., kotlin/String =..., kotlin/Function0<kotlin/String>) // co.touchlab.kermit/Logger.v|v(kotlin.Throwable?;kotlin.String;kotlin.Function0<kotlin.String>){}[0]
final inline fun w(kotlin/String, kotlin/Throwable? =..., kotlin/String =...) // co.touchlab.kermit/Logger.w|w(kotlin.String;kotlin.Throwable?;kotlin.String){}[0]
final inline fun w(kotlin/Throwable? =..., kotlin/String =..., kotlin/Function0<kotlin/String>) // co.touchlab.kermit/Logger.w|w(kotlin.Throwable?;kotlin.String;kotlin.Function0<kotlin.String>){}[0]

final object Companion : co.touchlab.kermit/Logger { // co.touchlab.kermit/Logger.Companion|null[0]
final val tag // co.touchlab.kermit/Logger.Companion.tag|{}tag[0]
final fun <get-tag>(): kotlin/String // co.touchlab.kermit/Logger.Companion.tag.<get-tag>|<get-tag>(){}[0]

final fun a(kotlin/String, kotlin/Throwable? =..., kotlin/Function0<kotlin/String>) // co.touchlab.kermit/Logger.Companion.a|a(kotlin.String;kotlin.Throwable?;kotlin.Function0<kotlin.String>){}[0]
final fun addLogWriter(kotlin/Array<out co.touchlab.kermit/LogWriter>...) // co.touchlab.kermit/Logger.Companion.addLogWriter|addLogWriter(kotlin.Array<out|co.touchlab.kermit.LogWriter>...){}[0]
final fun d(kotlin/String, kotlin/Throwable? =..., kotlin/Function0<kotlin/String>) // co.touchlab.kermit/Logger.Companion.d|d(kotlin.String;kotlin.Throwable?;kotlin.Function0<kotlin.String>){}[0]
final fun e(kotlin/String, kotlin/Throwable? =..., kotlin/Function0<kotlin/String>) // co.touchlab.kermit/Logger.Companion.e|e(kotlin.String;kotlin.Throwable?;kotlin.Function0<kotlin.String>){}[0]
final fun i(kotlin/String, kotlin/Throwable? =..., kotlin/Function0<kotlin/String>) // co.touchlab.kermit/Logger.Companion.i|i(kotlin.String;kotlin.Throwable?;kotlin.Function0<kotlin.String>){}[0]
final fun setLogWriters(kotlin.collections/List<co.touchlab.kermit/LogWriter>) // co.touchlab.kermit/Logger.Companion.setLogWriters|setLogWriters(kotlin.collections.List<co.touchlab.kermit.LogWriter>){}[0]
final fun setLogWriters(kotlin/Array<out co.touchlab.kermit/LogWriter>...) // co.touchlab.kermit/Logger.Companion.setLogWriters|setLogWriters(kotlin.Array<out|co.touchlab.kermit.LogWriter>...){}[0]
final fun setMinSeverity(co.touchlab.kermit/Severity) // co.touchlab.kermit/Logger.Companion.setMinSeverity|setMinSeverity(co.touchlab.kermit.Severity){}[0]
final fun setTag(kotlin/String) // co.touchlab.kermit/Logger.Companion.setTag|setTag(kotlin.String){}[0]
final fun v(kotlin/String, kotlin/Throwable? =..., kotlin/Function0<kotlin/String>) // co.touchlab.kermit/Logger.Companion.v|v(kotlin.String;kotlin.Throwable?;kotlin.Function0<kotlin.String>){}[0]
final fun w(kotlin/String, kotlin/Throwable? =..., kotlin/Function0<kotlin/String>) // co.touchlab.kermit/Logger.Companion.w|w(kotlin.String;kotlin.Throwable?;kotlin.Function0<kotlin.String>){}[0]
}
}
4 changes: 3 additions & 1 deletion settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,6 @@ pluginManagement {
gradlePluginPortal()
mavenCentral()
}
}
}

rootProject.name = "kermit-root"

0 comments on commit 4a0ea16

Please sign in to comment.