sysinfo 0.29.11

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
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
# 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 pratice" 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 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`.