PackageTrack
Sign in Get early access

vmm-sys-util

A system utility set

0.15.0 11M downloads/mo #2972 most downloaded on crates.io rust-vmm/vmm-sys-util

What this package is like to depend on

Last release 1 years ago

07 Aug 2025

Ships fairly regularly

a new release about every 4 months

Some releases are documented

notes for 11 of 20 stable releases

2 versions withdrawn

withdrawn after publishing

7 years old

22 releases · first in 2019

0 releases in the last 12 months

see the full history below

Release timeline

22 releases · Oct 2019 to Aug 2025
2020 2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 22
  1. 0.15.0 07 Aug 2025
    Release notes

    Changelog

    v0.15.0

    Added

    • [#245]: Make sock_ctrl_msg support non-linux unix platforms.
    • [#244]:
      • Impl IntoRawFd for linux::eventfd::EventFd.
      • Use File::try_clone to replace the original implementation of EventFd::try_clone.
        Some flags can now be propagated, like CLOEXEC.
      • Add EventNotifier and EventConsumer as a generic event notification
    Open source →
    Release notes

    Added

    • [#245]: Make sock_ctrl_msg support non-linux unix platforms.
    • [#244]:
      • Impl IntoRawFd for linux::eventfd::EventFd.
      • Use File::try_clone to replace the original implementation of EventFd::try_clone. Some flags can now be propagated, like CLOEXEC.
      • Add EventNotifier and EventConsumer as a generic event notification
    Open source →
  2. 0.14.0 22 May 2025
    Release notes

    Changelog

    Upcoming

    v0.14.0

    Changed

    • [#240]: Remove PartialEq trait constraint on Entry in FAM module.
    Open source →
    Release notes

    Changed

    • [#240]: Remove PartialEq trait constraint on Entry in FAM module.
    Open source →
  3. 0.13.0 31 Mar 2025
    Release notes

    Changelog

    v0.13.0

    Added

    • [#230]: Introduce align_downwards! and align_upwards! macro to help address aligning, this implementation is faster than div_ceil way and more robust.
    • [#236]: Add a utility function for constructing an empty FamStructWrapper with a given header.

    Changed

    • [#228]: Make Debug impl for FamStructWrapper<T> print out contents of the flexible array member. This causes Debug to only be implemented if T::Entry: Debug.

    Removed

    • [#235]: Removed impl From<Vec<T>> for FamStructWrapper<T>, as this was unsound.
    Open source →
    Release notes

    Added

    • [#230]: Introduce align_downwards! and align_upwards! macro to help address aligning, this implementation is faster than div_ceil way and more robust.
    • [#236]: Add a utility function for constructing an empty FamStructWrapper with a given header.

    Changed

    • [#228]: Make Debug impl for FamStructWrapper<T> print out contents of the flexible array member. This causes Debug to only be implemented if T::Entry: Debug.

    Removed

    • [#235]: Removed impl From<Vec<T>> for FamStructWrapper<T>, as this was unsound.
    Open source →
  4. 0.12.1 02 Jan 2024
    Release notes

    Changelog

    v0.12.1

    Changed

    • [#215]: Make as_mut_fam_struct() public and unsafe to let users modify fields of the header other than the length.

    v0.12.0 (yanked)

    Changed

    • Added all features to the generated docs.rs documentation.
    • Fixed a bug in serde implementation of FamStructWrapper which allowed out of bounds memory access from Rust-safe code. See the related GHSA here: GHSA-875g-mfp6-g7f9 for more information.
    Open source →
    Release notes

    Changed

    • [#215]: Make as_mut_fam_struct() public and unsafe to let users modify fields of the header other than the length.
    Open source →
  5. 0.12.0 02 Jan 2024 withdrawn
    Release notes

    Changed

    • Added all features to the generated docs.rs documentation.
    • Fixed a bug in serde implementation of FamStructWrapper which allowed out of bounds memory access from Rust-safe code. See the related GHSA here: https://github.com/rust-vmm/vmm-sys-util/security/advisories/GHSA-875g-mfp6-g7f9 for more information.

    Fixed

    • Fixed ioctl_io*_nr macros expanding unhygenically, requiring for example the import of ioctl_ioc_nr! when using ioctl_iow_nr!.
    Open source →
  6. 0.11.2 18 Sep 2023
    Release notes

    Changed

    • [#201] Updated SyscallReturnCode to accept any signed integer type.
    Open source →
  7. 0.11.1 16 Jan 2023
    Release notes

    v0.11.1

    Changed

    • [#178]: Fixed a bug in
      rand_bytes that was triggering a panic when the number of bytes was not a
      multiple of 4.
    • [#181]: Changed
      TempFile::new_with_prefix() on linux to use mkstemp to prevent name
      collisions.
    Open source →
    Release notes

    Changed

    • [#178]: Fixed a bug in rand_bytes that was triggering a panic when the number of bytes was not a multiple of 4.
    • [#181]: Changed TempFile::new_with_prefix() on linux to use mkstemp to prevent name collisions.
    Open source →
  8. 0.11.0 09 Nov 2022
    Release notes

    v0.11.0

    Added

    • Added rand_bytes function that generates a pseudo random vector of len bytes.
    • Added implementation of std::error::Error for fam::Error.
    • Added derive Eq and PartialEq for error types.

    Changed

    • [#161]: Updated the license to BSD-3-Clause.
    • Use edition 2021.
    • [vm-memory#199]: Use caret dependencies. This is the idiomatic way of specifying dependencies. With this we reduce the risk of breaking customer code when new releases of the dependencies are published.
    • Renamed xor_psuedo_rng_u32 to xor_pseudo_rng_u32 to fix a typo.
    • Renamed xor_psuedo_rng_u8_alphanumerics to xor_pseudo_rng_u8_alphanumerics to fix a typo.
    Open source →
    Release notes

    Added

    • Added rand_bytes function that generates a pseudo random vector of len bytes.
    • Added implementation of std::error::Error for fam::Error.
      • Added derive Eq and PartialEq for error types.

    Changed

    • [#161]: Updated the license to BSD-3-Clause.
    • Use edition 2021.
    • [vm-memory#199]: Use caret dependencies. This is the idiomatic way of specifying dependencies. With this we reduce the risk of breaking customer code when new releases of the dependencies are published.
    • Renamed xor_psuedo_rng_u32 to xor_pseudo_rng_u32 to fix a typo.
    • Renamed xor_psuedo_rng_u8_alphanumerics to xor_pseudo_rng_u8_alphanumerics to fix a typo.
    Open source →
  9. 0.10.0 15 Jul 2022
    Release notes

    Added

    • Added Android support by using the appropriate macro configuration when exporting functionality.
    • Derive Debug for FamStructWrapper & EventFd.

    Changed

    • The ioctl_expr is now a const function instead of a macro.
    Open source →
    Release notes

    Added

    • Added Android support by using the appropriate macro configuration when exporting functionality.
    • Derive Debug for FamStructWrapper & EventFd.

    Changed

    • The ioctl_expr is now a const function instead of a macro.
    Open source →
  10. 0.9.0 14 Sep 2021
    Release notes

    v0.9.0

    Changed

    • Fixed safety for sock_ctrl_msg::raw_recvmsg() and enhanced documentation
    • Fixed sock_cmsg: ensured copy_nonoverlapping safety
    • [#135]: sock_ctrl_msg: mark recv_with_fds as unsafe
    Open source →
    Release notes

    Changed

    • Fixed safety for sock_ctrl_msg::raw_recvmsg() and enhanced documentation
    • Fixed sock_cmsg: ensured copy_nonoverlapping safety
    • [#135]: sock_ctrl_msg: mark recv_with_fds as unsafe
    Open source →
  11. 0.8.0 24 Feb 2021
    Release notes

    v0.8.0

    • Added set_check_for_hangup() to PollContext.
    • Added writable()/has_error()/raw_events() to PollEvent.
    • Derived Copy/Clone for PollWatchingEvents.
    • Fixed the implementation of write_zeroes to use FALLOC_FL_ZERO_RANGE
      instead of FALLOC_FL_PUNCH_HOLE.
    • Added write_all_zeroes to WriteZeroes, which calls write_zeroes in a
      loop until the requested length is met.
    • Added a new trait, WriteZeroesAt, which allows giving the offset in file
      instead of using the current cursor.
    • Removed max_events from Epoll::wait which removes possible undefined
      behavior.
    • [#104]: Fixed FAM
      struct PartialEq implementation.
    • [#85]: Fixed FAM struct
      Clone implementation.
    • [#99]: Validate the
      maximum capacity when initializing FAM Struct.
    Open source →
    Release notes
    • Added set_check_for_hangup() to PollContext.
    • Added writable()/has_error()/raw_events() to PollEvent.
    • Derived Copy/Clone for PollWatchingEvents.
    • Fixed the implementation of write_zeroes to use FALLOC_FL_ZERO_RANGE instead of FALLOC_FL_PUNCH_HOLE.
    • Added write_all_zeroes to WriteZeroes, which calls write_zeroes in a loop until the requested length is met.
    • Added a new trait, WriteZeroesAt, which allows giving the offset in file instead of using the current cursor.
    • Removed max_events from Epoll::wait which removes possible undefined behavior.
    • [#104]: Fixed FAM struct PartialEq implementation.
    • [#85]: Fixed FAM struct Clone implementation.
    • [#99]: Validate the maximum capacity when initializing FAM Struct.

    v0.7.0

    • Switched to Rust edition 2018.
    • Added the metric module that provides a Metric interface as well as a default implementation for AtomicU64.

    v0.6.1

    • Implemented From<io::Error> for errno::Error.

    v0.6.0

    • Derived Copy for EpollEvent.
    • Implemented Debug for EpollEvent.
    • Changed Epoll::ctl signature such that EpollEvent is passed by value and not by reference.
    • Enabled this crate to be used on other Unixes (besides Linux) by using target_os = linux where appropriate.

    v0.5.0

    • Added conditionally compiled serde compatibility to FamStructWrapper, gated by the with-serde feature.
    • Implemented Into<std::io::Error for errno::Error.
    • Added a wrapper over libc::epoll used for basic epoll operations.

    v0.4.0

    • Added Windows support for TempFile and errno::Error.
    • Added into_file for TempFile which enables the TempFile to be used as a regular file.
    • Implemented std::error::Error for errno::Error.
    • Fixed the implementation of register_signal_handler by allowing only valid signal numbers.

    v0.3.1

    • Advertise functionality for obtaining POSIX real time signal base which is needed to provide absolute signals in the API changed in v0.3.0.

    v0.3.0

    • Removed for_vcpu argument from signal::register_signal_handler and signal::validate_signal_num. Users can now pass absolute values for all valid signal numbers.
    • Removed flag argument of signal::register_signal_handler public methods, which now defaults to libc::SA_SIGINFO.
    • Changed TempFile::new and TempDir::new to create new temporary files/ directories inside $TMPDIR if set, otherwise inside /tmp.
    • Added methods which create temporary files/directories with prefix.

    v0.2.1

    • Fixed the FamStructWrapper Clone implementation to avoid UB.

    v0.2.0

    • fam: updated the macro that generates implementions of FamStruct to also take a parameter that specifies the name of the flexible array member.

    v0.1.1

    • Fixed the Cargo.toml license.
    • Fixed some clippy warnings.

    v0.1.0

    This is the first vmm-sys-util crate release.

    It is a collection of modules implementing helpers and utilities used by multiple rust-vmm components and rust-vmm based VMMs. Most of the code in this first release is based on either the crosvm or the Firecracker projects, or both.

    The first release comes with the following Rust modules:

    • aio: Safe wrapper over Linux AIO.

    • errno: Structures, helpers, and type definitions for working with errno.

    • eventfd: Structure and wrapper functions for working with eventfd.

    • fallocate: Enum and function for dealing with an allocated disk space by fallocate.

    • fam: Trait and wrapper for working with C defined FAM structures.

    • file_traits: Traits for handling file synchronization and length.

    • ioctls: Macros and functions for working with ioctl.

    • poll: Traits and structures for working with epoll

    • rand: Miscellaneous functions related to getting (pseudo) random numbers and strings.

    • seek_hole: Traits and implementations over lseek64.

    • signal: Enums, traits and functions for working with signal.

    • sockctrl_msg: Wrapper for sending and receiving messages with file descriptors on sockets that accept control messages (e.g. Unix domain sockets).

    • tempdir: Structure for handling temporary directories.

    • tempfile: Struct for handling temporary files as well as any cleanup required.

    • terminal: Trait for working with termios.

    • timerfd: Structure and functions for working with timerfd.

    • write_zeroes: Traits for replacing a range with a hole and writing zeroes in a file.

    Open source →
  12. 0.7.0 13 Nov 2020
    Release notes
    • Switched to Rust edition 2018.
    • Added the metric module that provides a Metric interface as well as a
      default implementation for AtomicU64.
    Open source →
  13. 0.6.1 10 Jun 2020

    Nothing published for this version

  14. 0.6.0 18 May 2020

    Nothing published for this version

  15. 0.5.0 01 Apr 2020

    Nothing published for this version

  16. 0.4.0 22 Jan 2020

    Nothing published for this version

  17. 0.3.1 10 Dec 2019

    Nothing published for this version

  18. 0.3.0 10 Dec 2019

    Nothing published for this version

  19. 0.2.1 21 Nov 2019

    Nothing published for this version

  20. 0.2.0 23 Oct 2019

    Nothing published for this version

  21. 0.1.1 08 Oct 2019

    Nothing published for this version

  22. 0.1.0 08 Oct 2019 withdrawn

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive