You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+19-5Lines changed: 19 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,19 @@
1
1
# Nuke 12
2
2
3
+
## Nuke 12.9.0
4
+
5
+
*Feb 22, 2026*
6
+
7
+
- Enable Swift 6 and fix remaining concurrency warnings
8
+
- Optimize `ImageTask``AsyncStream` APIs and remove the Combine dependency. It now essentially has no overhead.
9
+
- Updating misleading SVG support by @realmtai in https://github.com/kean/Nuke/pull/839
10
+
- Fix deprecation warning typo by @cameronmcefee in https://github.com/kean/Nuke/pull/861
11
+
- Mark `DataLoading` closures as `@Sendable` by @plu in https://github.com/kean/Nuke/pull/862
12
+
-`.storeAll` now stores processed images for locals too, as it should be by @HyperfocusDisordered in https://github.com/kean/Nuke/pull/810
13
+
- Add `.heic` support to `AssetType/init` so it can detect it based on the input `Data`
14
+
- Remove some `@unchecked` markers from `Sendable` types for better Data Race Safety checking
15
+
- Fix an issue with `DataCache` not touching `.contentAccessDate` when accessing files
16
+
3
17
## Nuke 12.8.0
4
18
5
19
*Jul 13, 2024*
@@ -72,7 +86,7 @@ This release contains major improvements to the Structured Concurrency support a
72
86
- Fix Xcode 15.3 concurrency warnings when using `Screen.scale` by @jszumski in https://github.com/kean/Nuke/pull/766
73
87
- Add `showPlaceholderOnFailure` parameter to show placeholder in case of image loading failure by @mlight3 in https://github.com/kean/Nuke/pull/764
74
88
- Fix image loading test on iOS 17 by @woxtu in https://github.com/kean/Nuke/pull/768
75
-
- Update thumbnail key value for `ImageRequest`` by @woxtu in https://github.com/kean/Nuke/pull/769
89
+
- Update thumbnail key value for `ImageRequest` by @woxtu in https://github.com/kean/Nuke/pull/769
76
90
- Remove trailing whitespaces by @woxtu in https://github.com/kean/Nuke/pull/767
77
91
- Apply `if let` shorthand syntax by @mlight3 in https://github.com/kean/Nuke/pull/762
78
92
@@ -255,7 +269,7 @@ There is now less code that you need to include in your project, which means fas
255
269
256
270
*Dec 25, 2022*
257
271
258
-
- Fix `ImagePipeline.shared` warning with Strit Concurrency Checking set to Complete
272
+
- Fix `ImagePipeline.shared` warning with Strict Concurrency Checking set to Complete
259
273
- Fix an issue where `ImagePrefetcher/didComplete` wasn't called in some scenarios
260
274
-`ImagePrefetcher/didComplete` is now called on the main queue
261
275
@@ -540,8 +554,8 @@ This release added async/await, but the change was [reverted](https://github.com
540
554
541
555
*Oct 23, 2021*
542
556
543
-
- Improve image decompressiong performance on iOS 15 and tvOS 15 by using [preparingForDisplay()](https://developer.apple.com/documentation/uikit/uiimage/3750834-preparingfordisplay?language=o_5) (requires Xcode 13) - [#512](https://github.com/kean/Nuke/pull/512)
544
-
- On iOS 15, tvOS 15, image decompressiong now preserves 8 bits per pixel for grayscale images - [#512](https://github.com/kean/Nuke/pull/512)
557
+
- Improve image decompression performance on iOS 15 and tvOS 15 by using [preparingForDisplay()](https://developer.apple.com/documentation/uikit/uiimage/3750834-preparingfordisplay?language=o_5) (requires Xcode 13) - [#512](https://github.com/kean/Nuke/pull/512)
558
+
- On iOS 15, tvOS 15, image decompression now preserves 8 bits per pixel for grayscale images - [#512](https://github.com/kean/Nuke/pull/512)
Copy file name to clipboardExpand all lines: Documentation/Migrations/Nuke 10 Migration Guide.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,7 @@ This guide eases the transition of the existing apps that use Nuke 9.x to the la
12
12
13
13
## Overview
14
14
15
-
Nuke 10 contains a ton of new features, refinements, and performance improvements. There are some breaking changes and deprecation that the compiler will guide you through as you update. Most users are not going to need this guide.
15
+
Nuke 10 contains a ton of new features, refinements, and performance improvements. There are some breaking changes and deprecations that the compiler will guide you through as you update. Most users are not going to need this guide.
Or use a new [`.automatic`](https://kean-org.github.io/docs/nuke/reference/10.0.0/ImagePipeline_Configuration_DataCachePolicy/#imagepipeline.configuration.datacachepolicy.automatic) policy if it best fits your needs: for requests with processors, encode and store processed images; for requests with no processors, store original image data.
60
60
61
-
> Learn more about the policies and other caching changes in ["Caching: Cacheke Policy."](https://kean.blog/nuke/guides/caching#cache-policy)
61
+
> Learn more about the policies and other caching changes in ["Caching: Cache Policy."](https://kean.blog/nuke/guides/caching#cache-policy)
62
62
63
63
## Disk Cache Configuration
64
64
65
-
Nuke 10 simplifies disk cache configuration by introducing two built-in configuration: [`ImagePipeline.Configuration.withDataCache`](https://kean-org.github.io/docs/nuke/reference/10.0.0/ImagePipeline_Configuration/#imagepipeline.configuration.withdatacache) (aggressive disk cache enabled) and [`withURLCache`](https://kean-org.github.io/docs/nuke/reference/10.0.0/ImagePipeline_Configuration/#imagepipeline.configuration.withurlcache) (HTTP disk cache enabled)
65
+
Nuke 10 simplifies disk cache configuration by introducing two built-in configurations: [`ImagePipeline.Configuration.withDataCache`](https://kean-org.github.io/docs/nuke/reference/10.0.0/ImagePipeline_Configuration/#imagepipeline.configuration.withdatacache) (aggressive disk cache enabled) and [`withURLCache`](https://kean-org.github.io/docs/nuke/reference/10.0.0/ImagePipeline_Configuration/#imagepipeline.configuration.withurlcache) (HTTP disk cache enabled)
Copy file name to clipboardExpand all lines: Documentation/Migrations/Nuke 11 Migration Guide.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -58,7 +58,7 @@ extension ImageProcessors {
58
58
publicstructResize: ImageProcessing, Hashable{
59
59
privatelet size: CGSize
60
60
61
-
varhashableIdentiifer: AnyHashable { self }
61
+
varhashableIdentifier: AnyHashable { self }
62
62
}
63
63
}
64
64
@@ -77,7 +77,7 @@ If you invalidate the pipeline, any new requests will immediately fail with `Ima
77
77
78
78
## ImageRequestConvertible
79
79
80
-
`ImageRequestConvertible` was originally introduced in [Nuke 9.2](https://github.com/kean/Nuke/releases/tag/9.2.0) to reduce number of `loadImage(:)` APIs in code completion, but it's no longer an issue with the new async/await APIs.
80
+
`ImageRequestConvertible` was originally introduced in [Nuke 9.2](https://github.com/kean/Nuke/releases/tag/9.2.0) to reduce the number of `loadImage(:)` APIs in code completion, but it's no longer an issue with the new async/await APIs.
81
81
82
82
`ImageRequestConvertible` is soft-deprecated in Nuke 11. The other soft-deprecated APIs, such as a closure-based `ImagePipeline/loadImage(:)` will continue working with it. The new APIs, such as async/await `ImagePipeline/image(for:)` will work with `URL` and `ImageRequest` which is better for discoverability and performance.
Copy file name to clipboardExpand all lines: Documentation/Migrations/Nuke 4 Migration Guide.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -22,7 +22,7 @@ Here's a few design principles adopted in Nuke 4:
22
22
23
23
-**Protocol-Oriented Programming.** Nuke 3 promised a lot of customization by providing a set of protocols for loading, caching, transforming images, etc. However, those protocols were vaguely defined and hard to implement in practice. Protocols in Nuke 4 are simple and precise, often consisting of a single method.
24
24
-**Single Responsibility Principle.** For example, instead of implementing preheating and deduplicating of equivalent requests in a single vague `ImageManager` class, those features were moved to separate classes (`Preheater`, `Deduplicator`). This makes core classes much easier to reason about.
25
-
-**Principle of Least Astonishment**. Nuke 3 had a several excessive protocols, classes and methods which are *all gone* now (`ImageTask`, `ImageManagerConfiguration` just to name a few). Those features are much easier to use now.
25
+
-**Principle of Least Astonishment**. Nuke 3 had several excessive protocols, classes and methods which are *all gone* now (`ImageTask`, `ImageManagerConfiguration` just to name a few). Those features are much easier to use now.
26
26
-**Simpler Async**. Image loading involves a lot of asynchronous code, managing it was a chore. Nuke 4 adopts two design patterns ([**Promise**](https://github.com/kean/Promise) and **CancellationToken**) that solve most of those problems.
27
27
28
28
The adoption of those design principles resulted in a simpler, more testable, and more concise code base (which is now under 900 slocs, compared to AlamofireImage's 1426, and Kingfisher's whopping 2357).
@@ -49,7 +49,7 @@ Make sure to check out new [Toucan plugin](https://github.com/kean/Nuke-Toucan-P
49
49
50
50
## Changes in Nuke 4
51
51
52
-
Almost every API in Nuke has been modified in some way. It's impossible to document every single changes, so here's a list of some of the major and mostly user-visible changes.
52
+
Almost every API in Nuke has been modified in some way. It's impossible to document every single change, so here's a list of some of the major and mostly user-visible changes.
53
53
54
54
### Basics
55
55
@@ -215,7 +215,7 @@ let cachedResponse = manager.cachedResponseForRequest(request)
215
215
216
216
// Nuke 4
217
217
let cache = Cache.shared
218
-
let request =Request(url: URL(string: "")!))
218
+
let request =Request(url: URL(string: "")!)
219
219
cache[request] =UIImage()
220
220
let image = cache[request]
221
221
```
@@ -283,11 +283,11 @@ Adopt `AnyHashable` instead of `ImageRequestKey` (which was renamed to `Request.
283
283
284
284
### Request Priority
285
285
286
-
Priority was removed temporary from `Request` because it wasn't performing as good as expected. There should be a better way to implement it.
286
+
Priority was removed temporarily from `Request` because it wasn't performing as well as expected. There should be a better way to implement it.
287
287
288
288
### Progress Handler
289
289
290
-
Progress handler was temporary removed from `Request`. I'm still on the fence whether this feature should be included in the framework itself. It might be better handled by notification implemented in a specific `DataLoader`.
290
+
Progress handler was temporarily removed from `Request`. I'm still on the fence whether this feature should be included in the framework itself. It might be better handled by notification implemented in a specific `DataLoader`.
291
291
292
292
You can always just display an activity indicator instead:
Copy file name to clipboardExpand all lines: Documentation/Migrations/Nuke 5 Migration Guide.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,7 @@ This guide is provided in order to ease the transition of existing applications
12
12
13
13
Nuke 5 is a relatively small release which removes some of the complexity from the framework. Hopefully it will make *contributing* to Nuke easier.
14
14
15
-
One of the major changes is the removal of promisified API as well as `Promise` itself. Promises were briefly added in Nuke 4 as an effort to simplify async code. The major downsides of promises are compelex memory management, extra complexity for users unfamiliar with promises, complicated debugging, performance penalties. Ultimately I decided that promises were adding more problems that they were solving.
15
+
One of the major changes is the removal of promisified API as well as `Promise` itself. Promises were briefly added in Nuke 4 as an effort to simplify async code. The major downsides of promises are complex memory management, extra complexity for users unfamiliar with promises, complicated debugging, performance penalties. Ultimately I decided that promises were adding more problems than they were solving.
16
16
17
17
Chances are that changes made in Nuke 5 are not going to affect your code.
18
18
@@ -37,8 +37,8 @@ Chances are that changes made in Nuke 5 are not going to affect your code.
37
37
> -`Manager` now has new methods to load images w/o target (Nuke 5.0.1)
38
38
39
39
- If you're not constructing a custom `Loader` and you're not using it directly this change doesn't affect you
40
-
- If you're using custom `Loader` directly and rely on its memory caching please new `Manager` APIs that load images w/o target
41
-
- If you're constructing a custom `Loader` but don't use it directly then simply update to a new initializer which not longer requires you to pass memory cache in
40
+
- If you're using custom `Loader` directly and rely on its memory caching, please use the new `Manager` APIs that load images w/o target
41
+
- If you're constructing a custom `Loader` but don't use it directly then simply update to a new initializer which no longer requires you to pass memory cache in
0 commit comments