# 0.39.0

 * Update minimum supported rust version to `1.95`.
 * Add new `NetworkData::operational_state` API.
 * Add new `Process::cgroup_limits` API (only returning data on Linux).
 * All supported systems other than Windows: Improve performance of `Networks::refresh*`.
 * All supported systems other than Windows: Fix soundness issue when retrieving users.
 * Linux: Take into account parent cgroup memory limits.
 * Linux: Fix panic when retrieving process information on `ESXi`.
 * FreeBSD: Use the name of dataset as `name` for zfs disks.

# 0.38.4

 * macOS: Unpin `objc2-*` crates version.
 * Linux: Fix computation of disk size.

# 0.38.3

 * macOS: Improve accuracy of `System::available_memory` and `System::used_memory`.
 * Documentation: add missing unit for `CPU::frequency` returned value.

# 0.38.2

 * Implement `Error` trait for `MacAddrFromStrError`, `IpNetworkFromStrError` and `KillError` types.

# 0.38.1

 * macOS: Put back support for versions below macOS 12.

# 0.38.0

 * Add NetBSD support.
 * Windows: Fix unsoundness for a function used in `Motherboard` and `Product`.
 * Linux: Improve CPU info parsing.
 * Fix `serde` serialization of `MacAddr` and of `Disk::file_system`.

# 0.37.2

 * Improve documentation of `System::refresh_cpu_all` and of `System::refresh_cpu_specifics`.
 * Android: Fix `System::uptime`.
 * Linux: Correctly handled modified/removed `Process::exe` paths.

# 0.37.1

 * Fix `serde` serialization on `Process::name`.
 * Linux: Fix `get_cpu_frequency` on `loongarch64`.
 * Windows: Correctly handle invalid UTF-8 string in `Motherboard`.

# 0.37.0

 * Update minimum supported Rust version to `1.88` (for 2024 edition and `if let chain` feature).
 * Added `Component::id` API.
 * Linux: Greatly improve partial processes retrieval.
 * Linux: Simplify internal components retrieval code.

# 0.36.1

* Linux: Improve processor CPU usage computation.

# 0.36.0

 * Add new `Motherboard` type.
 * Add new `Product` type.
 * Linux/macOS: Fix CPU usage update.
 * Linux: Improve `Component::label` generated `String`.
 * macOS: Make `Components` implement `Send` and `Sync` traits.

# 0.35.2

 * Linux: Fix retrieval of processor frequency on loongarch64.
 * Linux/Android: Improve `Process::wait` by checking if the process is still alive before waiting.
 * Windows: Fix `Process::wait`.

# 0.35.1

 * Linux: Fix processor retrieval if some information is missing.
 * Windows: Increase range of `windows` crate up to `< 0.63`.

# 0.35.0

 * Update MSRV to 1.75.
 * Add `System::open_files_limit`.
 * Add `Process::kill_and_wait` and `Process::kill_with_and_wait` methods.
 * `Process::open_files*` methods return `usize`.
 * `set_open_files_limit` argument type is `usize`.
 * Code example was improved.
 * macOS: Fix M4 CPU frequency calculation.
 * Linux: Correctly handle when new CPUs are added.
 * Linux: Ignore `autofs` disks.
 * Linux (raspberry pi): Retrieve more thermal zones.
 * Android: Update documentation to mention that newer Android version don't allow to retrieve CPU information.
 * Windows: Improve `Process::wait` code.
 * Windows: Fix `Groups::refresh`.

# 0.34.2

 * FreeBSD: Fix segfault when refreshing processes.

# 0.34.1

 * macOS: Remove forgotten debug print.

