smolvm v1.7.0
What's Changed
- Bump the Nix flake to smolvm 1.6.0 by @BinSquare in #625
- Fix the pacman repo build so it packages both architectures by @BinSquare in #626
- Make VM boot failures diagnosable instead of opaque by @BinSquare in #627
- docs: recommend the unix-socket docker endpoint; document the TCP alternative and its caveats by @BinSquare in #621
- Add cuda to VmResources for CLI/SDK CUDA-over-vsock by @BinSquare in #628
- CUDA fork independent serving: copy-on-fork isolation, graph mode, network transport by @BinSquare in #629
- Detect a stale CUDA guest shim at boot instead of an opaque cuInit failure by @BinSquare in #630
- feat: expose the docker-socket bridge in the machines HTTP API by @BinSquare in #631
- Resolve a named config.User to a numeric uid for crun exec (#632) by @BinSquare in #634
- Warn at launch when CUDA remoting is requested on a host with no usable GPU by @BinSquare in #635
- CUDA Path 3: address-preserving per-clone-process fork isolation by @BinSquare in #633
- Bump the workspace to 1.6.1 by @BinSquare in #641
- Group container tasks under the sandbox shim (fixes containers on containerd 2.2+) by @BinSquare in #643
- Rebuild the linux libkrun.so with a glibc 2.35 floor and gate it in CI by @BinSquare in #644
- CUDA Path 3 follow-ups: fork crash fixes, zero-config forkable machines, remote (TCP) clone workers by @BinSquare in #648
- Route smolmachine pack references through the host-side pack flow instead of the in-guest OCI puller by @BinSquare in #647
- Stamp pushed smolmachine manifests with the OCI 1.1 artifactType and standard annotations by @BinSquare in #649
- CUDA fork: release a torn-down golden's VRAM (close leaked export fds) by @BinSquare in #650
- CUDA fork: fail fast when a clone's worker dies or its lineage is gone by @BinSquare in #652
- Rename the CUDA fork env vars to describe behavior by @BinSquare in #653
- release: bundle CUDA shims + smolvm-cuda-run in agent-rootfs by @NickyHeC in #601
- Stream the pack overlay export to disk by @BinSquare in #654
- CUDA image machines: run the create workload, and fail fast when no GPU host answers by @BinSquare in #655
- feat: add --expose-socket and --mount-socket for forwarding arbitrary unix sockets by @BinSquare in #656
- Run the pack-from-vm helper as the source VM's isolated uid so it can read the source disks by @BinSquare in #658
- Fix silently dropped CUDA work after a fork-clone reconnect, and rebuild captured graphs in clone workers by @BinSquare in #659
- Gate engine PRs on compiling the smol CLI and script the release cut by @BinSquare in #661
- Export the pack sidecar, not the executable stub, when a machine is exported by @BinSquare in #662
- Route fork clones to workers by an explicit connection preamble so a golden's reconnect can never be misrouted by @BinSquare in #663
- Never LRU-evict the reference-shared pack store by @BinSquare in #666
- Fail an image machine's start when the image pull fails by @BinSquare in #669
- Flatten from-vm packs to a single layer and share the pack export, workload launch, and machine-create env handling in the lib by @BinSquare in #668
- Cap keep-alive exec output so oversized results return a clear error instead of a frame-too-large crash by @BinSquare in #670
- Fix file-upload body limit and clarify the oversized-exec-output guidance by @BinSquare in #671
- CUDA fork: sync-call retry, allocation burst, multi-GPU pinning, sandboxed serve, and machine-create workload by @BinSquare in #672
- Reload clone-worker modules byte-identical to the golden's images by @BinSquare in #673
- Recover fork clones whose worker died, and give clone reconnects a real handshake window by @BinSquare in #675
- CUDA 13 guest surface by @LoganGrasby in #674
- Re-key the golden's persistent exec overlay to the clone so forks inherit filesystem state by @BinSquare in #677
- Replay function attributes on clone-worker kernels, and print backtraces on fatal signals by @BinSquare in #676
- nix/smolvm: bump to v1.6.13 by @BinSquare in #678
- Route a fork clone's execs to its inherited overlay and heal the restored stale mount by @BinSquare in #680
- Make fork clones restartable and refuse deleting a golden that still backs live clones by @BinSquare in #683
- Advertise the CUDA 12.4 surface by default; cu13 wheels opt in via SMOLVM_CUDA_ADVERTISE by @BinSquare in #681
- Fail a from-vm pack of a never-started machine with a clear error and stop leaking scratch dirs on failed helper boots by @BinSquare in #682
- Enforce the exec timeout in the keep-alive container path so an image machine's exec honors its deadline by @BinSquare in #684
- Make a provisioned local volume writable by the per-VM uid that mounts it by @BinSquare in #685
- Stream exec output live over SSE instead of buffering the whole command to completion by @BinSquare in #686
- Run a background exec detached inside the machine's keep-alive container so the process survives instead of dying within seconds by @BinSquare in #687
- chore(libkrun): bump for macOS balloon free-page reclaim by @BinSquare in #689
- Fix fork-clone serving, sm90 in-VM support, and per-replica module shipping by @BinSquare in #690
- Enable ring transport and CUDA-graph capture for in-VM serving by @BinSquare in #692
- Fixing some generic findings from six QA by @BinSquare in #691
- Relaunch the workload and refresh config from the record on implicit starts by @BinSquare in #694
- agent: idle balloon-pulse reclaim, on by default by @BinSquare in #693
- chore(libkrun): bump for balloon cleanup and clone-reclaim persistence by @BinSquare in #696
- Fork clones reuse the golden's extracted pack layers by @BinSquare in #703
- Per-fork parameters: machine fork --env KEY=VALUE by @BinSquare in #705
- Validate resources in the create-machine API so invalid cpu/memory is rejected at create by @BinSquare in #704
- Block /boot from being mounted into a guest by @BinSquare in #706
- Validate request env var names on create/exec/run by @BinSquare in #709
- Take the lifecycle lock when resizing a machine by @BinSquare in #708
- Reject cmd/entrypoint on an imageless machine create by @BinSquare in #707
- Don't leak the internal log path when a machine has no logs yet by @BinSquare in #712
- Remove the dead exec_machine handler and its duplicate OpenAPI exec path by @BinSquare in #716
- Don't orphan the agent VM when an image pull fails during start by @BinSquare in #714
- Reject duplicate guest mount targets on the HTTP create path by @BinSquare in #717
- Validate published ports on the HTTP create path by @BinSquare in #720
- Hold the lifecycle lock during machine export by @BinSquare in #719
- Report the real /dev/kvm access failure on post-uid-drop boot failures by @BinSquare in #718
- Canonicalize the volume path in the deprovision safety guard by @BinSquare in #711
- Refuse to stop a fork base that has live clones by @BinSquare in #727
- Validate pinned ports on fork by @BinSquare in #725
- Validate egress CIDRs on the HTTP create path by @BinSquare in #721
- Return a clean error instead of panicking on a NUL byte in allow-CIDR/allow-host by @BinSquare in #733
- Reject duplicate guest mount targets on machine update by @BinSquare in #724
- Correct the safe_unpack doc comment to match its actual symlink handling by @BinSquare in #736
- Reject a duration whose seconds value overflows u64 in parse_duration_secs by @BinSquare in #735
- Close a delete/fork race that could orphan a fork clone's disks by @BinSquare in #726
- Keep an explicitly stopped machine stopped under restart policies by @BinSquare in #723
- Register the machine /resize route by @BinSquare in #715
- Clone graph capture-replay: forked VMs serve with CUDA graphs by @BinSquare in #695
- Add per-fork secrets to the fork API so each clone gets its own secrets, resolved fresh per exec by @BinSquare in #731
- Fix the CUDA guest crate builds so they compile without the host feature and on macOS by @BinSquare in #737
- Fix fork weight sharing so clones import one copy of the weights instead of each privately copying them by @BinSquare in #741
- Map shared weight chunks read-only so a stray post-fork base write cannot corrupt sibling clones by @BinSquare in #742
- Bump libkrunfw to the DRM-enabled build so --gpu exposes /dev/dri by @BinSquare in #739
- docs: describe CUDA API remoting in README by @NickyHeC in #740
- tiny fix: machine create --from discards --mount-socket and --expose-socket by @Bnjoroge1 in #746
- Cuda runtime fixes by @BinSquare in #747
- Attach the machine id to the request span so failures are attributable to a machine by @BinSquare in #748
- Name the missing credential when a registry denies the pack probe, and reuse a configured image credential for it by @BinSquare in #750
- Accept registry credentials on machine start so private third-party images can be pulled by @BinSquare in #751
- Refuse to resize a fork base that has live clones by @BinSquare in #728
- Classify forking a non-forkable golden as 409, not 500 by @BinSquare in #710
- Bump the workspace to 1.7.0 for the next engine release by @BinSquare in #752
New Contributors
- @Bnjoroge1 made their first contribution in #746
Full Changelog: v1.6.0...v1.7.0