Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,54 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [0.2.0](https://github.com/visualcommons/rawshift/compare/v0.1.1...v0.2.0) - 2026-08-22

### Added

- *(api)* [**breaking**] finalize the v1 image API surface; consolidated CHANGELOG
- *(hwdec,heic)* [**breaking**] create rawshift-hwdec; rebuild HEIC on gamut-heic; drop libheif-rs
- *(avif)* [**breaking**] AVIF decode via gamut-avif container + hardware AV1; drop the image crate
- *(avif)* [**breaking**] migrate AVIF encode to gamut-avif; delete libaom and ravif
- *(core)* [**breaking**] replace generic primitives with gamut re-exports, keep sensor types
- *(image)* add libaom as an optional AVIF encoder backend
- *(image)* expose leaf encoder contracts
- *(png)* [**breaking**] migrate PNG decode to gamut-png; drop zune-png
- *(jpeg)* [**breaking**] migrate JPEG to gamut-jpeg; delete jpegli stack and img-parts
- *(hwdec)* VAAPI backend β€” HEVC Main/Main10 + AV1 still decode over dlopen'd libva
- *(jxl)* [**breaking**] migrate JXL to gamut-jxl; drop jxl-oxide, zune-jpegxl, and the libjxl glue
- *(png)* [**breaking**] migrate PNG encode to gamut-png
- *(dng)* [**breaking**] migrate DNG decode/encode to gamut-dng; delete the binrw TIFF layer
- *(formats)* [**breaking**] migrate ARW/CR2/NEF/CR3 IFD walking to gamut-ifd
- *(metadata)* [**breaking**] migrate metadata stack to gamut-exif/gamut-icc/gamut-xmp
- *(deps)* add gamut as pinned git dependency and raise MSRV to 1.92

### Fixed

- *(image)* allow metadata shim in hw-only builds
- *(image)* complete extracted feature boundaries
- *(image)* keep empty leaf builds warning-free
- *(image-webp)* use target-native C char

### Other

- merge origin/master into format crate refactor
- *(image)* document format crate boundaries
- Merge branch 'master' of github.com:justin13888/rawshift
- migrate gamut dependencies from git pin to crates.io versions
- *(features,ci)* [**breaking**] consolidate the post-migration feature tree; add compile-boundary CI
- Merge pull request #40 from justin13888/17-add-gamut-pinned-git-dependency
- *(video)* park rawshift-video as an unpublished placeholder for v1
- add v1 design doc, permanent support matrix, and gamut policy
- Revise Scope section and add key priorities
- Update README with project status and scope
- update GitHub org references from justin13888 to visualcommons
- *(image)* extract standard decoder crates
- *(image)* extract AVIF and HEIC crates
- *(image)* extract RAW format crates
- *(image-core)* add shared format contracts
- *(tests,bench)* fixtures and benchmark final pass for the gamut migration
- Merge branch 'master' into avif-libaom-encoder

v1 is the gamut migration release: rawshift's generic ground β€” image
primitives, colour, containers, metadata, and the migrated codecs β€” now comes
from the published [gamut](https://github.com/visualcommons/gamut) crates.
Expand Down
52 changes: 26 additions & 26 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

50 changes: 25 additions & 25 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ members = [
]

[workspace.package]
version = "0.1.1"
version = "0.2.0"
edition = "2024"
rust-version = "1.92.0"
license = "MPL-2.0"
Expand Down Expand Up @@ -68,30 +68,30 @@ rayon = "1.11.0"
serde = { version = "1.0", features = ["derive"] }
# Internal crates β€” referenced by path within the workspace, version pinned for
# eventual publishing (publish order: core β†’ hwdec β†’ image/video β†’ rawshift).
rawshift-core = { path = "crates/rawshift-core", version = "0.1.1" }
rawshift-hwdec = { path = "crates/rawshift-hwdec", version = "0.1.1" }
rawshift-image = { path = "crates/rawshift-image", version = "0.1.1" }
rawshift-image-core = { path = "crates/rawshift-image-core", version = "0.1.1" }
rawshift-image-metadata = { path = "crates/rawshift-image-metadata", version = "0.1.1" }
rawshift-image-ifd = { path = "crates/rawshift-image-ifd", version = "0.1.1" }
rawshift-image-ljpeg = { path = "crates/rawshift-image-ljpeg", version = "0.1.1" }
rawshift-image-arw = { path = "crates/rawshift-image-arw", version = "0.1.1", default-features = false }
rawshift-image-avif = { path = "crates/rawshift-image-avif", version = "0.1.1", default-features = false }
rawshift-image-cr2 = { path = "crates/rawshift-image-cr2", version = "0.1.1", default-features = false }
rawshift-image-cr3 = { path = "crates/rawshift-image-cr3", version = "0.1.1", default-features = false }
rawshift-image-crw = { path = "crates/rawshift-image-crw", version = "0.1.1", default-features = false }
rawshift-image-dng = { path = "crates/rawshift-image-dng", version = "0.1.1", default-features = false }
rawshift-image-nef = { path = "crates/rawshift-image-nef", version = "0.1.1", default-features = false }
rawshift-image-raf = { path = "crates/rawshift-image-raf", version = "0.1.1", default-features = false }
rawshift-image-heic = { path = "crates/rawshift-image-heic", version = "0.1.1", default-features = false }
rawshift-image-gif = { path = "crates/rawshift-image-gif", version = "0.1.1", default-features = false }
rawshift-image-jpeg = { path = "crates/rawshift-image-jpeg", version = "0.1.1", default-features = false }
rawshift-image-jxl = { path = "crates/rawshift-image-jxl", version = "0.1.1", default-features = false }
rawshift-image-png = { path = "crates/rawshift-image-png", version = "0.1.1", default-features = false }
rawshift-image-ppm = { path = "crates/rawshift-image-ppm", version = "0.1.1", default-features = false }
rawshift-image-svg = { path = "crates/rawshift-image-svg", version = "0.1.1", default-features = false }
rawshift-image-tiff = { path = "crates/rawshift-image-tiff", version = "0.1.1", default-features = false }
rawshift-image-webp = { path = "crates/rawshift-image-webp", version = "0.1.1", default-features = false }
rawshift-core = { path = "crates/rawshift-core", version = "0.2.0" }
rawshift-hwdec = { path = "crates/rawshift-hwdec", version = "0.2.0" }
rawshift-image = { path = "crates/rawshift-image", version = "0.2.0" }
rawshift-image-core = { path = "crates/rawshift-image-core", version = "0.2.0" }
rawshift-image-metadata = { path = "crates/rawshift-image-metadata", version = "0.2.0" }
rawshift-image-ifd = { path = "crates/rawshift-image-ifd", version = "0.2.0" }
rawshift-image-ljpeg = { path = "crates/rawshift-image-ljpeg", version = "0.2.0" }
rawshift-image-arw = { path = "crates/rawshift-image-arw", version = "0.2.0", default-features = false }
rawshift-image-avif = { path = "crates/rawshift-image-avif", version = "0.2.0", default-features = false }
rawshift-image-cr2 = { path = "crates/rawshift-image-cr2", version = "0.2.0", default-features = false }
rawshift-image-cr3 = { path = "crates/rawshift-image-cr3", version = "0.2.0", default-features = false }
rawshift-image-crw = { path = "crates/rawshift-image-crw", version = "0.2.0", default-features = false }
rawshift-image-dng = { path = "crates/rawshift-image-dng", version = "0.2.0", default-features = false }
rawshift-image-nef = { path = "crates/rawshift-image-nef", version = "0.2.0", default-features = false }
rawshift-image-raf = { path = "crates/rawshift-image-raf", version = "0.2.0", default-features = false }
rawshift-image-heic = { path = "crates/rawshift-image-heic", version = "0.2.0", default-features = false }
rawshift-image-gif = { path = "crates/rawshift-image-gif", version = "0.2.0", default-features = false }
rawshift-image-jpeg = { path = "crates/rawshift-image-jpeg", version = "0.2.0", default-features = false }
rawshift-image-jxl = { path = "crates/rawshift-image-jxl", version = "0.2.0", default-features = false }
rawshift-image-png = { path = "crates/rawshift-image-png", version = "0.2.0", default-features = false }
rawshift-image-ppm = { path = "crates/rawshift-image-ppm", version = "0.2.0", default-features = false }
rawshift-image-svg = { path = "crates/rawshift-image-svg", version = "0.2.0", default-features = false }
rawshift-image-tiff = { path = "crates/rawshift-image-tiff", version = "0.2.0", default-features = false }
rawshift-image-webp = { path = "crates/rawshift-image-webp", version = "0.2.0", default-features = false }
rawshift-video = { path = "crates/rawshift-video", version = "0.1.1" }

# Profiles must live at the workspace root β€” Cargo ignores profiles declared in
Expand Down