Skip to content

Commit b572846

Browse files
committed
docs: refresh FUTURES.md §4 after SwiftExif 0.1.0 migration
Drop the SHA-pin / "request a new tag" framing — 0.1.0 is in. Keep the pure-Swift / in-tree-IPTC paths and the corrupt-vs-missing gap, which 0.1.0 still doesn't distinguish.
1 parent aed7225 commit b572846

1 file changed

Lines changed: 20 additions & 17 deletions

File tree

FUTURES.md

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,26 @@ peak memory during the first full build of a big tree.
1616

1717
## 4. `SwiftExif` replacement
1818

19-
The project pins `kradalby/SwiftExif` at master (`eb7c5c4`) because
20-
upstream's 0.0.7 tag predates the Swift 6.3 nullability fix. Longer-term
21-
options:
22-
23-
- Request a new `0.0.8` tag from upstream that includes the fix, then
24-
update `Package.swift` to use the version pin again.
25-
- Investigate pure-Swift EXIF / IPTC libraries. At the time of this
26-
modernization, no widely-used pure-Swift alternative existed. A fork
27-
under `swiftlang` / `apple` would be preferable if one emerges.
28-
- Write a minimal in-tree IPTC reader for the specific fields Munin needs
29-
(Keywords, City, Province/State, Country Code, Country Name). Most of
30-
SwiftExif's surface is unused by Munin.
31-
32-
A replacement would also let us distinguish "no EXIF present" from
33-
"EXIF present but corrupt" — SwiftExif swallows both into empty
34-
dictionaries today, so `Imaging.readExif` can't log which one
35-
happened.
19+
`kradalby/SwiftExif` 0.1.0 covers Munin's needs: a Sendable typed
20+
result from `Image.parse(at:)`, an `IptcFields` struct that retires
21+
the old `[String: Any]` IPTC dict, and a tagged release that lets us
22+
drop the SHA pin. Replacement is no longer urgent — this section
23+
tracks the cases where it might still be worth it:
24+
25+
- A pure-Swift EXIF / IPTC reader would let us drop the libexif C
26+
dependency entirely. None widely-used existed at the time of this
27+
modernization; a fork under `swiftlang` / `apple` would be
28+
preferable if one emerges.
29+
- A minimal in-tree IPTC reader covering only the fields Munin
30+
actually uses (Keywords, City, Province/State, Country Code,
31+
Country Name) would shrink the dependency surface further. Most of
32+
SwiftExif's API is unused by Munin.
33+
34+
The remaining functional gap, regardless of replacement: SwiftExif
35+
0.1.0 still can't distinguish "no EXIF present" from "EXIF present
36+
but corrupt" — both surface as an empty `ExifResult`. Distinguishing
37+
the two would let `Photo+Read` log "image X had unreadable EXIF"
38+
instead of silently degrading.
3639

3740
---
3841

0 commit comments

Comments
 (0)