Skip to content

Pullrun

v0.3.3 Breaking

This release includes breaking changes for platform teams planning a safe upgrade.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Summary

AI summary

Updates v0.3.3, Bug Fixes, and New Features across a mixed release.

Full changelog

v0.3.3

OCI Image Spec v1.1.1 — Full Compliance

All 10 phases of the OCI v1.1.1 upgrade are complete:

  • Phase 1 — Flexible digest format (SHA-512, EBNF-compliant parsing, verify on pull)
  • Phase 2 — All OCI 1.1 struct fields (subject, artifactType, urls, data, platform fields)
  • Phase 3 — Media type constants module (13 OCI constants, no more hardcoded strings)
  • Phase 4 — Whiteout/opaque file handling + uid/gid/mtime/xattrs on materialization
  • Phase 5 — zstd layer decompression on pull and configurable compression on push
  • Phase 6 — Annotation key constants (14 standard keys), annotations preserved through push DAG
  • Phase 7 — Subject field + Referrers API (fetch_referrers, subject round-trip)
  • Phase 8 — Digest re-verify on all pull paths + OCI layout export (export_to_oci_layout)
  • Phase 9 — Conversion spec compliance (User parsing, runtime annotations, volumes, exposed ports)
  • Phase 10 — Image index full struct (OciImageIndex replaces local ImageIndex, all fields)

New Features

  • zstd push — DagPusher.with_compression(CompressionFormat::Zstd) for zstd-compressed layers
  • Empty JSON blob — empty_json_descriptor() for layerless manifests
  • Warm VM pool — pre-booted Firecracker VMs via --vm-warm-pool-size
  • Slirp rootless networking — userspace NAT via slirp4netns for VM outbound traffic
  • Compose --backend vm — run all compose services as Firecracker microVMs
  • OCI layout export — export_to_oci_layout() produces spec-compliant OCI Image Layout

Bug Fixes

  • Double-decompression in layer converter — extract_tar_entries_sync was wrapping already-decompressed data in GzDecoder, causing "invalid gzip header" on every pull. Fixed by reading raw tar directly (decompression is handled upstream by decompress_layer()).
  • Derive Default for CompressionFormat — replaced manual impl with #[derive(Default)] to fix clippy warning-as-error.
  • CLI run timeout 60s → 10min (prevents DeadlineExceeded on large pulls)
  • AppleVM stop: returns "✓ stopped" instead of "IO error"
  • PTY echo fix: interactive shell visibility in AppleVM TTY mode
  • MCP: fixed push param names/descriptions (root_digest + target), added build platform/args/push, removed dead dry_run from prune

Commits

$(git log --oneline v0.3.2..v0.3.3)

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track Pullrun

Get notified when new releases ship.

Sign up free

About Pullrun

All releases →

Related context

Beta — feedback welcome: [email protected]