# 0.34.0

 * `multithread` feature is disabled by default.
 * Add new `Process` methods: `accumulated_cpu_time`, `exists`, `open_files` and `open_files_limit`.
 * `Process::wait` method now returns `Option<ExitStatus>`.
 * Add new `System` methods: `distribution_id_like` and `kernel_long_version`.
 * Turn `System::physical_core_count` method into an associated function.
 * Make `System::refresh_all` and `System::refresh_specifics` methods remove dead processes.
 * Add new `ProcessRefreshKind` refresh: `tasks`.
 * Fix `Group` docs.
 * Implement `Deserialize` trait on `DiskKind`, `MacAddr`, `IpNetwork`, `ProcessStatus`, `Signal` and `ThreadKind`.
 * Implement `FromStr` trait on `IpNetwork` and `MacAddr`.
 * Implement `Hash` trait on `DiskKind`, `MacAddr`, `ProcessStatus` and `Signal`.
 * macOS: Removed processes are now correctly handled when refreshing processes.
 * macOS: Strengthen dist list refresh.
 * macOS: Fix internal `cfg` handling which triggered compilation failures in some specific cases.
 * Linux: max cgroups memory is more reliant in case of wrong input.
 * Linux: Fix processes tasks update.
 * Linux: Improve disks retrieval.
 * Windows: Fix antivirus considering programs using `sysinfo` as viruses by replacing uses of `NtQueryInformationProcess` with other "mainstream" Windows API.
 * Windows: Improve CPU usage computation efficiency.
 * FreeBSD: Improve `process_procs` when there is only one process to refresh.

# 0.33.1

 * Linux: Fix components retrieval.
 * Linux: Filter out more virtual file systems for `Disk` API.
 * Linux/Android: Improve `System::long_os_version()`.
 * Apple: Add missing CPU brands for iPhone and iPads.
 * macOS: Improve system name retrieval in `System::long_os_version()`.
 * Linux/macOS: Avoid trailing whitespace and consecutive whitespace in `System::long_os_version()`.
 * Windows: Fix `User::groups`.
 * Improve documentation for `System::name`, `System::kernel_version`, `System::os_version`, `System::long_os_version` and `System::distribution_id`.

# 0.33.0

 * Linux: Add more ARM vendor IDs.
 * Linux: Improve CPU computation when refreshing a single process CPU usage.
 * Windows: Fix CPU frequency not being refreshed.
 * Windows: Improved components retrieval.
 * Windows: Fix inconsistent `boot_time` information.
 * Windows: Fix `User::groups`.
 * macOS: Fix network data information being limited to 32 bits.
 * macOS: Add newer macOS version for `System::long_os_version`.
 * unix: Add support for network sub-interfaces.
 * Use `std::env::consts::ARCH` as fallback for `System::cpu_arch`.
 * Add disk I/O support provided through `Disk::usage`.
 * Add `NetworkData::mtu`.
 * Add `DiskRefreshKind` to have finer-grained disks refreshes.
 * `Component::temperature` and `Component::max` now returns `Option<f32>`.
 * `Users::refresh_list`, `Groups::refresh_list`, `Components::refresh_list`, `Networks::refresh_list` and `Disks::refresh_list` methods were renamed `refresh`.
 * `*RefreshKind::new` methods were renamed `nothing`.
 * Improve documentation for `DiskUsage::read_bytes`.
 * Improve documentation for `Process::kill`.

# 0.32.1

 * Fix compilation error due to `libc` update.

# 0.32.0

 * Add new `Disk::is_read_only` API.
 * Add new `remove_dead_processes` argument to `System::refresh_processes` and `System::refresh_processes_specifics`.
 * macOS: Fix memory leak in disk refresh.

# 0.31.4

 * macOS: Force memory cleanup in disk list retrieval.

# 0.31.3

 * Raspberry Pi: Fix temperature retrieval.

# 0.31.2

 * Remove `bstr` dependency (needed for rustc development).

# 0.31.1

 * Downgrade version of `memchr` (needed for rustc development).

# 0.31.0

 * Split crate in features to only enable what you need.
 * Remove `System::refresh_process`, `System::refresh_process_specifics` and `System::refresh_pids`
