Releases: coreos/chunkah
Releases ยท coreos/chunkah
v0.4.0
v0.4.0
Major changes
- Added support for Arch Linux-based images by implementing a new component repository for ALPM/pacman package databases. This enables chunkah to split Arch Linux container images into content-based layers, just like it does for RPM-based images. (#50)
- Added
user.update-intervalxattr support for specifying component update frequency using human-readable labels (e.g.daily,weekly,monthly) or a number of days. This enables better packing decisions for xattr-based components, which previously lacked stability information. Components without an explicit interval now default to weekly stability, replacing an unreliable heuristic that was too sensitive to churny outliers. (#100, #101) - Added
-t/--tagswitch to embed image names in OCI archives. When loading a chunked image withpodman loadordocker load, the image is now automatically tagged with the specified name, removing the need for a manualpodman tagstep. (#105)
Minor changes
- Added a warning when the rootfs contains an unpruned ostree sysroot (
/sysroot/ostree), which produces poor chunking results due to the content-addressed object store. The warning points users to the--prune /sysroot/flag. (#99) - Dropped the "experimental" alert box from the README, reflecting growing real-world adoption and API stability (#96)
- Fixed a broken link to the zstd:chunked documentation in the README (#95)
- Clarified in the README that
user.update-intervalonly needs to be set on a single file within a component (#102)
Internal changes
- Various tooling improvements: fixed layer size comparison in the reuse analyzer to consistently use uncompressed sizes, added support for local container-storage images in the chunking scripts, and added stability info to the manifest output (#106)
Packaging changes
- Bumped
indexmapfrom 2.13.0 to 2.13.1 (#104) - Bumped
indexmapfrom 2.13.1 to 2.14.0 andopensslfrom 0.10.76 to 0.10.77 (#109)
New Contributors
- @marcoh00 made their first contribution in #50
- @cgwalters made their first contribution in #99
v0.3.2
v0.3.2
Internal changes
- Added a new
release-notesOpenCode skill to help me write release notes (#92)
Packaging changes
- Bumped the
tarcrate from 0.4.44 to 0.4.45, which includes a fix for a symlink-directory collision chmod attack and other bug fixes (CVE-2026-33056) (#93). Note chunkah is not affected by this vulnerability because it does not use the unpacking logic of tar-rs yet.
Full Changelog: v0.3.1...v0.3.2
v0.3.1
Major changes
- The official home for the chunkah image has now moved to
quay.io/coreos/chunkah! Tags in its previous home (quay.io/jlebon/chunkah) will remain, but new releases will no longer be pushed there (and:latestwill no longer be updated) (#90)
Minor changes
- Updated documentation to cover previously undocumented options and added a runtime warning when
--max-layersexceeds the containers-storage hard limit of 500 layers (#89)
Packaging changes
- Fixed Packit PR builds failing during release cuts due to a version mismatch between
Cargo.tomland the git-tag-derivedPACKIT_PROJECT_VERSION(#86) - Added a
release.py bumpsubcommand that automates version bumps acrossCargo.toml,Cargo.lock, the spec file, andREADME.mdin one step, and auto-computes the RPM License tag fromcargo tree(#91)
Full Changelog: v0.3.0...v0.3.1
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
v0.2.0
v0.2.0
Major changes
- chunkah now logs its activity during the build process. This fixes a major
UX wart to this point, which is the lack of any feedback otherwise. For
debugging, verbosity can be increased with-v. (7cf94ac) - This releases fixes various reproducibility bugs when using
SOURCE_DATE_EPOCH. We now also have coverage for this in CI! (0074ae3) - We now build, test, and release for both amd64 and arm64. (08d0e77)
- It's now possible to see which components are in which layers using the
history entries (for example, withpodman history). Layer annotations are
also still emitted but may not persist into the final image due to a buildah
bug. - It's now possible to remove labels using similar notation to what
buildah supports. For example,--label ostree.commit-will remove the
ostree.commitlabel if found. This is more convenient than manually editing
the OCI config which is usually just passed through frompodman inspect.
(fa9418d)
Minor changes
- README.md: add section about zstd:chunked (35964bb)
- README.md: add table of contents (fcbb011)
- components: fix panic when no components have non-zero stability (1feb76e)
Internal changes
- tools: add differ and use it in e2e tests (ef6cad1)
- Justfile: add split target for splitting existing images (b87c03a)
- rpm: calculate stability just once per SRPM (093f6f7)
- tools: add FCOS example usage to analysis scripts (8925516)
- tools: add scripts to analyze layer reuse across image updates (678f756)
- tools/inspect-layers: support OCI history as fallback (fcd23b2)
- tests/e2e: bump unclaimed layer size threshold to 100MB (ce94b37)
Packaging changes
- Add Packit configuration for automated Fedora releases (4c6a188)
v0.1.1
v0.1.1
A quick respin to get release tarballs with dev dependencies vendored.
Minor changes
- README.md: fix Containerfile.splitter URL by @jlebon in https://github.com/jlebon/chunkah/pull/23
- README.md: fix block note rendering by @jlebon in https://github.com/jlebon/chunkah/pull/24
Internal changes
- Various packaging/release-related tweaks by @jlebon in https://github.com/jlebon/chunkah/pull/25
- More minor tooling/CI tweaks by @jlebon in https://github.com/jlebon/chunkah/pull/26
Main release: https://github.com/jlebon/chunkah/releases/tag/v0.1.0
Full Changelog: jlebon/chunkah@v0.1.0...v0.1.1
v0.1.0: First release! ๐ฃ
First release! ๐ฃ
There's definitely still rough edges on this, but I think it reached the point
where it's good enough to be useful. So let's do it!
Since this is the first release, the "changelog" here is somewhat artificial;
it's changes that landed after the initial repo commit. But it sets up the
structure for how release notes will look.
Major changes:
- build: add
--skip-special-filesflag by @jlebon in https://github.com/jlebon/chunkah/pull/3 - rpm: canonicalize RPM paths to match filesystem scan by @jlebon in https://github.com/jlebon/chunkah/pull/11
- components: add bigfiles repo to claim large unclaimed files by @jlebon in https://github.com/jlebon/chunkah/pull/12
Minor changes:
- fix(docs): unquoted docker inspect strings by @tangowithfoxtrot in jlebon#1
- tar: handle unknown file types from fuse-overlayfs by @jlebon in https://github.com/jlebon/chunkah/pull/22
Internal changes
- Refactor Scanner to use builder pattern and add support for pruning content by @jlebon in https://github.com/jlebon/chunkah/pull/4
- ci: add Dependabot with auto-merge for minor/patch updates by @jlebon in https://github.com/jlebon/chunkah/pull/5
- ci: bump actions/checkout from 5 to 6 in the actions group by @dependabot[bot] in https://github.com/jlebon/chunkah/pull/6
- deps: bump the rust-deps group with 6 updates by @dependabot[bot] in https://github.com/jlebon/chunkah/pull/7
- deps: drop cap-std dep; use cap_std_ext re-export by @jlebon in https://github.com/jlebon/chunkah/pull/9
- AGENTS.md: remove obsolete information by @jlebon in https://github.com/jlebon/chunkah/pull/10
- Final cleanups before v0.1.0 release by @jlebon in https://github.com/jlebon/chunkah/pull/13
- ci: push :dev on main, :tag and :latest on tag pushes by @jlebon in https://github.com/jlebon/chunkah/pull/19
- tools/release: add Containerfile.splitter as release asset by @jlebon in https://github.com/jlebon/chunkah/pull/21
New Contributors
- @tangowithfoxtrot made their first contribution in jlebon#1
- @jlebon made their first contribution in https://github.com/jlebon/chunkah/pull/3
- @dependabot[bot] made their first contribution in https://github.com/jlebon/chunkah/pull/6
Full Changelog: https://github.com/jlebon/chunkah/commits/v0.1.0