Skip to content

Releases: dcuddeback/libudev-rs

v0.3.0

17 Jan 22:34
v0.3.0
Compare
Choose a tag to compare

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<...>.