- Add new
Disk::is_read_only
API. - Add new
remove_dead_processes
argument toSystem::refresh_processes
andSystem::refresh_processes_specifics
. - macOS: Fix memory leak in disk refresh.
- macOS: Force memory cleanup in disk list retrieval.
- Raspberry Pi: Fix temperature retrieval.
- Remove
bstr
dependency (needed for rustc development).
- Downgrade version of
memchr
(needed for rustc development).
- Split crate in features to only enable what you need.
- Remove
System::refresh_process
,System::refresh_process_specifics
andSystem::refresh_pids
methods. - Add new argument of type
ProcessesToUpdate
toSystem::refresh_processes
andSystem::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
toThermalSensorType
. - 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.
- macOS: Fix segfault when calling
Components::refresh_list
multiple times. - Windows: Fix CPU arch retrieval.
- FreeBSD: Fix network interfaces retrieval (one was always missing).
- macOS: Fix some invalid utf8 conversions.
- Linux: Fix components not being listed anymore.
- Linux/Windows: Performance improvements.
- Linux/macOS/FreeBSD: Parent process ID is updated if changed as expected.
- Linux: Fix missing parallelization.
- Linux: Add
cargo
feature flaglinux-tmpfs
to listtmpfs
mounts. - macOS: Fix CPU usage returning
NaN
. Components::refresh
is now parallelized.
- Linux: Fix cgroup memory computation.
- FreeBSD: Fix documentation about disk usage.
- macOS: Fix missing update of process run time.
- Add new
Groups
API. - Improve documentation.
- Windows: Correctly retrieve processes name on 32 bits platforms.
- Windows: Fix swap memory computation.
- Windows: Fix misaligned read.
- Improve dependency stack by updating the
windows
dependency.
- Add
ThreadKind
enum. - Add
Process::thread_kind
method.
- Linux: Fix invalid memory information retrieval (virtual and resident set size were reversed).
- Split
System
into subtypes:Components
,Disks
,Networks
andUsers
. brand
,vendor_id
andfrequency
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 ofstat
). - 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
andDisk::name
now return anOption<&OsStr>
.- Implement
Display
trait onDiskKind
. - Move from
winapi
towindows
crate. - Add
System::cpu_arch
. - Add
System::refresh_pids
andSystem::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
andSystem::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
andProcess::root
return anOption<&Path>
.Process::tasks
method is available on all platforms.Process::tasks
method returns aHashSet<Pid>
.- Move
System::IS_SUPPORTED
,System::SUPPORTED_SIGNALS
andSystem::MINIMUM_CPU_UPDATE_INTERVAL
constants out ofSystem
directly at the crate top-level. - Rename
IS_SUPPORTED
intoIS_SUPPORTED_SYSTEM
. - Fix
serde
serialization. - Add
System::refresh_cpu_frequency
andSystem::refresh_cpu_all
. - Fix
sysinfo.h
and C wrapper. - Add a migration guide.
- macOS: Fix bug when a user group doesn't have a name.
- Linux: Correctly handle max memory value for cgroups.
- Linux: Fix memory usage retrieval for cgroups.
- Linux: Fix overflow bug.
- macOS: Fix CPU frequency retrieval for M1 and M2.
- Linux: Add support for cgroups v1/v2 for memory.
- Windows: Fix processes name encoding issues.
- Update minimum rust version to 1.63.
- Windows: Fix memory corruption when listing processes.
- Windows: Fix name inconsistency between
refresh_processes
andrefresh_process
. Cargo.lock
is now included to prevent minimum rust version disruptions.
- Windows: Remove some undefined behaviour when listing processes.
- <docs.rs>: Use
--generate-link-to-definition
option to have better source code pages.
- Windows: Improve code to retrieve network interfaces.
- Improve serde documentation example.
- Fix some clippy lints.
- Fix some documentation examples.
- <docs.rs>: Generate documentation for all supported platforms.
- Update
libc
version to 0.2.144. - Linux/FreeBSD/macOS: Fix retrieval of users groups in multi-threaded context.
- Add
ProcessExt::effective_user_id
andProcessExt::effective_group_id
. - Rename
DiskType
intoDiskKind
. - Rename
DiskExt::type_
intoDiskExt::kind
. - macOS: Correctly handle
ProcessStatus
and remove publicThreadStatus
field. - Windows 11: Fix CPU core usage.
- macOS: Improve CPU computation.
- Strengthen a process test (needed for debian).
- 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.
- Linux: Improve CPU usage computation.
- macOS: Fix overflow when computing CPU usage.
- 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 inProcessStatus
. - Linux: Add brand and name of ARM CPUs.
- macOS: Fix overflow when computing CPU usage.
- macOS: Fix process CPU usage computation
- Linux: Improve ARM CPU
brand
andname
information. - Windows: Fix resource leak.
- Documentation improvements.
- Make
MacAddr
public.
- Linux: Improve compatibility with upcoming
libc
changes for musl targets.
- Create
SystemExt::MINIMUM_CPU_UPDATE_INTERVAL
constant. - Fix consecutive processes updates CPU usage computation.
- macOS: Fix free/available memory computation.
- Fix processes_by_name* lifetimes
- Linux: Fix consecutive process CPU usage updates.
- Linux: Ignore NFS disks.
- Unix systems: Fix network address segfault issue.
- Add
NetworkExt::mac_address
method andMacAddr
type. - Linux: Fix truncated environment retrieval.
- Implement
TryFrom<usize>
andFromStr
forGid
andUid
. - Implement
TryFrom<usize>
forPid
. - Fix documentation of
System::new
about CPU list not loaded by default.
- (backport) Linux: Improve compatibility with upcoming
libc
changes for musl targets.
- Add
ProcessExt::session_id
method. - Linux: Ignore NFS disks.
- Apple: Greatly improve disk retrieval (I recommend reading the pull request first comment for more information here: #855).
- Remove build script.
- Add
Process::wait
. - Add "Good practice" entry into the crate level documentation and in the README.
- Linux: More precise used memory computation.
- Windows: Fix disk information retrieval.
- Linux: Improve
Process
document. - Linux: Fix a compilation error if the
apple-sandbox
feature is enabled. - Internal code improvements.
- Add
SystemExt::distribution_id
method. - Update
ntapi
version to0.4
. - Update minimum supported Rust version (MSRV) to
1.59
forntapi
0.4.
- Update minimum supported Rust version (MSRV) to
1.56
to followonce_cell
minor update.
- Linux: Fix process information retrieval.
- Linux: Get more components temperature.
- Linux: Fix disk name retrieval (which in turn fixed disk type retrieval).
- macOS M1: Fix segmentation fault crash.
- Switch memory unit from kilobytes to bytes.
- Windows: Fix Windows version display on Windows 11.
- Add macOS M1 CI checks.
- macOS M1: Add temperature support.
- macOS: Fix leak in disk retrieval.
- Windows: Fix
Process::exe
information retrieval. - All supported platforms: Correctly handle a PID owner change (#809).
- Linux: Fix potential problem on
ProcessExt::exe
in case/proc/<pid>/exe
cannot be read. - Add
SystemExt::sort_disks_by
.
- Linux: CPU frequency is now retrieved on-demand as expected when
CpuRefreshKind::frequency
istrue
. System::refresh_cpu
behaviour changed: it only computes CPU usage and doesn't retrieve CPU frequency.
- Windows: Fix boot time computation.
- macOS: Fix available memory computation.
- Some documentation fixes.
- 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 unsignedchar
s.
- Implement
Hash
trait onUid
andGid
types. - Remove dependency
once_cell
for targets other thanlinux
,android
andwindows
.
- Windows: Fix
System::refresh_process
when required higher privileges.
- macOS: Fix
System::refresh_processes
badly handling updates. - FreeBSD: Improve performance of
System::refresh_processes
.
- Windows: Fix CPU usage computation.
- Windows: Enable extra feature on
winapi
. - macOS: Fix executable path retrieval.
- Use
saturating_*
function for mathematical operations to prevent overflows/underflows.
- Rename
Processor
intoCpu
andProcessorExt
intoCpuExt
. - Retrieve information about a process' owner.
- Add
SystemExt::get_user_by_id
. - Add
ProcessExt::user_id
. - Add
ProcessExt::group_id
. - Add
user
-related methods toProcessRefreshKind
. - Linux: Improve performance when creating new
Process
by improving retrieval of user ID and group ID.
- Linux: Fix processes' virtual memory computation.
- macOS/FreeBSD: Fix
System::refresh_process
andSystem::refresh_process_specifics
returned value. - Linux: Small performance improvement when updating process list.
- Linux: Improve
System::refresh_cpu
performance. - Fix clippy lints.
- Add FreeBSD to the "supported OS" list
- Remove useless benchmark results
- Improve documentation of
SystemExt::refresh_cpu
.
- macOS: Fix disk retrieval
- Windows: Fix underflow for
Process
run_time computation
- macOS: Ignore non-root drive partitions
- Windows: Fix process name retrieval
- Windows: Unify internal process creation methods
- FreeBSD: Simplify code for process update
- Windows: Fix a bug which prevent all disks to be listed.
- Linux (raspberry): Fix physical core count.
- Impl
From<Pid>
for Pid inner type. - Code cleanup.
- Fix unsafe "correctness".
- Correctly handle
MaybeUninit::assume_init
.
- Implement
Into
trait onPid
- Add
#[repr(transparent)]
onPid
- Clean up
refresh_process
andrefresh_processes
: onlyrefresh_processes
removes non-existing processes.
- Linux: Fix process uptime.
- Rename
process_by_name
intoprocesses_by_name
. - Rename
process_by_name_exact
intoprocesses_by_name_exact
. - Change returned type of
process_by_name
and ofprocess_by_name_exact
into an iterator. - Improved
Signal
documentation. - Turned
Pid
type alias into a newtype.
- 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 onSystemExt
. - Fix common type aliases.
- Implement
Display
forSignal
.
- Windows: Correctly handle COM initialization/deinitialization.
- Linux: Fix panic when changing the limit of open files.
- FreeBSD: Take ZFS ARC value into account when computing used system memory.
- Add some missing
#[must_use]
.
- FreeBSD: Improve memory information retrieval.
- Remove forgotten debug.
- Add FreeBSD support.
- Create
SystemExt::refresh_processes_specifics
andSystemExt::refresh_process_specifics
methods. - Update
ProcessExt::kill
API and addProcessExt::kill_with
. - Add
ProcessExt::run_time
.
- Unsupported targets: Fix build.
- Linux: Exclude rootfs disk type as well.
- Windows: Performance improvement by lazily creating queries.
- 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.
- 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.
- Linux: Prevented overflow in disk size computation (bug in
davfs2
). - Fixed clippy lints
- Update libc version, allowing to remove a lot of FFI bindings.
- Windows: Reworked process information retrieval
- Windows: Fixed issue on
c_void
size. - Improved documentation of
ProcessExt::environ
.
- 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.
- 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.
- macOS: Improved code readability.
- Windows: Prevented the
taskkill.exe
console window from appearing when usingkill
. - Fixed benchmarks compilation issue.
- Upgraded minimum supported Rust version to 1.54.
- Removed doc-comment dependency.
- Merged README and crate documentation.
- Windows: Fixed swap memory information computation.
- Windows: Got swap memory information.
- Linux: Fixed memory information gathering (bad parsing of
/proc/meminfo
).
- Renamed functions/methods to follow Rust API guidelines on naming.
- 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 moreRemovable
variant, it's now set into theDisk
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.
- 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()
.
- 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.
- 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.
- Improved network code: network interfaces were handled a bit differently depending on the platform, it is now unified.
- 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.
- Removed manual FFI bindings in both Apple and Windows targets.
- Fixed C-interface compilation.
- Added information on how to add new platform.
- Linux: fixed
System::refresh_process
return value.
- 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.
- Linux: fixed OS version retrieval by adding a fallback to
/etc/lsb-release
. - iOS: fixed warnings.
- Renamed
ProcessStatus::to_string
method toas_str
. - macOS: fixed CPU usage computation.
- Windows: Removed trailing NUL bytes in hostname.
- Added user ID and group ID.
- macOS: Removed trailing NUL bytes in various values returned by the
sysctl
calls.
- Updated minimum libc version to 0.2.86.
- Fixed network values computation: replaced the simple arithmetic with
saturating_sub
andsaturating_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.
- Added support for Android.
- Added flag to remove APIs prohibited in Apple store.
- Windows: show removable drives on Windows.
- Switched to Rust 2018 edition.
- Split
SystemExt::get_version
intoSystemExt::get_kernel_version
andSystemExt::get_os_version
. - Windows: added support for
get_kernel_version
andget_os_version
. - Changed return type of
SystemExt::get_physical_core_count
fromusize
toOption<usize>
. - Added
SystemExt::get_physical_core_numbers
.
- iOS: Fixed build.
- Fixed cross-compilation.
- Apple: fixed Objective-C library imports.
- Added
SystemExt::get_host_name
.
- Upgraded
cfg-if
dependency version to1.0
.
- Added
SystemExt::get_name
andSystemExt::get_version
. - Added
multithread
feature, making therayon
dependency optional.
- Apple: gig source code cleanup.
- Apple: improved disk handling.
- Removed manual FFI code and used libc's instead.
- Prevented CPU value to be NaN.
- macOS: fixed disk space computation.
- Improved documentation.
- Extended example.
- Added
SystemExt::get_available_memory
.
- Linux: improved task source code.
- macOS: renamed "CPU" into "CPU Die".
- macOS: added "CPU proximity" information.
- Linux: improved process name retrieval.
- Linux: fixed infinite recursion when gathering disk information.
- Added iOS support.
- Simplified
DiskType
handling by removingFrom
implementation. - Linux: fixed SSD/HDD detection.
- Linux: fixed CPU usage computation.
- Windows: fixed load average constants.
- Linux: fixed network information retrieval by replacing
usize
withu64
because it was too small on 32 bits systems. - Linux: get each core frequency.
- Raspberry Pi: fixed temperature retrieval.
- Linux: fixed infinite recursion when getting disk.
- Strengthened cfg checks: use "linux" and "android" instead of "unix".
- Linux: fixed memory usage computation.
- Linux: fixed memory usage computation.
- Windows: fixed CPU usage computation overflow.
- macOS: fixed CPU usage computation overflow.
- Windows: retrieved command line.
- Removed empty disks.
- Converted KiB to KB.
- Code improvements.
- Linux: fixed some issues on disks retrieval.
- Linux: fixed out-of-bound access in
boot_time
. - Added benchmark on
Disk::refresh
.