procfs-core
Data structures and parsing for the linux procfs pseudo-filesystem
0.18.0
56M downloads/mo
#1144 most downloaded on crates.io
eminence/procfs
What this package is like to depend on
Last release 11 months ago
30 Aug 2025
Ships fairly regularly
a new release about every 11 months
Nearly every release is documented
notes for 3 of 3 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
4 releases · first in 2023
1 release in the last 12 months
see the full history below
Release timeline
4 releases · Jun 2023 to Aug 2025Releases
latest 4-
0.18.030 Aug 2025Release notes
Open source →What's Changed
- Enable
generate-link-to-definitionrustdoc feature on docs.rs by @GuillaumeGomez in #320 - Use correct MSRV by @tyilo in #328
- replace hardcoded crate name by env var that returns the crate's name dynamically by @PauloMigAlmeida in #327
- Remove unused crate and use by @javierhonduco in #329
- Fix lints as the names have changed by @javierhonduco in #330
- Reduce short-lived allocations in memory maps parsing by @javierhonduco in #331
- Work around 32/64 bit mismatch by @musicinmybrain in #326
- Parse /proc/pid/status "Groups" field as u32 by @Jongy in #334
- Make get_pressure and parse_pressure_record public by @SebastiaanYN in #335
- Use AsRef for user-facing path parameters by @Jongy in #336
- Check process name in test_proc_status_for_kthreadd by @NoisyCoil in #337
- Add
fullrecord toCpuPressureby @SebastiaanYN in #338 - chore(deps): update
rustixto 1.0.1 by @cratelyn in #340 - Derive PartialEq & Eq for FDTarget by @Jongy in #339
- Fix README.md example compilation by @rantala in #342
- Fix for trait derivation on wasm targets by @fzylogic in #345
- Add Process.open_relative_flags by @Jongy in #341
- fix wrong spelling in nfs mount by @arthur-zhang in #347
- Add track_caller to check_unwrap test helper function by @eminence in #355
- Add /proc/pid/syscall parsing support by @jebradbury39 in #350
- Fix FDTarget parsing for unknown FD types by @eminence in #356
- Fix parsing for mountinfo and related fields when presented with empty fields by @eminence in #357
- Replace
cratewith$cratein our macro definitions by @eminence in #358
New Contributors
- @GuillaumeGomez made their first contribution in #320
- @tyilo made their first contribution in #328
- @PauloMigAlmeida made their first contribution in #327
- @javierhonduco made their first contribution in #329
- @musicinmybrain made their first contribution in #326
- @Jongy made their first contribution in #334
- @SebastiaanYN made their first contribution in #335
- @NoisyCoil made their first contribution in #337
- @cratelyn made their first contribution in #340
- @rantala made their first contribution in #342
- @fzylogic made their first contribution in #345
- @arthur-zhang made their first contribution in #347
- @jebradbury39 made their first contribution in #350
Full Changelog: v0.17.0...v0.18.0
- Enable
-
0.17.007 Oct 2024Release notes
Open source →What's Changed
- cgroups: skip empty controllers by @eliad-wiz in #292
- Clarify CpuInfo.get_field docs by @eminence in #291
- Correct copy-pasted Process::task_from_tid() doc by @ryoqun in #294
- Ship copyright and license files with split crates by @michel-slm in #297
- Derive serde for Pfn by @tatref in #301
- Add MountInfos::iter by @rusty-snake in #300
- Add oom_score_adj Process methods by @futpib in #298
- feat: move PhysicalPageFlags to procfs-core by @tatref in #303
- Fix documentation for
Meminfo.s_reclaimable. by @carletes in #306 - Doc: Fix incorrect link to examples by @VxDxK in #307
- Implemented proc/crypto parsing by @Hwatwasthat in #296
- Remove lazy-static dependency by @notgull in #308
- Fix build error with backtrace feature enabled by @mbrubeck in #309
- net: Improve parsing of /proc/net/snmp by @haaspors in #313
- Updated some examples to a bit more than printing debug. by @Hwatwasthat in #314
- Implemented crypto example by @Hwatwasthat in #315
- Add support for /dev/devices by @yamaura in #311
New Contributors
- @ryoqun made their first contribution in #294
- @michel-slm made their first contribution in #297
- @rusty-snake made their first contribution in #300
- @futpib made their first contribution in #298
- @carletes made their first contribution in #306
- @VxDxK made their first contribution in #307
- @Hwatwasthat made their first contribution in #296
- @notgull made their first contribution in #308
- @mbrubeck made their first contribution in #309
- @haaspors made their first contribution in #313
- @yamaura made their first contribution in #311
Full Changelog: v0.16.0...v0.17.0
-
0.16.029 Oct 2023Release notes
Open source →This release contains a fairly large internal restructuring, which has noticeable public API changes. A lot of core functionality has been brought into a new
procfs-corecrate that contains platform-independent data structures and parsing. This crate can be used on all platforms. Theprocfscrate now depends onprocfs-core, and contains all of the Linux-specific code (and thus remains only usable on Linux).Some
procfsfunctions require information about the running system. For example, therss_bytes()function needs to know the page size. These functions now have a more complicated API. See the docs for more information, but generally you now have to add a call to.get(), for example:Old:
let prc = procfs::process::Process::myself().unwrap(); let stat = prc.stat().unwrap(); println!("RSS: {} bytes", stat.rss_bytes());
New:
use procfs::prelude::*; // to bring `WithCurrentSystemInfo` into scope let prc = procfs::process::Process::myself().unwrap(); let stat = prc.stat().unwrap(); println!("RSS: {} bytes", stat.rss_bytes().get());
We think this new complication is unavoidable, but if you have some thoughts on this, your ideas are welcome in a new issue or discussion thread
New Features
- Implementation of a split crate scheme. by @afranchuk in #257
- Add /proc/mounts by @tatref in #261
- add /proc/pid/clear_refs by @tatref in #268
- Implement some standard traits by @tatref in #254
- Support /proc/net/snmp and /proc/net/snmp6 by @wfly1998 in #281
- Add support for /proc/partitions parsing by @berrange in #286
Bug Fixes
- Don't hide process creation errors in all_processes by @tatref in #260
- Fix O_PATH for old kernels by @tatref in #266
Full Changelog: v0.15.1...v0.16.0
-
0.16.0-RC120 Jun 2023 pre-releaseNothing published for this version