methods.
 * Add new argument of type `ProcessesToUpdate` to `System::refresh_processes` and `System::refresh_processes_specifics` methods.
 * Add new `NetworkData::ip_networks` method.
 * Add new `System::refresh_cpu_list` method.
 * Global CPU now only contains CPU usage.
 * Rename `TermalSensorType` to `ThermalSensorType`.
 * Process names is now an `OsString`.
 * Remove `System::global_cpu_info`.
 * Add `System::global_cpu_usage`.
 * macOS: Fix invalid CPU computation when single processes are refreshed one after the other.
 * Windows: Fix virtual memory computation.
 * Windows: Fix WoW64 parent process refresh.
 * Linux: Retrieve RSS (Resident Set Size) memory for cgroups.

# 0.30.13

 * macOS: Fix segfault when calling `Components::refresh_list` multiple times.
 * Windows: Fix CPU arch retrieval.

# 0.30.12

 * FreeBSD: Fix network interfaces retrieval (one was always missing).

# 0.30.11

 * macOS: Fix some invalid utf8 conversions.

# 0.30.10

 * Linux: Fix components not being listed anymore.

# 0.30.9

 * Linux/Windows: Performance improvements.
 * Linux/macOS/FreeBSD: Parent process ID is updated if changed as expected.

# 0.30.8

 * Linux: Fix missing parallelization.
 * Linux: Add `cargo` feature flag `linux-tmpfs` to list `tmpfs` mounts.
 * macOS: Fix CPU usage returning `NaN`.
 * `Components::refresh` is now parallelized.

# 0.30.7

 * Linux: Fix cgroup memory computation.
 * FreeBSD: Fix documentation about disk usage.

# 0.30.6

 * macOS: Fix missing update of process run time.
 * Add new `Groups` API.
 * Improve documentation.

# 0.30.5

 * Windows: Correctly retrieve processes name on 32 bits platforms.
 * Windows: Fix swap memory computation.

# 0.30.4

 * Windows: Fix misaligned read.

# 0.30.3

 * Improve dependency stack by updating the `windows` dependency.

# 0.30.2

 * Add `ThreadKind` enum.
 * Add `Process::thread_kind` method.

# 0.30.1

 * Linux: Fix invalid memory information retrieval (virtual and resident set size were reversed).

# 0.30.0

 * Split `System` into subtypes: `Components`, `Disks`, `Networks` and `Users`.
 * `brand`, `vendor_id` and `frequency` information is not set anymore on the global CPU.
 * Unix: Fix endless loop in user groups retrieval.
 * Unix/Windows: Fix infinite loop when retrieving various information because of bad usage
   of `Vec::reserve`.
 * Unix: Fix invalid usage of NULL pointer when retrieving user group name.
 * Linux: Fix CPU name retrieval.
 * Linux: Remove cgroup usage from memory computation.
 * Linux: Add `linux-netdevs` feature to allow to retrieve network devices.
 * Linux: Improve system memory information retrieval (using `statm` file instead of `stat`).
 * Linux: Tasks are listed in processes.
 * macOS: Correctly retrieve process root directory.
 * Windows: Add warning that `System::load_average` is not working in documentation.
 * Windows: Fix invalid use of NULL pointer when retrieving users groups.
 * Windows: Correctly retrieve process root directory.
 * Create new `System::cgroup_limits` method.
 * Remove `System::refresh_system` method.
 * `Disk::file_system` and `Disk::name` now return an `Option<&OsStr>`.
 * Implement `Display` trait on `DiskKind`.
 * Move from `winapi` to `windows` crate.
 * Add `System::cpu_arch`.
 * Add `System::refresh_pids` and `System::refresh_pids_specifics`.
 * `System::boot_time`, `System::cpu_arch`, `System::distribution_id`, `System::host_name`,
   `System::kernel_version`, `System::load_average`, `System::long_os_version`, `System::name`,
   `System::os_version` and `System::uptime` are static methods.
 * `ProcessRefreshKind` has a lot more of possibilities for better control over updates.
 * Add new `UpdateKind` enum.
 * Add new `MemoryRefreshKind` struct.
 * Add new `System::refresh_memory_specifics` method.
 * `Process::exe`, `Process::cwd` and `Process::root` return an `Option<&Path>`.
 * `Process::tasks` method is available on all platforms.
 * `Process::tasks` method returns a `HashSet<Pid>`.
 * Move `System::IS_SUPPORTED`, `System::SUPPORTED_SIGNALS` and
   `System::MINIMUM_CPU_UPDATE_INTERVAL` constants out of `System` directly at the crate top-level.
 * Rename `IS_SUPPORTED` into `IS_SUPPORTED_SYSTEM`.
 * Fix `serde` serialization.
 * Add `System::refresh_cpu_frequency` and `System::refresh_cpu_all`.
 * Fix `sysinfo.h` and C wrapper.
 * Add a migration guide.

# 0.29.11

 * macOS: Fix bug when a user group doesn't have a name.

# 0.29.10

 * Linux: Correctly handle max memory value for cgroups.

# 0.29.9

 * Linux: Fix memory usage retrieval for cgroups.

# 0.29.8

 * Linux: Fix overflow bug.

# 0.29.7

 * macOS: Fix CPU frequency retrieval for M1 and M2.
 * Linux: Add support for cgroups v1/v2 for memory.
 * Windows: Fix processes name encoding issues.

# 0.29.6

 * Update minimum rust version to 1.63.
 * Windows: Fix memory corruption when listing processes.
 * Windows: Fix name inconsistency between `refresh_processes` and `refresh_process`.
 * `Cargo.lock` is now included to prevent minimum rust version disruptions.

# 0.29.5

 * Windows: Remove some undefined behaviour when listing processes.
 * <docs.rs>: Use `--generate-link-to-definition` option to have better source code pages.

# 0.29.4

 * Windows: Improve code to retrieve network interfaces.
 * Improve serde documentation example.
 * Fix some clippy lints.

# 0.29.3

 * Fix some documentation examples.

# 0.29.2

 * <docs.rs>: Generate documentation for all supported platforms.

# 0.29.1

 * Update `libc` version to 0.2.144.
 * Linux/FreeBSD/macOS: Fix retrieval of users groups in multi-threaded context.

# 0.29.0

 * Add `ProcessExt::effective_user_id` and `ProcessExt::effective_group_id`.
 * Rename `DiskType` into `DiskKind`.
 * Rename `DiskExt::type_` into `DiskExt::kind`.
 * macOS: Correctly handle `ProcessStatus` and remove public `ThreadStatus` field.
 * Windows 11: Fix CPU core usage.

# 0.28.4

 * macOS: Improve CPU computation.
 * Strengthen a process test (needed for debian).

# 0.28.3

 * FreeBSD/Windows: Add missing frequency for global CPU.
 * macOS: Fix used memory computation.
 * macOS: Improve available memory computation.
 * Windows: Fix potential panic when getting process data.

# 0.28.2

 * Linux: Improve CPU usage computation.

# 0.28.1

 * macOS: Fix overflow when computing CPU usage.

# 0.28.0

 * Linux: Fix name and CPU usage for processes tasks.
 * unix: Keep all users, even "not real" accounts.
 * Windows: Use SID for Users ID.
 * Fix C API.
 * Disable default cdylib compilation.
 * Add `serde` feature to enable serialization.
 * Linux: Handle `Idle` state in `ProcessStatus`.
 * Linux: Add brand and name of ARM CPUs.

# 0.27.8

 * macOS: Fix overflow when computing CPU usage.

# 0.27.7

 * macOS: Fix process CPU usage computation
 * Linux: Improve ARM CPU `brand` and `name` information.
 * Windows: Fix resource leak.
 * Documentation improvements.

# 0.27.6

 * Make `MacAddr` public.

# 0.27.5

 * Linux: Improve compatibility with upcoming `libc` changes for musl targets.

# 0.27.4

 * Create `SystemExt::MINIMUM_CPU_UPDATE_INTERVAL` constant.
 * Fix consecutive processes updates CPU usage computation.

