os-identifier 0.3.0

Resolve product / release names of operating systems used by endoflife.date into canonical names.
Documentation

This library seamlessly transforms diverse operating system product and release names from various tools into consistent, standardized canonical names, empowering reliable identification and integration.

It supports unstructured, inconsistent, and human-entered input as well as the identifiers used by the endoflife.date API.

Unstructured Input

Inventory tools or software provisioning tools often use names like the following to describe an operating system instance. This library converts strings like this into a standardized form.

pub fn main() {
    let label = model::Windows11::try_from("Windows 11 Enterprise Edition (Build 26100) (64 Bit) GA (General Availability)").unwrap();

    assert_eq!(label.vendor, "Microsoft".to_string());
    assert_eq!(label.product, "Windows 11".to_string());
    assert_eq!(label.release.to_string(), "24H2".to_string());

    assert!(label.editions.contains(model::windows_11::Edition::Enterprise));
    assert_eq!(label.service_channel, model::windows_11::ServiceChannel::GAC);
}

Structured input from endoflife.date API

The endoflife.date API provides well-structured data and standardized names for products and releases. However, the names used are not familiar, e.g. the product windows has a release called 11-24h2-w. This refers to quite some Windows 11 operating systems, such as

  • Microsoft Windows 11 Home 24H2
  • Microsoft Windows 11 Pro 24H2
  • [...]

This library resolves Windows releases referred to as "11-24h2-w" into a list of standardized operating system names covered by this name.

fn main() {
    let label = Windows11::try_from("11-24h2-e-lts").unwrap();

    assert_eq!(label.vendor, "Microsoft".to_string());
    assert_eq!(label.product, "Windows 11".to_string());
    assert_eq!(label.release.to_string(), "24H2".to_string());

    assert_eq!(label.editions.len(), Editions::all_e().len());
    assert_eq!(label.service_channel, ServiceChannel::LTSC);
}

Supported products

As of 04.03.2026 arbitrary, unstructured names are supported for Windows 10 and 11.

Regarding releases available at the endoflife.date API, the library supports any release related to these products:

Roadmap

License

Licensed under either of

at your option.