PackageTrack
Sign in Get early access

libudev

Rust wrapper for libudev

0.3.0 11M downloads/mo #2964 most downloaded on crates.io dcuddeback/libudev-rs

What this package is like to depend on

Last release 6 years ago

no release in 18 months

Ships unpredictably

gaps range from 9 days to 4.8 years

Nearly every release is documented

notes for 7 of 7 stable releases

Nothing withdrawn

no release was ever pulled

11 years old

7 releases · first in 2015

0 releases in the last 12 months

see the full history below

Release timeline

7 releases · Apr 2015 to Jan 2021
2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 7
  1. 0.3.0 17 Jan 2021
    Release notes

    This release changes the resource management strategy. Tracking lifetimes of dependent resources makes for a less-ergonomic API. That has been replaced with reference-counting. There are no known backwards-compatibility issues with this change, so existing code should not have to be updated for compatibility with reference-counting.

    There are, however, some breaking changes to the API that are unrelated to the changes in resource management:

    1. Context::device_from_syspath() has been moved to Device::from_syspath(). Upgrading involves a search-and-replace. Anywhere you have the following code:

      context.device_from_syspath(path);

      should be replaced with:

      Device::from_syspath(&context, path);
    2. Several methods on Device changed their return type to account for the possibility of the C library returning NULL pointers:

      • Device::syspath() returns Option<&Path> instead of &Path.
      • Device::devpath() returns Option<&OsStr> instead of &OsStr.
      • Device::subsystem() returns Option<&OsStr> instead of &OsStr.
      • Device::sysname() returns Option<&OsStr> instead of &OsStr.

      Client code will have to decide how to handle a None return value.

    Added

    • Implemented Clone for Context.

    Fixed

    • Fixed several issues related to lifetimes.
    • Handled possible NULL return from udev_device_get_syspath(), udev_device_get_devpath(), udev_device_get_subsystem(), and udev_device_get_sysname().
    • Reduced memory footprint of several types to a single pointer.
    • Reduced unnecessary memory allocations when iterating devices and setting up a monitor.

    Changed

    • Replaced explicit lifetimes with reference counting.
    • Moved Context::device_from_syspath() to Device::from_syspath().
    • Changed return type of Device::syspath(), Device::devpath(), Device::subsystem(), and
      Device::sysname() to Option<...>.
    Open source →
    Release notes

    This release changes the resource management strategy. Tracking lifetimes of dependent resources makes for a less-ergonomic API. That has been replaced with reference-counting. There are no known backwards-compatibility issues with this change, so existing code should not have to be updated for compatibility with reference-counting.

    There are, however, some breaking changes to the API that are unrelated to the changes in resource management:

    1. Context::device_from_syspath() has been moved to Device::from_syspath(). Upgrading involves a search-and-replace. Anywhere you have the following code:

      context.device_from_syspath(path);
      

      should be replaced with:

      Device::from_syspath(&context, path);
      
    2. Several methods on Device changed their return type to account for the possibility of the C library returning NULL pointers:

      • Device::syspath() returns Option<&Path> instead of &Path.
      • Device::devpath() returns Option<&OsStr> instead of &OsStr.
      • Device::subsystem() returns Option<&OsStr> instead of &OsStr.
      • Device::sysname() returns Option<&OsStr> instead of &OsStr.

      Client code will have to decide how to handle a None return value.

    Added

    • Implemented Clone for Context.

    Fixed

    • Fixed several issues related to lifetimes.
    • Handled possible NULL return from udev_device_get_syspath(), udev_device_get_devpath(), udev_device_get_subsystem(), and udev_device_get_sysname().
    • Reduced memory footprint of several types to a single pointer.
    • Reduced unnecessary memory allocations when iterating devices and setting up a monitor.

    Changed

    • Replaced explicit lifetimes with reference counting.
    • Moved Context::device_from_syspath() to Device::from_syspath().
    • Changed return type of Device::syspath(), Device::devpath(), Device::subsystem(), and Device::sysname() to Option<...>.
    Open source →
  2. 0.2.0 16 Apr 2016
    Release notes

    Added

    • Added Device::parent().

    Changed

    • Replaced c_int error code with std::io::ErrorKind.
    • Minimum supported version of Rust is now 1.4.0.
    Open source →
  3. 0.1.2 05 Nov 2015
    Release notes

    Changed

    • Upgraded libc dependency to v0.2.
    Open source →
  4. 0.1.1 03 Oct 2015
    Release notes

    Added

    • Added Monitor.
    • Wrote documentation.
    Open source →
  5. 0.1.0 08 May 2015
    Release notes

    Changed

    • Bumped libudev-sys dependency to v0.1.1, which allows libudev to compile on 1.0.0-beta and presumably the imminent 1.0.0 release.
    Open source →
  6. 0.0.2 14 Apr 2015
    Release notes

    Changed

    • Removed dependencies on unstable features:
      • #![feature(libc)]: replaced with libc crate
      • #1[feature(std_misc)]: replaced AsOsStr with AsRef<OsStr>
      • #![feature(unsafe_destructor)]: stabilized
    Open source →
  7. 0.0.1 05 Apr 2015
    Release notes

    Initial release

    Open source →

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