Summary
hypeman on macOS
- darwin arm64 server builds on Apple's Virtualization.framework (vz)
- run x86-64 images on Apple Silicon via Rosetta, with docker-style multi-platform image pull (
--platform linux/amd64) - APFS clonefile fast paths for VM disk forks and standby/restore
- CLI-only install script
UFFD paging matures
- pager graduation: detach long-lived VMs from their snapshot pager without pausing the guest, so old pager versions can drain to zero and exit
- CLOCK (second-chance) eviction in the shared page cache — hot snapshot pages stay resident without write-lock contention on the fault path
- Firecracker forks get their own mem-file, eliminating hidden dependencies on the source instance (deleting or re-standbying the source no longer strands or corrupts forks)
- UFFD restore works under systemd ProtectSystem=strict; orphaned pager reaping
restore correctness
- guest wall clock syncs from KVM PTP after standby restore — no more stale clocks after long standbys
- fixed vz restore state reporting
networking and cleanup
- tc classes deleted by TAP filter ownership
- earlier standby control socket cleanup
- orphaned iptables rule sweeping
more observability
- fork admission timing instrumentation
- lifecycle tracing spans on the instance delete path
overall: hypeman now runs on your macbook, forks no longer secretly depend on their source's memory file, and UFFD-restored VMs can outlive the pager that restored them.
Changelog
- 13baa91 Give Firecracker forks their own mem-file instead of deferring the copy (#298)
- ce68717 Sync guest wall clock from KVM PTP after standby restore (#302)
- f93e17a Pin Redis image for entrypoint env tests (#303)
- 3c0861f Add lifecycle tracing spans to instance delete path (#299)
- 67fde5c Add UFFD snapshot pager graduation (#272)
- 189c12f Delete tc classes by TAP filter ownership (#296)
- c2e2295 Instrument fork admission timing (#295)
- 8ce342f Clean up standby control socket earlier (#293)
- fca9c3c install: grant RuntimeDirectory=hypeman so UFFD restore works under ProtectSystem=strict (#292)
- bd000da Use CLOCK (second-chance) eviction in the UFFD page cache (#274)