[package] authors = ["The Cloud Hypervisor Authors"] build = "build.rs" default-run = "cloud-hypervisor" description = "Open source Virtual Machine Monitor (VMM) that runs on top of KVM & MSHV" edition = "2021" homepage = "https://github.com/cloud-hypervisor/cloud-hypervisor" license = "Apache-2.0 AND BSD-3-Clause" name = "cloud-hypervisor" version = "47.0.0" # Minimum buildable version: # Keep in sync with version in .github/workflows/build.yaml # Policy on MSRV (see #4318): # Can only be bumped if satisfying any of the following: # a.) A dependency requires it, # b.) If we want to use a new feature and that MSRV is at least 6 months old, # c.) There is a security issue that is addressed by the toolchain update. rust-version = "1.88.0" [profile.release] codegen-units = 1 lto = true opt-level = "s" strip = true [profile.profiling] debug = true inherits = "release" strip = false [dependencies] anyhow = { workspace = true } api_client = { path = "api_client" } clap = { workspace = true, features = ["string"] } dhat = { workspace = true, optional = true } env_logger = { workspace = true } epoll = { workspace = true } event_monitor = { path = "event_monitor" } hypervisor = { path = "hypervisor" } libc = { workspace = true } log = { workspace = true, features = ["std"] } option_parser = { path = "option_parser" } seccompiler = { workspace = true } serde_json = { workspace = true } signal-hook = { workspace = true } thiserror = { workspace = true } tpm = { path = "tpm" } tracer = { path = "tracer" } vm-memory = { workspace = true } vmm = { path = "vmm" } vmm-sys-util = { workspace = true } zbus = { version = "5.7.1", optional = true } [dev-dependencies] dirs = { workspace = true } net_util = { path = "net_util" } serde_json = { workspace = true } test_infra = { path = "test_infra" } wait-timeout = { workspace = true } # Please adjust `vmm::feature_list()` accordingly when changing the # feature list below [features] dbus_api = ["vmm/dbus_api", "zbus"] default = ["io_uring", "kvm"] dhat-heap = ["dhat", "vmm/dhat-heap"] # For heap profiling fw_cfg = ["vmm/fw_cfg"] guest_debug = ["vmm/guest_debug"] igvm = ["mshv", "vmm/igvm"] io_uring = ["vmm/io_uring"] ivshmem = ["vmm/ivshmem"] kvm = ["vmm/kvm"] mshv = ["vmm/mshv"] pvmemcontrol = ["vmm/pvmemcontrol"] sev_snp = ["igvm", "mshv", "vmm/sev_snp"] tdx = ["vmm/tdx"] tracing = ["tracer/tracing", "vmm/tracing"] [workspace] members = [ "api_client", "arch", "block", "devices", "event_monitor", "hypervisor", "net_gen", "net_util", "option_parser", "pci", "performance-metrics", "rate_limiter", "serial_buffer", "test_infra", "tracer", "vhost_user_block", "vhost_user_net", "virtio-devices", "vm-allocator", "vm-device", "vm-migration", "vm-virtio", "vmm", ] [workspace.dependencies] # rust-vmm crates acpi_tables = { git = "https://github.com/rust-vmm/acpi_tables", branch = "main" } kvm-bindings = "0.12.0" kvm-ioctls = "0.22.0" # TODO: update to 0.13.1+ linux-loader = { git = "https://github.com/rust-vmm/linux-loader", branch = "main" } mshv-bindings = "0.6.0" mshv-ioctls = "0.6.0" seccompiler = "0.5.0" vfio-bindings = { version = "0.6.0", default-features = false } vfio-ioctls = { version = "0.5.1", default-features = false } vfio_user = { version = "0.1.1", default-features = false } vhost = { version = "0.14.0", default-features = false } vhost-user-backend = { version = "0.20.0", default-features = false } virtio-bindings = "0.2.6" virtio-queue = "0.16.0" vm-fdt = { git = "https://github.com/rust-vmm/vm-fdt", branch = "main" } vm-memory = "0.16.1" vmm-sys-util = "0.14.0" # igvm crates # TODO: bump to 0.3.5 release igvm = { git = "https://github.com/microsoft/igvm", branch = "main" } igvm_defs = { git = "https://github.com/microsoft/igvm", branch = "main" } # serde crates serde = "1.0.208" serde_json = "1.0.143" serde_with = { version = "3.14.0", default-features = false } # other crates anyhow = "1.0.98" bitflags = "2.9.3" byteorder = "1.5.0" cfg-if = "1.0.0" clap = "4.5.47" dhat = "0.3.3" dirs = "6.0.0" env_logger = "0.11.8" epoll = "4.3.3" flume = "0.11.1" libc = "0.2.167" log = "0.4.22" signal-hook = "0.3.18" thiserror = "2.0.12" uuid = { version = "1.18.1" } wait-timeout = "0.2.1" zerocopy = { version = "0.8.26", default-features = false }