mindeng/nom-exif
 Watch   
 Star   
 Fork   
5 days ago
nom-exif

nom-exif v3.6.1

Patch release for nom-exif.

5 days ago
nom-exif
19 days ago
nom-exif

v3.6.0

Changed

  • Split tokio feature into tokio and tokio-fs — the tokio feature now only pulls in tokio/io-util, enabling the async streaming API (AsyncMediaSource::seekable/unseekable/from_memory, MediaParser::parse_*_async) on wasm32-unknown-unknown. Path-based helpers (read_exif_async, read_track_async, read_metadata_async, AsyncMediaSource::open) moved to the new tokio-fs feature (implies tokio). Users who previously used features = ["tokio"] with read_exif_async etc. should switch to features = ["tokio-fs"]. #53

Fixed

  • Slice coercion in MotionPhoto attribute comparison — comparing extract_attr_value() against byte-string literals now uses explicit &b"..."[..] coercion, fixing a compile error when a crate like rkyv is present in the dependency graph. #58

Full changelog: CHANGELOG.md · crates.io: nom-exif 3.6.0

19 days ago
nom-exif

v3.5.1

Fixed

  • Slice coercion in MotionPhoto attribute comparison — comparing extract_attr_value() against byte-string literals now uses explicit &b"..."[..] coercion, fixing a compile error when a crate like rkyv is present in the dependency graph. #58

Full changelog: CHANGELOG.md · crates.io: nom-exif 3.5.1

24 days ago
nom-exif
24 days ago
nom-exif

v3.5.0

Added

  • CameraSerialNumber EXIF tag (0xa431). Standard EXIF tag for the camera body serial number. #56

  • LensSerialNumber EXIF tag (0xa435). Standard EXIF tag for the lens serial number. #57


Full changelog: CHANGELOG.md · crates.io: nom-exif 3.5.0

27 days ago
nom-exif
27 days ago
nom-exif

v3.4.2

Fixed

  • Streaming PNG parsing for files with non-trivial IDAT — every real-world PNG (i.e. anything beyond a stripped-down test fixture) surfaced malformed iso-bmff box: PNG: bad signature from parse_exif / parse_image_metadata. Root cause was a two-part bug in the chunk walker: (a) ClearAndSkip(total - remaining) under-requested the skip distance by exactly cursor + remaining bytes — semantically the caller should advance the parser's logical position by cursor + total, not just past the buffer's end — leaving the parser stranded mid-IDAT; (b) on the resumed call extract_chunks always re-validated buf[..8] against the PNG signature, but the resumed buffer started mid-stream and the check failed. Fixed both: skip request is now cursor + total, and a new ParsingState::PngPastSignature tells the resumed call to skip the signature check. In-memory mode (from_memory) was unaffected because the full file is buffered at once and ClearAndSkip never fires. Fixes #55.

Fixed (behaviour)

  • Error::Malformed.kind correctly identifies the failing structural unit. Previously every parse failure that flowed through From<ParsedError> for Error or From<nom::Err<...>> for Error was hard-coded as MalformedKind::IsoBmffBox / MalformedKind::TiffHeader respectively — misleading for PNG / JPEG / EBML inputs. The MalformedKind is now threaded through ParsingError::Failed, ParsedError::Failed, and LoopAction::Failed, and surfaced unchanged at the Error boundary. Downstream code that (incorrectly) matched on kind == IsoBmffBox to catch any parse failure will need updating; conformant code that uses a _ => arm (required by #[non_exhaustive]) is unaffected.

Added

  • MalformedKind::PngChunk variant. MalformedKind is #[non_exhaustive], so adding a variant is non-breaking.

Full changelog: CHANGELOG.md · crates.io: nom-exif 3.4.2

2026-05-12 16:39:12
nom-exif
2026-05-12 16:24:27
nom-exif

v3.4.1

Fixed

  • GPS sub-IFD parsing for Sony A7C2 HIF (and any camera that emits GPSVersionID first)IfdIter::parse_tag_entry short-circuited on tag == 0 as a defensive guard against zero-padded malformed IFDs. But tag 0 is also the legitimate GPSVersionID — the spec-defined first entry of the GPS sub-IFD. Aborting iteration there caused the whole sub-IFD to be dropped, silently losing every GPS field. Now gated on !self.is_gps_subifd() so the defense survives in non-GPS contexts while GPSVersionID parses normally. Fixes #50.

Full changelog: CHANGELOG.md · crates.io: nom-exif 3.4.1