This release focuses on some build improvements and Compose. The two major Compose improvements are adding support for Compose specific transitions (e.g. cross fade) and supporting recomposition based on request state using GlideSubcomposition
. There's also been a bunch of internal refactoring to move away from Painters to Modifier nodes based on feedback from the Compose team. This is still an alpha release of Compose, but barring unexpectedly negative feedback, the next release should be beta.
This should be the last release of Glide that targets Java 7. That probably means our next release will be a major version change.
Features
- Allow passing an executor into ChromiumRequestSerializer in #5077
- Allow host app to provide a way to clear all resources onStop() by @osamaaftab in #5145
Compose
-
Add a Transition API and a CrossFade Transition for Compose by @sjudd in #5235
-
Influence layout using intrinsics in GlideNode by @sjudd in #5240 * Log instead of throwing parsing manifests to fix compose previews by @sjudd in #5167
-
Launch no more than one request per onRemembered by @sjudd in #5062
-
Remove GlidePainter in favor of Modifier nodes / Flows by @sjudd in #5230
-
Replace flows in GlideSubcomposition with a listener on GlideNode by @sjudd in #5238
Bugs
- Read library glide module names from Java indexes by @sjudd in #5052
- Fix typo. anay -> any in GlideSymbolProcessor.kt. by @trevorhackman in #5029
- Include URL in error log by @paulsowden in #5164
- Add
isInitialized
visible for testing method by @paulsowden in #5163 - Use onIdle to avoid a race in FlowTests by @sjudd in #5202
- Add a isEquivalentTo method to correctly check equality by @mori-atsushi in #5232
- Add @RequiresPermission to NotificationTarget by @TWiStErRob in #5220
Deprecations
placeholderOf(@Composable)
inGlideImage
is deprecated, useGlideSubcomposition
instead. Keep in mind that using either forces a recomposition each time the state of the image load changes. Recomposition will have a significant performance penalty in scrolling lists and should be avoided.
Behavior Changes
- Hard code disabling hardware bitmaps on O/OMR1. by @sjudd in #5115
- Do not set requireOriginal on Android photo picker uris. by @phoenixli in #5162
Breaking Changes
Build Changes
- Add integration tests for ksp library modules. by @sjudd in #5054
- Update README.md to use https by @simoarpe in #5058
- Use dokka to build scripts/update_javadocs.sh by @sjudd in #5104
- avif integration: Update libavif dependency by @vigneshvg in #5128
- Disable java 7 source obsolete warning. by @sjudd in #5168
- Update mockito version to fix j16 compilation. by @sjudd in #5169
- Switch Glide's dependencies to a version catalog. by @sjudd in #5183
- Remove jetifier by @sjudd in #5184
- Add an updated proguard plugin to compile on Java 17. by @sjudd in #5185
- Configure Renovate in #5186
- Increment ROBOLECTRIC_SDK to 19 from 18. by @brettchabot in #5208 and #5207
- AGP: Upgrade AndroidManifest.xml's package to build.gradle's namespace. by @TWiStErRob in #5221
New Contributors
- @trevorhackman made their first contribution in #5029
- @simoarpe made their first contribution in #5058
- @paulsowden made their first contribution in #5164
- @phoenixli made their first contribution in #5162
- @osamaaftab made their first contribution in #5145
- @brettchabot made their first contribution in #5207
- @mori-atsushi made their first contribution in #5232
Full Changelog: v4.15.0...v4.16.0
Note - there's been a change in the gpg key used to sign these releases. The new public key is attached