Skip to content

Releases: coreos/chunkah

v0.4.0

23 Apr 03:28
v0.4.0

Choose a tag to compare

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-interval xattr 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/--tag switch to embed image names in OCI archives. When loading a chunked image with podman load or docker load, the image is now automatically tagged with the specified name, removing the need for a manual podman tag step. (#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-interval only 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 indexmap from 2.13.0 to 2.13.1 (#104)
  • Bumped indexmap from 2.13.1 to 2.14.0 and openssl from 0.10.76 to 0.10.77 (#109)

New Contributors

v0.3.2

23 Mar 13:36
v0.3.2

Choose a tag to compare

v0.3.2

Internal changes

  • Added a new release-notes OpenCode skill to help me write release notes (#92)

Packaging changes

  • Bumped the tar crate 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

20 Mar 16:44
v0.3.1

Choose a tag to compare

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 :latest will no longer be updated) (#90)

Minor changes

  • Updated documentation to cover previously undocumented options and added a runtime warning when --max-layers exceeds 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.toml and the git-tag-derived PACKIT_PROJECT_VERSION (#86)
  • Added a release.py bump subcommand that automates version bumps across Cargo.toml, Cargo.lock, the spec file, and README.md in one step, and auto-computes the RPM License tag from cargo tree (#91)

Full Changelog: v0.3.0...v0.3.1

v0.3.0

11 Mar 17:13
v0.3.0

Choose a tag to compare

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/--threads or CHUNKAH_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_EPOCH is 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.sh and teaching just diff to also diff OCI metadata (#63)
  • Overhauled the analyze-layer-reuse.py CLI and output; inspect-layers.sh now prints total image size (#69)
  • Added image date information to the layer reuse update analysis (#73)

Packaging changes

  • Enabled fast-forward merges in Packit configuration (#60)
  • Added automatic COPR builds for PRs (#78)

Full Changelog: v0.2.0...v0.3.0

v0.2.0

17 Feb 04:00
v0.2.0

Choose a tag to compare

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, with podman 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.commit label if found. This is more convenient than manually editing
    the OCI config which is usually just passed through from podman 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

30 Jan 22:39
v0.1.1

Choose a tag to compare

v0.1.1

A quick respin to get release tarballs with dev dependencies vendored.

Minor changes

Internal changes

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! ๐Ÿฃ

30 Jan 19:17
v0.1.0

Choose a tag to compare

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:

Minor changes:

Internal changes

New Contributors

Full Changelog: https://github.com/jlebon/chunkah/commits/v0.1.0