Colton Idle
10/11/2025, 12:43 PMJoffrey
10/11/2025, 1:01 PMimplementation by default. Only expose api dependencies if you use declarations from these dependencies in your own public API (return types, function parameters, supertypes, etc.)Joffrey
10/11/2025, 1:01 PMOliver.O
10/11/2025, 1:03 PMmbonnin
10/11/2025, 2:55 PMDan Rusu
10/11/2025, 4:28 PMColton Idle
10/11/2025, 5:40 PMmbonnin
10/11/2025, 6:13 PMmbonnin
10/11/2025, 6:13 PMColton Idle
10/11/2025, 6:17 PMColton Idle
10/11/2025, 6:19 PMColton Idle
10/11/2025, 6:24 PMkotlin {
@OptIn(org.jetbrains.kotlin.gradle.dsl.abi.ExperimentalAbiValidation::class)
abiValidation {
// Use the set() function to ensure compatibility with older Gradle versions
enabled.set(true)
}
}
to coollib module. Then I ran ./gradlew coollib:updateLegacyAbi and it generated a new file in coollib/api/coollib.api but the file is empty. hmm.
im using kotlin 2.2.20 (worth mentioning because it says its experimental as of 2.2.0)ephemient
10/11/2025, 8:14 PMcompileOnly and it's hard to imagine a case where it would make sense for kotlinx.coroutines (aside from weird cases like https://github.com/junit-team/junit-framework/issues/1914 where I disagree with their approach anyway)ephemient
10/11/2025, 8:15 PMruntimeOnly. that sounds like you don't actually need it, why is it a dependency?eygraber
10/11/2025, 11:40 PMruntimeOnly for coroutines-android because it just uses a service loader (or something like that) to set up the main dispatcher.Colton Idle
10/12/2025, 1:01 AM<https://github.com/Kotlin/binary-compatibility-validator> and that worked. if anyone has any ideas on why the new one genreates blank... let me know!Colton Idle
10/12/2025, 1:21 AMephemient
10/12/2025, 4:10 AMDispatchers.Main then you will use -android at runtime on Android. that doesn't seem like a common thing for a library to need though, and definitely not great for multiplatform since there isn't a main dispatcher on native or jvm (outside of UI)Colton Idle
10/12/2025, 4:13 PMephemient
10/12/2025, 5:56 PMCLOVIS
10/13/2025, 9:09 AMruntimeOnly is not transitive, so if you're creating a library, your users will not have the library, even at runtime, unless they specify it themselves too.mbonnin
10/13/2025, 9:15 AMJoffrey
10/13/2025, 9:15 AMprovided that makes sense (and clearly the semantics is not the same, so it probably shouldn't translate to that)CLOVIS
10/13/2025, 9:36 AMcompileOnly is not transitive though.mbonnin
10/13/2025, 9:36 AMcompileOnly makes sense since dependents do not compile against thisJoffrey
10/13/2025, 9:37 AMcompileOnly not to be transitive, because consumers don't compile your codeephemient
10/13/2025, 7:50 PMruntimeOnly translates to the runtime scope in Maven which has the same meaning