From 597289d1068ca7e399e533990f929ada515395f4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 22 Aug 2026 06:48:07 +0000 Subject: [PATCH] chore: release v0.2.0 --- CHANGELOG.md | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.lock | 52 ++++++++++++++++++++++++++-------------------------- Cargo.toml | 50 +++++++++++++++++++++++++------------------------- 3 files changed, 99 insertions(+), 51 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8728a8b..470f2e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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. diff --git a/Cargo.lock b/Cargo.lock index f33e310..db23494 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1181,14 +1181,14 @@ dependencies = [ [[package]] name = "rawshift" -version = "0.1.1" +version = "0.2.0" dependencies = [ "rawshift-image", ] [[package]] name = "rawshift-core" -version = "0.1.1" +version = "0.2.0" dependencies = [ "gamut-color", "gamut-core", @@ -1198,7 +1198,7 @@ dependencies = [ [[package]] name = "rawshift-hwdec" -version = "0.1.1" +version = "0.2.0" dependencies = [ "gamut-color", "libloading", @@ -1207,7 +1207,7 @@ dependencies = [ [[package]] name = "rawshift-image" -version = "0.1.1" +version = "0.2.0" dependencies = [ "clap", "criterion", @@ -1266,7 +1266,7 @@ dependencies = [ [[package]] name = "rawshift-image-arw" -version = "0.1.1" +version = "0.2.0" dependencies = [ "gamut-ifd", "rawshift-image-core", @@ -1277,7 +1277,7 @@ dependencies = [ [[package]] name = "rawshift-image-avif" -version = "0.1.1" +version = "0.2.0" dependencies = [ "gamut-avif", "gamut-color", @@ -1291,7 +1291,7 @@ dependencies = [ [[package]] name = "rawshift-image-core" -version = "0.1.1" +version = "0.2.0" dependencies = [ "gamut-core", "rawshift-core", @@ -1302,7 +1302,7 @@ dependencies = [ [[package]] name = "rawshift-image-cr2" -version = "0.1.1" +version = "0.2.0" dependencies = [ "gamut-ifd", "rawshift-image-core", @@ -1312,7 +1312,7 @@ dependencies = [ [[package]] name = "rawshift-image-cr3" -version = "0.1.1" +version = "0.2.0" dependencies = [ "gamut-ifd", "rawshift-image-core", @@ -1322,14 +1322,14 @@ dependencies = [ [[package]] name = "rawshift-image-crw" -version = "0.1.1" +version = "0.2.0" dependencies = [ "rawshift-image-core", ] [[package]] name = "rawshift-image-dng" -version = "0.1.1" +version = "0.2.0" dependencies = [ "gamut-dng", "gamut-ifd", @@ -1341,7 +1341,7 @@ dependencies = [ [[package]] name = "rawshift-image-gif" -version = "0.1.1" +version = "0.2.0" dependencies = [ "gif", "rawshift-image-core", @@ -1350,7 +1350,7 @@ dependencies = [ [[package]] name = "rawshift-image-heic" -version = "0.1.1" +version = "0.2.0" dependencies = [ "gamut-color", "gamut-core", @@ -1364,7 +1364,7 @@ dependencies = [ [[package]] name = "rawshift-image-ifd" -version = "0.1.1" +version = "0.2.0" dependencies = [ "gamut-ifd", "rawshift-core", @@ -1374,7 +1374,7 @@ dependencies = [ [[package]] name = "rawshift-image-jpeg" -version = "0.1.1" +version = "0.2.0" dependencies = [ "gamut-core", "gamut-jpeg", @@ -1386,7 +1386,7 @@ dependencies = [ [[package]] name = "rawshift-image-jxl" -version = "0.1.1" +version = "0.2.0" dependencies = [ "gamut-core", "gamut-jxl 0.4.0", @@ -1397,14 +1397,14 @@ dependencies = [ [[package]] name = "rawshift-image-ljpeg" -version = "0.1.1" +version = "0.2.0" dependencies = [ "rawshift-image-core", ] [[package]] name = "rawshift-image-metadata" -version = "0.1.1" +version = "0.2.0" dependencies = [ "gamut-exif", "gamut-icc", @@ -1416,7 +1416,7 @@ dependencies = [ [[package]] name = "rawshift-image-nef" -version = "0.1.1" +version = "0.2.0" dependencies = [ "gamut-ifd", "rawshift-image-core", @@ -1426,7 +1426,7 @@ dependencies = [ [[package]] name = "rawshift-image-png" -version = "0.1.1" +version = "0.2.0" dependencies = [ "gamut-core", "gamut-png", @@ -1437,7 +1437,7 @@ dependencies = [ [[package]] name = "rawshift-image-ppm" -version = "0.1.1" +version = "0.2.0" dependencies = [ "rawshift-image-core", "serde", @@ -1447,7 +1447,7 @@ dependencies = [ [[package]] name = "rawshift-image-raf" -version = "0.1.1" +version = "0.2.0" dependencies = [ "rawshift-image-core", "tracing", @@ -1455,7 +1455,7 @@ dependencies = [ [[package]] name = "rawshift-image-svg" -version = "0.1.1" +version = "0.2.0" dependencies = [ "rawshift-image-core", "resvg", @@ -1464,7 +1464,7 @@ dependencies = [ [[package]] name = "rawshift-image-tiff" -version = "0.1.1" +version = "0.2.0" dependencies = [ "rawshift-image-core", "serde", @@ -1473,7 +1473,7 @@ dependencies = [ [[package]] name = "rawshift-image-webp" -version = "0.1.1" +version = "0.2.0" dependencies = [ "gamut-core", "gamut-metadata", @@ -1486,7 +1486,7 @@ dependencies = [ [[package]] name = "rawshift-video" -version = "0.1.1" +version = "0.2.0" [[package]] name = "rayon" diff --git a/Cargo.toml b/Cargo.toml index dd400d3..6256f22 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -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" @@ -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