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
Scanner
interface 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-tuulbox
module (#689)