An available release of the smolvm 1.7 toolkit has been announced. This toolkit allows users to isolate the execution of Linux applications in separate fast-start virtual machines. Smolvm enables the packaging of an application into a virtual machine image known as a “smolmachine” or a self-contained executable file that includes all necessary dependencies. These packages can then be run on any hosts with the same CPU architecture. Applications packaged in this manner run in a separate virtual machine with its own kernel, utilizing different hypervisors depending on the operating system being used – KVM on Linux, Hypervisor.framework on macOS, and the Windows Hypervisor Platform on Windows. The project code is written in Rust and is distributed under the Apache 2.0 license.
The toolkit utilizes the libkrun library to isolate processes using the hypervisor. The Linux kernel comes in the form of the libkrunfw shared library. Images are generated in OCI format, allowing users to launch existing images from various registries in a micro-VM.
With a virtual machine startup time of approximately 200 ms – only twice as long as launching a container and significantly faster than a full-fledged guest system – the memory for the virtual machine is dynamically allocated and returned to the host system using the virtio driver balloon. Additionally, when a process in a virtual machine is idle, the associated vCPU cycle is suspended to avoid overhead when inactive.
The versatility of smolvm extends to various applications such as distributing programs in portable and self-contained executable files, isolating untrustworthy applications, running Docker containers with increased isolation, creating stateful environments for program development, and utilizing git and SSH without the need to copy private keys to the virtual machine. Furthermore, graphical applications can be launched in virtual machines with access redirection to the host GPU via virtio-gpu or Venus (Vulkan API on virtio