Releases: kean/Nuke
Nuke 13.0 (Beta 1)
Nuke 13 is an incremental release that takes more advantage of Swift Concurrency and Data Race Safety by introducing a global ImagePipelineActor on which its subsystems are all synchronized. It ensures thread-safety, removes 20 usages of @unchecked Sendable, and makes the framework even leaner with ~5% less code in the main module. The future versions will completely switch to Swift Concurrency, but it will require a couple of more iterations.
Requirement: Xcode 16.
- Increase deployment targets to iOS 14, tvOS 14, macOS 11, watchOS 7
- Add global actor
ImagePipelineActor.ImagePipeline,ImageTask,ImagePrefetcher, and some other internal types are synchronized on the new actor. - Soft-deprecate closure-based
ImagePipelineAPIs - Soft-deprecate
ImagePipelineCombine extension and move them toNukeExtensions - Remove
ImagePipeline.Configuration.callbackQueue - Remove
queueparameter fromImagePipelineloadImageandloadDatamethod. The callbacks are now isolated to the@MainActorand are@Sendable. - Add
ImageTask.isCancellingto make it easier to transition to Nuke 13 in case you were usingImageTask.statefor checking for cancellation invoked by the client (this might change in the upcoming betas) - Rename
ImagePipelineDelegatetoImagePipeline.Delegate - Remove
ImagePipeline.DelegateimageTaskDidStartand other methods soft-deprecated in Nuke 12.7. - Remove
ImageRequestinitializers acceptingdataPublisher(Combine) β use Swift Concurrency instead - Update
DataLoadingprotocol to use Swift Concurrency instead of closures - Deprecate
FetchImageCombine support
Nuke 12.8
What's Changed
- Add Swift 6 compatibility
- Add
@MainActorannotation toImageLoadingOptions.shared - Fix image scale and orientation issue in thumbnail creation by @prabhuamol in #793
- Deprecate
ImagePipeline.Configuration.callbackQueueβ this feature will be removed in Nuke 13 ImagePrefetcher.didCompleteclosure is now annotated with@MainActor @Sendable- Drop Xcode 14 support
New Contributors
- @prabhuamol made their first contribution in #793
Nuke 12.8 (Beta 1)
- Deprecate
ImagePipeline.Configuration.callbackQueueβ this feature will be removed in Nuke 13 ImagePrefetcher.didCompleteclosure is now annotated with@MainActor @Sendable- Add
@MainActorannotation toImageLoadingOptions.shared - Drop Xcode 14 support
Nuke 12.7.3
Nuke 12.7.2
- Fix #789, an issue with
ImageProcessors.Resizefailing to resize images with packed pixel formats
Nuke 12.7.1
Nuke 12.7
This release contains major improvements to the Structured Concurrency support and ImagePipeline internals.
- Add
previews: AsyncStream<ImageResponse>,progress: AsyncStream<Progress>,image: PlatformImage asyncandresponse: ImageResponse asyncdirectly toImageTaskand deprecateAsyncImageTask. These APIs have zero cost unless you use them. - Add
ImageTask.Eventand addevents: AsyncStream<Event>toImageTaskfor observing all events associated with the image loading. - Improve the support for
AsyncStream: a new stream is created every time you access the respective property to make it easier to have multiple consumers. - Add
ImagePipelineDelegate/imageTask(:didReceiveEvent:pipeline:)and deprecate the previous methods it replaced (context: these methods were introduced in Nuke 11.0 as the initial and misguided attempt at Structured Concurrency support that tried to borrow from theURLSessionAPI design) - (Internal) Rework
ImagePipelinethat accumulated a lot of cruft after the introduction of data tasks, Combine, Async/Await, and AsyncStream support in the previous releases. - Deprecate
ImagePipeline/loadData(with:)andImagePipeline/data(with:)methods that acceptURLas parameters β use theImageRequestvariants instead (these are rarely used and low-level APIs that don't require convenience variants) - Remove
@discardableResultfromImagePipeline/data(with:) async throwsβ it was never meant to be there - Rename
ImageTask/progresstoImageTask/currentProgress(warning: this is a small breaking change in the API) - Fix some of the Strict Concurrency Checking & Swift 6 warnings preparing for the upcoming Swift releases
- Fix documentation for
AsyncImageTask/previewsthat was previously specifying that it was delivering the previews and the final image β it's only the previews. - Fix #782, an issue with grayscale images (8 bpp) not being rendered correctly when
Resizeprocessor is used
Nuke 12.7 (Beta 1)
π Call for Testing. This release contains some major internal changes to the core APIs. Please help with testing the newly introduced and the existing ImagePipeline APIs, and report any issues before it gets shipped.
This release contains some major improvements to the Structured Concurrency support and introduced a re-engineered ImagePipeline.
- Add
previews: AsyncStream<ImageResponse>,progress: AsyncStream<Progress>,image: PlatformImage asyncandreponse: ImageResponse asyncdirectly toImageTaskand deprecateAsyncImageTask. These APIs have zero cost unless you use them. - Add
ImageTask.Eventand addevents: AsyncStream<Event>toImageTaskfor observing all events associated with the image loading. - Improve the support for
AsyncStream: a new stream is created every time you access the respective property to make it easier to have multiple consumers. - Add
ImagePipelineDelegate/imageTask(:didReceiveEvent:pipeline:)and deprecate the previous methods it replaced (context: these methods were introduced in Nuke 11.0 as the initial and misguided attempt at Structured Concurrency support that tried to borrow from theURLSessionAPI design) - (Internal) Rework
ImagePipelinethat accumulated a lot of cruft after the introduction of data tasks, Combine, Async/Await, and AsyncStream support in the previous releases. - Deprecate
ImagePipeline/loadData(with:)andImagePipeline/data(with:)methods that acceptURLas parameters β use theImageRequestvariants instead (these are rarely used and low-level APIs that don't require convenience variants) - Remove
@discardableResultfromImagePipeline/data(with:) async throwsβ it was never meant to be there - Rename
ImageTask/progresstoImageTask/currentProgress(warning: this is a small breaking change in the API) - Fix some of the Strict Concurrency Checking & Swift 6 warnings preparing for the upcoming Swift releases
- Fix documentation for
AsyncImageTask/previewsthat was previously specifying that it was delivering the previews and the final image β it's only the previews.
Nuke 12.6
Fixes
- Fix an issue with an optimization that is supposed to skip decompression if one or more processors are applied
- Fix a
[Decompressor] Error -17102 decompressing image -- possibly corruptconsole error message when usingImagePipeline.Configuration.isUsingPrepareForDisplay(disabled by default). The pipeline will now skip decompression for.png. - Fix #705 with integration between thumbnail options (link) and original data caching: the original data is now stored without a thumbnail key
- Fix an issue where
.storeAlland.automaticcache policies would not store the thumbnail data - Fix #746 an issue with
ImageRequest.UserInfoKey.scaleKeynot interacting correctly with coalescing - Fix #763 SwiftUI Warning: Accessing StateObject's object without being installed on a View when using
onStart
Changes
- Add support for initializing
ImageProcessors.CoreImageFilterwithCIFilterinstances (fixes #758 ) - Add support for disk cache lookup for intermediate processed images (as opposed to only final and original as before)
- Add an optimization that loads local resources with
fileanddataschemes quickly without usingDataLoaderandURLSession. If you rely on the existing behavior, this optimization can be turned off using theisLocalResourcesSupportEnabledconfiguration option. #779 - Update the infrastructure for coalescing image-processing tasks to use the task-dependency used for other operations
Deprecations
- Deprecate
ImagePipeline.Configuration.dataCachingQueueand perform data cache lookups on the pipeline's queue, reducing the amount of context switching
Nuke 12.5
What's Changed
- Fix Xcode 15.3 concurrency warnings when using
Screen.scaleby @jszumski in #766 - Add
showPlaceholderOnFailureparameter to show placeholder in case of image loading failure by @mlight3 in #764 - Fix image loading test on iOS 17 by @woxtu in #768
- Update thumbnail key value for
ImageRequestby @woxtu in #769 - Remove trailing whitespaces by @woxtu in #767
- Apply
if letshorthand syntax by @mlight3 in #762
New Contributors
- @AndrewSB made their first contribution in #755
- @mlight3 made their first contribution in #762
- @jszumski made their first contribution in #766
Full Changelog: 12.4.0...12.5.0