-
Notifications
You must be signed in to change notification settings - Fork 116
Description
While using diffuse to investigate a refactor, I am seeing output like this:
jarpath: ../../out-old/dist/top-of-tree-m2repository-all-0.zip.unzipped/m2repository/androidx/compose/ui/ui-tooling-data-android/1.8.0-alpha05/ui-tooling-data-android-1.8.0-alpha05.aar.unzipped/classes.jar
../../prebuilts/build-tools/diffuse/diffuse-0.3.0/bin/diffuse diff --jar ../../out-old/dist/top-of-tree-m2repository-all-0.zip.unzipped/m2repository/androidx/compose/ui/ui-tooling-data-android/1.8.0-alpha05/ui-tooling-data-android-1.8.0-alpha05.aar.unzipped/classes.jar ../../out-new/dist/top-of-tree-m2repository-all-0.zip.unzipped/m2repository/androidx/compose/ui/ui-tooling-data-android/1.8.0-alpha05/ui-tooling-data-android-1.8.0-alpha05.aar.unzipped/classes.jar
OLD: classes.jar
NEW: classes.jar
JAR │ old │ new │ diff
───────┼──────────┼──────────┼────────
class │ 79.5 KiB │ 79.4 KiB │ -144 B
other │ 86 B │ 86 B │ 0 B
───────┼──────────┼──────────┼────────
total │ 79.6 KiB │ 79.5 KiB │ -144 B
CLASSES │ old │ new │ diff
─────────┼─────┼─────┼───────────
classes │ 17 │ 17 │ 0 (+0 -0)
methods │ 266 │ 266 │ 0 (+1 -1)
fields │ 68 │ 68 │ 0 (+0 -0)
=================
==== JAR ====
=================
size │ diff │ path
──────────┼────────┼───────────────────────────────────────────────────────────────────
│ -72 B │ - META-INF/ui-tooling-data_release.kotlin_module
72 B │ +72 B │ + META-INF/ui-tooling-data.kotlin_module
2.7 KiB │ -8 B │ ∆ androidx/compose/ui/tooling/data/CallGroup.class
10.7 KiB │ -8 B │ ∆ androidx/compose/ui/tooling/data/CompositionCallStack.class
1.4 KiB │ -16 B │ ∆ androidx/compose/ui/tooling/data/ContextCache.class
1.3 KiB │ -8 B │ ∆ androidx/compose/ui/tooling/data/EmptyGroup.class
4.6 KiB │ -8 B │ ∆ androidx/compose/ui/tooling/data/Group.class
2.9 KiB │ -8 B │ ∆ androidx/compose/ui/tooling/data/JoinedKey.class
2.5 KiB │ -8 B │ ∆ androidx/compose/ui/tooling/data/NodeGroup.class
1.2 KiB │ -8 B │ ∆ androidx/compose/ui/tooling/data/Parameter.class
4.9 KiB │ -8 B │ ∆ androidx/compose/ui/tooling/data/ParameterInformation.class
590 B │ -8 B │ ∆ androidx/compose/ui/tooling/data/ParseError.class
31.8 KiB │ -16 B │ ∆ androidx/compose/ui/tooling/data/SlotTreeKt.class
1.5 KiB │ -8 B │ ∆ androidx/compose/ui/tooling/data/SourceContext.class
5 KiB │ -8 B │ ∆ androidx/compose/ui/tooling/data/SourceInformationContext.class
3.9 KiB │ -8 B │ ∆ androidx/compose/ui/tooling/data/SourceLocation.class
1.3 KiB │ -8 B │ ∆ androidx/compose/ui/tooling/data/SourceLocationInfo.class
796 B │ -8 B │ ∆ androidx/compose/ui/tooling/data/UiToolingDataApi.class
──────────┼────────┼───────────────────────────────────────────────────────────────────
77.2 KiB │ -144 B │ (total)
=====================
==== CLASSES ====
=====================
METHODS:
old │ new │ diff
─────┼─────┼───────────
266 │ 266 │ 0 (+1 -1)
+ androidx.compose.ui.tooling.data.ContextCache getContexts$ui_tooling_data() → Map
- androidx.compose.ui.tooling.data.ContextCache getContexts$ui_tooling_data_release() → Map
Basically, an AGP upgrade is causing the module name of this jar to change from ui_tooling_data_release to ui_tooling_data. The changed method is a kotlin-internal method that is name mangled with that module name, the renamed kotlin_module file is named by the module name, and the lost bytes are due to the shorter module name in the class file header, AIUI.
While this is in a large part an edge case, at minimum it would be nice to have a flag to exclude internal members from a jar diff. Changes to internal members should never be relevant, though excluding @PublishedApi from that exclusion would probably be appropriate (@PublishedApi aren't name-mangled like that, so they did not appear in this diff).
(It might also be nice to have a configuration flag for only printing the CLASSES or METHODS section, but that's easily doable in post-processing, which could get this down to an actionable warning output.)