v0.3.0
v0.3.0
Major changes
- Reduced memory usage by streaming file reads instead of buffering entire files and tar layers into memory, cutting peak RSS to ~75 MB (from ~6.5 GB of allocations for an FCOS image) (#72)
- Added support for multi-threading during tar layer creation, which should reduce total build time (e.g. for an FCOS image I saw a 40% reduction locally). Configurable via
-T/--threadsorCHUNKAH_THREADS. (#77) - Added digest-based matching to allow detecting RPM files moved to another location. For example, on rpm-ostree-based composes, the SELinux policy is moved to
/etc/selinux. This would cause chunkah to label all ~1700 of those files as "unclaimed". Now, they're correctly assigned to the selinux-policy component. (On that note, there is an even cleaner fix for that incoming in fedora-bootc images.) (#84) - Added support and CI testing for UBI 9 and UBI 10-based images. This required reworking how the rpmdb is queried to be compatible with older rpm. MSRV now tracks el9. (#47)
Minor changes
- Added a new uncompressed fast path to ocidir-rs for layer creation, which avoids having to compute SHA-256 digests twice. This gives a nice speed boost of around 5-10%. (#79)
- Made re-splitting an existing image reproducible even when
SOURCE_DATE_EPOCHis not set by using the image's Created timestamp as a fallback if available (#71) - Fixed reproducibility bug related to xattr ordering (#62)
- Fixed reproducibility bug related to packages installed from different versions of the same SRPM (#83)
- Added size information to log output for easier debugging (#70)
- Documented support for rechunking OSTree-based bootc images in the README (#76)
- Added CONTRIBUTING.md for new contributors (#61)
Internal changes
- Consolidated diffing tooling by dropping
split-and-diff.shand teachingjust diffto also diff OCI metadata (#63) - Overhauled the
analyze-layer-reuse.pyCLI and output;inspect-layers.shnow prints total image size (#69) - Added image date information to the layer reuse update analysis (#73)
Packaging changes
Full Changelog: v0.2.0...v0.3.0