NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #589 most downloaded on crates.io
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.
Last release 1 years 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
12 years old
55 releases · first in 2015
Signed-off-by: Gerd Zellweger mail@gerdzellweger.com
Signed-off-by: Gerd Zellweger mail@gerdzellweger.com
Signed-off-by: Gerd Zellweger mail@gerdzellweger.com
Signed-off-by: Gerd Zellweger mail@gerdzellweger.com
Signed-off-by: Gerd Zellweger mail@gerdzellweger.com
One column per quarter.
Signed-off-by: Gerd Zellweger mail@gerdzellweger.com
Signed-off-by: Gerd Zellweger mail@gerdzellweger.com
Signed-off-by: Gerd Zellweger mail@gerdzellweger.com
Signed-off-by: Gerd Zellweger mail@gerdzellweger.com
Signed-off-by: Gerd Zellweger mail@gerdzellweger.com
Signed-off-by: Gerd Zellweger mail@gerdzellweger.com
Signed-off-by: Gerd Zellweger mail@gerdzellweger.com
Fix bug in has_waitpkg using wrong bit flag.
has_waitpkg using wrong bit flag.Fix a regression from v10.7.0. CpuIdReader was falsely required to implement Debug for CpuId::debug() which is too strict.
CpuId::debug() which is too strict.…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 so…
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>)
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.
Update author, changelog, version, readme.
Update author, changelog, version, readme.
display feature. display will also enable
std so it can't be used in no_std environments.Signed-off-by: Gerd Zellweger mail@gerdzellweger.com
Closes #123.
Signed-off-by: Gerd Zellweger mail@gerdzellweger.com
Updated termimad to 0.20 (only affects cpuid binary version)
cpuid binary version)0x8000_001E0x8000_0019ExtendedFeatures to include new featuresUpdated phf to 0.11 (only affects cfg(test))
cfg(test))0x8000_001D0x8000_001AAdded support for cpuid leaf 0x1f (Extended Topology Information v2)
ProcessorCapacityAndFeatureInfoAdded ExtendedFeatures::has_avx512vnni().
native_cpuid is not available on the target (one can still instantiate CpuId using with_cpuid_fn in this case).Fix Cache and TLB (leaf 0x02) formatting in cpuid binary.
AMD SVM feature leaf (0x8000_000A)
serial_all, serial_upper)Display for CacheTypeDisplay for TopologyTypeDisplay for DatTypeDisplay for Associativitylocation() method for ExtendedState as an alternative for
is_in_ia32_xss and is_in_xcr0.register() method for ExtendedState to identify which register
this instance refers to.Remove has_rdseet function (deprecated since 3.2), clients should use the correctly named has_rdseed function instead.
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.
ProcessorBrandString.as_str() now trims the returned string.RdtAllocationInfo.memory_bandwidth_allocation() which was using l2cat
availability to determine if it exists.VendorInfo.as_string() is deprecated in favor of VendorInfo.as_str()SoCVendorBrand.as_string() is deprecated in favor of SoCVendorBrand.as_str()Nothing published for this version
Nothing published for this version
Use more idiomatic rust code in readme/doc.rs example.
A CpuId::with_cpuid_fn that allows to override the default cpuid function.
CpuId::with_cpuid_fn that allows to override the default cpuid function.RdtAllocationInfo.has_memory_bandwidth_allocation: was using the wrong bitcapacity_mask_length in L3CatInfo and L2CatInfo: add +1 to returned valueMemBwAllocationInfo.max_hba_throttling: add +1 to returned valueNothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →