0.33.0
Important
Kable's Maven artifact IDs have changed (prefixed with kable-):
kotlin {
sourceSets {
commonMain.dependencies {
implementation("com.juul.kable:kable-core:${kableVersion}")
implementation("com.juul.kable:kable-exceptions:${kableVersion}")
implementation("com.juul.kable:kable-log-engine-khronicle:${kableVersion}")
}
}
}Kable's package names were not changed, only the Maven coordinates; you should only need to update your Gradle configuration (e.g. libs.versions.toml).
Kotlin 2.0.0 (K2) Upgrade
Kable is now built against Kotlin 2.0.0 (K2). 🎉
Note
With this upgrade, the Kotlin compiler became more restrictive with expect/actual declarations, as a result, some Kable APIs have changed:
- Advertisement interfaces (e.g.
AndroidAdvertisement,CoreBluetoothAdvertisement, etc) have been consolidated to a commonPlatformAdvertisement Scannerinterface now defines a generic type for advertisements it will emit:Scanner<PlatformAdvertisement>
For most users, these changes should not impact your code. Some notable instances where you'll need to make code changes:
If you hold a reference to a Scanner in a variable or property, you'll need to change Scanner to use the PlatformScanner type alias, or specify the generic type explicitly, for example:
val scanner: PlatformScanner // or...
val scanner: Scanner<PlatformAdvertisement>If you have any classes that implement the Scanner interface, you'll need to change the interface to PlatformScanner (or Scanner<PlatformAdvertisement>) and change the overridden type of the advertisements property to PlatformAdvertisement, for example:
class ExampleScanner(..) : PlatformScanner {
override val advertisements: Flow<PlatformAdvertisement> = ..
}🚀 Changes
- Update dependency org.jetbrains.kotlin.multiplatform to v2 (#683)
- Replace Tuulbox logging w/ Khronicle (#690)
- Prefix Maven artifacts with
kable-(#692) - Remove
log-engine-tuulboxmodule (#689)