sysinfo 0.24.7

Library to get system information such as processes, CPUs, disks, components and networks
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
# 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 priviledges.

# 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 removeable 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`.