This release includes breaking changes for platform teams planning a safe upgrade.
Published 1mo
Containers & Orchestration
✓ No known CVEs patched
✓ No known CVEs patched in this version
Summary
AI summaryUpdates 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
About Pullrun
All releases →Related context
Related tools
Beta — feedback welcome: [email protected]