cpu_info 0.1.0

A lightweight, cross-platform Rust library to retrieve CPU vendor, model, core topology, and hybrid distribution detection using pure Rust with no external commands.
Documentation
# cpu_info

A lightweight, cross-platform Rust library that retrieves detailed CPU information with **zero unsafe FFI dependencies** and without relying on system locale or external commands.

This crate is designed to work reliably on **Linux** and **Windows** (more platforms coming soon).
It parses standardized kernel interfaces (`/sys`, `/proc`) and CPUID instructions when available, delivering:

* CPU vendor (Intel, AMD, ARM implementers, or custom vendor string)
* CPU architecture (x86, x86-64, ARM, ARM64)
* CPU model name (via CPUID on x86 or procfs on ARM)
* Total logical cores
* Total physical cores
* Core grouping and distribution analysis

  * Linear CPUs (all cores identical)
  * Hybrid CPUs (e.g., Intel P-cores + E-cores)
  * Custom configurations (multiple clock groups)

This crate is pure Rust and does **not** use any C libraries or bindings.

---

## ✨ Features

### ✔ Accurate vendor detection

* On x86/x86-64: via CPUID vendor string
* On ARM: via `implementer` ID from `/proc/cpuinfo`

### ✔ Architecture detection

Based on Rust’s built-in compile-time constants (always correct).

### ✔ Physical and logical core counting

Uses `/sys/devices/system/cpu` for reliable detection across all Linux distributions.

### ✔ Hybrid CPU detection

Detects P-cores and E-cores by analyzing clock frequency groups or `core_type` when available.

### ✔ No locale issues

Does **not** rely on text labels like “model name”, which vary by language.

### ✔ No external commands

No calls to `lscpu`, `nproc`, `dmidecode`, etc.

---

## 🔭 Upcoming features (work in progress)

The crate will soon include **runtime CPU feature detection**, such as:

* SSE, SSE2, SSE3, SSSE3
* AVX, AVX2
* BMI1, BMI2
* FMA
* POPCNT
* RDTSCP
* AES-NI
* And many other CPUID-based feature bits

This will allow applications and game engines to **adapt dynamically** to available instruction sets without relying on compile-time feature flags.

(Windows + Linux support planned; macOS may be added later.)

---

## 🚀 Example

```rust
use cpu_info::CpuInfo;

fn main() {
    let info = CpuInfo::new();
    println!("{:#?}", info);
}
```

---