PackageTrack
Sign in Get early access

raw-cpuid

A library to parse the x86 CPUID instruction, written in rust with no external dependencies. The implementation closely resembles the Intel CPUID manual description. The library does only depend on libcore.

11.6.0 158M downloads/mo #592 most downloaded on crates.io gz/rust-cpuid

What this package is like to depend on

Last release 11 months ago

05 Sep 2025

Release timing varies

gaps range from 2 weeks to 12 months

Some releases are documented

notes for 19 of 52 stable releases

1 version withdrawn

withdrawn after publishing

11 years old

55 releases · first in 2015

1 release in the last 12 months

see the full history below

Release timeline

55 releases · Mar 2015 to Sep 2025
2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 55
  1. 11.6.0 05 Sep 2025
    Release notes

    Signed-off-by: Gerd Zellweger [email protected]

    Open source →
  2. 11.5.0 04 Mar 2025
    Release notes

    Signed-off-by: Gerd Zellweger [email protected]

    Open source →
  3. 11.4.0 17 Feb 2025
    Release notes

    Signed-off-by: Gerd Zellweger [email protected]

    Open source →
  4. 11.3.0 14 Jan 2025
    Release notes

    Signed-off-by: Gerd Zellweger [email protected]

    Open source →
  5. 11.2.0 02 Oct 2024
    Release notes

    Signed-off-by: Gerd Zellweger [email protected]

    Open source →
  6. 11.1.0 16 Jul 2024
    Release notes

    Signed-off-by: Gerd Zellweger [email protected]

    Open source →
    Release notes
    • Support for more AVX512 Extended Features
    Open source →
  7. 11.0.2 29 Apr 2024
    Release notes
    • Fix bug in has_waitpkg using wrong bit flag.
    Open source →
  8. 11.0.1 03 May 2023
    Release notes
    • Fix a regression from v10.7.0. CpuIdReader was falsely required to implement Debug for CpuId::debug() which is too strict.
    Open source →
  9. 11.0.0 17 Apr 2023
    Release notes

    Breaking changes

    • The CpuId type now takes a generic reader argument CpuId<R: CpuIdReader>: which allows for more flexibility on how cpuid is queried and better support for using the library on non-x86 targets. This is a breaking change for users of with_cpuid_fn and potentially when specifying CpuId as a type argument somewhere. To make existing code compile again, whenever a generic type argument for CpuId is needed, you can use the cpuid::NativeCpuIdReader type which provides the default behavior of execution the cpuid instruction.

      For example, in your code there might be cases where the compiler now asks you to specify the generic type of CpuId: e.g., fn take_cpuid(cpuid: CpuId) would become: fn take_cpuid(cpuid: CpuId<NativeCpuIdReader>)

      See also #140 and #138 for the original discussion.

    • If you're using the serialization feature: It go revamped by fixing some long-standing problems with it that made it difficult to use #87. All types except CpuIdResult types lost their Serialize and Deserialize derives. Check the new example on how to serialize and deserialize cpuid information.

    Open source →
  10. 10.7.0 27 Feb 2023
    Release notes

    Update author, changelog, version, readme.

    Open source →
    Release notes
    • Include the pretty printing code in the library (instead of only having it in the binary) (#137) This introduces a new (optional) display feature. display will also enable std so it can't be used in no_std environments.
    Open source →
  11. 10.6.1 03 Feb 2023
    Release notes

    Closes #123.

    Signed-off-by: Gerd Zellweger [email protected]

    Open source →
    Release notes
    • Fix potential overflow during formatting when using the in cpuid binary to display cache information. (#133)
    Open source →
  12. 10.6.0 12 Sep 2022
    Release notes
    • Updated termimad to 0.20 (only affects cpuid binary version)
    • Add support for AMD leaf 0x8000_001E
    • Add support for AMD leaf 0x8000_0019
    • Updated ExtendedFeatures to include new features
    Open source →
  13. 10.5.0 17 Aug 2022
    Release notes
    • Updated phf to 0.11 (only affects cfg(test))
    • Add support for AMD leaf 0x8000_001D
    • Add support for AMD leaf 0x8000_001A
    Open source →
  14. 10.4.0 02 Aug 2022
    Release notes
    • Added support for cpuid leaf 0x1f (Extended Topology Information v2)
    • Improved debug formatting for ProcessorCapacityAndFeatureInfo
    Open source →
  15. 10.3.0 19 Mar 2022
    Release notes

    Added

    • Added ExtendedFeatures::has_avx512vnni().
    • Allow to build/use the crate even if native_cpuid is not available on the target (one can still instantiate CpuId using with_cpuid_fn in this case).
    Open source →
  16. 10.2.0 31 Jul 2021
    Release notes

    Added

    • Fix Cache and TLB (leaf 0x02) formatting in cpuid binary.
    Open source →
  17. 10.1.0 31 Jul 2021
    Release notes

    Added

    • AMD SVM feature leaf (0x8000_000A)
    • Added methods to display upper 64-96 bits of processor serial number (serial_all, serial_upper)
    • Implement Display for CacheType
    • Implement Display for TopologyType
    • Implement Display for DatType
    • Implement Display for Associativity
    • Added location() method for ExtendedState as an alternative for is_in_ia32_xss and is_in_xcr0.
    • Added new register() method for ExtendedState to identify which register this instance refers to.
    Open source →
  18. 10.0.0 15 Jul 2021 withdrawn
    Release notes

    Breaking changes for v10

    • Removed get_extended_function_info / ExtendedFunctionInfo due to added AMD support: Use get_processor_brand_string, get_extended_processor_and_feature_identifiers, get_l1_cache_and_tlb_info, get_l2_l3_cache_and_tlb_info, get_advanced_power_mgmt_info, get_processor_capacity_feature_info instead:

      Migration guide for replacing get_extended_function_info / ExtendedFunctionInfo:

      <= v9 >= v10
      processor_brand_string() CpuId.get_processor_brand_string
      cache_line_size() Cpuid.get_l2_l3_cache_and_tlb_info().l2cache_line_size()
      l2_associativity() Cpuid.get_l2_l3_cache_and_tlb_info().l2cache_associativity()
      cache_size() Cpuid.get_l2_l3_cache_and_tlb_info().l2cache_size()
      physical_address_bits() CpuId.get_processor_capacity_feature_info().physical_address_bits()
      linear_address_bits() CpuId.get_processor_capacity_feature_info().linear_address_bits()
      has_invariant_tsc() CpuId.get_advanced_power_mgmt_info.has_invariant_tsc()
      has_lahf_sahf() CpuId.get_extended_processor_and_feature_identifiers().has_lahf_sahf()
      has_lzcnt() CpuId.get_extended_processor_and_feature_identifiers().has_lzcnt()
      has_prefetchw() CpuId.get_extended_processor_and_feature_identifiers().has_prefetchw()
      has_syscall_sysret() CpuId.get_extended_processor_and_feature_identifiers().has_syscall_sysret()
      has_execute_disable() CpuId.get_extended_processor_and_feature_identifiers().has_execute_disable()
      has_1gib_pages() CpuId.get_extended_processor_and_feature_identifiers().has_1gib_pages()
      has_rdtscp() CpuId.get_extended_processor_and_feature_identifiers().has_rdtscp()
      has_64bit_mode() CpuId.get_extended_processor_and_feature_identifiers().has_64bit_mode()
    • Removed CpuId.deterministic_address_translation_info. Use CpuId.get_deterministic_address_translation_info instead.

    • Renamed model_id and family_id to base_model_id and base_family_id in FeatureInfo. Added new family_id and model_id functions that compute the actual model and family according to the spec by joining base and extended family/model.

    • Extend Hypervisor enum with more variants (#50)

    • Remove has_rdseet function (deprecated since 3.2), clients should use the correctly named has_rdseed function instead.

      Migration guide for cpuid.get_feature_info():

      <= v9 >= v10
      has_rdseet() has_rdseed()
    • Removed Default traits for most structs. default() should not be used anymore.

    Changes

    • Updated Debug trait for SGX iterators.
    • Make CpuId derive Clone and Copy (#53)
    • Improved documentation in some places by adding leaf numbers.
    • Updated AMD leaf 0x8000_001f (Encrypted Memory) to latest manual.
    • ProcessorBrandString.as_str() now trims the returned string.
    • Fix RdtAllocationInfo.memory_bandwidth_allocation() which was using l2cat availability to determine if it exists.

    Added

    • Added AMD support for leaf 0x8000_0001
    • Added AMD support for leaf 0x8000_0005
    • Added AMD support for leaf 0x8000_0006
    • Added AMD support for leaf 0x8000_0007
    • Added AMD support for leaf 0x8000_0008

    Deprecated

    • VendorInfo.as_string() is deprecated in favor of VendorInfo.as_str()
    • SoCVendorBrand.as_string() is deprecated in favor of SoCVendorBrand.as_str()
    Open source →
  19. 10.0.0-rc.3 14 Jul 2021 pre-release

    Nothing published for this version

  20. 10.0.0-rc.2 13 Jul 2021 pre-release

    Nothing published for this version

  21. 9.1.1 06 Jul 2021
    Release notes

    Changed

    • Use more idiomatic rust code in readme/doc.rs example.
    • Use str::from_utf8 instead of str::from_utf8_unchecked to avoid potential panics with the Deserialize trait (#43).
    • More extensive Debug trait implementation (#49)
    • Fix 2 clippy warnings
    Open source →
  22. 9.1.0 04 Jul 2021
    Release notes

    Added

    • A CpuId::with_cpuid_fn that allows to override the default cpuid function.

    Changed

    • Fixed RdtAllocationInfo.has_memory_bandwidth_allocation: was using the wrong bit
    • Fixed capacity_mask_length in L3CatInfo and L2CatInfo: add +1 to returned value
    • Fixed MemBwAllocationInfo.max_hba_throttling: add +1 to returned value
    • Refactored tests into a module.
    • Started to add tests for Ryzen/AMD.
    Open source →
  23. 9.0.1 03 Jul 2021

    Nothing published for this version

  24. 9.0.0 21 Jan 2021

    Nothing published for this version

  25. 8.1.2 22 Oct 2020

    Nothing published for this version

  26. 8.1.1 03 Jul 2020

    Nothing published for this version

  27. 8.1.0 15 May 2020

    Nothing published for this version

  28. 8.0.0 29 Apr 2020

    Nothing published for this version

  29. 7.0.4 21 Dec 2020

    Nothing published for this version

  30. 7.0.3 08 Sep 2019

    Nothing published for this version

  31. 7.0.2 08 Sep 2019

    Nothing published for this version

  32. 7.0.1 08 Sep 2019

    Nothing published for this version

  33. 7.0.0 08 Sep 2019

    Nothing published for this version

  34. 6.1.0 12 Nov 2018

    Nothing published for this version

  35. 6.0.0 02 Oct 2018

    Nothing published for this version

  36. 5.0.0 13 Jul 2018

    Nothing published for this version

  37. 4.0.0 19 Jun 2018

    Nothing published for this version

  38. 3.1.0 19 Apr 2018

    Nothing published for this version

  39. 3.0.0 11 Apr 2017

    Nothing published for this version

  40. 2.0.2 11 Apr 2017

    Nothing published for this version

  41. 2.0.1 08 Jun 2016

    Nothing published for this version

  42. 2.0.0 28 Nov 2015

    Nothing published for this version

  43. 1.0.4 12 Nov 2015

    Nothing published for this version

  44. 1.0.3 12 Nov 2015

    Nothing published for this version

  45. 1.0.2 13 Oct 2015

    Nothing published for this version

  46. 1.0.1 09 Aug 2015

    Nothing published for this version

  47. 1.0.0 19 Jul 2015

    Nothing published for this version

  48. 0.2.0 18 Jul 2015

    Nothing published for this version

  49. 0.1.1 17 Jul 2015

    Nothing published for this version

  50. 0.1.0 17 Jul 2015

    Nothing published for this version

  51. 0.0.5 16 Jul 2015

    Nothing published for this version

  52. 0.0.4 15 Jul 2015

    Nothing published for this version

  53. 0.0.3 08 Apr 2015

    Nothing published for this version

  54. 0.0.2 24 Mar 2015

    Nothing published for this version

  55. 0.0.1 24 Mar 2015

    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