# 0.27.3

 * macOS: Fix free/available memory computation.
 * Fix processes_by_name* lifetimes

# 0.27.2

 * Linux: Fix consecutive process CPU usage updates.
 * Linux: Ignore NFS disks.

# 0.27.1

 * Unix systems: Fix network address segfault issue.

# 0.27.0

 * Add `NetworkExt::mac_address` method and `MacAddr` type.
 * Linux: Fix truncated environment retrieval.
 * Implement `TryFrom<usize>` and `FromStr` for `Gid` and `Uid`.
 * Implement `TryFrom<usize>` for `Pid`.
 * Fix documentation of `System::new` about CPU list not loaded by default.

# 0.26.9

 * (backport) Linux: Improve compatibility with upcoming `libc` changes for musl targets.

# 0.26.8

 * Add `ProcessExt::session_id` method.
 * Linux: Ignore NFS disks.

# 0.26.7

 * Apple: Greatly improve disk retrieval (I recommend reading the pull request first comment for more information here: <https://github.com/GuillaumeGomez/sysinfo/pull/855>).
 * Remove build script.

# 0.26.6

 * Add `Process::wait`.
 * Add "Good practice" entry into the crate level documentation and in the README.
 * Linux: More precise used memory computation.

# 0.26.5

 * Windows: Fix disk information retrieval.
 * Linux: Improve `Process` document.
 * Linux: Fix a compilation error if the `apple-sandbox` feature is enabled.
 * Internal code improvements.

# 0.26.4

 * Add `SystemExt::distribution_id` method.
 * Update `ntapi` version to `0.4`.
 * Update minimum supported Rust version (MSRV) to `1.59` for `ntapi` 0.4.

# 0.26.3

 * Update minimum supported Rust version (MSRV) to `1.56` to follow `once_cell` minor update.

# 0.26.2

 * Linux: Fix process information retrieval.
 * Linux: Get more components temperature.
 * Linux: Fix disk name retrieval (which in turn fixed disk type retrieval).

# 0.26.1

 * macOS M1: Fix segmentation fault crash.

# 0.26.0

 * Switch memory unit from kilobytes to bytes.
 * Windows: Fix Windows version display on Windows 11.

# 0.25.3

 * Add macOS M1 CI checks.
 * macOS M1: Add temperature support.
 * macOS: Fix leak in disk retrieval.

# 0.25.2

 * Windows: Fix `Process::exe` information retrieval.
 * All supported platforms: Correctly handle a PID owner change (#809).

# 0.25.1

 * Linux: Fix potential problem on `ProcessExt::exe` in case `/proc/<pid>/exe` cannot be read.
 * Add `SystemExt::sort_disks_by`.

# 0.25.0

 * Linux: CPU frequency is now retrieved on-demand as expected when `CpuRefreshKind::frequency` is `true`.
 * `System::refresh_cpu` behaviour changed: it only computes CPU usage and doesn't retrieve CPU frequency.

# 0.24.7

 * Windows: Fix boot time computation.
 * macOS: Fix available memory computation.
 * Some documentation fixes.

# 0.24.6

 * macOS: Don't compute CPU usage when elapsed time is 0.
 * macOS: Fix memory leak when retrieving disks.
 * C interface: Fix `char` cast when platform is using unsigned `char`s.

# 0.24.5

 * Implement `Hash` trait on `Uid` and `Gid` types.
 * Remove dependency `once_cell` for targets other than `linux`, `android` and `windows`.

# 0.24.4

 * Windows: Fix `System::refresh_process` when required higher privileges.

# 0.24.3

 * macOS: Fix `System::refresh_processes` badly handling updates.
 * FreeBSD: Improve performance of `System::refresh_processes`.

# 0.24.2

 * Windows: Fix CPU usage computation.
 * Windows: Enable extra feature on `winapi`.
 * macOS: Fix executable path retrieval.

# 0.24.1

 * Use `saturating_*` function for mathematical operations to prevent overflows/underflows.

# 0.24.0

 * Rename `Processor` into `Cpu` and `ProcessorExt` into `CpuExt`.
 * Retrieve information about a process' owner.
 * Add `SystemExt::get_user_by_id`.
 * Add `ProcessExt::user_id`.
 * Add `ProcessExt::group_id`.
 * Add `user`-related methods to `ProcessRefreshKind`.
 * Linux: Improve performance when creating new `Process` by improving retrieval of user ID and group ID.

# 0.23.14

 * Linux: Fix processes' virtual memory computation.

# 0.23.13

 * macOS/FreeBSD: Fix `System::refresh_process` and `System::refresh_process_specifics` returned value.
 * Linux: Small performance improvement when updating process list.

# 0.23.12

 * Linux: Improve `System::refresh_cpu` performance.
 * Fix clippy lints.

# 0.23.11

 * Add FreeBSD to the "supported OS" list
 * Remove useless benchmark results

# 0.23.10

 * Improve documentation of `SystemExt::refresh_cpu`.

# 0.23.9

 * macOS: Fix disk retrieval

# 0.23.8

 * Windows: Fix underflow for `Process` run_time computation

# 0.23.7

 * macOS: Ignore non-root drive partitions

# 0.23.6

 * Windows: Fix process name retrieval
 * Windows: Unify internal process creation methods
 * FreeBSD: Simplify code for process update

# 0.23.5

 * Windows: Fix a bug which prevent all disks to be listed.

# 0.23.4

 * Linux (raspberry): Fix physical core count.

# 0.23.3

 * Impl `From<Pid>` for Pid inner type.
 * Code cleanup.

# 0.23.2

 * Fix unsafe "correctness".
 * Correctly handle `MaybeUninit::assume_init`.

# 0.23.1

 * Implement `Into` trait on `Pid`
 * Add `#[repr(transparent)]` on `Pid`
 * Clean up `refresh_process` and `refresh_processes`: only `refresh_processes` removes non-existing processes.

# 0.23.0

 * Linux: Fix process uptime.
 * Rename `process_by_name` into `processes_by_name`.
 * Rename `process_by_name_exact` into `processes_by_name_exact`.
 * Change returned type of `process_by_name` and of `process_by_name_exact` into an iterator.
 * Improved `Signal` documentation.
 * Turned `Pid` type alias into a newtype.

# 0.22.5

 * Linux: Improve documentation on how processes queries are handled.
 * FreeBSD: Fix type error for 32-bit (on i386, armv6, armv7, powerpc).
 * Improve Pid type documentation.
 * Add `SystemExt::process_by_exact_name` method.
 * Add `SUPPORTED_SIGNALS` constant on `SystemExt`.
 * Fix common type aliases.
 * Implement `Display` for `Signal`.

# 0.22.4

 * Windows: Correctly handle COM initialization/deinitialization.
 * Linux: Fix panic when changing the limit of open files.

# 0.22.3

 * FreeBSD: Take ZFS ARC value into account when computing used system memory.
 * Add some missing `#[must_use]`.

# 0.22.2

 * FreeBSD: Improve memory information retrieval.

# 0.22.1

 * Remove forgotten debug.

# 0.22.0

 * Add FreeBSD support.
 * Create `SystemExt::refresh_processes_specifics` and `SystemExt::refresh_process_specifics` methods.
 * Update `ProcessExt::kill` API and add `ProcessExt::kill_with`.
 * Add `ProcessExt::run_time`.

# 0.21.2

 * Unsupported targets: Fix build.
 * Linux: Exclude rootfs disk type as well.
 * Windows: Performance improvement by lazily creating queries.

# 0.21.1

 * Linux: Process CPU usage cannot go above maximum value (number of CPUs * 100) anymore.
 * Linux: Improve processors update.
 * Linux: Improve processes CPU usage computation speed.

# 0.21.0

 * Linux: Fix processes CPU computation (if `System::refresh_cpu` wasn't used).
 * Fix build for unsupported targets.
 * Make `ProcessStatus` enum unique for all platforms.
 * Unify documentation over all platforms.

# 0.20.5

 * Linux: Prevented overflow in disk size computation (bug in `davfs2`).
 * Fixed clippy lints

# 0.20.4

 * Update libc version, allowing to remove a lot of FFI bindings.

# 0.20.3

 * Windows: Reworked process information retrieval
 * Windows: Fixed issue on `c_void` size.
 * Improved documentation of `ProcessExt::environ`.

# 0.20.2

 * Windows: Added support for getting process' current working directory
 * Windows: Added support for getting process' environment variables
 * Removed more FFI bindings and replaced them with libc's.

# 0.20.1

 * macOS: Added better support for sandboxing.
 * macOS: Added support for getting process current working directory.
 * Added more explanations in crate level code example.
 * Updated rayon version to 1.5.1.

# 0.20.0

 * macOS: Improved code readability.
 * Windows: Prevented the `taskkill.exe` console window from appearing when using `kill`.
 * Fixed benchmarks compilation issue.
 * Upgraded minimum supported Rust version to 1.54.
 * Removed doc-comment dependency.
 * Merged README and crate documentation.

# 0.19.2

 * Windows: Fixed swap memory information computation.

# 0.19.1

 * Windows: Got swap memory information.
 * Linux: Fixed memory information gathering (bad parsing of `/proc/meminfo`).

# 0.19.0

 * Renamed functions/methods to follow [Rust API guidelines on naming](https://rust-lang.github.io/api-guidelines/naming.html#getter-names-follow-rust-convention-c-getter).
 * Linux: Set processes' executable path from command line if not found.
 * Linux: Added extra information about `ProcessExt::name()`.
 * macOS: Removed unneeded (re)import of CoreFoundation library at compile-time.
 * Reworked `DiskType` enum: there is no more `Removable` variant, it's now set into the `Disk` struct. `DiskExt::is_removable` was added.
 * Linux: Added support for removable disks.
 * Linux: Ensured there's a value in `global_processor` frequency.
 * Fixed tests to make them a bit less strict (which was problematic when run on VMs).
 * Linux: Fixed CPU usage subtraction overflow.

# 0.18.2

 * macOS: Brand and vendor ID information were reversed.
 * macOS: On Apple M1 processors, the vendor ID is empty, so instead we return "Apple".
 * Added tests to ensure that the processors are always set after `System::new()`.

# 0.18.1

 * Added `SystemExt::IS_SUPPORTED` constant to allow to easily query if a system is supported or not.
 * Used `SystemExt::IS_SUPPORTED` to fix tests on non-supported platforms and simplify others.

# 0.18.0

 * Improved documentation to make it more clear how to use the different information.
 * Turned the `Signal` enum into a full rust one by removing the `#[repr(C)]` attribute on it. Each platform now implements its own conversion.
 * Removed `Signal::Stklft` which wasn't used on any supported system.
 * Linux: Added support for paravirtualized disks.

# 0.17.5

 * Improved network code: network interfaces were handled a bit differently depending on the platform, it is now unified.

# 0.17.4

 * Linux: fixed invalid network interface cleanup when an interface was removed from the system in `refresh_networks_list`.
 * Added freebsd to CI runs.
 * Added `cargo test` command for freebsd on CI.
 * freebsd: Fixed build.

# 0.17.3

 * Removed manual FFI bindings in both Apple and Windows targets.
 * Fixed C-interface compilation.
 * Added information on how to add new platform.

# 0.17.2

 * Linux: fixed `System::refresh_process` return value.

# 0.17.1

 * Windows: fixed process CPU usage computation.
 * Linux: improved CPU usage values on first query by returning 0: it now waits the second cycle before computing it to avoid abherent values.
 * Linux: fixed process name retrieval by using `stat` information instead.
 * Apple: only list local users.

# 0.17.0

 * Linux: fixed OS version retrieval by adding a fallback to `/etc/lsb-release`.
 * iOS: fixed warnings.
 * Renamed `ProcessStatus::to_string` method to `as_str`.
 * macOS: fixed CPU usage computation.

# 0.16.5

 * Windows: Removed trailing NUL bytes in hostname.
 * Added user ID and group ID.

# 0.16.4

 * macOS: Removed trailing NUL bytes in various values returned by the `sysctl` calls.

# 0.16.3

 * Updated minimum libc version to 0.2.86.

# 0.16.2

 * Fixed network values computation: replaced the simple arithmetic with `saturating_sub` and `saturating_add`.
 * Converted values read in `/proc/meminfo` from KiB to KB (because contrary to what is said in the manual, they are in KiB, not in KB).
 * macOS: Rewrote `get_disks` function to remove the Objective-C dependency.
 * Added `SystemExt::get_long_os_version`.
 * Linux: Fixed sequences for disks.
 * Linux: Allowed `/run/media` as a mount path.
 * Windows: Fixed disk size computation.
 * Linux: Fixed virtual memory size computation.

# 0.16.1

 * Added support for Android.
 * Added flag to remove APIs prohibited in Apple store.

# 0.16.0

 * Windows: show removable drives on Windows.
 * Switched to Rust 2018 edition.
 * Split `SystemExt::get_version` into `SystemExt::get_kernel_version` and `SystemExt::get_os_version`.
 * Windows: added support for `get_kernel_version` and `get_os_version`.
 * Changed return type of `SystemExt::get_physical_core_count` from `usize` to `Option<usize>`.
 * Added `SystemExt::get_physical_core_numbers`.

# 0.15.9

 * iOS: Fixed build.
 * Fixed cross-compilation.

# 0.15.8

 * Apple: fixed Objective-C library imports.

# 0.15.7

 * Added `SystemExt::get_host_name`.

# 0.15.6

 * Upgraded `cfg-if` dependency version to `1.0`.

# 0.15.5

 * Added `SystemExt::get_name` and `SystemExt::get_version`.
 * Added `multithread` feature, making the `rayon` dependency optional.

# 0.15.4

 * Apple: gig source code cleanup.
 * Apple: improved disk handling.
 * Removed manual FFI code and used libc's instead.

# 0.15.3

 * Prevented CPU value to be NaN.

# 0.15.2

 * macOS: fixed disk space computation.

# 0.15.1

 * Improved documentation.
 * Extended example.

# 0.15.0

 * Added `SystemExt::get_available_memory`.

# 0.14.15

 * Linux: improved task source code.

# 0.14.14

 * macOS: renamed "CPU" into "CPU Die".
 * macOS: added "CPU proximity" information.

# 0.14.13

 * Linux: improved process name retrieval.

# 0.14.12

 * Linux: fixed infinite recursion when gathering disk information.

# 0.14.11

 * Added iOS support.

# 0.14.10

 * Simplified `DiskType` handling by removing `From` implementation.
 * Linux: fixed SSD/HDD detection.

# 0.14.9

 * Linux: fixed CPU usage computation.
 * Windows: fixed load average constants.

# 0.14.8

 * Linux: fixed network information retrieval by replacing `usize` with `u64` because it was too small on 32 bits systems.
 * Linux: get each core frequency.

# 0.14.7

 * Raspberry Pi: fixed temperature retrieval.

# 0.14.6

 * Linux: fixed infinite recursion when getting disk.

# 0.14.5

 * Strengthened cfg checks: use "linux" and "android" instead of "unix".

# 0.14.4

 * Linux: fixed memory usage computation.

# 0.14.3

 * Linux: fixed memory usage computation.

# 0.14.2

 * Windows: fixed CPU usage computation overflow.
 * macOS: fixed CPU usage computation overflow.
 * Windows: retrieved command line.

# 0.14.1

* Removed empty disks.

# 0.14.0

 * Converted KiB to KB.

# 0.13.4

 * Code improvements.

# 0.13.3

 * Linux: fixed some issues on disks retrieval.
 * Linux: fixed out-of-bound access in `boot_time`.
 * Added benchmark on `Disk::refresh`.
