fix(cache): rename LruCache → WeightedLruCache to work around K2 comp…#29
Open
fix(cache): rename LruCache → WeightedLruCache to work around K2 comp…#29
Conversation
…iler bug The Kotlin K2 compiler (2.3.10) silently fails to emit the outer .class file for a commonMain class when a dependency JAR contains a class with the same simple name in a different package. coil-core-jvm-3.2.0.jar ships `coil3.util.LruCache<K,V>` (also compiled from LruCache.kt). The K2 compiler de-duplicated by simple name and dropped `dev.stapler.stelekit.cache.LruCache.class`, leaving only the coroutine continuation inner classes (LruCache$get$1.class etc.). Result: ClassNotFoundException on app startup. Fix: rename to WeightedLruCache, which has no clash in any classpath jar. The name also better documents the distinguishing behaviour (weight-based eviction) vs. the Android / Coil entry-count LRU caches. Also fix PerformanceDashboard.kt which used Dispatchers.IO directly in commonMain (JVM-only); switched to PlatformDispatcher.IO. This was silently failing compileCommonMainKotlinMetadata and masking the root cause during diagnosis. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Owner
|
@claude can you please resolve the merge conflicts on this? I believe that I fixed this a different way so we can clean up this Branch. But keep the unimplemented fixes. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
…iler bug
The Kotlin K2 compiler (2.3.10) silently fails to emit the outer .class file for a commonMain class when a dependency JAR contains a class with the same simple name in a different package.
coil-core-jvm-3.2.0.jar ships
coil3.util.LruCache<K,V>(also compiled from LruCache.kt). The K2 compiler de-duplicated by simple name and droppeddev.stapler.stelekit.cache.LruCache.class, leaving only the coroutine continuation inner classes (LruCache$get$1.class etc.). Result: ClassNotFoundException on app startup.Fix: rename to WeightedLruCache, which has no clash in any classpath jar. The name also better documents the distinguishing behaviour (weight-based eviction) vs. the Android / Coil entry-count LRU caches.
Also fix PerformanceDashboard.kt which used Dispatchers.IO directly in commonMain (JVM-only); switched to PlatformDispatcher.IO. This was silently failing compileCommonMainKotlinMetadata and masking the root cause during diagnosis.